diff --git a/ash/capture_mode/fake_camera_device.cc b/ash/capture_mode/fake_camera_device.cc index 381f5e63ee53f..f565b87e7f62d 100644 --- a/ash/capture_mode/fake_camera_device.cc +++ b/ash/capture_mode/fake_camera_device.cc @@ -295,7 +295,7 @@ class FakeCameraDevice::Subscription void OnFrameReadyInBuffer( video_capture::mojom::ReadyFrameInBufferPtr buffer) { DCHECK(is_active_ && !is_suspended_); - subscriber_->OnFrameReadyInBuffer(std::move(buffer), {}); + subscriber_->OnFrameReadyInBuffer(std::move(buffer)); } void OnFrameDropped() { diff --git a/chromeos/crosapi/mojom/video_capture.mojom b/chromeos/crosapi/mojom/video_capture.mojom index ae788275f1a5d..f1f378490b829 100644 --- a/chromeos/crosapi/mojom/video_capture.mojom +++ b/chromeos/crosapi/mojom/video_capture.mojom @@ -140,6 +140,10 @@ interface VideoFrameHandler { OnNewBuffer@0(int32 buffer_id, VideoBufferHandle buffer_handle); + // `scaled_buffers` is always an empty list, it is only present for backwards + // compat reasons. + // TODO(https://crbug.com/1440075): Migrate away from this method and delete + // it in favor of a version that does not take `scaled_buffers`. OnFrameReadyInBuffer@1(ReadyFrameInBuffer buffer, array<ReadyFrameInBuffer> scaled_buffers); diff --git a/components/capture_mode/camera_video_frame_handler.cc b/components/capture_mode/camera_video_frame_handler.cc index 682b5da3bc553..f5dfbcf1811ee 100644 --- a/components/capture_mode/camera_video_frame_handler.cc +++ b/components/capture_mode/camera_video_frame_handler.cc @@ -604,17 +604,9 @@ void CameraVideoFrameHandler::OnFrameAccessHandlerReady( } void CameraVideoFrameHandler::OnFrameReadyInBuffer( - video_capture::mojom::ReadyFrameInBufferPtr buffer, - std::vector<video_capture::mojom::ReadyFrameInBufferPtr> scaled_buffers) { + video_capture::mojom::ReadyFrameInBufferPtr buffer) { CHECK(video_frame_access_handler_remote_); - // Ignore scaled buffers for now. - for (auto& scaled_buffer : scaled_buffers) { - video_frame_access_handler_remote_->OnFinishedConsumingBuffer( - scaled_buffer->buffer_id); - } - scaled_buffers.clear(); - const int buffer_id = buffer->buffer_id; if (!active_) { diff --git a/components/capture_mode/camera_video_frame_handler.h b/components/capture_mode/camera_video_frame_handler.h index 8e687fbf0725a..a71c57540d029 100644 --- a/components/capture_mode/camera_video_frame_handler.h +++ b/components/capture_mode/camera_video_frame_handler.h @@ -121,9 +121,7 @@ class CAPTURE_MODE_EXPORT CameraVideoFrameHandler mojo::PendingRemote<video_capture::mojom::VideoFrameAccessHandler> pending_frame_access_handler) override; void OnFrameReadyInBuffer( - video_capture::mojom::ReadyFrameInBufferPtr buffer, - std::vector<video_capture::mojom::ReadyFrameInBufferPtr> scaled_buffers) - override; + video_capture::mojom::ReadyFrameInBufferPtr buffer) override; void OnBufferRetired(int buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/components/mirroring/browser/single_client_video_capture_host.cc b/components/mirroring/browser/single_client_video_capture_host.cc index baa472af1b3ca..edb5216626215 100644 --- a/components/mirroring/browser/single_client_video_capture_host.cc +++ b/components/mirroring/browser/single_client_video_capture_host.cc @@ -215,8 +215,7 @@ void SingleClientVideoCaptureHost::OnNewBuffer( } void SingleClientVideoCaptureHost::OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) { + media::ReadyFrameInBuffer frame) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DVLOG(3) << __func__ << ": buffer_id=" << frame.buffer_id; DCHECK(observer_); diff --git a/components/mirroring/browser/single_client_video_capture_host.h b/components/mirroring/browser/single_client_video_capture_host.h index 97a72c4685e7f..c01e92cbdc811 100644 --- a/components/mirroring/browser/single_client_video_capture_host.h +++ b/components/mirroring/browser/single_client_video_capture_host.h @@ -82,9 +82,7 @@ class SingleClientVideoCaptureHost final void OnCaptureConfigurationChanged() override; void OnNewBuffer(int buffer_id, media::mojom::VideoBufferHandlePtr buffer_handle) override; - void OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) override; + void OnFrameReadyInBuffer(media::ReadyFrameInBuffer frame) override; void OnBufferRetired(int buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/components/mirroring/browser/single_client_video_capture_host_unittest.cc b/components/mirroring/browser/single_client_video_capture_host_unittest.cc index a481671182941..74a9ff19a3fcb 100644 --- a/components/mirroring/browser/single_client_video_capture_host_unittest.cc +++ b/components/mirroring/browser/single_client_video_capture_host_unittest.cc @@ -273,11 +273,9 @@ class SingleClientVideoCaptureHostTest : public ::testing::Test { base::RunLoop run_loop; EXPECT_CALL(*consumer_, OnBufferReadyCall(buffer_context_id)) .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); - frame_receiver_->OnFrameReadyInBuffer( - media::ReadyFrameInBuffer(buffer_id, feedback_id, - std::make_unique<StubReadWritePermission>(), - GetVideoFrameInfo()), - {}); + frame_receiver_->OnFrameReadyInBuffer(media::ReadyFrameInBuffer( + buffer_id, feedback_id, std::make_unique<StubReadWritePermission>(), + GetVideoFrameInfo())); run_loop.Run(); } diff --git a/content/browser/media/capture/fake_video_capture_stack.cc b/content/browser/media/capture/fake_video_capture_stack.cc index f7e3d73052c58..5275100b67eb9 100644 --- a/content/browser/media/capture/fake_video_capture_stack.cc +++ b/content/browser/media/capture/fake_video_capture_stack.cc @@ -216,9 +216,7 @@ class FakeVideoCaptureStackReceiver final : public media::VideoFrameReceiver { return mapped_frame; } - void OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) override { + void OnFrameReadyInBuffer(media::ReadyFrameInBuffer frame) override { DCHECK_CALLED_ON_VALID_SEQUENCE(capture_stack_sequence_checker_); // Unretained is safe since we own the thread to which we're posting. diff --git a/content/browser/media/capture/frame_sink_video_capture_device.cc b/content/browser/media/capture/frame_sink_video_capture_device.cc index 7d79df2e3d971..03cd35000c932 100644 --- a/content/browser/media/capture/frame_sink_video_capture_device.cc +++ b/content/browser/media/capture/frame_sink_video_capture_device.cc @@ -499,14 +499,12 @@ void FrameSinkVideoCaptureDevice::OnFrameCaptured( // passing the shared memory buffer handle and then notifying it that a new // frame is ready to be read from the buffer. receiver_->OnNewBuffer(buffer_id, std::move(data)); - receiver_->OnFrameReadyInBuffer( - media::ReadyFrameInBuffer( - buffer_id, buffer_id, - std::make_unique<media::ScopedFrameDoneHelper>(base::BindOnce( - &FrameSinkVideoCaptureDevice::OnFramePropagationComplete, - weak_factory_.GetWeakPtr(), buffer_id)), - std::move(info)), - {}); + receiver_->OnFrameReadyInBuffer(media::ReadyFrameInBuffer( + buffer_id, buffer_id, + std::make_unique<media::ScopedFrameDoneHelper>(base::BindOnce( + &FrameSinkVideoCaptureDevice::OnFramePropagationComplete, + weak_factory_.GetWeakPtr(), buffer_id)), + std::move(info))); } void FrameSinkVideoCaptureDevice::OnNewCropVersion(uint32_t crop_version) { diff --git a/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc b/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc index 63f3427fdf800..2b092733acc87 100644 --- a/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc +++ b/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc @@ -195,9 +195,7 @@ class MockVideoFrameReceiver : public media::VideoFrameReceiver { MOCK_METHOD2(MockOnNewBuffer, void(int buffer_id, media::mojom::VideoBufferHandle* buffer_handle)); - void OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) final { + void OnFrameReadyInBuffer(media::ReadyFrameInBuffer frame) final { DCHECK_ON_DEVICE_THREAD(); feedback_ids_[frame.buffer_id] = frame.frame_feedback_id; auto* const raw_pointer_to_permission = frame.buffer_read_permission.get(); diff --git a/content/browser/media/capture/receiver_media_to_crosapi_adapter.cc b/content/browser/media/capture/receiver_media_to_crosapi_adapter.cc index ec7f732a8f80b..0239472eb0045 100644 --- a/content/browser/media/capture/receiver_media_to_crosapi_adapter.cc +++ b/content/browser/media/capture/receiver_media_to_crosapi_adapter.cc @@ -35,14 +35,8 @@ void ReceiverMediaToCrosapiAdapter::OnNewBuffer( void ReceiverMediaToCrosapiAdapter::OnFrameReadyInBuffer( crosapi::mojom::ReadyFrameInBufferPtr buffer, - std::vector<crosapi::mojom::ReadyFrameInBufferPtr> scaled_buffers) { - std::vector<media::ReadyFrameInBuffer> media_scaled_buffers; - for (auto& b : scaled_buffers) { - media_scaled_buffers.push_back(ConvertToMediaReadyFrame(std::move(b))); - } - - handler_->OnFrameReadyInBuffer(ConvertToMediaReadyFrame(std::move(buffer)), - std::move(media_scaled_buffers)); + std::vector<crosapi::mojom::ReadyFrameInBufferPtr> /*scaled_buffers*/) { + handler_->OnFrameReadyInBuffer(ConvertToMediaReadyFrame(std::move(buffer))); } void ReceiverMediaToCrosapiAdapter::OnBufferRetired(int buffer_id) { diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc index 2f29558b057bf..da1d91ec1b42c 100644 --- a/content/browser/renderer_host/media/video_capture_controller.cc +++ b/content/browser/renderer_host/media/video_capture_controller.cc @@ -422,8 +422,7 @@ void VideoCaptureController::OnNewBuffer( } void VideoCaptureController::OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) { + media::ReadyFrameInBuffer frame) { DCHECK_CURRENTLY_ON(BrowserThread::IO); DCHECK_NE(frame.buffer_id, media::VideoCaptureBufferPool::kInvalidId); TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"), @@ -436,42 +435,20 @@ void VideoCaptureController::OnFrameReadyInBuffer( frame.buffer_id, frame.frame_feedback_id, std::move(frame.frame_info), &frame_context); - std::vector<BufferContext*> scaled_frame_contexts; - scaled_frame_contexts.reserve(scaled_frames.size()); - std::vector<ReadyBuffer> scaled_frame_ready_buffers; - scaled_frame_ready_buffers.reserve(scaled_frames.size()); - for (auto& scaled_frame : scaled_frames) { - BufferContext* scaled_frame_context; - scaled_frame_ready_buffers.push_back(MakeReadyBufferAndSetContextFeedbackId( - scaled_frame.buffer_id, scaled_frame.frame_feedback_id, - std::move(scaled_frame.frame_info), &scaled_frame_context)); - scaled_frame_contexts.push_back(scaled_frame_context); - } - if (state_ != blink::VIDEO_CAPTURE_STATE_ERROR) { // Inform all active clients of the frames. for (const auto& client : controller_clients_) { if (client->session_closed || client->paused) continue; MakeClientUseBufferContext(frame_context, client.get()); - for (auto* scaled_frame_context : scaled_frame_contexts) { - MakeClientUseBufferContext(scaled_frame_context, client.get()); - } client->event_handler->OnBufferReady(client->controller_id, - frame_ready_buffer, - scaled_frame_ready_buffers); + frame_ready_buffer, {}); } // Transfer buffer read permissions to any contexts that now have consumers. if (frame_context->HasConsumers()) { frame_context->set_read_permission( std::move(frame.buffer_read_permission)); } - for (size_t i = 0; i < scaled_frames.size(); ++i) { - if (!scaled_frame_contexts[i]->HasConsumers()) - continue; - scaled_frame_contexts[i]->set_read_permission( - std::move(scaled_frames[i].buffer_read_permission)); - } } if (!has_received_frames_) { diff --git a/content/browser/renderer_host/media/video_capture_controller.h b/content/browser/renderer_host/media/video_capture_controller.h index 882093007d0c2..3149392732ae7 100644 --- a/content/browser/renderer_host/media/video_capture_controller.h +++ b/content/browser/renderer_host/media/video_capture_controller.h @@ -111,9 +111,7 @@ class CONTENT_EXPORT VideoCaptureController void OnCaptureConfigurationChanged() override; void OnNewBuffer(int32_t buffer_id, media::mojom::VideoBufferHandlePtr buffer_handle) override; - void OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) override; + void OnFrameReadyInBuffer(media::ReadyFrameInBuffer frame) override; void OnBufferRetired(int buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/content/browser/renderer_host/media/video_capture_controller_unittest.cc b/content/browser/renderer_host/media/video_capture_controller_unittest.cc index e615c5af55b22..4d1bf6d3c5bb8 100644 --- a/content/browser/renderer_host/media/video_capture_controller_unittest.cc +++ b/content/browser/renderer_host/media/video_capture_controller_unittest.cc @@ -84,9 +84,7 @@ class MockVideoCaptureControllerEventHandler void(const VideoCaptureControllerID&, int buffer_id)); MOCK_METHOD2(DoBufferDestroyed, void(const VideoCaptureControllerID&, int buffer_id)); - MOCK_METHOD2(DoBufferReady, - void(ControllerIDAndSize buffer, - std::vector<ControllerIDAndSize> scaled_buffers)); + MOCK_METHOD1(DoBufferReady, void(ControllerIDAndSize buffer)); MOCK_METHOD1(OnCaptureConfigurationChanged, void(const VideoCaptureControllerID&)); MOCK_METHOD1(OnFrameWithEmptyRegionCapture, @@ -121,12 +119,7 @@ class MockVideoCaptureControllerEventHandler EXPECT_EQ(expected_pixel_format_, buffer.frame_info->pixel_format); EXPECT_EQ(expected_color_space_, buffer.frame_info->color_space); EXPECT_TRUE(buffer.frame_info->metadata.reference_time.has_value()); - std::vector<ControllerIDAndSize> scaled_frames; - for (const auto& scaled_buffer : scaled_buffers) { - scaled_frames.emplace_back(id, scaled_buffer.frame_info->coded_size); - } - DoBufferReady(ControllerIDAndSize(id, buffer.frame_info->coded_size), - std::move(scaled_frames)); + DoBufferReady(ControllerIDAndSize(id, buffer.frame_info->coded_size)); if (enable_auto_return_buffer_on_buffer_ready_) { base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( FROM_HERE, base::BindOnce(&VideoCaptureController::ReturnBuffer, @@ -415,26 +408,20 @@ TEST_P(VideoCaptureControllerTest, NormalCaptureMultipleClients) { { InSequence s; EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1, _)); - EXPECT_CALL(*client_a_, - DoBufferReady(ControllerIDAndSize(client_a_route_1, - device_format.frame_size), - std::vector<ControllerIDAndSize>())); + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + client_a_route_1, device_format.frame_size))); } { InSequence s; EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_1, _)); - EXPECT_CALL(*client_b_, - DoBufferReady(ControllerIDAndSize(client_b_route_1, - device_format.frame_size), - std::vector<ControllerIDAndSize>())); + EXPECT_CALL(*client_b_, DoBufferReady(ControllerIDAndSize( + client_b_route_1, device_format.frame_size))); } { InSequence s; EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2, _)); - EXPECT_CALL(*client_a_, - DoBufferReady(ControllerIDAndSize(client_a_route_2, - device_format.frame_size), - std::vector<ControllerIDAndSize>())); + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + client_a_route_2, device_format.frame_size))); } client_a_->feedback_.resource_utilization = 0.5; client_b_->feedback_.resource_utilization = -1.0; @@ -484,18 +471,12 @@ TEST_P(VideoCaptureControllerTest, NormalCaptureMultipleClients) { arbitrary_timestamp_); // The frame should be delivered to the clients in any order. - EXPECT_CALL(*client_a_, - DoBufferReady(ControllerIDAndSize(client_a_route_1, - device_format.frame_size), - std::vector<ControllerIDAndSize>())); - EXPECT_CALL(*client_b_, - DoBufferReady(ControllerIDAndSize(client_b_route_1, - device_format.frame_size), - std::vector<ControllerIDAndSize>())); - EXPECT_CALL(*client_a_, - DoBufferReady(ControllerIDAndSize(client_a_route_2, - device_format.frame_size), - std::vector<ControllerIDAndSize>())); + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + client_a_route_1, device_format.frame_size))); + EXPECT_CALL(*client_b_, DoBufferReady(ControllerIDAndSize( + client_b_route_1, device_format.frame_size))); + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + client_a_route_2, device_format.frame_size))); base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); Mock::VerifyAndClearExpectations(client_b_.get()); @@ -534,31 +515,23 @@ TEST_P(VideoCaptureControllerTest, NormalCaptureMultipleClients) { // the old clients only |kPoolSize - 1|. EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_2, _)) .Times(kPoolSize); - EXPECT_CALL(*client_b_, - DoBufferReady(ControllerIDAndSize(client_b_route_2, - device_format.frame_size), - std::vector<ControllerIDAndSize>())) + EXPECT_CALL(*client_b_, DoBufferReady(ControllerIDAndSize( + client_b_route_2, device_format.frame_size))) .Times(kPoolSize); EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1, _)) .Times(kPoolSize - 1); - EXPECT_CALL(*client_a_, - DoBufferReady(ControllerIDAndSize(client_a_route_1, - device_format.frame_size), - std::vector<ControllerIDAndSize>())) + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + client_a_route_1, device_format.frame_size))) .Times(kPoolSize); EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2, _)) .Times(kPoolSize - 1); - EXPECT_CALL(*client_a_, - DoBufferReady(ControllerIDAndSize(client_a_route_2, - device_format.frame_size), - std::vector<ControllerIDAndSize>())) + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + client_a_route_2, device_format.frame_size))) .Times(kPoolSize); EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_1, _)) .Times(kPoolSize - 1); - EXPECT_CALL(*client_b_, - DoBufferReady(ControllerIDAndSize(client_b_route_1, - device_format.frame_size), - std::vector<ControllerIDAndSize>())) + EXPECT_CALL(*client_b_, DoBufferReady(ControllerIDAndSize( + client_b_route_1, device_format.frame_size))) .Times(kPoolSize); base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); @@ -602,10 +575,8 @@ TEST_P(VideoCaptureControllerTest, NormalCaptureMultipleClients) { arbitrary_timestamp_); // B2 is the only client left, and is the only one that should // get the buffer. - EXPECT_CALL(*client_b_, - DoBufferReady(ControllerIDAndSize(client_b_route_2, - device_format.frame_size), - std::vector<ControllerIDAndSize>())) + EXPECT_CALL(*client_b_, DoBufferReady(ControllerIDAndSize( + client_b_route_2, device_format.frame_size))) .Times(2); base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); @@ -762,10 +733,8 @@ TEST_F(VideoCaptureControllerTest, FrameFeedbackIsReportedForSequenceOfFrames) { client_a_->feedback_ = stub_consumer_feedback; - EXPECT_CALL(*client_a_, - DoBufferReady( - ControllerIDAndSize(route_id, arbitrary_format.frame_size), - std::vector<ControllerIDAndSize>())) + EXPECT_CALL(*client_a_, DoBufferReady(ControllerIDAndSize( + route_id, arbitrary_format.frame_size))) .Times(1); EXPECT_CALL(*mock_launched_device_, OnUtilizationReport(stub_consumer_feedback)) @@ -823,7 +792,7 @@ TEST_F(VideoCaptureControllerTest, EXPECT_CALL(*client_a_, DoBufferCreated(_, _)) .Times(1) .WillOnce(SaveArg<1>(&buffer_id_reported_to_client)); - EXPECT_CALL(*client_a_, DoBufferReady(_, _)).Times(1); + EXPECT_CALL(*client_a_, DoBufferReady(_)).Times(1); } EXPECT_CALL(*client_a_, DoBufferDestroyed(_, _)).Times(0); SendStubFrameToDeviceClient(arbitrary_format_, arbitrary_color_space_); @@ -854,7 +823,7 @@ TEST_F(VideoCaptureControllerTest, EXPECT_CALL(*client_a_, DoBufferCreated(_, _)) .Times(1) .WillOnce(SaveArg<1>(&buffer_id_reported_to_client)); - EXPECT_CALL(*client_a_, DoBufferReady(_, _)).Times(1); + EXPECT_CALL(*client_a_, DoBufferReady(_)).Times(1); } SendStubFrameToDeviceClient(arbitrary_format_, arbitrary_color_space_); base::RunLoop().RunUntilIdle(); @@ -894,7 +863,7 @@ TEST_F(VideoCaptureControllerTest, EXPECT_CALL(*client_a_, DoBufferCreated(_, _)) .Times(1) .WillOnce(SaveArg<1>(&first_buffer_id)); - EXPECT_CALL(*client_a_, DoBufferReady(_, _)).Times(1); + EXPECT_CALL(*client_a_, DoBufferReady(_)).Times(1); } SendStubFrameToDeviceClient(arbitrary_format_, arbitrary_color_space_); base::RunLoop().RunUntilIdle(); @@ -916,7 +885,7 @@ TEST_F(VideoCaptureControllerTest, EXPECT_CALL(*client_a_, DoBufferCreated(_, _)) .Times(1) .WillOnce(SaveArg<1>(&second_buffer_id)); - EXPECT_CALL(*client_a_, DoBufferReady(_, _)).Times(1); + EXPECT_CALL(*client_a_, DoBufferReady(_)).Times(1); } SendStubFrameToDeviceClient(arbitrary_format_, arbitrary_color_space_); base::RunLoop().RunUntilIdle(); @@ -1020,7 +989,7 @@ TEST_F(VideoCaptureControllerTest, DeviceClientWithColorSpace) { EXPECT_CALL(*client_a_, DoBufferCreated(_, _)) .Times(1) .WillOnce(SaveArg<1>(&buffer_id_reported_to_client)); - EXPECT_CALL(*client_a_, DoBufferReady(_, _)).Times(1); + EXPECT_CALL(*client_a_, DoBufferReady(_)).Times(1); } EXPECT_CALL(*client_a_, DoBufferDestroyed(_, _)).Times(0); SendStubFrameToDeviceClient(requested_params.requested_format, diff --git a/media/capture/video/chromeos/video_capture_jpeg_decoder.h b/media/capture/video/chromeos/video_capture_jpeg_decoder.h index ade6f34373d47..cd882ab558bab 100644 --- a/media/capture/video/chromeos/video_capture_jpeg_decoder.h +++ b/media/capture/video/chromeos/video_capture_jpeg_decoder.h @@ -25,9 +25,7 @@ class CAPTURE_EXPORT VideoCaptureJpegDecoder { // decode error. }; - using DecodeDoneCB = - base::RepeatingCallback<void(ReadyFrameInBuffer, - std::vector<ReadyFrameInBuffer>)>; + using DecodeDoneCB = base::RepeatingCallback<void(ReadyFrameInBuffer)>; virtual ~VideoCaptureJpegDecoder() {} diff --git a/media/capture/video/chromeos/video_capture_jpeg_decoder_impl.cc b/media/capture/video/chromeos/video_capture_jpeg_decoder_impl.cc index ef4f76a3c3c03..088640ce93806 100644 --- a/media/capture/video/chromeos/video_capture_jpeg_decoder_impl.cc +++ b/media/capture/video/chromeos/video_capture_jpeg_decoder_impl.cc @@ -142,8 +142,7 @@ void VideoCaptureJpegDecoderImpl::DecodeCapturedData( decode_done_cb_, ReadyFrameInBuffer(out_buffer.id, out_buffer.frame_feedback_id, std::move(out_buffer.access_permission), - std::move(out_frame_info)), - std::vector<ReadyFrameInBuffer>()); + std::move(out_frame_info))); } // base::Unretained is safe because |decoder_| is deleted on diff --git a/media/capture/video/mock_video_frame_receiver.h b/media/capture/video/mock_video_frame_receiver.h index 9f463fdd4f599..5a94409059d46 100644 --- a/media/capture/video/mock_video_frame_receiver.h +++ b/media/capture/video/mock_video_frame_receiver.h @@ -39,9 +39,7 @@ class MockVideoFrameReceiver : public VideoFrameReceiver { MockOnNewBufferHandle(buffer_id); } - void OnFrameReadyInBuffer( - ReadyFrameInBuffer frame, - std::vector<ReadyFrameInBuffer> scaled_frames) override { + void OnFrameReadyInBuffer(ReadyFrameInBuffer frame) override { MockOnFrameReadyInBuffer(frame.buffer_id, &frame.buffer_read_permission, frame.frame_info->coded_size); } diff --git a/media/capture/video/video_capture_device_client.cc b/media/capture/video/video_capture_device_client.cc index 2a84aced137e7..56cec0a5bf213 100644 --- a/media/capture/video/video_capture_device_client.cc +++ b/media/capture/video/video_capture_device_client.cc @@ -496,7 +496,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedExternalBuffer( "trakcer failed."; return; } - receiver_->OnFrameReadyInBuffer(std::move(ready_frame), {}); + receiver_->OnFrameReadyInBuffer(std::move(ready_frame)); } VideoCaptureDevice::Client::ReserveResult @@ -675,13 +675,11 @@ void VideoCaptureDeviceClient::OnIncomingCapturedBufferExt( info->is_premapped = buffer.is_premapped; buffer_pool_->HoldForConsumers(buffer.id, 1); - receiver_->OnFrameReadyInBuffer( - ReadyFrameInBuffer( - buffer.id, buffer.frame_feedback_id, - std::make_unique<ScopedBufferPoolReservation<ConsumerReleaseTraits>>( - buffer_pool_, buffer.id), - std::move(info)), - {}); + receiver_->OnFrameReadyInBuffer(ReadyFrameInBuffer( + buffer.id, buffer.frame_feedback_id, + std::make_unique<ScopedBufferPoolReservation<ConsumerReleaseTraits>>( + buffer_pool_, buffer.id), + std::move(info))); } void VideoCaptureDeviceClient::OnError(VideoCaptureError error, diff --git a/media/capture/video/video_frame_receiver.h b/media/capture/video/video_frame_receiver.h index c59e7d1dbe88d..3ab3d53e85307 100644 --- a/media/capture/video/video_frame_receiver.h +++ b/media/capture/video/video_frame_receiver.h @@ -5,6 +5,8 @@ #ifndef MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_H_ #define MEDIA_CAPTURE_VIDEO_VIDEO_FRAME_RECEIVER_H_ +#include <memory> + #include "base/functional/callback_helpers.h" #include "media/capture/capture_export.h" #include "media/capture/mojom/video_capture_buffer.mojom.h" @@ -77,9 +79,7 @@ class CAPTURE_EXPORT VideoFrameReceiver { // the buffer. The producer guarantees that the buffer and its contents stay // alive and unchanged until VideoFrameReceiver releases the given // |buffer_read_permission|. - virtual void OnFrameReadyInBuffer( - ReadyFrameInBuffer frame, - std::vector<ReadyFrameInBuffer> scaled_frames) = 0; + virtual void OnFrameReadyInBuffer(ReadyFrameInBuffer frame) = 0; // Tells the VideoFrameReceiver that the producer is no longer going to use // the buffer with id |buffer_id| for frame delivery. This may be called even diff --git a/media/capture/video/video_frame_receiver_on_task_runner.cc b/media/capture/video/video_frame_receiver_on_task_runner.cc index 01999eaf4852e..3758a08b7f5d8 100644 --- a/media/capture/video/video_frame_receiver_on_task_runner.cc +++ b/media/capture/video/video_frame_receiver_on_task_runner.cc @@ -34,12 +34,10 @@ void VideoFrameReceiverOnTaskRunner::OnNewBuffer( } void VideoFrameReceiverOnTaskRunner::OnFrameReadyInBuffer( - ReadyFrameInBuffer frame, - std::vector<ReadyFrameInBuffer> scaled_frames) { + ReadyFrameInBuffer frame) { task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&VideoFrameReceiver::OnFrameReadyInBuffer, receiver_, - std::move(frame), std::move(scaled_frames))); + FROM_HERE, base::BindOnce(&VideoFrameReceiver::OnFrameReadyInBuffer, + receiver_, std::move(frame))); } void VideoFrameReceiverOnTaskRunner::OnBufferRetired(int buffer_id) { diff --git a/media/capture/video/video_frame_receiver_on_task_runner.h b/media/capture/video/video_frame_receiver_on_task_runner.h index d78f4e3adc4c4..5fa8e66d03570 100644 --- a/media/capture/video/video_frame_receiver_on_task_runner.h +++ b/media/capture/video/video_frame_receiver_on_task_runner.h @@ -26,9 +26,7 @@ class CAPTURE_EXPORT VideoFrameReceiverOnTaskRunner void OnCaptureConfigurationChanged() override; void OnNewBuffer(int32_t buffer_id, media::mojom::VideoBufferHandlePtr buffer_handle) override; - void OnFrameReadyInBuffer( - ReadyFrameInBuffer frame, - std::vector<ReadyFrameInBuffer> scaled_frames) override; + void OnFrameReadyInBuffer(ReadyFrameInBuffer frame) override; void OnBufferRetired(int buffer_id) override; void OnError(VideoCaptureError error) override; void OnFrameDropped(VideoCaptureFrameDropReason reason) override; diff --git a/services/video_capture/ash/video_frame_handler_ash.cc b/services/video_capture/ash/video_frame_handler_ash.cc index 93929ea95e21c..92b1f7f2eadfb 100644 --- a/services/video_capture/ash/video_frame_handler_ash.cc +++ b/services/video_capture/ash/video_frame_handler_ash.cc @@ -161,20 +161,12 @@ void VideoFrameHandlerAsh::OnFrameAccessHandlerReady( } void VideoFrameHandlerAsh::OnFrameReadyInBuffer( - video_capture::mojom::ReadyFrameInBufferPtr buffer, - std::vector<video_capture::mojom::ReadyFrameInBufferPtr> scaled_buffers) { + video_capture::mojom::ReadyFrameInBufferPtr buffer) { DCHECK(frame_access_handler_remote_); crosapi::mojom::ReadyFrameInBufferPtr crosapi_buffer = ToCrosapiBuffer(std::move(buffer), frame_access_handler_remote_); - std::vector<crosapi::mojom::ReadyFrameInBufferPtr> crosapi_scaled_buffers; - crosapi_scaled_buffers.reserve(scaled_buffers.size()); - for (auto& b : scaled_buffers) { - crosapi_scaled_buffers.push_back( - ToCrosapiBuffer(std::move(b), frame_access_handler_remote_)); - } - proxy_->OnFrameReadyInBuffer(std::move(crosapi_buffer), - std::move(crosapi_scaled_buffers)); + proxy_->OnFrameReadyInBuffer(std::move(crosapi_buffer), {}); } void VideoFrameHandlerAsh::OnBufferRetired(int buffer_id) { diff --git a/services/video_capture/ash/video_frame_handler_ash.h b/services/video_capture/ash/video_frame_handler_ash.h index d1841c4222044..2348ac514df92 100644 --- a/services/video_capture/ash/video_frame_handler_ash.h +++ b/services/video_capture/ash/video_frame_handler_ash.h @@ -5,8 +5,6 @@ #ifndef SERVICES_VIDEO_CAPTURE_ASH_VIDEO_FRAME_HANDLER_ASH_H_ #define SERVICES_VIDEO_CAPTURE_ASH_VIDEO_FRAME_HANDLER_ASH_H_ -#include <vector> - #include "chromeos/crosapi/mojom/video_capture.mojom.h" #include "media/capture/mojom/video_capture_buffer.mojom.h" #include "media/capture/mojom/video_capture_types.mojom.h" @@ -66,9 +64,7 @@ class VideoFrameHandlerAsh : public video_capture::mojom::VideoFrameHandler { mojo::PendingRemote<video_capture::mojom::VideoFrameAccessHandler> pending_frame_access_handler) override; void OnFrameReadyInBuffer( - video_capture::mojom::ReadyFrameInBufferPtr buffer, - std::vector<video_capture::mojom::ReadyFrameInBufferPtr> scaled_buffers) - override; + video_capture::mojom::ReadyFrameInBufferPtr buffer) override; void OnBufferRetired(int buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/services/video_capture/broadcasting_receiver.cc b/services/video_capture/broadcasting_receiver.cc index da105be37a85d..769d85c3a5a1c 100644 --- a/services/video_capture/broadcasting_receiver.cc +++ b/services/video_capture/broadcasting_receiver.cc @@ -263,8 +263,7 @@ void BroadcastingReceiver::OnNewBuffer( } void BroadcastingReceiver::OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) { + media::ReadyFrameInBuffer frame) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); bool has_consumers = false; for (auto& client : clients_) { @@ -286,17 +285,6 @@ void BroadcastingReceiver::OnFrameReadyInBuffer( std::make_pair(buffer_context->buffer_context_id(), std::move(frame.buffer_read_permission))); DCHECK(result.second); - std::vector<BufferContext*> scaled_buffer_contexts; - scaled_buffer_contexts.reserve(scaled_frames.size()); - for (auto& scaled_frame : scaled_frames) { - it = FindUnretiredBufferContextFromBufferId(scaled_frame.buffer_id); - CHECK(it != buffer_contexts_.end()); - result = scoped_access_permissions_by_buffer_context_id_.insert( - std::make_pair(it->buffer_context_id(), - std::move(scaled_frame.buffer_read_permission))); - DCHECK(result.second); - scaled_buffer_contexts.push_back(&(*it)); - } // Broadcast to all clients. for (auto& client : clients_) { if (client.second.is_suspended()) @@ -321,17 +309,7 @@ void BroadcastingReceiver::OnFrameReadyInBuffer( buffer_context->buffer_context_id(), frame.frame_feedback_id, frame.frame_info.Clone()); - std::vector<mojom::ReadyFrameInBufferPtr> scaled_ready_buffers; - scaled_ready_buffers.reserve(scaled_frames.size()); - for (size_t i = 0; i < scaled_frames.size(); ++i) { - scaled_buffer_contexts[i]->IncreaseConsumerCount(); - scaled_ready_buffers.push_back(mojom::ReadyFrameInBuffer::New( - scaled_buffer_contexts[i]->buffer_context_id(), - scaled_frames[i].frame_feedback_id, - scaled_frames[i].frame_info.Clone())); - } - client.second.client()->OnFrameReadyInBuffer( - std::move(ready_buffer), std::move(scaled_ready_buffers)); + client.second.client()->OnFrameReadyInBuffer(std::move(ready_buffer)); } } diff --git a/services/video_capture/broadcasting_receiver.h b/services/video_capture/broadcasting_receiver.h index e97396ea159fe..d8feddf9e6921 100644 --- a/services/video_capture/broadcasting_receiver.h +++ b/services/video_capture/broadcasting_receiver.h @@ -79,9 +79,7 @@ class BroadcastingReceiver : public media::VideoFrameReceiver { void OnCaptureConfigurationChanged() override; void OnNewBuffer(int32_t buffer_id, media::mojom::VideoBufferHandlePtr buffer_handle) override; - void OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) override; + void OnFrameReadyInBuffer(media::ReadyFrameInBuffer frame) override; void OnBufferRetired(int32_t buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/services/video_capture/broadcasting_receiver_unittest.cc b/services/video_capture/broadcasting_receiver_unittest.cc index e6d5107bf45d0..0026faa3beb04 100644 --- a/services/video_capture/broadcasting_receiver_unittest.cc +++ b/services/video_capture/broadcasting_receiver_unittest.cc @@ -92,8 +92,7 @@ TEST_F( broadcaster_.OnFrameReadyInBuffer( media::ReadyFrameInBuffer(kArbitraryBufferId, kArbitraryFrameFeedbackId, std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()), - {}); + media::mojom::VideoFrameInfo::New())); // mock_video_frame_handler_1_ finishes consuming immediately. // mock_video_frame_handler_2_ continues consuming. @@ -151,8 +150,7 @@ TEST_F(BroadcastingReceiverTest, broadcaster_.OnFrameReadyInBuffer( media::ReadyFrameInBuffer(kArbitraryBufferId, kArbitraryFrameFeedbackId, std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()), - {}); + media::mojom::VideoFrameInfo::New())); // Because the clients are suspended, frames are automatically released. base::RunLoop().RunUntilIdle(); @@ -165,8 +163,7 @@ TEST_F(BroadcastingReceiverTest, broadcaster_.OnFrameReadyInBuffer( media::ReadyFrameInBuffer(kArbitraryBufferId, kArbitraryFrameFeedbackId, std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()), - {}); + media::mojom::VideoFrameInfo::New())); // This time the buffer is not released automatically. base::RunLoop().RunUntilIdle(); @@ -180,66 +177,6 @@ TEST_F(BroadcastingReceiverTest, DCHECK_EQ(HoldBufferContextSize(), 0u); } -TEST_F(BroadcastingReceiverTest, ForwardsScaledFrames) { - const int kBufferId = 10; - const int kScaledBufferId = 11; - - mock_video_frame_handler_1_->HoldAccessPermissions(); - - media::mojom::VideoBufferHandlePtr buffer_handle = - media::mojom::VideoBufferHandle::NewUnsafeShmemRegion( - base::UnsafeSharedMemoryRegion::Create(kArbitraryDummyBufferSize)); - broadcaster_.OnNewBuffer(kBufferId, std::move(buffer_handle)); - - media::mojom::VideoBufferHandlePtr scaled_buffer_handle = - media::mojom::VideoBufferHandle::NewUnsafeShmemRegion( - base::UnsafeSharedMemoryRegion::Create(kArbitraryDummyBufferSize)); - broadcaster_.OnNewBuffer(kScaledBufferId, std::move(scaled_buffer_handle)); - - // Suspend the second client so that the first client alone controls buffer - // access. - broadcaster_.SuspendClient(client_id_2_); - - base::RunLoop on_buffer_ready; - EXPECT_CALL(*mock_video_frame_handler_1_, DoOnFrameReadyInBuffer(_, _, _)) - .WillOnce( - InvokeWithoutArgs([&on_buffer_ready]() { on_buffer_ready.Quit(); })); - - media::ReadyFrameInBuffer ready_buffer = - media::ReadyFrameInBuffer(kBufferId, kArbitraryFrameFeedbackId, - std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()); - - std::vector<media::ReadyFrameInBuffer> scaled_ready_buffers; - scaled_ready_buffers.emplace_back(kScaledBufferId, kArbitraryFrameFeedbackId, - std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()); - - broadcaster_.OnFrameReadyInBuffer(std::move(ready_buffer), - std::move(scaled_ready_buffers)); - on_buffer_ready.Run(); - DCHECK_EQ(HoldBufferContextSize(), 2u); - - // Releasing the handler's buffers releases both frame and scaled frame. - mock_video_frame_handler_1_->ReleaseAccessedFrames(); - base::RunLoop().RunUntilIdle(); - DCHECK_EQ(HoldBufferContextSize(), 0u); - - // Scaled buffers also get retired. - base::RunLoop on_both_buffers_retired; - size_t num_buffers_retired = 0u; - EXPECT_CALL(*mock_video_frame_handler_1_, DoOnBufferRetired(_)) - .WillRepeatedly( - InvokeWithoutArgs([&on_both_buffers_retired, &num_buffers_retired]() { - ++num_buffers_retired; - if (num_buffers_retired == 2u) - on_both_buffers_retired.Quit(); - })); - broadcaster_.OnBufferRetired(kBufferId); - broadcaster_.OnBufferRetired(kScaledBufferId); - on_both_buffers_retired.Run(); -} - TEST_F(BroadcastingReceiverTest, AccessPermissionsSurviveStop) { // For simplicitly, we only care about the first client in this test. broadcaster_.SuspendClient(client_id_2_); @@ -254,8 +191,7 @@ TEST_F(BroadcastingReceiverTest, AccessPermissionsSurviveStop) { broadcaster_.OnFrameReadyInBuffer( media::ReadyFrameInBuffer(kArbitraryBufferId, kArbitraryFrameFeedbackId, std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()), - {}); + media::mojom::VideoFrameInfo::New())); base::RunLoop().RunUntilIdle(); // The first frame has not been released yet. @@ -279,12 +215,10 @@ TEST_F(BroadcastingReceiverTest, AccessPermissionsSurviveStop) { broadcaster_.OnNewBuffer(kArbitraryBufferId + 1, std::move(buffer_handle2)); EXPECT_CALL(*mock_video_frame_handler_1_, DoOnFrameReadyInBuffer(_, _, _)) .Times(1); - broadcaster_.OnFrameReadyInBuffer( - media::ReadyFrameInBuffer(kArbitraryBufferId + 1, - kArbitraryFrameFeedbackId + 1, - std::make_unique<StubReadWritePermission>(), - media::mojom::VideoFrameInfo::New()), - {}); + broadcaster_.OnFrameReadyInBuffer(media::ReadyFrameInBuffer( + kArbitraryBufferId + 1, kArbitraryFrameFeedbackId + 1, + std::make_unique<StubReadWritePermission>(), + media::mojom::VideoFrameInfo::New())); base::RunLoop().RunUntilIdle(); // Neither frame has been released. diff --git a/services/video_capture/gpu_memory_buffer_virtual_device_mojo_adapter.cc b/services/video_capture/gpu_memory_buffer_virtual_device_mojo_adapter.cc index 2747514499097..662d2a81cdeea 100644 --- a/services/video_capture/gpu_memory_buffer_virtual_device_mojo_adapter.cc +++ b/services/video_capture/gpu_memory_buffer_virtual_device_mojo_adapter.cc @@ -70,10 +70,8 @@ void GpuMemoryBufferVirtualDeviceMojoAdapter::OnFrameReadyInBuffer( video_frame_handler_, frame_access_handler_remote_); video_frame_handler_has_forwarder_ = true; } - video_frame_handler_->OnFrameReadyInBuffer( - mojom::ReadyFrameInBuffer::New(buffer_id, 0 /* frame_feedback_id */, - std::move(frame_info)), - {}); + video_frame_handler_->OnFrameReadyInBuffer(mojom::ReadyFrameInBuffer::New( + buffer_id, 0 /* frame_feedback_id */, std::move(frame_info))); } void GpuMemoryBufferVirtualDeviceMojoAdapter::OnBufferRetired(int buffer_id) { diff --git a/services/video_capture/lacros/video_frame_handler_proxy_lacros.cc b/services/video_capture/lacros/video_frame_handler_proxy_lacros.cc index 4d5023582b74b..51c86f4614957 100644 --- a/services/video_capture/lacros/video_frame_handler_proxy_lacros.cc +++ b/services/video_capture/lacros/video_frame_handler_proxy_lacros.cc @@ -126,7 +126,7 @@ void VideoFrameHandlerProxyLacros::OnNewBuffer( void VideoFrameHandlerProxyLacros::OnFrameReadyInBuffer( crosapi::mojom::ReadyFrameInBufferPtr buffer, - std::vector<crosapi::mojom::ReadyFrameInBufferPtr> scaled_buffers) { + std::vector<crosapi::mojom::ReadyFrameInBufferPtr> /*scaled_buffers*/) { if (handler_.is_bound()) { if (!access_permission_proxy_map_) { access_permission_proxy_map_ = new AccessPermissionProxyMap(); @@ -142,25 +142,11 @@ void VideoFrameHandlerProxyLacros::OnFrameReadyInBuffer( buffer->buffer_id, std::move(buffer->access_permission)); mojom::ReadyFrameInBufferPtr video_capture_buffer = ToVideoCaptureBuffer(std::move(buffer)); - std::vector<mojom::ReadyFrameInBufferPtr> video_capture_scaled_buffers; - for (auto& b : scaled_buffers) { - access_permission_proxy_map_->InsertAccessPermission( - b->buffer_id, std::move(b->access_permission)); - video_capture_scaled_buffers.push_back( - ToVideoCaptureBuffer(std::move(b))); - } - handler_->OnFrameReadyInBuffer(std::move(video_capture_buffer), - std::move(video_capture_scaled_buffers)); + handler_->OnFrameReadyInBuffer(std::move(video_capture_buffer)); } else if (handler_in_process_) { - std::vector<media::ReadyFrameInBuffer> media_scaled_buffers; - for (auto& b : scaled_buffers) { - media_scaled_buffers.push_back(ConvertToMediaReadyFrame(std::move(b))); - } - handler_in_process_->OnFrameReadyInBuffer( - ConvertToMediaReadyFrame(std::move(buffer)), - std::move(media_scaled_buffers)); + ConvertToMediaReadyFrame(std::move(buffer))); } } diff --git a/services/video_capture/public/cpp/mock_video_frame_handler.cc b/services/video_capture/public/cpp/mock_video_frame_handler.cc index 0e53c265800cf..4b214ed58d73e 100644 --- a/services/video_capture/public/cpp/mock_video_frame_handler.cc +++ b/services/video_capture/public/cpp/mock_video_frame_handler.cc @@ -48,12 +48,8 @@ void MockVideoFrameHandler::OnFrameAccessHandlerReady( } void MockVideoFrameHandler::OnFrameReadyInBuffer( - mojom::ReadyFrameInBufferPtr buffer, - std::vector<mojom::ReadyFrameInBufferPtr> scaled_buffers) { + mojom::ReadyFrameInBufferPtr buffer) { accessed_frame_ids_.push_back(buffer->buffer_id); - for (auto& scaled_buffer : scaled_buffers) { - accessed_frame_ids_.push_back(scaled_buffer->buffer_id); - } DoOnFrameReadyInBuffer(buffer->buffer_id, buffer->frame_feedback_id, &buffer->frame_info); if (!should_store_access_permissions_) { diff --git a/services/video_capture/public/cpp/mock_video_frame_handler.h b/services/video_capture/public/cpp/mock_video_frame_handler.h index d6b65243c8dc7..960a830eeb5e1 100644 --- a/services/video_capture/public/cpp/mock_video_frame_handler.h +++ b/services/video_capture/public/cpp/mock_video_frame_handler.h @@ -32,9 +32,7 @@ class MockVideoFrameHandler : public mojom::VideoFrameHandler { void OnFrameAccessHandlerReady( mojo::PendingRemote<video_capture::mojom::VideoFrameAccessHandler> frame_access_handler_proxy) override; - void OnFrameReadyInBuffer( - mojom::ReadyFrameInBufferPtr buffer, - std::vector<mojom::ReadyFrameInBufferPtr> scaled_buffers) override; + void OnFrameReadyInBuffer(mojom::ReadyFrameInBufferPtr buffer) override; void OnBufferRetired(int32_t buffer_id) override; MOCK_METHOD0(OnCaptureConfigurationChanged, void()); diff --git a/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.cc b/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.cc index 5031df30fcede..78903577f5d2a 100644 --- a/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.cc +++ b/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.cc @@ -45,8 +45,7 @@ void ReceiverMediaToMojoAdapter::OnFrameAccessHandlerReady( } void ReceiverMediaToMojoAdapter::OnFrameReadyInBuffer( - mojom::ReadyFrameInBufferPtr buffer, - std::vector<mojom::ReadyFrameInBufferPtr> scaled_buffers) { + mojom::ReadyFrameInBufferPtr buffer) { DCHECK(frame_access_handler_); media::ReadyFrameInBuffer media_buffer( @@ -56,18 +55,7 @@ void ReceiverMediaToMojoAdapter::OnFrameReadyInBuffer( buffer->buffer_id)), std::move(buffer->frame_info)); - std::vector<media::ReadyFrameInBuffer> media_scaled_buffers; - media_scaled_buffers.reserve(scaled_buffers.size()); - for (auto& scaled_buffer : scaled_buffers) { - media_scaled_buffers.emplace_back( - scaled_buffer->buffer_id, scaled_buffer->frame_feedback_id, - std::make_unique<media::ScopedFrameDoneHelper>( - base::BindOnce(&OnFramePropagationComplete, frame_access_handler_, - scaled_buffer->buffer_id)), - std::move(scaled_buffer->frame_info)); - } - receiver_->OnFrameReadyInBuffer(std::move(media_buffer), - std::move(media_scaled_buffers)); + receiver_->OnFrameReadyInBuffer(std::move(media_buffer)); } void ReceiverMediaToMojoAdapter::OnBufferRetired(int32_t buffer_id) { diff --git a/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.h b/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.h index 54c6ea123812b..2b0fda6bae801 100644 --- a/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.h +++ b/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.h @@ -27,9 +27,7 @@ class ReceiverMediaToMojoAdapter : public mojom::VideoFrameHandler { void OnFrameAccessHandlerReady( mojo::PendingRemote<video_capture::mojom::VideoFrameAccessHandler> pending_frame_access_handler) override; - void OnFrameReadyInBuffer( - mojom::ReadyFrameInBufferPtr buffer, - std::vector<mojom::ReadyFrameInBufferPtr> scaled_buffers) override; + void OnFrameReadyInBuffer(mojom::ReadyFrameInBufferPtr buffer) override; void OnBufferRetired(int32_t buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.cc b/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.cc index 04ddb3fe2b76d..da50818459099 100644 --- a/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.cc +++ b/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.cc @@ -30,8 +30,7 @@ void ReceiverMojoToMediaAdapter::OnNewBuffer( } void ReceiverMojoToMediaAdapter::OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) { + media::ReadyFrameInBuffer frame) { if (!scoped_access_permission_map_) { scoped_access_permission_map_ = ScopedAccessPermissionMap::CreateMapAndSendVideoFrameAccessHandlerReady( @@ -42,18 +41,7 @@ void ReceiverMojoToMediaAdapter::OnFrameReadyInBuffer( mojom::ReadyFrameInBufferPtr mojom_frame = mojom::ReadyFrameInBuffer::New( frame.buffer_id, frame.frame_feedback_id, std::move(frame.frame_info)); - std::vector<mojom::ReadyFrameInBufferPtr> mojom_scaled_frames; - mojom_scaled_frames.reserve(scaled_frames.size()); - for (auto& scaled_frame : scaled_frames) { - scoped_access_permission_map_->InsertAccessPermission( - scaled_frame.buffer_id, std::move(scaled_frame.buffer_read_permission)); - mojom_scaled_frames.push_back(mojom::ReadyFrameInBuffer::New( - scaled_frame.buffer_id, scaled_frame.frame_feedback_id, - std::move(scaled_frame.frame_info))); - } - - video_frame_handler_->OnFrameReadyInBuffer(std::move(mojom_frame), - std::move(mojom_scaled_frames)); + video_frame_handler_->OnFrameReadyInBuffer(std::move(mojom_frame)); } void ReceiverMojoToMediaAdapter::OnBufferRetired(int buffer_id) { diff --git a/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.h b/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.h index ade3568979354..3e42d3a344d8a 100644 --- a/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.h +++ b/services/video_capture/public/cpp/receiver_mojo_to_media_adapter.h @@ -26,9 +26,7 @@ class ReceiverMojoToMediaAdapter : public media::VideoFrameReceiver { void OnCaptureConfigurationChanged() override; void OnNewBuffer(int buffer_id, media::mojom::VideoBufferHandlePtr buffer_handle) override; - void OnFrameReadyInBuffer( - media::ReadyFrameInBuffer frame, - std::vector<media::ReadyFrameInBuffer> scaled_frames) override; + void OnFrameReadyInBuffer(media::ReadyFrameInBuffer frame) override; void OnBufferRetired(int buffer_id) override; void OnError(media::VideoCaptureError error) override; void OnFrameDropped(media::VideoCaptureFrameDropReason reason) override; diff --git a/services/video_capture/public/mojom/video_frame_handler.mojom b/services/video_capture/public/mojom/video_frame_handler.mojom index 1296b4107f040..439843746af3a 100644 --- a/services/video_capture/public/mojom/video_frame_handler.mojom +++ b/services/video_capture/public/mojom/video_frame_handler.mojom @@ -51,13 +51,11 @@ interface VideoFrameHandler { OnFrameAccessHandlerReady( pending_remote<VideoFrameAccessHandler> frame_access_handler); - // Indicates that a new frame is ready for consumption and optionally a set of - // scaled down versions of that frame. The producer guarantees that the - // buffer(s) and their contents stay alive and unchanged until - // VideoFrameHandler releases the buffers using |frame_access_handler|'s + // Indicates that a new frame is ready for consumption. The producer + // guarantees that the buffer and its contents stay alive and unchanged until + // VideoFrameHandler releases the buffer using |frame_access_handler|'s // OnFinishedConsumingBuffer(). - OnFrameReadyInBuffer(ReadyFrameInBuffer buffer, - array<ReadyFrameInBuffer> scaled_buffers); + OnFrameReadyInBuffer(ReadyFrameInBuffer buffer); // Indicates that the producer is no longer going to use the buffer with id // |buffer_id| for frame delivery. This may be called even while the handler diff --git a/services/video_capture/shared_memory_virtual_device_mojo_adapter.cc b/services/video_capture/shared_memory_virtual_device_mojo_adapter.cc index cb1ce7dd2f551..7fff3f3629044 100644 --- a/services/video_capture/shared_memory_virtual_device_mojo_adapter.cc +++ b/services/video_capture/shared_memory_virtual_device_mojo_adapter.cc @@ -136,10 +136,8 @@ void SharedMemoryVirtualDeviceMojoAdapter::OnFrameReadyInBuffer( buffer_pool_, buffer_id); scoped_access_permission_map_->InsertAccessPermission( buffer_id, std::move(access_permission)); - video_frame_handler_->OnFrameReadyInBuffer( - mojom::ReadyFrameInBuffer::New(buffer_id, 0 /* frame_feedback_id */, - std::move(frame_info)), - {}); + video_frame_handler_->OnFrameReadyInBuffer(mojom::ReadyFrameInBuffer::New( + buffer_id, 0 /* frame_feedback_id */, std::move(frame_info))); } else if (video_frame_handler_in_process_) { buffer_pool_->HoldForConsumers(buffer_id, 1 /* num_clients */); video_frame_handler_in_process_->OnFrameReadyInBuffer( @@ -147,8 +145,7 @@ void SharedMemoryVirtualDeviceMojoAdapter::OnFrameReadyInBuffer( buffer_id, 0 /* frame_feedback_id */, std::make_unique<media::ScopedBufferPoolReservation< media::ConsumerReleaseTraits>>(buffer_pool_, buffer_id), - std::move(frame_info)), - {}); + std::move(frame_info))); } buffer_pool_->RelinquishProducerReservation(buffer_id); } diff --git a/services/video_capture/texture_virtual_device_mojo_adapter.cc b/services/video_capture/texture_virtual_device_mojo_adapter.cc index fd1664d736fe1..f183106c2935f 100644 --- a/services/video_capture/texture_virtual_device_mojo_adapter.cc +++ b/services/video_capture/texture_virtual_device_mojo_adapter.cc @@ -94,18 +94,15 @@ void TextureVirtualDeviceMojoAdapter::OnFrameReadyInBuffer( video_frame_handler_has_forwarder_ = true; } - video_frame_handler_->OnFrameReadyInBuffer( - mojom::ReadyFrameInBuffer::New(buffer_id, 0 /* frame_feedback_id */, - std::move(frame_info)), - {}); + video_frame_handler_->OnFrameReadyInBuffer(mojom::ReadyFrameInBuffer::New( + buffer_id, 0 /* frame_feedback_id */, std::move(frame_info))); } else if (video_frame_handler_in_process_) { video_frame_handler_has_forwarder_ = true; video_frame_handler_in_process_->OnFrameReadyInBuffer( media::ReadyFrameInBuffer(buffer_id, 0 /* frame_feedback_id */, std::make_unique<ScopedBufferPoolReservation>( frame_access_handler_remote_, buffer_id), - std::move(frame_info)), - {}); + std::move(frame_info))); } }