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

Issue 783442 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature



Sign in to add a comment

Add multi-receiver support for a video capture device

Project Member Reported by z...@chromium.org, Nov 9 2017

Issue description

Basic idea: Update the video capture service to allow multiple clients to register receiver for a given capture device.
 

Comment 1 by z...@chromium.org, Nov 9 2017

@chfremer, let me know if you want me to look into it. I think it should be fairly straight forward.
Cc: -z...@chromium.org chfremer@chromium.org
Owner: z...@chromium.org
Status: Assigned (was: Untriaged)
Thanks for creating this entry.
Since I want to avoid this being blocked until I find the time, you are more than welcome to start the work on this, and I'll do my best to answer any question and review any change or idea that may come up.

Comment 3 by z...@chromium.org, Mar 8 2018

Owner: chfremer@chromium.org
@chfremer, I don't think this is needed on our side now. Feel free to take over if you think this is still useful for upstream. Otherwise, feel free to close it. Thanks,

Here is a WIP local patch if you want to continue on it:
https://eureka-internal-review.git.corp.google.com/c/chromium/src/+/141426
Project Member

Comment 4 by bugdroid1@chromium.org, Jan 14

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

commit c1d0754f16b949bb1e3ec2081f103943d93298d6
Author: Christian Fremerey <chfremer@chromium.org>
Date: Mon Jan 14 18:46:22 2019

[Video Capture Service] Add multi-client support: Add VideoSourceProvider

First step towards adding multi-client support to the video capture
service. This CL adds new interfaces VideoSourceProvider and VideoSource,
which are the multi-client equivalent of DeviceFactory and Device from
the single-client case. It adds implementation for VideoSourceProvider
that internally uses a DeviceFactory.

Design Doc: https://docs.google.com/document/d/1mYnsZfLBRmbsDpUtfb6C7dzhfw2Kcxg_-uiG_6MnWVQ/edit?usp=sharing
Test: services_unittests --gtest_filter=MockVideoCaptureDeviceSharedAccessTest.*
Bug: 783442

Change-Id: Ic3142542d4c2f4be2a7ffb500def1f9407be1e64
Reviewed-on: https://chromium-review.googlesource.com/c/1262401
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Luke Sorenson <lasoren@chromium.org>
Reviewed-by: Mustafa Emre Acer <meacer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622533}
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/BUILD.gn
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/device_factory.h
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/device_factory_media_to_mojo_adapter.h
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/device_factory_provider_impl.cc
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/device_factory_provider_impl.h
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/public/cpp/mock_device_factory_provider.cc
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/public/cpp/mock_device_factory_provider.h
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/public/mojom/BUILD.gn
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/public/mojom/device_factory_provider.mojom
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/public/mojom/video_source.mojom
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/public/mojom/video_source_provider.mojom
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/test/mock_device_shared_access_unittest.cc
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/video_source_impl.cc
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/video_source_impl.h
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/video_source_provider_impl.cc
[add] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/video_source_provider_impl.h
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/virtual_device_enabled_device_factory.cc
[modify] https://crrev.com/c1d0754f16b949bb1e3ec2081f103943d93298d6/services/video_capture/virtual_device_enabled_device_factory.h

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 19 (4 days ago)

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

commit 150ac101397f98d805f4b8cd88ec63ec9083ef8a
Author: Christian Fremerey <chfremer@chromium.org>
Date: Sat Jan 19 02:10:06 2019

[Video Capture Service] Multi-client: Add VideoSource implementation

This CL fills interface VideoSource with methods and adds implementation.
The implementation uses a class BroadcastingReceiver whose task is to
distribute events to potentially multiple receivers.

Design Doc: https://docs.google.com/document/d/1mYnsZfLBRmbsDpUtfb6C7dzhfw2Kcxg_-uiG_6MnWVQ/edit?usp=sharing
Test: services_unittests --gtest_filter=MockVideoCaptureDeviceSharedAccessTest.*
Bug: 783442

Change-Id: Id9f6c497b0787dfba8caa15b085580ba0939f8b1
Reviewed-on: https://chromium-review.googlesource.com/c/1263355
Commit-Queue: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Mustafa Emre Acer <meacer@chromium.org>
Reviewed-by: Luke Sorenson <lasoren@chromium.org>
Cr-Commit-Position: refs/heads/master@{#624418}
[modify] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/BUILD.gn
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/broadcasting_receiver.cc
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/broadcasting_receiver.h
[modify] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/BUILD.gn
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/mock_push_subscription.cc
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/mock_push_subscription.h
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/mock_video_source.cc
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/mock_video_source.h
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/mock_video_source_provider.cc
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/cpp/mock_video_source_provider.h
[modify] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/public/mojom/video_source.mojom
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/push_video_stream_subscription_impl.cc
[add] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/push_video_stream_subscription_impl.h
[modify] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/test/mock_device_shared_access_unittest.cc
[modify] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/video_source_impl.cc
[modify] https://crrev.com/150ac101397f98d805f4b8cd88ec63ec9083ef8a/services/video_capture/video_source_impl.h

Sign in to add a comment