New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 879264 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 21
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

[Video Capture Service] Support padded yuv frames for virtual devices

Project Member Reported by chfremer@chromium.org, Aug 30

Issue description

The video capture service allows clients to create virtual video capture devices. Virtual devices using shared memory as frame buffers currently require clients to write frame data into service-provided buffers and requires that the frame data is contiguous, i.e. does not contain any padding for memory alignment. The goal of this work is to add support for allowing clients to write frame data with padding. This is useful because frame producers/processors often rely on memory alignment to  work more efficiently.

Design Doc: https://docs.google.com/document/d/1ne5eQrkzAINzoHWSxEEy6N2nEVhnpCll6DF9dcQXAmI/edit?usp=sharing
 
Project Member

Comment 1 by bugdroid1@chromium.org, Sep 6

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/78afd4fbdf07a82256e7f9599638822305a0072e

commit 78afd4fbdf07a82256e7f9599638822305a0072e
Author: Christian Fremerey <chfremer@chromium.org>
Date: Thu Sep 06 23:41:48 2018

[Video Capture] Simplify VideoCaptureBufferPool

Since desktop capture has moved to using its own buffer pool implementation,
method ResurrectLastForProducer() in media::VideoCaptureBufferPool is no
longer used. This CL removes the method.

Bug:  879264 
Change-Id: Ia24c683c8e63bc5b0d1bdc800e8c7d491f7c7c89
Reviewed-on: https://chromium-review.googlesource.com/1208952
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Reviewed-by: Weiyong Yao <braveyao@chromium.org>
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589367}
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/content/browser/media/capture/desktop_capture_device_unittest.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/content/browser/media/capture/screen_capture_device_android_unittest.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/content/browser/renderer_host/media/video_capture_controller_unittest.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/chromeos/mock_video_capture_client.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/chromeos/mock_video_capture_client.h
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/mock_video_capture_device_client.h
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_buffer_pool.h
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_buffer_pool_impl.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_buffer_pool_impl.h
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_device.h
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_device_client.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_device_client.h
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_device_client_unittest.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/video_capture_device_unittest.cc
[modify] https://crrev.com/78afd4fbdf07a82256e7f9599638822305a0072e/media/capture/video/win/video_capture_device_mf_win_unittest.cc

Project Member

Comment 2 by bugdroid1@chromium.org, Sep 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/73aabbe8dfae6833c4fc838a4148d25de15a82f4

commit 73aabbe8dfae6833c4fc838a4148d25de15a82f4
Author: Christian Fremerey <chfremer@chromium.org>
Date: Tue Sep 18 17:10:04 2018

[Video Capture] Add support for padded YUV frames for virtual devices

Adds an optional field yuv_strites for Mojo struct VideoFrameInfo. This field
can be used to express that YUV frames use padding for row-by-row memory
alignment. This information is carried through the video capture stack from
virtual device to the Renderer in class VideoCaptureImpl, where it is then
translated to a media::VideoFrame.

Design Doc:
https://docs.google.com/document/d/1ne5eQrkzAINzoHWSxEEy6N2nEVhnpCll6DF9dcQXAmI/edit?usp=sharing

Bug:  879264 
Change-Id: I23ba97c2a075a4d55b75bf7c5171e4bb117197ec
Reviewed-on: https://chromium-review.googlesource.com/1208825
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592087}
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/components/mirroring/browser/single_client_video_capture_host_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/components/mirroring/service/fake_video_capture_host.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/components/mirroring/service/video_capture_client_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/devtools/devtools_video_consumer_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_browsertest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_controller.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_controller_event_handler.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_controller_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_host.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_host.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/renderer_host/media/video_capture_manager_unittest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/webrtc/webrtc_video_capture_browsertest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/renderer/media/video_capture_impl.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/test/data/media/video_capture_test.html
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/test/data/media/video_capture_test.js
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/content/test/data/media/webrtc_test_utilities.js
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/mojom/video_capture_types.mojom
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/shared_memory_buffer_tracker.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/shared_memory_buffer_tracker.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/video_capture_buffer_pool.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/video_capture_buffer_pool_impl.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/video_capture_buffer_pool_impl.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/video_capture_buffer_tracker.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/media/capture/video/video_capture_device_client.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/services/video_capture/public/mojom/virtual_device.mojom
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/services/video_capture/shared_memory_virtual_device_mojo_adapter.cc
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/services/video_capture/shared_memory_virtual_device_mojo_adapter.h
[modify] https://crrev.com/73aabbe8dfae6833c4fc838a4148d25de15a82f4/services/video_capture/test/virtual_device_unittest.cc

Status: Fixed (was: Assigned)
This feature should be available in builds starting with 71.0.3556.0.

Sign in to add a comment