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

Issue 834478 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 28
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Feature



Sign in to add a comment

[Video Capture] Add support for virtual devices accepting textures

Project Member Reported by chfremer@chromium.org, Apr 18 2018

Issue description

Project Member

Comment 1 by bugdroid1@chromium.org, Apr 20 2018

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

commit 35a0f3ba51ce323aee824b203579cec17e1f3e11
Author: Christian Fremerey <chfremer@chromium.org>
Date: Fri Apr 20 17:04:24 2018

[Video Capture] Remove VideoPixelStorage enum

An enum VideoPixelStorage was previously used for two purposes:
  1. Allow clients to specify when opening a video capture device if they
     want frames to be delivered via SharedMemory buffers or
     GpuMemoryBuffers
  2. When instances of media::VideoFrame are delivered, indicate which type
     of buffer it is using.
Support for frame transport via GpuMemoryBuffers has since been removed.
The enum was kept around since it was anticipated that we support for buffers
other than SharedMemory would be added again soon.

Even though we are now about to add support for textures (via MailboxHolder)
as buffer type, the VideoPixelStorage is not going to be useful for both of
the above purposes. It is not useful for purpose 1, because we do not
currently have a need to implement virtual devices for which clients can
choose the transport buffer type. If the need arises in the future, we can
add it then. It is not useful for purpose 2, since the API design is now
such that buffers are identified by buffer ids, and from the buffer id, the
type of buffer is already clear.

With the possibility of devices delivering frames using MailboxHolder,
it is now quite confusing to keep the VideoPixelStorage enum with a single
option “CPU” around, so it is best to remove it at this time.

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

Bug:  834478 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: Idbd1d966ea2fc50aae9b512ca7b9383eb28e33ed
Reviewed-on: https://chromium-review.googlesource.com/1017916
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Reviewed-by: Olga Sharonova <olka@chromium.org>
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552360}
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/components/mirroring/browser/single_client_video_capture_host_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/components/mirroring/service/fake_video_capture_host.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/components/mirroring/service/video_capture_client.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/components/mirroring/service/video_capture_client_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/components/viz/service/frame_sinks/video_capture/frame_sink_video_capturer_impl.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/devtools/devtools_video_consumer_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/media/capture/desktop_capture_device_aura_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/media/capture/desktop_capture_device_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/media/capture/screen_capture_device_android_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/media/capture/web_contents_video_capture_device_browsertest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/media/media_internals_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/renderer_host/media/video_capture_browsertest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/renderer_host/media/video_capture_buffer_pool_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/renderer_host/media/video_capture_controller.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/renderer_host/media/video_capture_controller_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/browser/renderer_host/media/video_capture_gpu_jpeg_decoder.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/renderer/media/video_capture_impl.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/content/renderer/media/video_capture_impl_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/content/screen_capture_device_core.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/content/thread_safe_capture_oracle.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/ipc/capture_param_traits.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/ipc/capture_param_traits_macros.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/mojom/video_capture_types.mojom
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/mojom/video_capture_types.typemap
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/mojom/video_capture_types_mojom_traits.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/mojom/video_capture_types_mojom_traits.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/chromeos/mock_video_capture_client.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/chromeos/mock_video_capture_client.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/fake_video_capture_device.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/fake_video_capture_device.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/fake_video_capture_device_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/file_video_capture_device_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/linux/v4l2_capture_delegate_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/shared_memory_buffer_tracker.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/shared_memory_buffer_tracker.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_pool.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_pool_impl.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_pool_impl.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_tracker.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_tracker_factory.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_tracker_factory_impl.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_buffer_tracker_factory_impl.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_device.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_device_client.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_device_client.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_device_client_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/video_capture_device_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video/win/video_capture_device_mf_win_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video_capture_types.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/media/capture/video_capture_types.h
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/services/video_capture/device_factory_media_to_mojo_adapter.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/services/video_capture/public/mojom/virtual_device.mojom
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/services/video_capture/test/mock_device_factory.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/services/video_capture/test/virtual_device_unittest.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/services/video_capture/virtual_device_mojo_adapter.cc
[modify] https://crrev.com/35a0f3ba51ce323aee824b203579cec17e1f3e11/services/video_capture/virtual_device_mojo_adapter.h

Project Member

Comment 2 by bugdroid1@chromium.org, May 1 2018

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

commit 36d29057cdbd47d9c772c2063fe4fff6351de7d3
Author: Christian Fremerey <chfremer@chromium.org>
Date: Tue May 01 23:45:47 2018

[Video Capture] Allow usage of MailboxHolder for video frame transport

In interfaces that are used for sharing buffer handles, which currently can only be handles for SharedMemory, use a union struct media::mojom::VideoBufferHandle to allow the handle to be either for SharedMemory or for MailboxHolders.

Affected interfaces are:
video_capture::mojom::Receiver
media::VideoFrameReceiver
content::VideoCaptureControllerEventHandler
media::mojom::VideoCaptureObserver

Note: No update to interface media::VideoCaptureDevice::Client at this point,
because we are for now limiting this to virtual devices instead of also
including real webcams.

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

Bug:  834478 
Change-Id: Iaabcbe54face7290ea6ee3dab058c10e11c69728
Reviewed-on: https://chromium-review.googlesource.com/1022175
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Olga Sharonova <olka@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555231}
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/browser/single_client_video_capture_host.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/browser/single_client_video_capture_host.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/browser/single_client_video_capture_host_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/service/fake_video_capture_host.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/service/video_capture_client.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/service/video_capture_client.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/components/mirroring/service/video_capture_client_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/media/capture/frame_sink_video_capture_device.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/media/capture/frame_sink_video_capture_device_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/media/capture/web_contents_video_capture_device_browsertest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_browsertest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_controller.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_controller.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_controller_event_handler.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_controller_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_host.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_host.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_manager_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/browser/renderer_host/media/video_capture_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/renderer/media/video_capture_impl.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/renderer/media/video_capture_impl.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/content/renderer/media/video_capture_impl_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/mojom/video_capture.mojom
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/mojom/video_capture_types.mojom
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/video/mock_video_frame_receiver.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/video/video_capture_device_client.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/video/video_frame_receiver.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/video/video_frame_receiver_on_task_runner.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/media/capture/video/video_frame_receiver_on_task_runner.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/public/cpp/receiver_media_to_mojo_adapter.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/public/mojom/receiver.mojom
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/receiver_mojo_to_media_adapter.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/receiver_mojo_to_media_adapter.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/test/fake_device_descriptor_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/test/fake_device_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/test/mock_receiver.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/test/mock_receiver.h
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/test/virtual_device_unittest.cc
[modify] https://crrev.com/36d29057cdbd47d9c772c2063fe4fff6351de7d3/services/video_capture/virtual_device_mojo_adapter.cc

Project Member

Comment 3 by bugdroid1@chromium.org, May 3 2018

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

commit 3c7b626c766a38e9993f91c9cddcca523e63fecb
Author: Christian Fremerey <chfremer@chromium.org>
Date: Thu May 03 23:59:30 2018

[Video Capture Service] Add support for virtual devices using textures

The API of video_capture.mojom.DeviceFactory allows clients to register virtual
video capture devices which use shared memory buffers for transporting frames
from producer to consumers. This CL expands the API with a second type of
virtual video capture device, which is fed with textures (via MailboxHolder),
which are subsequently passed down all the way to the consumers.

This allows for displaying frames fed into such devices without the frame data
having to be moved/copied out of the GPU memory/context.

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

      virtual devices. An integration test has already been written and will be
      put up for review in the next CL of the series.

Bug:  834478 
Test: Note, that this cannot be tested manually, since there is no UI for adding
Change-Id: I3a031fe849aa3eb69ce0a429b2ea803ae1855a2b
Reviewed-on: https://chromium-review.googlesource.com/1028582
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555912}
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/content/browser/renderer_host/media/service_video_capture_device_launcher_unittest.cc
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/content/browser/renderer_host/media/service_video_capture_provider_unittest.cc
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/BUILD.gn
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/device_factory_media_to_mojo_adapter.cc
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/device_factory_media_to_mojo_adapter.h
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/public/mojom/BUILD.gn
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/public/mojom/device_factory.mojom
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/public/mojom/receiver.mojom
[add] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/public/mojom/scoped_access_permission.mojom
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/public/mojom/virtual_device.mojom
[rename] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/shared_memory_virtual_device_mojo_adapter.cc
[rename] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/shared_memory_virtual_device_mojo_adapter.h
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/test/device_factory_provider_unittest.cc
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/test/virtual_device_unittest.cc
[add] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/texture_virtual_device_mojo_adapter.cc
[add] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/texture_virtual_device_mojo_adapter.h
[add] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/texture_virtual_device_mojo_adapter_unittest.cc
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/virtual_device_enabled_device_factory.cc
[modify] https://crrev.com/3c7b626c766a38e9993f91c9cddcca523e63fecb/services/video_capture/virtual_device_enabled_device_factory.h

Labels: -Type-Bug Type-Feature
Should this be bumped to M69?
Labels: -M-68 M-69
Yes, sounds good.
Project Member

Comment 6 by bugdroid1@chromium.org, Jun 4 2018

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

commit 4a02606b229569f6112fb9aa4ab2b71995b173d6
Author: Christian Fremerey <chfremer@chromium.org>
Date: Mon Jun 04 21:58:44 2018

[Video Capture] Integration test for virtual device using textures

Add a content_browsertest that obtains a connection to the video capture service
via the Browser process' service manager. It then registers a virtual device at
the service and feeds frames to it. It opens the virtual device in a <video>
element on a test page and verifies that the element plays in the expected
dimensions and the pixel content on the element changes.

Add enum value VIRTUAL_DEVICE to enum class VideoCaptureApi to allow
virtual devices to use as value in order to avoid having to pretending to
be using any of the platform APIs for actual device capture. The value
UNKNOWN cannot be used, because it is interpreted as an error.

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

Bug:  834478 
Test: content_browsertests --gtest_filter=WebRtcVideoCaptureServiceBrowserTest.*
Change-Id: Ib26fb5c74c38e0952e57de4cbda80f1bbf8552ef
Reviewed-on: https://chromium-review.googlesource.com/1038644
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564255}
[add] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
[modify] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/content/test/BUILD.gn
[modify] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/content/test/data/media/video_capture_test.html
[modify] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/media/capture/mojom/video_capture_types.mojom
[modify] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/media/capture/mojom/video_capture_types_mojom_traits.cc
[modify] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/media/capture/video/video_capture_device_descriptor.cc
[modify] https://crrev.com/4a02606b229569f6112fb9aa4ab2b71995b173d6/media/capture/video/video_capture_device_descriptor.h

Project Member

Comment 7 by bugdroid1@chromium.org, Jun 13 2018

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

commit a91f85e04209881c892a83953058f1e7151c4c87
Author: Christian Fremerey <chfremer@chromium.org>
Date: Wed Jun 13 17:59:19 2018

[Video Capture] Integration test for virtual device using shared memory buffers

Same test case as added with previous CL
https://chromium-review.googlesource.com/c/chromium/src/+/1038644 but using
shared memory buffers instead of textures.

Add a content_browsertest that obtains a connection to the video capture service
via the Browser process' service manager. It then registers a virtual device at
the service and feeds frames to it. It opens the virtual device in a <video>
element on a test page and verifies that the element plays in the expected
dimensions and the pixel content on the element changes.

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

Test: content_browsertests --gtest_filter=WebRtcVideoCaptureServiceBrowserTest.*
Bug:  834478 
Change-Id: Ib2a364926ac4e5227f0670c587f01b0314a065b5
Reviewed-on: https://chromium-review.googlesource.com/1091809
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Emircan Uysaler <emircan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566907}
[modify] https://crrev.com/a91f85e04209881c892a83953058f1e7151c4c87/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc

Status: Fixed (was: Assigned)

Sign in to add a comment