Commit graph

891 commits

Author SHA1 Message Date
Erik Språng
eb180f8f77 Fix incorrect libvpx vp9 dynamic rate control settings
Bug: webrtc:10155, b:133399415
Change-Id: I69430dce41cde8bc1f8716b8508d4be8d9645d6d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138076
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28037}
2019-05-23 12:55:36 +00:00
Sergey Silkin
2799e63bfb Add sizes of spatial layer frames to EncodedImage
WebRTC combines VP9 SVC spatial layer frames into superframe and passes
it to a decoder. The chromium HW VP9 decoder (wrapper) needs to know
location of each spatial layer frame in the frame buffer. To provide
decoder with such information this CL:
- Adds Set/SpatialLayerFrameSize methods to EncodedImage.
- Sets size of each spatial layer frame on superframe at assembly stage.

Bug: webrtc:10495
Change-Id: I68c3c0d668c67dfa1740e004059d860dd98f67f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136922
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28032}
2019-05-23 07:16:42 +00:00
Stefan Holmer
4ed7e511f6 Revert "Add ability to cap the video jitter estimate to a max value."
This reverts commit a8ae407a48.

Reason for revert: This CL incorrectly affects non-experiment branch.  A new CL affecting only the experiment will be uploaded.

Original change's description:
> Add ability to cap the video jitter estimate to a max value.
>
> Bug: webrtc:10572
> Change-Id: I21112824dc02afa71db61bb8c2f02723e8b325b6
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133963
> Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27744}

TBR=stefan@webrtc.org,mhoro@webrtc.org

Bug: webrtc:10572
Change-Id: I4af334168ca70ecfae7fd18fc7c852819a98d866
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138063
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28025}
2019-05-22 15:07:33 +00:00
Niels Möller
fd26ef732f Delete unused RTPFragmentationHeader members
Deleted fragmentationTimeDiff and fragmentationPlType. Unused since cl
https://webrtc-review.googlesource.com/c/src/+/134212.

Bug: webrtc:6471
Change-Id: I36b45be6f6babeda5a5f172c1f1a3876bb752e7f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134308
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27972}
2019-05-17 09:26:17 +00:00
Elad Alon
9a4c93b7d7 Add DCHECK in LibvpxVp8Encoder
Ensure that frame_buffer_controller_ does not get assigned null
by the factory.

Bug: None
Change-Id: I84e141ae0390cd024863f88cdcdc79b8b13e7c64
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137043
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27962}
2019-05-16 13:29:07 +00:00
Ilya Nikolaevskiy
4fd42974b1 Fix metadata setting in H264 decoder
Bug: webrtc:10303
Change-Id: Ie819802bd99975184b7a0dba3a56260d156b0246
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136807
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27947}
2019-05-15 08:43:07 +00:00
Sergey Silkin
e62a08a87a Request key frame on all layers.
Explicitly request key frame on all layers until proper mapping is
implemented (webrtc:10615).

Bug: webrtc:10585
Change-Id: I9722610920a753c50700d925ff6a1babf0011e2f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136682
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27934}
2019-05-13 21:00:26 +00:00
Ilya Nikolaevskiy
2ebf523978 Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: I98629589fa55ca1d74056033cf86faccfdf848cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136582
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27930}
2019-05-13 14:51:11 +00:00
Elad Alon
e1225d389e Reland "Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder"
This is a reland of bd20c3f5ae.

Original change's description:
> Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder
>
> Bug: None
> Change-Id: I548a724f0fb81f46785517c90e527edc075e1476
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135040
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27836

TBR=brandtr@webrtc.org,eladalon@webrtc.org

Bug: chromium:961253
Change-Id: I4a44e8eb88920f33eb0ce0eadd121b04d410f02e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135943
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27908}
2019-05-10 10:02:19 +00:00
Elad Alon
fb0878197e Reland "Refactor handling of configuration overrides from Vp8FrameBufferController"
This is a reland of 4d6795f828

Original change's description:
> Refactor handling of configuration overrides from Vp8FrameBufferController
>
> Make Vp8FrameBufferController::UpdateConfiguration return a set
> of desired overrides. These overrides are cumulative with
> previously returned override sets.
>
> Bug: webrtc:10382
> Change-Id: I1aa9544ae0cf6c57115e80963b3bbcdc3101db5e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134649
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27835}

TBR=brandtr@webrtc.org,sprang@webrtc.org

Bug: webrtc:10382
Change-Id: I0b313d19843edf429aeeaa4deafc5426c434a0fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135942
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27904}
2019-05-10 08:44:02 +00:00
Elad Alon
3d622d6e5c Revert "Refactor handling of configuration overrides from Vp8FrameBufferController"
This reverts commit 4d6795f828.

Reason for revert: chromium:961253

Original change's description:
> Refactor handling of configuration overrides from Vp8FrameBufferController
>
> Make Vp8FrameBufferController::UpdateConfiguration return a set
> of desired overrides. These overrides are cumulative with
> previously returned override sets.
>
> Bug: webrtc:10382
> Change-Id: I1aa9544ae0cf6c57115e80963b3bbcdc3101db5e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134649
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27835}

TBR=brandtr@webrtc.org,eladalon@webrtc.org,sprang@webrtc.org


Bug: chromium:961253
Change-Id: I06f0eafd4f38c441ddbdfeebae8055b02465eb9b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135940
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27900}
2019-05-09 21:09:23 +00:00
Elad Alon
159d04eadf Revert "Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder"
This reverts commit bd20c3f5ae.

Reason for revert: chromium:961253
This CL is not the cause of the regression, but reverting it will make the reverting of the actual cause easier.

Original change's description:
> Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder
>
> Bug: None
> Change-Id: I548a724f0fb81f46785517c90e527edc075e1476
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135040
> Commit-Queue: Elad Alon <eladalon@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27836}

TBR=brandtr@webrtc.org,eladalon@webrtc.org

Bug: chromium:961253
Change-Id: I707337e0ce50f29f9cda7cf45500c11debace1a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135750
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27898}
2019-05-09 21:00:43 +00:00
Ilya Nikolaevskiy
de20b9683c Revert "Reland "Copy video frames metadata between encoded and plain frames in one place""
This reverts commit 4fb12b0cae.

Reason for revert: Breaks some asan chromium bots

Original change's description:
> Reland "Copy video frames metadata between encoded and plain frames in one place"
> 
> Reland with fixes.
> 
> Currently some video frames metadata like rotation or ntp timestamps are
> copied in every encoder and decoder separately. This CL makes copying to
> happen at a single place for send or receive side. This will make it
> easier to add new metadata in the future.
> 
> Also, added some missing tests.
> 
> Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
> 
> Bug: webrtc:10460
> Change-Id: Ia71198685de7fbd990704b575231cdce94dc0645
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134961
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27828}

TBR=ilnik@webrtc.org,nisse@webrtc.org,sprang@webrtc.org,kron@webrtc.org,artit@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:10460
Change-Id: I9c87a43a716622b389974cb8377f973573fc29a5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135747
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27895}
2019-05-09 17:47:51 +00:00
Åsa Persson
d7dd49ff3d RateControlSettings: add option to set max QP for libvpx vp8.
Bug: none
Change-Id: Ia662068fe179faebc1df0aaa7f37b6e989b6525f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135569
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27888}
2019-05-09 07:04:55 +00:00
Åsa Persson
517678cc49 Add ability to configure quality scaler settings through field trial.
optional<int> min_frames: The minimum number frames to observe to make a
                          scaling decision.
Default: kMinFramesNeededToScale in quality_scaler.cc

optional<double> initial_scale_factor: The sample period scale factor.
Default: kSamplePeriodScaleFactor in quality_scaler.cc

optional<double> scale_factor: Option to use a reduced sampling interval when
                               last check did not result in an adaptation (if
                               unset the initial_scale_factor is used).

Bug: none
Change-Id: I3bb955d1f8d7d7d49bc118361614b5aa59605231
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135125
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27860}
2019-05-06 13:20:27 +00:00
Ilya Nikolaevskiy
a8507e359b Remove deprecated interface in I420BufferInterface::GetI420
Bug: none
Change-Id: I55895a360308fd0be79099f2466a7487ef10ce47
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134463
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27841}
2019-05-03 12:16:34 +00:00
Elad Alon
bd20c3f5ae Rename configurations_ to vpx_configs_ in LibvpxVp8Encoder
Bug: None
Change-Id: I548a724f0fb81f46785517c90e527edc075e1476
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135040
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27836}
2019-05-03 09:16:51 +00:00
Elad Alon
4d6795f828 Refactor handling of configuration overrides from Vp8FrameBufferController
Make Vp8FrameBufferController::UpdateConfiguration return a set
of desired overrides. These overrides are cumulative with
previously returned override sets.

Bug: webrtc:10382
Change-Id: I1aa9544ae0cf6c57115e80963b3bbcdc3101db5e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134649
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27835}
2019-05-03 09:12:56 +00:00
Ilya Nikolaevskiy
4fb12b0cae Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: Ia71198685de7fbd990704b575231cdce94dc0645
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134961
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27828}
2019-05-02 13:29:14 +00:00
philipel
cd936fdba5 Wait for keyframe after decoding error.
Bug: chromium:936715
Change-Id: I0a51c8fa0025cb0f8e9afcbe8d8e4a84c2709ecf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134960
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27827}
2019-05-02 12:52:55 +00:00
Niels Möller
d9c2d94620 Move ownership of VCMJitterEstimator to FrameBuffer
Bug: webrtc:7408
Change-Id: I8b33ead80abff1e84ae0b223e108266f71f03e2f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134180
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27823}
2019-05-02 10:57:04 +00:00
Johnny Lee
bc7f41b231 ManageFrameH264 for temporal layers (PART 3/3)
Bug: webrtc:10579
Change-Id: Iec54f6b1231d34c2018f22841c3614ddd0b05612
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/86200
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27820}
2019-05-02 09:26:25 +00:00
Johannes Kron
2ad2fabdcf Determine if it's HDR color space based on VUI or RTP header extension
The color space can either be specified in the VUI of the H264 bitstream
or using an RTP header extension. The color space set through the RTP
header extension overrides the color space in the VUI. The check for
HDR should look at the resulting color space.

Bug: webrtc:10575
Change-Id: I0ca6262d76d56dea938de169f55ad3894e6c4f8f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134860
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27816}
2019-05-01 17:22:52 +00:00
Elad Alon
b1070353ad Prevent memory over-consumption by DefaultTemporalLayers
Erase pending frames after they had been used.

Bug: chromium:956510
Change-Id: I55eec75dab9bbe350dd1b089953bdc2979d989fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134641
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27811}
2019-04-30 11:44:21 +00:00
Niels Möller
7cca042dd4 Refactor FrameBuffer2 tests, without mocking the jitter estimator
Bug: webrtc:7408
Change-Id: Ibded415aefebb9b922ec88c8f5f7fb7ff23cf28d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134467
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27805}
2019-04-29 14:41:45 +00:00
Niels Möller
c5ba5e9572 Delete unused methods of VCMJitterEstimator
ResetNackCount and UpdateMaxFrameSize were unused.

Bug: None
Change-Id: I314b3edce368ee3230bc3510e1bba520806d1493
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134201
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27789}
2019-04-26 15:21:09 +00:00
philipel
da5aa4ddf5 Use CodecBufferUsage to determine dependencies.
In this CL:
 - Assign frame IDs so that simulcast streams share one frame ID space.
 - Added a CodecBufferUsage class that represent how a particular buffer
   was used (updated, referenced or both).
 - Calculate frame dependencies based on the CodecBufferUsage information.

Bug: webrtc:10342
Change-Id: I4ed5ad703f9376a7d995c04bb757c7d214865ddb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131287
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27784}
2019-04-26 12:13:28 +00:00
Elad Alon
544dece6c1 Allow Vp8FrameBufferController to override resilience mode
Bug: webrtc:10382
Change-Id: I626d616d7a1b50a696f5378345d026f6dce5b97f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134207
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27777}
2019-04-25 18:30:08 +00:00
Niels Möller
0fb0bd8e9f Delete WebRtcRTPHeader, this struct is no longer used.
Bug: webrtc:10397
Change-Id: I1b7acd9c89b9e14d1d8e1914c8c12c51fe4c643f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134203
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27773}
2019-04-25 14:36:30 +00:00
Elad Alon
8683467fde Allow Vp8FrameBufferController to initiate key frames
Bug: webrtc:10501
Change-Id: I54bdc5237fdebfc2c98403dec2c8d3f374cf97cb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133906
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27769}
2019-04-25 13:12:52 +00:00
Johannes Kron
042559fb92 Add fix for 8-bit H264 HDR content
8-bit H264 HDR content is not rendered correctly in Chrome on Windows.
This is a temporary fix that converts the 8-bit buffer to a 10-bit
buffer if the color space indicates that the buffer should be
rendered as HDR.

Bug: webrtc:10575
Change-Id: I106612ec489c6371fa774424a4cf07d9bad40fc3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134040
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27766}
2019-04-25 11:44:50 +00:00
Artem Titarenko
4b1afbe60a Revert "Reland "Copy video frames metadata between encoded and plain frames in one place""
This reverts commit c9a2c5e93a.

Reason for revert: Breaks downstream test

Original change's description:
> Reland "Copy video frames metadata between encoded and plain frames in one place"
> 
> Reland with fixes: Do not remove extra metadata copies in software decoders as some downstream projects assumes these fields are copied by the encoders.
> 
> Currently some video frames metadata like rotation or ntp timestamps are
> copied in every encoder and decoder separately. This CL makes copying to
> happen at a single place for send or receive side. This will make it
> easier to add new metadata in the future.
> 
> Also, added some missing tests.
> 
> Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
> 
> Bug: webrtc:10460
> Change-Id: I8e49589bf75f406e2b5ddee34882de0faedbd09a
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134102
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27756}

TBR=ilnik@webrtc.org,sprang@webrtc.org,kron@webrtc.org,artit@webrtc.org

Change-Id: I34cc563ec6383735c2a76a6f45a72a7726b74421
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10460
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134204
Reviewed-by: Artem Titarenko <artit@google.com>
Commit-Queue: Artem Titarenko <artit@google.com>
Cr-Commit-Position: refs/heads/master@{#27765}
2019-04-25 11:39:31 +00:00
Niels Möller
9204bab803 Delete unused types VCMTemporalDecimation, VCMFrameCount and unused error codes
Bug: None
Change-Id: I53885ce78e682619301b833d1e78e93b4184c4e4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134160
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27764}
2019-04-25 11:23:30 +00:00
Niels Möller
be7a0ec2e6 Change vcm::VideoReceiver::IncomingPacket to not use WebRtcRTPHeader
Bug: webrtc:10397
Change-Id: Id549516faab1b1047ef52dd8229a73eeb48c5fe2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134162
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27761}
2019-04-25 10:15:39 +00:00
Ilya Nikolaevskiy
c9a2c5e93a Reland "Copy video frames metadata between encoded and plain frames in one place"
Reland with fixes: Do not remove extra metadata copies in software decoders as some downstream projects assumes these fields are copied by the encoders.

Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Original Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346

Bug: webrtc:10460
Change-Id: I8e49589bf75f406e2b5ddee34882de0faedbd09a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134102
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27756}
2019-04-25 09:13:15 +00:00
Niels Möller
43f7002aff Delete DecodedImageCallback::ReceivedDecodedFrame
This was a companion method to ReceivedDecodedReferenceFrame, deleted
in https://webrtc-review.googlesource.com/c/src/+/133348.

Tbr: kwiberg@webrtc.org # Mock class update
Bug: webrtc:7408
Change-Id: I429f5f5c18f14c27136e82860297107a82c81d13
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133571
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27754}
2019-04-25 08:09:29 +00:00
“Michael
a8ae407a48 Add ability to cap the video jitter estimate to a max value.
Bug: webrtc:10572
Change-Id: I21112824dc02afa71db61bb8c2f02723e8b325b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133963
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27744}
2019-04-24 16:03:15 +00:00
Niels Möller
abbc50e9b2 Move frame_type member from RtpDepacketizer::ParsedPayload to RTPVideoHeader
The latter is also a member of the former. This cleanup is also
a preparation for dropping WebRtcRTPHeader::frameType (or deleting
WebRtcRTPHeader right away), now that it's a video-specific member.


Tbr: kwiberg@webrtc.org # Comment change in modules/include/
Bug: None
Change-Id: I5c1f3f981f0d750713fc9b9b145278150fe32b5d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133024
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27740}
2019-04-24 13:13:04 +00:00
Elad Alon
9a86275860 Fix dangling pointers issue in LibvpxVp8Encoder::Encode()
LibvpxVp8Encoder::Encode() creates a local instance of
rtc::scoped_refptr<I420BufferInterface>, then sets members to
point into the internal state of that I420BufferInterface. These
pointers remain in place after the buffer is destroyed.

This CL fixes the issue by deleting the references when the
function exits.

Bug: webrtc:10570
Change-Id: I9623e2ff3dd43e8fd1d1cc7696a3f28227d4544b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133882
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27738}
2019-04-24 12:58:19 +00:00
Artem Titarenko
84ae2b6efd Revert "Copy video frames metadata between encoded and plain frames in one place"
This reverts commit 00d0a0a1a9.

Reason for revert: Breaks downstream tests

Original change's description:
> Copy video frames metadata between encoded and plain frames in one place
> 
> Currently some video frames metadata like rotation or ntp timestamps are
> copied in every encoder and decoder separately. This CL makes copying to
> happen at a single place for send or receive side. This will make it
> easier to add new metadata in the future.
> 
> Also, added some missing tests.
> 
> Bug: webrtc:10460
> Change-Id: Ia49072c3041e75433f125a61050d2982b2bec1da
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27719}

TBR=ilnik@webrtc.org,sprang@webrtc.org,kron@webrtc.org

Change-Id: I8960a6cc15e552925129ba0037f197ff3fd93c25
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10460
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134100
Reviewed-by: Artem Titarenko <artit@webrtc.org>
Commit-Queue: Artem Titarenko <artit@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27737}
2019-04-24 12:56:52 +00:00
Elad Alon
eb415cd482 Avoid unnecessary rescaling in LibvpxVp8Encoder::Encode
Bug: webrtc:10571
Change-Id: I3e41b299eb13a53178fd9179875239919ac57a28
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133902
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27736}
2019-04-24 11:55:58 +00:00
Ilya Nikolaevskiy
1ced889eb4 Expand video frame metadata cache
In simulcast screenshare the lower stream can be disabled for ~2 seconds
due to bandwidth limitations. During that time with 30 input fps more
than 50 frames can be pending.

This CL remove unnecessary warnings.

Bug: webrtc:4172
Change-Id: I979c946a03ff3f67f500843c66382e437ecd559b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134041
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27735}
2019-04-24 11:39:41 +00:00
Elad Alon
e1068c1bc9 Small change to LibvpxVp8Encoder::Release
The function iterated over two containers, destroyed their elements
and popped those elements one at a time. It's more efficient to
destroy all of the elements, then clear() the container.

Bug: None
Change-Id: I17aa88694ee41df64c5793b08b96899b7ff04071
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133901
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27730}
2019-04-24 08:50:23 +00:00
Ilya Nikolaevskiy
00d0a0a1a9 Copy video frames metadata between encoded and plain frames in one place
Currently some video frames metadata like rotation or ntp timestamps are
copied in every encoder and decoder separately. This CL makes copying to
happen at a single place for send or receive side. This will make it
easier to add new metadata in the future.

Also, added some missing tests.

Bug: webrtc:10460
Change-Id: Ia49072c3041e75433f125a61050d2982b2bec1da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133346
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27719}
2019-04-23 14:31:03 +00:00
Ilya Nikolaevskiy
b4a70ed643 Fix potential crash in FrameBuffer::IsCompleteSuperFrame
According to crash reports, crash happens at the line with nothing but
|next_frame->second.frame->is_last_spatial_layer|.

Probably, |frames_| contains entries with empty frame unique_ptr.
This CL adds checks to not dereference those empty pointers.

Bug: chromium:955040
Change-Id: I3060f9e1af8bfc3c8a079c14107b5b4a82f5d015
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133626
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27706}
2019-04-23 10:05:11 +00:00
Sergey Silkin
a323cc027c Write VP9 RTP SS on key frames of each independently coded spatial layer.
Bug: webrtc:10565
Change-Id: I186ca043268872bacd1dc4a462b67632b74e6510
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133621
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27703}
2019-04-23 09:55:34 +00:00
Niels Möller
bcb7c209d4 Delete vcm::VideoReceiver methods Delay and SetRenderDelay.
They are called only from VideoReceiveStream, which can access
VCMTiming directly.

Bug: webrtc:7408
Change-Id: Ibf5799b1441c00b41143342ca1d99024cb68ba17
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133569
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27700}
2019-04-23 09:38:54 +00:00
Niels Möller
2317c5ee0a Delete method DecodedImageCallback::ReceivedDecodedReferenceFrame
The code invoking it was deleted in
https://codereview.webrtc.org/2753783002

Tbr: kwiberg@webrtc.org # Change to mock class in api/test
Bug: webrtc:7408
Change-Id: I576d7aacd7dc60e42a05d2ea837fddf16594e685
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133348
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27680}
2019-04-18 08:14:40 +00:00
Elad Alon
979c4426a4 Rename "UpdateLayerConfig" to "NextFrameConfig"
Rename "UpdateLayerConfig" to the more appropriate "NextFrameConfig".
Also update some comments in vp8_frame_buffer_controller.h.

Bug: None
Change-Id: Iba8227f84e33e5ebd28d2eeb10fe03e776036603
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133202
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27660}
2019-04-17 11:59:07 +00:00
Elad Alon
123ee9be8f OnLossNotification() receives references
A typo in a previous CL made OnLossNotification() accept its
single argument as a const-value, rather than a const-reference.

Bug: webrtc:10501
Change-Id: I5e6f9c79f15205b75ec90a53d3fccf3dd9927e33
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133343
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27659}
2019-04-17 11:47:25 +00:00