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

Issue 5840 link

Starred by 45 users

Issue metadata

Status: Fixed
Owner:
Closed: Jan 16
Cc:
Components:
NextAction: ----
OS: ----
Pri: 2
Type: Bug


Show other hotlists

Hotlists containing this issue:
Hotlist-1


Sign in to add a comment

[Patch] Simulcast implementation for H264 encoder

Reported by mar...@highfive.com, Apr 28 2016

Issue description

Simulcast logic is not implemented for h264 encoder in webrtc stack, I have implemented that based on the vp8 logic and attached a patch for it.

Please note that a set of helper functions are redundantly copied into h264EncoderImpl class just so we follow the same logic for bitrate allocation and such.

In future a refactor is necessary to pull out the common parts into a simulcast layer above.



 
H264-Simulcast-Implement.patch
29.2 KB Download
Project Member

Comment 1 by braveyao@webrtc.org, May 2 2016

Cc: braveyao@webrtc.org
Owner: pbos@webrtc.org
Thanks for the patch! Could you please upload it for review directly?

pbos@, please help to take a look.
Thank you.

submitted, https://codereview.webrtc.org/1952443002/

Comment 3 by brian@highfive.com, May 19 2016

anyone had a chance to look at this?
Project Member

Comment 4 by pbos@webrtc.org, May 23 2016

Cc: sprang@webrtc.org pbos@webrtc.org
Owner: sprang@webrtc.org
Sorry, I've been late getting to this. I think the current simulcast logic should be broken out of the encoder implementations completely, instead of having multiple ones in parallel. I believe sprang@'s done some work here. Comment also in the CL, but I think it's good that we figure out how to go forward here first.
Project Member

Comment 5 by pbos@webrtc.org, May 23 2016

Status: Assigned (was: Unconfirmed)
Project Member

Comment 6 by pbos@webrtc.org, May 23 2016

Components: Video

Comment 7 by brian@highfive.com, Aug 3 2016

from our experience, enabling simulcast for h264 is blocked by https://bugs.chromium.org/p/chromium/issues/detail?id=600399 (improved h264 sw encode performance).
Project Member

Comment 8 by juberti@webrtc.org, Sep 8 2016

Cc: mflodman@webrtc.org
Magnus, do we agree with the approach here?
Project Member

Comment 9 by mflodman@webrtc.org, Sep 13 2016

I'll take a look at the patch and get back here. I do agree with comment #4 that it would be great to do this a bit more generic, but I'll take a more thorough look at it.

Comment 10 by e...@highfive.com, Jan 19 2017

Any update on this?

Any specific feedback on what we might do to make the patch upstream worthy?
Or is there another implementation of simulcast for H264 that we should know about?
Hi Erik, Magnus, Peter,

This is Hemanth from Highfive. Am continuing where Maryam and Brian left off here.
Based on Peter's earlier request on the gerrit review, I made a patch that breaks out the SimulcastEncoderAdapter in codecs/vp8 and generalizes it to work for any codec (currently VP8 and H264). That also makes it capable of working with any external H264 encoders. The patch is attached. However, there are a few problems with it and I need your input before I go too far off the rails.

1. I've only tested the patch on OSX with h/w encoding disabled. The VT decoder toolbox does not seem to support any but the highest quality layer. Am looking into this issue further, but that brings up the second problem:

2. The VideoEncoderSoftwareFallbackWrapper is unaware of the use of simulcast encoder adapter today. We wrap the external encoder with a simulcast adapter wrapper, and then wrap *that* with the software fallback wrapper. That means a failure of even one of the hardware encoder instances results in a failure to use the simulcast adapter. The s/w fallback kicks in with a single encoder instance.

What do you feel is the best way to proceed on #2? Couple of ideas:

1. We could move the software fallback wrapper into the external encoder factory base class and wrap every returned external encoder instance with the software fallback. That way the simulcast wrapper would do what it already does, and we would have h/w encoding for at least some of the simulcast streams.

2. We could ignore the problem and accept the fact that a single simulcast stream would be created if the external encoder factory is unable to create all required simulcast streams.

Do either of these sound reasonable? Is there a third option that you would prefer?

Please let me know how you would like me to proceed both with the patch in general and with this issue in particular.

Thanks,
0001-Generalize-SimulcastEncoderAdapter-use-for-H264-VP8.patch
107 KB Download
Here's an attempt at wrapping each external encoder of a simulcast session with a s/w fallback encoder. We wrap any external encoder factories with a "SoftwareFallbackEncoderFactory" before handing it to a SimulcastEncoderAdapter.
0001-Fallback-to-s-w-encoder-on-a-per-encode-stream-basis.patch
4.7 KB Download
@mflodman Can you update on the status/plans around this patch/feature?
@mflodman @sprang @pbos Does the new patch generalizing SimulcastEncoderAdapter look good to you? How do you want to proceed here?
Project Member

Comment 15 by sprang@webrtc.org, May 23 2017

Cc: brandtr@webrtc.org
Sorry for the late reply.
I think this a good idea. Could you please upload this in the code review system instead of a patch?
+brandtr who's made some changes to these adapters recently.
Thanks @sprang

Uploaded the code review to https://chromium-review.googlesource.com/514351 and CCed you, @brandtr, @pbos and @mflodman

Merged both the patchsets above into one patch, rebased on top of brandtr's latest changes and verified on OSX and Linux. Building on Windows next and will post once that's done. Please take a look.

Comment 17 Deleted

Comment 18 by cwehr...@gmail.com, Jan 25 2018

I'm very interested in seeing this merged as well. Any update concerning the ETA or help needed? 
Hi,

We have rebased, merged and refactored/rewritten the highfive patches to match latest libwebrtc code. It is tested (all except one try bot passes) and working end-to-end.

The CL is here:

https://webrtc-review.googlesource.com/c/src/+/64100

Given the large amount of changes, it is very likely that it will conflict with some of the CLs already ready to commit.

Would it be possible to give a bit of priority to the review to avoid having to rebase it periodically? (it is a huge work and waste of time! ;)

Thanxs!
Sergio
Rebased to latest master head.

Given the large amount of changes, it is overlapping with many of the changes proposed, and we already have to rebase it almost daily to keep it on sync with HEAD, which is less than ideal.

Would it be possible to fast-track the review process? We have been and will remain extremely responsive, to make sure that your time is not wasted.
Project Member

Comment 21 by pbos@webrtc.org, Apr 2 2018

Cc: -pbos@webrtc.org
Sorry taking myself off this as I'm no longer on the team.
Project Member

Comment 22 by sprang@webrtc.org, Apr 3 2018

Cc: huib@webrtc.org

Comment 23 by cwehr...@fuze.com, Jun 1 2018

Could the owner perhaps remove himself if someone else is a better fit for this PR? It's unfortunate this great feature has been almost here for a year or so. I'm happy to help in anyway!

@shampson maybe as he recently did some work on simulcast improvements? 
Project Member

Comment 24 by huib@webrtc.org, Jun 1 2018

sprang@ is the right owner. Update will follow soon.
Project Member

Comment 25 by huib@webrtc.org, Jun 1 2018

Cc: hta@webrtc.org

Comment 26 by cwehr...@fuze.com, Jun 1 2018

Thanks for the update - will stay tuned! Excited to start leveraging this while preparing for our unified-plan migration.

Comment 27 by cwehr...@gmail.com, Jun 13 2018

@sergio will this work be compatible with screenshare simulcast that's being enabled in parallel here https://groups.google.com/forum/#!msg/discuss-webrtc/hckBc35579w/as-1EDKIAwAJ ? 
yes, it should

Comment 29 by cwehr...@gmail.com, Jun 13 2018

amazing - congrats on the great work!
Project Member

Comment 30 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/07efe436c9002e139845f62486e3ee4e29f0d85b

commit 07efe436c9002e139845f62486e3ee4e29f0d85b
Author: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Date: Thu Jun 21 12:23:03 2018

Implement H264 simulcast support and generalize SimulcastEncoderAdapter use for H264 & VP8.

* Move SimulcastEncoderAdapter out under modules/video_coding
* Move SimulcastRateAllocator back out to modules/video_coding/utility
* Move TemporalLayers and ScreenshareLayers to modules/video_coding/utility
* Move any VP8 specific code - such as temporal layer bitrate budgeting -
  under codec type dependent conditionals.
* Plumb the simulcast index for H264 in the codec specific and RTP format data structures.

Bug:  webrtc:5840 
Change-Id: Ieced8a00e38f273c1a6cfd0f5431a87d07b8f44e
Reviewed-on: https://webrtc-review.googlesource.com/64100
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23705}
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/AUTHORS
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/api/test/create_simulcast_test_fixture.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/api/test/create_simulcast_test_fixture.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/api/video_codecs/test/BUILD.gn
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/BUILD.gn
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/DEPS
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/fakewebrtccall.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/fakewebrtccall.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/simulcast.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/simulcast.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/simulcast_encoder_adapter.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/simulcast_encoder_adapter.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/simulcast_encoder_adapter_unittest.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/webrtcvideoengine.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/media/engine/webrtcvideoengine_unittest.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/rtp_rtcp/source/rtp_format_h264.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/BUILD.gn
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/h264/h264_encoder_impl.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/h264/h264_encoder_impl.h
[add] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/test/videoprocessor.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/default_temporal_layers.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc
[delete] https://crrev.com/80c4cca4915dbc6094a5bfae749f85f7371eadd1/modules/video_coding/codecs/vp8/include/vp8_common_types.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/screenshare_layers.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/screenshare_layers.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/codecs/vp8/temporal_layers.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/include/video_codec_interface.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/media_opt_util.cc
[rename] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_rate_allocator.cc
[rename] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_rate_allocator.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
[rename] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_test_fixture_impl.cc
[rename] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_test_fixture_impl.h
[add] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_utility.cc
[add] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/utility/simulcast_utility.h
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/video_codec_initializer.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/video_coding_impl.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/video_sender.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/modules/video_coding/video_sender_unittest.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/test/BUILD.gn
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/video/BUILD.gn
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/video/payload_router.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/video/picture_id_tests.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/video/send_statistics_proxy.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/video/send_statistics_proxy_unittest.cc
[modify] https://crrev.com/07efe436c9002e139845f62486e3ee4e29f0d85b/video/video_quality_test.cc

Project Member

Comment 31 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/6f440ed5b51fe859a0c438db189962eaf737b8c7

commit 6f440ed5b51fe859a0c438db189962eaf737b8c7
Author: Mirko Bonadei <mbonadei@webrtc.org>
Date: Thu Jun 21 13:41:14 2018

Revert "Implement H264 simulcast support and generalize SimulcastEncoderAdapter use for H264 & VP8."

This reverts commit 07efe436c9002e139845f62486e3ee4e29f0d85b.

Reason for revert: Breaks downstream project.

cricket::GetSimulcastConfig method signature has been updated.
I think you can get away with a default value for temporal_layers_supported (and then you can remove it after a few days when projects will be updated).


Original change's description:
> Implement H264 simulcast support and generalize SimulcastEncoderAdapter use for H264 & VP8.
> 
> * Move SimulcastEncoderAdapter out under modules/video_coding
> * Move SimulcastRateAllocator back out to modules/video_coding/utility
> * Move TemporalLayers and ScreenshareLayers to modules/video_coding/utility
> * Move any VP8 specific code - such as temporal layer bitrate budgeting -
>   under codec type dependent conditionals.
> * Plumb the simulcast index for H264 in the codec specific and RTP format data structures.
> 
> Bug:  webrtc:5840 
> Change-Id: Ieced8a00e38f273c1a6cfd0f5431a87d07b8f44e
> Reviewed-on: https://webrtc-review.googlesource.com/64100
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23705}

TBR=sprang@webrtc.org,stefan@webrtc.org,mflodman@webrtc.org,hta@webrtc.org,sergio.garcia.murillo@gmail.com,titovartem@webrtc.org,agouaillard@gmail.com

Change-Id: Ic9d3b1eeaf195bb5ec2063954421f5e77866d663
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  webrtc:5840 
Reviewed-on: https://webrtc-review.googlesource.com/84760
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23710}
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/AUTHORS
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/api/test/create_simulcast_test_fixture.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/api/test/create_simulcast_test_fixture.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/api/video_codecs/test/BUILD.gn
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/BUILD.gn
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/DEPS
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/fakewebrtccall.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/fakewebrtccall.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/simulcast.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/simulcast.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/simulcast_encoder_adapter.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/simulcast_encoder_adapter.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/simulcast_encoder_adapter_unittest.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/webrtcvideoengine.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/media/engine/webrtcvideoengine_unittest.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/rtp_rtcp/source/rtp_format_h264.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/BUILD.gn
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/h264/h264_encoder_impl.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/h264/h264_encoder_impl.h
[delete] https://crrev.com/f341f3feb505733ef57a8ddf9571b6b462a44e91/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/test/videoprocessor.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/default_temporal_layers.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc
[add] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/include/vp8_common_types.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/screenshare_layers.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/screenshare_layers.h
[rename] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/simulcast_rate_allocator.cc
[rename] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/simulcast_rate_allocator.h
[rename] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/simulcast_test_fixture_impl.cc
[rename] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/simulcast_test_fixture_impl.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/codecs/vp8/temporal_layers.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/include/video_codec_interface.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/media_opt_util.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
[delete] https://crrev.com/f341f3feb505733ef57a8ddf9571b6b462a44e91/modules/video_coding/utility/simulcast_utility.cc
[delete] https://crrev.com/f341f3feb505733ef57a8ddf9571b6b462a44e91/modules/video_coding/utility/simulcast_utility.h
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/video_codec_initializer.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/video_coding_impl.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/video_sender.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/modules/video_coding/video_sender_unittest.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/test/BUILD.gn
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/video/BUILD.gn
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/video/payload_router.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/video/picture_id_tests.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/video/send_statistics_proxy.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/video/send_statistics_proxy_unittest.cc
[modify] https://crrev.com/6f440ed5b51fe859a0c438db189962eaf737b8c7/video/video_quality_test.cc

Project Member

Comment 32 by bugdroid1@chromium.org, Jun 21 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/43800f95bfb9fe47275ba960d4396addbaf8c9d9

commit 43800f95bfb9fe47275ba960d4396addbaf8c9d9
Author: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Date: Thu Jun 21 15:57:43 2018

Generalize SimulcastEncoderAdapter, use for H264 & VP8.

* Move SimulcastEncoderAdapter out under modules/video_coding
* Move SimulcastRateAllocator back out to modules/video_coding/utility
* Move TemporalLayers and ScreenshareLayers to modules/video_coding/utility
* Move any VP8 specific code - such as temporal layer bitrate budgeting -
  under codec type dependent conditionals.
* Plumb the simulcast index for H264 in the codec specific and RTP format data structures.

TBR=sprang@webrtc.org,stefan@webrtc.org,titovartem@webrtc.org

Bug:  webrtc:5840 
Change-Id: I2d3b130622dd7ceec5528f3ab6c46f109e6bafb8
Reviewed-on: https://webrtc-review.googlesource.com/84743
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23715}
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/AUTHORS
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/api/test/create_simulcast_test_fixture.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/api/test/create_simulcast_test_fixture.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/api/video_codecs/test/BUILD.gn
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/api/video_codecs/test/video_encoder_software_fallback_wrapper_unittest.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/BUILD.gn
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/DEPS
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/fakewebrtccall.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/fakewebrtccall.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/simulcast.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/simulcast.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/simulcast_encoder_adapter.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/simulcast_encoder_adapter.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/simulcast_encoder_adapter_unittest.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/webrtcvideoengine.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/media/engine/webrtcvideoengine_unittest.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/rtp_rtcp/source/rtp_format_h264.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/BUILD.gn
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/h264/h264_encoder_impl.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/h264/h264_encoder_impl.h
[add] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/h264/h264_simulcast_unittest.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/test/videoprocessor.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/default_temporal_layers.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc
[delete] https://crrev.com/b6b29e07189f51ada04ebd69c73c2c616b82d8f7/modules/video_coding/codecs/vp8/include/vp8_common_types.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/libvpx_vp8_simulcast_test.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/screenshare_layers.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/screenshare_layers.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/codecs/vp8/temporal_layers.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/include/video_codec_interface.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/media_opt_util.cc
[rename] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_rate_allocator.cc
[rename] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_rate_allocator.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_rate_allocator_unittest.cc
[rename] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_test_fixture_impl.cc
[rename] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_test_fixture_impl.h
[add] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_utility.cc
[add] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/utility/simulcast_utility.h
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/video_codec_initializer.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/video_coding_impl.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/video_sender.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/modules/video_coding/video_sender_unittest.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/test/BUILD.gn
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/video/BUILD.gn
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/video/payload_router.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/video/picture_id_tests.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/video/send_statistics_proxy.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/video/send_statistics_proxy_unittest.cc
[modify] https://crrev.com/43800f95bfb9fe47275ba960d4396addbaf8c9d9/video/video_quality_test.cc

Comment 33 by cwehr...@gmail.com, Jun 22 2018

Sergio - Mind providing an update? Looks like the PR was officially merged :-) If you have some intel about feature flags to test it, etc - would be happy to help testing! 
it s been merged. there is a flag. an Official PSA from goole is coming.

Comment 35 by cwehr...@gmail.com, Jun 22 2018

Exciting, thanks! I checked in Canary and the flag isn't showing up yet so I'll wait for the next one. Congrats again on the great work!
Project Member

Comment 36 by anatolid@webrtc.org, Jul 24

Is this finished?
I never saw the official PSA - did it go out? Would be great to see a (blog) post about how to leverage this best. Congrats again on the beautiful work!
Is it enabled in Chrome 69?
need info about this patch. it is landed in Chrome? is there any flag to enable this?
Thanks
Any further updates? Is this under a flag? If so, what is the flag?
Project Member

Comment 42 by sprang@webrtc.org, Jan 16 (6 days ago)

Status: Fixed (was: Assigned)
This is now enabled by default, in Chrome as of 73.0.3664.3.

Sign in to add a comment