Commit graph

1827 commits

Author SHA1 Message Date
Evan Shrubsole
eabaf8d7fe Log when conflicting recv video playout delays are set
There are two cases that can be confusing for applications developers
which may result in the playout delay not being set as intended.

First, it is not well defined which min playout delay should be used
when multiple are set. This changes adds a warning to alert application
developers that they are setting multiple playout delays.

Second, if the playout delay header extension is used, developers must
be careful that the max playout delay is always larger than the min
playout delay, otherwise the behaviour is undefined. This change logs an
error when this case is detected.

Bug: None
Change-Id: I8477d48ef64636da080792362fa898e42f038bef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/263202
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36977}
2022-05-23 16:37:22 +00:00
Rasmus Brandt
2377226851 Start moving timing helper classes into timing/ sub-folder.
Putting these classes in a sub folder increases
structure and clarifies that they are used as
helper classes. Affected classes in this change:
  * CodecTimer
  * InterFrameDelay
  * RttFilter
VCMTiming will be moved in a separate CL.

Additional changes:
  * Remove VCM prefix from class names.
  * Introduce granular BUILD.gn targets.
  * Update some includes.

Bug: webrtc:14111
Change-Id: Ia75128aa955a819033b97d4784cb61904de7230b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262960
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36975}
2022-05-23 13:43:40 +00:00
Rasmus Brandt
fbf66ddddf Move UniqueTimestampCounter to video/
This helper class currently lives in `modules/video_coding`,
but it's only users are in `video/`. Thus, it makes sense to
move the class to `video/`.

Bug: webrtc:14116
Change-Id: I0d3f8961bc8f5fe80f3100dbbd309b206020e6d5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262963
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36973}
2022-05-23 13:21:32 +00:00
Tommi
f6f4543304 Rename VideoReceiveStream to VideoReceiveStreamInterface
Bug: webrtc:7484
Change-Id: I653cfe46486e0396897dd333069a894d67e3c07b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262769
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36958}
2022-05-22 10:54:38 +00:00
Niels Möller
83830f316e Delete TestListener and top-level thread wrapping.
Instead use rtc::AutoThread in tests that need that.

Bug: webrtc:9714
Change-Id: I1f33b1b2d321770d062504dd9ef86d66a345dd42
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/254681
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36950}
2022-05-20 15:21:21 +00:00
Niels Möller
be2fb41b32 Delete codec-specific frameDroppingOn settings.
Followup to https://webrtc-review.googlesource.com/c/src/+/262244

Bug: webrtc:6883
Change-Id: Iefac43709f14424c74470aa878ec512b7dacc68a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262258
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36949}
2022-05-20 14:54:31 +00:00
Niels Möller
c0a9f35248 Define SimulcastStream as an alias for SpatialLayer
Step one in making it a separate type, that will be done as a
followup, after downstream code is updated to use the new name.

Bug: webrtc:11607
Change-Id: I6fa664a0729b1cfd71b7f02b6441880beee0e741
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262806
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36946}
2022-05-20 13:12:21 +00:00
Niels Möller
65b2d8ad21 Move RunLoop test class to its own build target
To make it usable in tests without depending on all of CallTest.

Bug: None
Change-Id: Ie3102ab71bcfe3862dd6c35d3285098e961e54df
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262807
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36932}
2022-05-19 15:51:39 +00:00
Niels Möller
cf2c8915f4 Delete H264EncoderSpecificSettings
Production code always use the default settings.

Bug: webrtc:6883
Change-Id: I213fc6433bb1cd0a6623ad523fee2df1506588e1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261903
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36926}
2022-05-18 13:53:20 +00:00
Asa Persson
cde992ddad Add support for VP9 configuration through scalability mode.
Bug: webrtc:13960
Change-Id: Ia930647b15f624a4d10d8d335519b69ffdae6636
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260983
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36919}
2022-05-18 08:21:00 +00:00
Danil Chapovalov
c5aa5bea49 Delete deprecated VP8Encoder::Create function
Bug: None
Change-Id: I42e5d846d3d012f8b85eede743202b84239ceef1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262764
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36914}
2022-05-17 13:23:24 +00:00
Asa Persson
2698353d43 Disable quality scaling if multiple spatial layers are requested for VP9
VP9 automaticResizeOn is disabled if more than one spatial layer is configured via scalability mode.

Bug: webrtc:13960
Change-Id: I7c6351bca6d2f32bcc7391894e8dcc9e74ca2050
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261315
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36897}
2022-05-16 15:11:24 +00:00
Niels Möller
059548919b Enable VP8 configuration via scalability mode
Bug: webrtc:13959
Change-Id: I16054506ca4086767323443fb9b1e623224e234d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258791
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36884}
2022-05-13 13:53:44 +00:00
Niels Möller
807328fec7 Move frame drop config to VideoCodec and VideoEncoderConfig.
Intend to delete corresponding codec-specific settings in a followup.

Bug: webrtc:6883
Change-Id: I78ab07729a5aee1055f80d39d8f7289beb6721e1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262244
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36882}
2022-05-13 13:40:14 +00:00
philipel
9437529d4b Determine scalability mode if not explicilty set for AV1.
Bug: none
Change-Id: I86298b8a57300ed1d824cf6ba8f5daeec6af7315
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/262242
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36879}
2022-05-13 12:06:44 +00:00
Johannes Kron
a45bbfe14c Remove field-trial parameter to simulate a slow decoder
Clean up by removing unused field-trial that was added in this CL
https://webrtc-review.googlesource.com/c/src/+/151911
to make it possible to simulate a slow decoder.

Bug: None
Change-Id: I237f3ac6baae76f81fcd2938e43eab9c19cea45f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261681
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36824}
2022-05-09 22:24:59 +00:00
Niels Möller
14d01508be Move VP8 SupportsScalabilityMode utility to its own build target
Intended to let Vp8TemporalLayersFactory (an api/ target) reuse
this function, without depending on the codec implementation, and
without introducing a dependency cycle with the webrtc_vp8 build
target.

Bug: webrtc:11607
Change-Id: I671422e994e1005da8c7d768e8dd8ff795553e51
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261308
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36816}
2022-05-09 13:25:25 +00:00
Niels Möller
3b0481389f Update SupportsScalabilityMode functions to use enum ScalabilityMode.
And add missing values to ScalabilityMode.

Bug: webrtc:11607
Change-Id: I892ac35a3528db11b0901d26902699ecfe8f49a4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260982
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36792}
2022-05-06 07:29:20 +00:00
Peter Kasting
662d7f11d5 Fixes to support building in -std=c++20 mode.
* Structs with user-declared constructors are no longer considered
  aggregates, so remove the declarations when possible
* Types of both arguments to "==" must match to avoid "ambiguous
  function call" warning
* Various types of math involving enums are deprecated, so replace with
  constexprs where necessary
* ABSL_CONST_INIT must be used on definition as well as declaration
* volatile memory may no longer be read from and written to by the same
  operator, so replace e.g. "n++" with "n = n + 1"
* Replace an outdated check for no_unique_address support with
  __has_cpp_attribute
* std::result_of(f(x)) has been removed, replace with
  std::invoke_result(f, x)

Bug: chromium:1284275
Change-Id: I77b366ab1da7eb2c1e4c825b2714417c31ee5903
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261221
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Tomas Gunnarsson <tommi@google.com>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36786}
2022-05-05 17:15:58 +00:00
philipel
8615bf0582 Move FrameBuffer3 to api/
The webrtc::VideoStreamDecoderInterface was basically created as a public version of FrameBuffer2, but to hide the complexity of FrameBuffer2 it was also combined with decoding so that the public API could be reasonably simple to use. FrameBuffer3 has a simple API with a clear purpose, so its API can be exposed directly.

Bug: webrtc:14026
Change-Id: I81dc84b869e4d16c5e02feb5c876fbcede3d4a25
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/261181
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36781}
2022-05-05 14:34:48 +00:00
philipel
30ec725b6e Auxiliary liboam AV1 encoder settings.
Bug: none
Change-Id: I03e01ffbed2ec98953650847600016e4f80fdb50
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260861
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36758}
2022-05-04 11:59:29 +00:00
philipel
1bcd827e9b Merged FrameBuffer3 {Next,Last}DecodableTemporalUnitRtpTimestamp() function.
Bug: webrtc:13343
Change-Id: Ic21eddd38466e6b5fd8b912b3ee2d9dc47a0ba35
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260981
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36756}
2022-05-04 11:29:57 +00:00
philipel
8c354882f8 Updated libaom AV1 encoder configuration.
New configuration parameters are:
  AV1E_SET_DISABLE_TRELLIS_QUANT = 1
  AV1E_SET_ENABLE_DIST_WTD_COMP = 0
  AV1E_SET_ENABLE_DIFF_WTD_COMP = 0
  AV1E_SET_ENABLE_DUAL_FILTER = 0
  AV1E_SET_ENABLE_INTERINTRA_COMP = 0
  AV1E_SET_ENABLE_INTERINTRA_WEDGE = 0
  AV1E_SET_ENABLE_INTRA_EDGE_FILTER = 0
  AV1E_SET_ENABLE_INTRABC = 0
  AV1E_SET_ENABLE_MASKED_COMP = 0
  AV1E_SET_ENABLE_PAETH_INTRA = 0
  AV1E_SET_ENABLE_QM = 0
  AV1E_SET_ENABLE_RECT_PARTITIONS = 0
  AV1E_SET_ENABLE_RESTORATION = 0
  AV1E_SET_ENABLE_SMOOTH_INTERINTRA = 0
  AV1E_SET_ENABLE_TX64 = 0
  AV1E_SET_MAX_REFERENCE_FRAMES = 3

Also added a SET_ENCODER_PARAM_OR_RETURN_ERROR convenience macro.

Bug: none
Change-Id: I7a683ec4ad36f33e13e669ba25db2ad81b9b5c86
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260463
Reviewed-by: Marco Paniconi <marpan@google.com>
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36729}
2022-05-02 10:12:52 +00:00
Jerome Jiang
0bb7cbc278 Lower av1 test psnr threshold
AV1 Realtime encoder stats changed

Bug: None
Change-Id: I50a8d36c45a775b3c0127476fb32c3d68d288508
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260480
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Marco Paniconi <marpan@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/main@{#36712}
2022-04-29 16:12:32 +00:00
Niels Möller
79d566b0cf New enum ScalabilityMode.
Used instead of string representation in lower-levels of encoder configuration, to avoid string comparisons (with risk of misspelling) in lots of places.

Bug: webrtc:11607
Change-Id: I4d51c2265aac297c29976d2aa601d8ffb33b7326
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259870
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36706}
2022-04-29 12:16:42 +00:00
philipel
90623e1a91 Check if packet in PacketBuffer was cleared before the frame was fully received.
Bug: none
Change-Id: Iaa5702a8da93462ba80f72821f075a6673eeb0e1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260324
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36694}
2022-04-28 13:48:54 +00:00
Evan Shrubsole
f6adc647ba Remove WebRTC-LowLatencyRenderer field trial
There is no active use of it, and the fields are enabled by default in
the uses of it.

Change-Id: Ibfdb3f1befca886cb4b2f4b2ae4d6235aafafe3d
Fixed: webrtc:13998
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256262
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36655}
2022-04-26 10:05:15 +00:00
Evan Shrubsole
a0ee64c57e Add test::FakeEncodedFrame for testing
Change-Id: I1c8fabe5caf2c723487ec1cd71a379e922026a9d
Bug: webrtc:13996
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/260001
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36654}
2022-04-26 09:26:35 +00:00
Florent Castelli
c3e6e3a3e8 Remove dependency on rtc_base_approved from most targets
Bug: webrtc:9838
Change-Id: Ibd0199803597eff48ca139a5cecdc3209c62c5d2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259873
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36643}
2022-04-25 12:15:30 +00:00
Florent Castelli
a30aef3dea Move event_tracer out of rtc_base_approved
Bug: webrtc:9838
Change-Id: Ic3c424729b5edd3e378c4195afe33ae5c88ad491
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259312
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36637}
2022-04-24 14:47:40 +00:00
Florent Castelli
ed4aadc0a2 Move copy_on_write_buffer out of rtc_base_approved
Bug: webrtc:9838
Change-Id: Ib9a9cd3bc868e716315594c436df7e2cce0d9a5a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259311
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36636}
2022-04-24 09:51:50 +00:00
Florent Castelli
f9c5984a1d Move buffer out of rtc_base_approved
Bug: webrtc:9838
Change-Id: I14feff7b1f0182d031b6644d281be44122820ce7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259307
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36629}
2022-04-22 21:19:28 +00:00
Florent Castelli
6bb1fd358b Move rate_statistics out of rtc_base_approved
Bug: webrtc:9838
Change-Id: Ia5a45291a403097c0527d50ced85c3881653fa37
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259306
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36627}
2022-04-22 15:39:48 +00:00
Florent Castelli
3629a5f0e4 Move histogram_percentile_counter out of rtc_base_approved
Bug: webrtc:9838
Change-Id: I90b3060871ab671e7949632fe6001421465b219a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258774
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36618}
2022-04-22 11:59:29 +00:00
Florent Castelli
31764096a5 Move mod_ops out of rtc_base_approved
Bug: webrtc:9838
Change-Id: I9d974e027f114098d87da368fad0c040c072a893
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258771
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36608}
2022-04-21 16:34:04 +00:00
Niels Möller
c7b690272d Update modules/ to not use implicit conversion from scoped_refptr<T> to T*.
Bug: webrtc:13464
Change-Id: I3906e91906edbf80d558e5c367d6b9429497c021
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/259762
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36606}
2022-04-21 14:23:24 +00:00
Björn Terelius
0c68a7aaa7 Use WebRTC's Java VM initialization in tests.
WebRTC should not depend on chromium's //base.

Bug: webrtc:13662
Change-Id: Ie660aa0f2477cc747830bba611aa23ed5e732385
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256364
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36581}
2022-04-20 08:41:48 +00:00
Florent Castelli
aa6d05d268 Move location out of rtc_base_approved
Bug: webrtc:9838
Change-Id: I3510f3d01df532cb228a6cc14be830f6ab81a8e1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258764
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36576}
2022-04-19 21:57:48 +00:00
Florent Castelli
6b6085937e Move one_time_event out of rtc_base_approved
Bug: webrtc:9838
Change-Id: If85ce079e6a437337f1f780fcee0147b4e95f9cf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258765
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36575}
2022-04-19 20:09:21 +00:00
Florent Castelli
71337f387e Move random out of rtc_base_approved
Bug: webrtc:9838
Change-Id: I64a5ef18c19d446139354d04aa6cb2a76d18aad0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258762
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36572}
2022-04-19 14:00:47 +00:00
Florent Castelli
45a0599978 Remove platform_thread from //rtc_base:rtc_base_approved public_deps
While the target has a restricted visibility, since it was in rtc_base_approved
public deps, a lot of targets were able to bypass the visibility check.
So we remove the visibility restrictions and use the dependency explicitely
everywhere instead.

Bug: webrtc:8603
Change-Id: I94a03fdf7f94c54ab72081a58dd648e2cca73d17
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258944
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36566}
2022-04-18 23:12:52 +00:00
Niels Möller
cc171956f8 Rename scalability mode "NONE" to "L1T1".
Bug: webrtc:11607
Change-Id: I81e8ead4a2cc15de6c21c7ee852e909af38b0567
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258127
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36474}
2022-04-07 07:32:15 +00:00
Erik Språng
e4589cb55e Reduce libvpx VP9 complexity setting on <= 2 core machines.
This CL sets speed 9 for all resolutions when two or less cores are
available, as a heuristic for a "slow" machine.
This gives a large speed bost at a relatively small quality loss.

A field-trial kill-switch is available to override this behavior.

Bug: webrtc:13888
Change-Id: I24278a45de000ad7984d0525c47d9eb6b9ab6b60
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257421
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36466}
2022-04-06 16:08:00 +00:00
Florent Castelli
dd837e28fa Remove //rtc_base:timeutils from public deps
Bug: webrtc:8603
Change-Id: Iaca9356d16275a02e8842c783f259131d72ef010
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257914
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36460}
2022-04-06 11:23:21 +00:00
Florent Castelli
57aa81bce7 Remove //rtc_base:stringutils from public deps
Bug: webrtc:8603
Change-Id: Ic2dfbe28d310cb4b35983b73e895fc95e8439669
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257913
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36453}
2022-04-05 22:42:19 +00:00
Florent Castelli
e10a9f609a Remove //rtc_base:safe_conversions from public deps
Bug: webrtc:8603
Change-Id: I285ac30975039f8fe9882d1673cc8e4a615c8618
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257912
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36452}
2022-04-05 20:04:59 +00:00
Jerome Jiang
a78c949772 Add support for screen content
Bug: webrtc:13929
Change-Id: Ie5463aadcd255bd7c63d4e529030ef85145fd08c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257960
Reviewed-by: Marco Paniconi <marpan@google.com>
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/main@{#36451}
2022-04-05 17:35:20 +00:00
Florent Castelli
33d31fbc48 Remove //rtc_base:rtc_event from public deps
Bug: webrtc:8603
Change-Id: Ib99f43043da17723c939b0fe2aa9f3e515462c93
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257911
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36450}
2022-04-05 17:34:09 +00:00
Florent Castelli
f86f6f9afd Remove //rtc_base:refcount from public deps
Bug: webrtc:8603
Change-Id: Ib27a107ae809df739492846175f0e9c4af40d21a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257910
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36447}
2022-04-05 15:32:29 +00:00
Florent Castelli
4467ad7835 Remove //rtc_base:macromagic from public deps
Bug: webrtc:8603
Change-Id: I9708df48c9bde9f86ba2d1a92a278bb0d09f3865
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257909
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36444}
2022-04-05 12:36:12 +00:00
Florent Castelli
0af55ba60d Remove //rtc_base:logging from public deps
Bug: webrtc:8603
Change-Id: I2704da8618f88032adac7ae9eb2a0f47fce4a836
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257908
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36443}
2022-04-05 10:31:19 +00:00
Erik Språng
3225385b3e VP9 per layer settings should not force denoising.
In r36379 a change to per-resolution setting of denoising was introduced
that unintentionally enabled denoising on lower resolutions in the case
that VideoCodec::VP9()->denoising was false.
The CL makes sure the per-resolution setting are only allowed to
disable denoising, not enable it.

Bug: webrtc:13888
Change-Id: Ice07a5a7d27798dc2182a40af0ec521bde6210b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257303
Reviewed-by: Ying Wang <yinwa@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36412}
2022-04-02 22:03:21 +00:00
Erik Språng
3be87e9afd Reduce VP9 complexity for 1080p and up.
This CL changes the default speed settings for TL0/TL[1-2] from
7/8 to 9/9 at 1080p resolutions and up. We also disable the denoiser
at these resolutions.
Settings can be overriden using existing WebRTC-VP9-PerformanceFlags
field trial.

Bug: webrtc:13888
Change-Id: I70f19efdace88d70bbb90bc6dd5149653eb079c8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257141
Reviewed-by: Ying Wang <yinwa@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36379}
2022-03-30 14:22:31 +00:00
philipel
ab68a914d6 Don't dereference null buffer in the LibaomAv1Encoder.
No-Try: True
Bug: webrtc:13746
Change-Id: I6e467462c16abc0f3943c6c629d77a7ddaeb682a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/257161
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36377}
2022-03-30 12:54:38 +00:00
Jonas Oreland
e62c2f2c77 WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf
rename WebRtcKeyValueConfig to FieldTrialsView

Bug: webrtc:10335
Change-Id: If725bd498c4c3daf144bee638230fa089fdde833
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256965
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36365}
2022-03-29 10:14:00 +00:00
philipel
342c511007 Save unwrapped tl0_pic_idx for inserted VP8 frames.
As stashed frames are retried their `tl0_pic_idx` are again unwrapped which can lead to the `tl0_unwrapper_` to unwrap the `tl0_pic_idx` of newer frames backwards. Instead unwrap the `tl0_pid_idx` only once and save it with the frame if necessary.

Related VP9 CL: https://webrtc-review.googlesource.com/c/src/+/253844

Bug: none
Change-Id: I8265dc5f36ee257db92d79cec719f56b165d3855
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256966
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36356}
2022-03-28 14:41:40 +00:00
Sergio Garcia Murillo
b63536f5d3 add h264 422 decoding
Bug: webrtc:13826
Change-Id: Ic7296be69157a9aaf5f139a18fdb011b90f4caa1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/255380
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36337}
2022-03-25 13:15:34 +00:00
Jonas Oreland
e02f9eedb3 WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 10/inf
This patch takes a stab at modules/video_coding,
but reaches only about half.

Bug: webrtc:10335
Change-Id: I0d47d0468b818145470c51ae4e8e75ff58d499ae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256112
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36335}
2022-03-25 12:35:36 +00:00
Ilya Nikolaevskiy
1bcdafca0e Reland of remove NV12 to I420 conversion in webrtc AV1 Encoder.
libaom supports for NV12 inputs for encoding av1 stream. It will reduce
unnecessary conversion from NV12 to I420 format.
(https://bugs.chromium.org/p/aomedia/issues/detail?id=3232&q=3232&can=2)

Original CL reviewed at https://webrtc-review.googlesource.com/c/src/+/251920

Bug: webrtc:13746
Change-Id: I96cc99674f315518d98355cb90566e78bead3e55
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/254340
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36306}
2022-03-23 16:33:32 +00:00
Evan Shrubsole
8f1159b518 [cleanup] Remove VCMTiming::get_min/max_playout_delay
These methods were only used for testing.

Change-Id: Icbb6a3cc59cbc0b5e1f42efcb86a7203704b92d8
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256362
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36293}
2022-03-22 15:38:23 +00:00
Evan Shrubsole
92e89d7f77 [cleanup] Return struct from VCMTiming::GetTimings
Cleans callers having to initialize TimeDeltas.

Change-Id: Ib00a59bedf05fb82c9fde1d9fdd1e341e2132cb8
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256360
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36292}
2022-03-22 15:15:13 +00:00
Jerome Jiang
aaf9d051c7 Lower hd av1 quality threshold
Bug: None
Change-Id: I2b7bfbd8f5a2be13ede11df30272e5b001471453
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/255021
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36180}
2022-03-11 20:54:03 +00:00
Andrey Logvin
fef0026f2f Revert "Reland "remove NV12 to I420 conversion in webrtc AV1 Encoder.""
This reverts commit d7031692e3.

Reason for revert: Breaks downstream project

Original change's description:
> Reland "remove NV12 to I420 conversion in webrtc AV1 Encoder."
>
> This reverts commit 66557e1af3.
>
> Reason for revert: Some downstream projects seem to have an old libaom version with no NV12 support yet. It will be updated soon.
>
> Original change's description:
> > Revert "remove NV12 to I420 conversion in webrtc AV1 Encoder."
> >
> > This reverts commit 9558ab41eb.
> >
> > Reason for revert: speculative revert: breaks downstream project
> >
> > Original change's description:
> > > remove NV12 to I420 conversion in webrtc AV1 Encoder.
> > >
> > > libaom supports for NV12 inputs for encoding av1 stream. It will reduce
> > > unnecessary conversion from NV12 to I420 format.
> > > (https://bugs.chromium.org/p/aomedia/issues/detail?id=3232&q=3232&can=2)
> > >
> > > Bug: webrtc:13746
> > > Change-Id: I1407227d1690b3f63cb6581eef5d587e5f418892
> > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251920
> > > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > > Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > > Commit-Queue: Shuhai Peng <shuhai.peng@intel.com>
> > > Cr-Commit-Position: refs/heads/main@{#36111}
> >
> > Bug: webrtc:13746
> > Change-Id: Ie928f7f5b5992337a9d186fa70b7fdec20a33f00
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253122
> > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> > Commit-Queue: Artem Titov <titovartem@webrtc.org>
> > Owners-Override: Artem Titov <titovartem@webrtc.org>
> > Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#36114}
>
> Bug: webrtc:13746
> Change-Id: Ib26ff6204abceb863b03d55e5953797c9ca27fc2
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253215
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#36156}

Bug: webrtc:13746
Change-Id: Ia9f8024bf70a82f8e26cd7a80d3020ed796c1b40
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/254262
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36159}
2022-03-09 11:47:54 +00:00
Shuhai Peng
d7031692e3 Reland "remove NV12 to I420 conversion in webrtc AV1 Encoder."
This reverts commit 66557e1af3.

Reason for revert: Some downstream projects seem to have an old libaom version with no NV12 support yet. It will be updated soon.

Original change's description:
> Revert "remove NV12 to I420 conversion in webrtc AV1 Encoder."
>
> This reverts commit 9558ab41eb.
>
> Reason for revert: speculative revert: breaks downstream project
>
> Original change's description:
> > remove NV12 to I420 conversion in webrtc AV1 Encoder.
> >
> > libaom supports for NV12 inputs for encoding av1 stream. It will reduce
> > unnecessary conversion from NV12 to I420 format.
> > (https://bugs.chromium.org/p/aomedia/issues/detail?id=3232&q=3232&can=2)
> >
> > Bug: webrtc:13746
> > Change-Id: I1407227d1690b3f63cb6581eef5d587e5f418892
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251920
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > Commit-Queue: Shuhai Peng <shuhai.peng@intel.com>
> > Cr-Commit-Position: refs/heads/main@{#36111}
>
> Bug: webrtc:13746
> Change-Id: Ie928f7f5b5992337a9d186fa70b7fdec20a33f00
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253122
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Artem Titov <titovartem@webrtc.org>
> Owners-Override: Artem Titov <titovartem@webrtc.org>
> Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#36114}

Bug: webrtc:13746
Change-Id: Ib26ff6204abceb863b03d55e5953797c9ca27fc2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253215
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36156}
2022-03-09 11:15:13 +00:00
Jerome Jiang
ddcfe405d3 Change PSNR threshold for av1 test
Bug: None
Change-Id: I47101a6625c2f1704599ea60ad3f2c05370da66e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/254101
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/main@{#36151}
2022-03-08 22:14:51 +00:00
Evan Shrubsole
e9126c18bf Migrate VCMInterFrameDelay to use Time units
Additionally,
* Moved to its own GN target.
* Added unittests.
* Removed unused variable `_zeroWallClock`.
* Renamed variables to match style guide.
* Moved fields _dTS and _wrapArounds to variables.

Change-Id: I7aa8b8dec55abab49ceabe838dabf2a7e13d685d
Bug: webrtc:13756
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253580
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36147}
2022-03-08 09:05:12 +00:00
philipel
773205dfb2 Save unwrapped tl0_pic_idx for inserted VP9 frames.
As stashed frames are retried their `tl0_pic_idx` are again unwrapped which can lead to the `tl0_unwrapper_` to unwrap the `tl0_pic_idx` of newer frames backwards. Instead unwrap the `tl0_pid_idx` only once and save it with the frame if necessary.

In this CL
  - Only unwrap the TL0 once in ManageFrame.
  - Split ManageFrameInternal into ManageFrameFlexible and ManageFrameGof.
  - Save the unwrapped TL0 with the stashed frame.

Bug: none
Change-Id: I56e6b071c0082682e010c049c537d66060635567
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253844
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36146}
2022-03-07 18:36:50 +00:00
philipel
11cc804d97 Remove unused variable from RtpVp9RefFinder
Bug: none
Change-Id: Iaa1f2f8272a7e47f50a3572efb2e0765286c8a0e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253843
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36144}
2022-03-07 16:12:30 +00:00
Evan Shrubsole
13e42a88df Use TimeDelta and Timestamp in VCMJitterEstimator
* Uses DataSize to represent incoming and outgoing bytes.
* Puts units into doubles as they enter the Kalman filter
* Moved to its own GN target.

Change-Id: I1e7d5486a00a7158d418f553a6c77f9dd56bf3c2
Bug: webrtc:13756
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253121
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36143}
2022-03-07 14:58:22 +00:00
Evan Shrubsole
80260c226d Switch VCMRttFilter to use TimeDelta
* Moved into its own GN target
* Switched the internal buffer types to absl::InlinedVector as arrays
  are tricky to use with types that do not have default constructors.
* Update fields arnd variables to use style guide.
* Use constexpr for formerly const fields.
* Adds unit tests.

Change-Id: I476ae8491f0f9878c176e7b87a5133942c3d79f7
Bug: webrtc:13756
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253120
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36133}
2022-03-04 16:03:28 +00:00
“Michael
15ee87fe0e Use VideoCodec complexity to determine AV1 encoder cpu_speed.
Bug: webrtc:13744
Change-Id: Ib6d62dcdf7346d886c0aca09735c7d5c1f3e2455
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/252340
Reviewed-by: Erik Språng <sprang@webrtc.org>
Auto-Submit: Michael Horowitz <mhoro@google.com>
Commit-Queue: Michael Horowitz <mhoro@google.com>
Cr-Commit-Position: refs/heads/main@{#36125}
2022-03-03 19:06:17 +00:00
Evan Shrubsole
45623a3c0f Remove operator= from VCMJitterEstimator and VCMRttFilter
Change-Id: I70846d9cdc17d904585a18983acee7980292e62e
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253301
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36122}
2022-03-03 15:26:27 +00:00
Artem Titov
66557e1af3 Revert "remove NV12 to I420 conversion in webrtc AV1 Encoder."
This reverts commit 9558ab41eb.

Reason for revert: speculative revert: breaks downstream project

Original change's description:
> remove NV12 to I420 conversion in webrtc AV1 Encoder.
>
> libaom supports for NV12 inputs for encoding av1 stream. It will reduce
> unnecessary conversion from NV12 to I420 format.
> (https://bugs.chromium.org/p/aomedia/issues/detail?id=3232&q=3232&can=2)
>
> Bug: webrtc:13746
> Change-Id: I1407227d1690b3f63cb6581eef5d587e5f418892
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251920
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Commit-Queue: Shuhai Peng <shuhai.peng@intel.com>
> Cr-Commit-Position: refs/heads/main@{#36111}

Bug: webrtc:13746
Change-Id: Ie928f7f5b5992337a9d186fa70b7fdec20a33f00
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253122
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Owners-Override: Artem Titov <titovartem@webrtc.org>
Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36114}
2022-03-02 16:01:28 +00:00
Evan Shrubsole
d6cdf80072 Use Timestamp and TimeDelta in VCMTiming
* Switches TimestampExtrapolator to use Timestamp as well.

Bug: webrtc:13589
Change-Id: I042be5d693068553d2e8eb92fa532092d77bd7ef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249993
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36112}
2022-03-02 15:07:25 +00:00
Shuhai Peng
9558ab41eb remove NV12 to I420 conversion in webrtc AV1 Encoder.
libaom supports for NV12 inputs for encoding av1 stream. It will reduce
unnecessary conversion from NV12 to I420 format.
(https://bugs.chromium.org/p/aomedia/issues/detail?id=3232&q=3232&can=2)

Bug: webrtc:13746
Change-Id: I1407227d1690b3f63cb6581eef5d587e5f418892
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251920
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Shuhai Peng <shuhai.peng@intel.com>
Cr-Commit-Position: refs/heads/main@{#36111}
2022-03-02 14:18:36 +00:00
“Michael
3147e29c4e Refactor encoder-complexity param in VideoCodec w/backward compatibility
Move complexity parameter to the main VideoCodec class to enable
additional video codecs to use the parameter without creating a new
codec-specific structure.

Bug: webrtc:13694
Change-Id: Icb7cf640b178875d799f39ade8b5084e3222bb1c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251921
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Michael Horowitz <mhoro@google.com>
Cr-Commit-Position: refs/heads/main@{#36040}
2022-02-21 19:40:44 +00:00
Sergey Silkin
454d2309de Add bitrate adaptation tests
Bug: none
Change-Id: I3e2c503efc7a85a3daaa40cd8118c1b02d3b81cf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251680
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36013}
2022-02-16 10:25:13 +00:00
Sergey Silkin
0b02d637c0 Calculate max/avg encode/decode latency in codec tests
Bug: none
Change-Id: Ie42461dd06b1764c99308393477921ea25319ab4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251687
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36007}
2022-02-15 18:14:41 +00:00
Evan Shrubsole
f7a1937e70 Add FrameBufferProxy test for low-latency renderer
Ensures that frames are decoded instantly when in low-latency render
mode. This also tests the max queue size behaviour. Adds a new test
suite for FrameBufferProxy that sets the appropriate field trials.

* Fixes FrameDecodeTiming to never use negative wait times for decode
timestamps.

R=kron@webrtc.org

Change-Id: I06cbec52e1e866e21aa964b24c4fd0163c26961b
Bug: webrtc:13658
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251601
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35999}
2022-02-15 08:30:51 +00:00
Sergey Silkin
eb6c6fcf27 Fix delta frame delay calculation
The issue was introduced in https://webrtc-review.googlesource.com/c/src/+/132460.

Bug: webrtc:10412
Change-Id: I92d1bd2be63ea34d150145cec63c282f7aa49ce8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251683
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35989}
2022-02-14 11:15:50 +00:00
Stefan Mitic
ffdc6804bf Reland: Added support for H264 YUV444 (I444) decoding.
PS#1 is a reland of "Added support for H264 YUV444 (I444) decoding." https://webrtc-review.googlesource.com/c/src/+/235340

Bug: chromium:1251096
Change-Id: Icd997c7f7732229954d5494343b4e7a70deb09d1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/251303
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35964}
2022-02-09 11:57:55 +00:00
Bohan Li
1f06508350 Update av1 video codec test threshold.
Bug: webrtc:13638
Change-Id: If17ae2519451953ac3e6054cb6cdc376594fe3d8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/250040
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Reviewed-by: Fyodor Kyslov <kyslov@google.com>
Commit-Queue: Bohan Li <bohanli@google.com>
Cr-Commit-Position: refs/heads/main@{#35874}
2022-02-01 20:43:08 +00:00
Ali Tofigh
1e157a9596 Remove more top-level const from parameters in function declarations
This CL removes even more top-level const from parameters in function
declarations. This change is safe because top-level const in function
declarations (not function definitions) are ignored by the compiler
and so change is just a no-op cleanup.

Bug: webrtc:13610
Change-Id: Icf6868c27b1fdb9d9915b3a7020eb34bdcf07a09
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249989
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Ali Tofigh <alito@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35866}
2022-02-01 09:15:50 +00:00
Evan Shrubsole
9a99905301 Implement FrameBuffer3Proxy
This emulates behaviour from frame buffer 2, but does not handle stats.
In contrast to frame buffer 2, all work happens on the same task queue.
FrameBuffer3Proxy encapsulates FrameBuffer3 and scheduler behind
a field trial WebRTC-FrameBuffer3.

This separates frame scheduling behaviour into a few components,

VideoReceiveStreamTimeoutTracker
* Handles the stream timeouts.

FrameDecodeScheduler
* Manages the scheduling and cancelling of frames being sent to the
  decoder.

FrameDecodeTiming
* Handles the timing and ordering of frames to be decoded.

Other changes
* Adds CurrentSize() method to FrameBuffer3
* Move timing to a separate library
* Does a thread check for Receive statistics as this is now
on the worker thread.
* Adds `FlushImmediate` method to RunLoop so that
  video_receive_stream2_unittest can pass when scheduling is happening
  on the worker thread.

Change-Id: Ia8d2e5650d1708cdc1be3631a5214134583a0721
Bug: webrtc:13343
Tested: Ran webrtc_perf_tests, video_engine_tests, rtc_unittests forcing frame buffer3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/241603
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35847}
2022-01-31 11:40:27 +00:00
Henrik Boström
3f42fdf19f Revert "Added support for H264 YUV444 (I444) decoding."
This reverts commit 3babb8af23.

Reason for revert:
- Causes regressions to transceivers, see https://crbug.com/1291956 for more information, including tests to reproduce the issue.

This CL is not a pure revert. While it reverts everything else, it does
keep the new enum value (kProfilePredictiveHigh444). This is as to not
break Chromium which already depend on it. It is not listed in the
kProfilePatterns though so the enum value should never be applicable.

Original change's description:
> Added support for H264 YUV444 (I444) decoding.
>
> Added Nutanix Inc. to the AUTHORS file.
>
> PS#1 is a reland of "Added support for H264 YUV444 (I444) decoding." https://webrtc-review.googlesource.com/c/src/+/234540
>
> Bug: chromium:1251096
> Change-Id: I99a1b1e4d8b60192ff96f92334a430240875c66c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235340
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35684}

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

Bug: chromium:1251096, chromium:1291956
Change-Id: Ib4d8ea4898f9832914d88e7076e6b39da0c804ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249791
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Auto-Submit: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35835}
2022-01-29 10:45:39 +00:00
Evan Shrubsole
9d29026216 Add FrameBufferProxy in prep for FrameBuffer3
This is a delegate that is used by video_receive_stream2 to handle frame
buffer tasks like threading, and stats. This will be used in a follow up
to use FrameBuffer3 as a strategy selected by field trial.

Unit-tests will be used in follow-up CLs containing Frame Buffer 3, and
are expected to work with both Frame buffer proxy versions.

Change-Id: I524279343d60a348d044d9085d618f12d7bf3a23
Bug: webrtc:13343
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/241605
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35803}
2022-01-26 12:31:03 +00:00
Ali Tofigh
62238097c9 Remove top-level const from parameters in function declarations.
This is a safe cleanup change since top-level const applied to
parameters in function declarations (that are not also
definitions) are ignored by the compiler. Hence, such changes do
not change the type of the declared functions and are simply
no-ops.

Bug: webrtc:13610
Change-Id: Ibafb92c45119a6d8bdb6f9109aa8dad6385163a9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249086
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Ali Tofigh <alito@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35802}
2022-01-26 11:05:25 +00:00
Henrik Boström
4c72f99d67 FrameBuffer2: Specify high precision repeated tasks.
This unblocks lowering the precision of low precision tasks which are
the default.

Bug: webrtc:13604
Change-Id: Icd663cbbf5b0bf87ac83a4a0abd58699e6e27e8f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/248862
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35782}
2022-01-25 10:46:53 +00:00
Anton Bikineev
7abf45fe2c LSC: Apply clang-tidy's modernize-use-bool-literals
The check finds implicit conversions of integer literals to bools:
  bool b1 = 1;
  bool b2 = static_cast<bool>(1);
and transforms them to:
  bool b1 = true;
  bool b2 = true;

Bug: chromium:1290142
Change-Id: I6819a0bd2ca84ecadae08ed9389c17d2652589f4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/248166
Auto-Submit: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#35778}
2022-01-24 20:42:01 +00:00
Byoungchan Lee
604fd2f1ab Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/
Bug: webrtc:13555, webrtc:13082
Change-Id: I2c2cbcbd918f0cfa970c1a964893220ba11d4b41
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247960
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: (Daniel.L) Byoungchan Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/main@{#35771}
2022-01-24 11:50:20 +00:00
Evan Shrubsole
b39fce858f [frame-buffer3] Enable WebRTC-LegacyFrameIdJumpBehavior by default
When disabled, the test ResolutionAdaptsToAvailableBandwidth fails when
using frame buffer3. It is not clear if that is a problem with the test
or if that behaviour is required, and thus it is safer to have this
enabled by default and experiment with turning it off in the future.

Change-Id: I7a6ae14c37a0cdc3e203f39f6cc0c3ad87038a60
Bug: webrtc:13343
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247700
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35764}
2022-01-21 15:07:19 +00:00
philipel
95701503f2 Make libaom_av1_encoder always build the libaom encoder.
Currently `CreateLibaomAv1Encoder` will either return an actual libaom AV1 encoder or a nullptr depening on whether the build flag `enable_libaom` was configured to true or not. This CL updates the `libaom_av1_encoder` build target to no longer depend on `enable_libaom` so that `CreateLibaomAv1Encoder` will always return an encoder instance.

Added `CreateLibaomAv1EncoderIfSupported` as a replacement to the old `CreateLibaomAv1Encoder`.

Bug: webrtc:13573
Change-Id: Ibdcd52c609acd79feefa2b86f19d1b4ca3e91d0a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242360
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Peter Hanspers <peterhanspers@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35763}
2022-01-21 13:45:47 +00:00
Byoungchan Lee
c065e739e2 Remove RTC_DISALLOW_COPY_AND_ASSIGN more.
Bug: webrtc:13555, webrtc:13082
Change-Id: I9c07708108da0a26f5e228384fd56cef4d1540b3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247300
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: (Daniel.L) Byoungchan Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/main@{#35749}
2022-01-20 11:00:18 +00:00
Evan Shrubsole
f83d4265b5 Add frame_helpers
A number of utility functions to be shared between frame buffer 2
and the new frame scheduling implementation based on frame buffer 3.

Change-Id: Icc932c6c76fddeeedc8aa64ec27c7e0c955abfd0
Bug: webrtc:13343
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/241604
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35743}
2022-01-19 17:19:57 +00:00
Erik Språng
16cbed4782 Update how VP9 temporal up switch is populated
This CL updates both the static GOF pattern with the correct flags for
temporal_up_switch, as well the flexible mode logic to base the flag
on dependency descriptors instead use reference buffers.

Bug: webrtc:13576
Change-Id: I578f744bec51d1f3531da5f4a89d12f05a16a6c0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247187
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35741}
2022-01-19 15:42:21 +00:00
Erik Språng
4b5caee6b1 VP9 encoder: mark only base spatial layer as keyframe
Bug: webrtc:13576
Change-Id: Ia4173d3aa2c8e546a818eccc5d6c09d1150dcaf4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247188
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35736}
2022-01-19 11:09:34 +00:00
Niels Möller
ac0d18341d Prepare for deleting implicit conversion from raw pointer to scoped_refptr.
Updates all webrtc code, to have a small followup cl to just add the
"explicit" keyword. Patchset #24 passed all webrtc tests, with explicit.

Bug: webrtc:13464
Change-Id: I39863d3752f73209b531120f66916dc9177bf63a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242363
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35718}
2022-01-18 08:22:15 +00:00
Sergey Silkin
3226e563d8 Reland "Disable frame dropping from codec settings."
This is a reland of 34aba3cefd

Original change's description:
> Disable frame dropping from codec settings.
>
> This was broken in https://webrtc-review.googlesource.com/c/src/+/99062/
>
> Bug: webrtc:9734
> Change-Id: Ibce41a732cb2e943354c87fbb05be0dd218acf27
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242366
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35568}

Bug: webrtc:9734
Change-Id: I84efcab334b99aa08b07cc5e891681bfd5b2865f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247182
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35712}
2022-01-17 15:08:16 +00:00
Danil Chapovalov
46cc32d89f Replace ABSL_FALLTHROUGH_INTENDED with c++17 attribute
the new spelling is more standard and more compact, in particular doesn't need extra include and thus dependency

Bug: None
Change-Id: Iaea69d2154e4d9eff2468514f5734cb3fe016ff8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/245080
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35709}
2022-01-17 14:55:02 +00:00
Stefan Mitic
3babb8af23 Added support for H264 YUV444 (I444) decoding.
Added Nutanix Inc. to the AUTHORS file.

PS#1 is a reland of "Added support for H264 YUV444 (I444) decoding." https://webrtc-review.googlesource.com/c/src/+/234540

Bug: chromium:1251096
Change-Id: I99a1b1e4d8b60192ff96f92334a430240875c66c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235340
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35684}
2022-01-13 14:06:55 +00:00
Christoffer Jansson
31bd9fadb6 Disable Vp9ImplTest.DisableEnableBaseLayerWithSvcControllerTriggersKeyFrame
- Enable once a forward fix has landed in WebRTC

Bug: webrtc:13442
Change-Id: I0493fbbfbcf96e643d604406b350a3d315b24779
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/245601
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Christoffer Jansson <jansson@google.com>
Cr-Commit-Position: refs/heads/main@{#35670}
2022-01-12 16:43:38 +00:00
Christoffer Jansson
b82193cec8 Disable DisableEnableBaseLayerTriggersKeyFrame
- Enable once a forward fix has landed in WebRTC.

Bug: webrtc:13442
Change-Id: I295383b84a753e8e1f65006cc6a3c00b78033aa4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/245643
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Christoffer Jansson <jansson@google.com>
Cr-Commit-Position: refs/heads/main@{#35659}
2022-01-11 14:59:24 +00:00
Niels Möller
7336422fe3 Delete some unneeded references to ProcessThread.
Bug: None
Change-Id: I77528df2a8bd2d461440cf59ada8229e732a1e00
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242370
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35613}
2022-01-03 15:36:02 +00:00
Erik Språng
5e180749a1 Revert "Disable frame dropping from codec settings."
This reverts commit 34aba3cefd.

Reason for revert: Has unintended consequences for vp8 simulcast screenshare.

Original change's description:
> Disable frame dropping from codec settings.
>
> This was broken in https://webrtc-review.googlesource.com/c/src/+/99062/
>
> Bug: webrtc:9734
> Change-Id: Ibce41a732cb2e943354c87fbb05be0dd218acf27
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242366
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35568}

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

Bug: webrtc:9734
Change-Id: I8a4758f6e915f40f89cc45f9530838b6cf6d1a49
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242964
Reviewed-by: Erik Språng <sprang@webrtc.org>
Auto-Submit: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35591}
2021-12-29 12:22:27 +00:00
Shuhai Peng
9753fbc380 Video: Avoid crashing when dump stream with IvfFileWriter.
Currently some RTPVideoHeaders are not filled with width and height
information, such as AV1. If we dump the stream with command line
“--force-fieldtrials=WebRTC-DecoderDataDumpDirectory/./”, and if
width and height are 0, it will crash soon.

This CL aims to avoid crashing when the |encoded_image._encodedWidth|
and |encoded_image._encodedHeight| are 0.

Bug: webrtc:13491
Change-Id: Ie5af58c03f09a9784ed67943dc5b5959850b4368
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242500
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35576}
2021-12-23 13:37:22 +00:00
Sergey Silkin
34aba3cefd Disable frame dropping from codec settings.
This was broken in https://webrtc-review.googlesource.com/c/src/+/99062/

Bug: webrtc:9734
Change-Id: Ibce41a732cb2e943354c87fbb05be0dd218acf27
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/242366
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35568}
2021-12-22 12:36:17 +00:00
Markus Handell
8d87c463d9 ZeroHertzAdapterMode: slow down repeats on quality convergence.
The frame cadence adapter previously resulted in unconditional
frame repeating at max FPS. Change this to slow down to an idle
rate (1 Hz) when quality convergence in all configured spatial
layers has been achieved.

go/rtc-0hz-present

Bug: chromium:1255737
Change-Id: Ifa593dbf8a61aa29da20ac250da332734ae82791
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/241421
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35547}
2021-12-16 12:01:30 +00:00
Nico Grunbaum
d525e2d9f7 Disambiguate kIvfHeaderSize for Mozilla unified build
kIvfHeaderSize is defined both inside of ivf_file_writer.cc and
ivf_file_reader.cc. This patch moves its definition into a header.

Bug: webrtc:13463
Change-Id: Ia6b2fcc3434f69a1e30a7dae7bf0c90547f11d98
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/239722
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35540}
2021-12-15 08:52:00 +00:00
Konrad Hofbauer
d2cd8722cd Consider frame orientation for number of spatial layers in VP9.
Addresses case where 540*960 would not get a 135*240 layer.

Bug: webrtc:13469
Change-Id: Icc291c65114fb400cc71659d76a786e359e5996c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/239820
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Konrad Hofbauer <hofbauer@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35507}
2021-12-09 09:39:50 +00:00
philipel
ceac5d560e New FrameBuffer3.
FrameBuffer3 keep track of order, decodability and continuity of the inserted frames. Compared to FrameBuffer2 which schedule frames for decoding and is thread safe, FrameBuffer3 does not schedule decoding and is thread unsafe.

Change-Id: Ic3bd540c4f69cec26fce53a40425f3bcd9afe085
Bug: webrtc:13343
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238985
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35494}
2021-12-07 18:31:37 +00:00
Evan Shrubsole
3d29efd279 Remove FrameBuffer::ReturnReason
This was a remenant leftover from a previous design, which was no longer
valid after the switch to TaskQueues. ReturnReason::kStopped was not
used at all, and so Timeout or FrameFound can be inferred from whether
the frame is null or not.

Bug: webrtc:13343, webrtc:13346
Change-Id: Ib0f847b1e1192e32ea11208e48f5a3892703521e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/239651
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35490}
2021-12-07 14:16:17 +00:00
philipel
0763ccc8e3 Don't configure SVC params without per layer bitrate configured.
Change-Id: Ieb200ce1a710078e380047ed8af73db0c5e0c751
Bug: none
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/239442
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35457}
2021-12-02 09:52:32 +00:00
Harald Alvestrand
ef5b21e637 Deprecate and remove usage for WARNING log level
Bug: webrtc:13362
Change-Id: Ida112158e4ac5f667e533a0ebfedb400c84df4d9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/239124
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35425}
2021-11-27 22:21:54 +00:00
Sergey Silkin
144e5bf87d Use NONE if scalability mode is not specified
Bug: none
Change-Id: I8ffdb7fc41dec3c5b37483a6dcbb8fe7f03b59da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238984
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35418}
2021-11-25 13:50:14 +00:00
philipel
b09d87232b Reland "Add dav1d decoder to WebRTC."
This reverts commit 8498b7e7f6.

Reason for revert: Updating CL to include conditional build flag.

Original change's description:
> Revert "Add dav1d decoder to WebRTC."
>
> This reverts commit 147858577d.
>
> Reason for revert: High binary size increase
>
> Original change's description:
> > Add dav1d decoder to WebRTC.
> >
> > Bug: none
> > Change-Id: I7642f42e592dcf510679f881f118bc4dab93b31c
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237504
> > Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
> > Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> > Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#35394}
>
> TBR=danilchap@webrtc.org,mbonadei@webrtc.org,ilnik@webrtc.org,philipel@webrtc.org,mflodman@webrtc.org,ssilkin@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com
>
> Change-Id: I00a8acd6ea94ce523c2d5ba705333c9174678180
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: none
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238560
> Reviewed-by: Artem Titov <titovartem@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
> Owners-Override: Artem Titov <titovartem@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35395}

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

Bug: none
Change-Id: Iff51848731646159e87e075c38af7cb6355f5b5b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238661
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35409}
2021-11-23 15:59:58 +00:00
Sergey Silkin
984cf9b837 Explicitly set encoder and decoder format in codec tests.
This allows to differentiate and test codecs of the same type but
different implementations/settings.

Bug: none
Change-Id: I74f799b36411e63387513133ffc19a7f0c45d550
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238165
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35396}
2021-11-22 08:18:25 +00:00
Artem Titov
8498b7e7f6 Revert "Add dav1d decoder to WebRTC."
This reverts commit 147858577d.

Reason for revert: High binary size increase

Original change's description:
> Add dav1d decoder to WebRTC.
>
> Bug: none
> Change-Id: I7642f42e592dcf510679f881f118bc4dab93b31c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237504
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35394}

TBR=danilchap@webrtc.org,mbonadei@webrtc.org,ilnik@webrtc.org,philipel@webrtc.org,mflodman@webrtc.org,ssilkin@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com

Change-Id: I00a8acd6ea94ce523c2d5ba705333c9174678180
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: none
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238560
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
Owners-Override: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35395}
2021-11-19 18:47:42 +00:00
philipel
147858577d Add dav1d decoder to WebRTC.
Bug: none
Change-Id: I7642f42e592dcf510679f881f118bc4dab93b31c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237504
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35394}
2021-11-19 15:03:12 +00:00
Niels Möller
13d163654a Delete support for has_internal_source
Bug: webrtc:12875
Change-Id: I9683e71e1fe5b24802033ffcb32a531ca685fc6f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/179220
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35353}
2021-11-16 11:29:40 +00:00
Artem Titov
d3251968d1 Prepare to rename RTC_NOTREACHED to RTC_DCHECK_NOTREACHED
Add implementation of RTC_DCHECK_NOTREACHED equal to the RTC_NOTREACHED.
The new macros will replace the old one when old one's usage will be
removed. The idea of the renaming to provide a clear signal that this
is debug build only macros and will be stripped in the production build.

Bug: webrtc:9065
Change-Id: I4c35d8b03e74a4b3fd1ae75dba2f9c05643101db
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237802
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35348}
2021-11-15 21:44:59 +00:00
Zhaoliang Ma
528e4898e7 Set correct spatial layer number in FrameEncodeMetadataWriter
This CL set the spatial id in LibaomAv1Encoder and set correct number
of spatial layers for AV1 in FrameEncodeMetadataWriter.

Bug: None
Change-Id: I40092e45be88ec9ab75f228d9ca84c44e3cad326
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237662
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Zhaoliang Ma <zhaoliang.ma@intel.com>
Cr-Commit-Position: refs/heads/main@{#35339}
2021-11-15 03:34:18 +00:00
Evan Shrubsole
0072c21934 Use unique_ptr in GetNextFrame instead of release/delete
Bug: webrtc:13343
Change-Id: Iea86335dae5c0407f0fe6c91ccfe2f1eb13175b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236847
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35331}
2021-11-10 12:32:42 +00:00
Evan Shrubsole
7de81e2717 Add const to methods in DecodedFramesHistory
Bug: webrtc:13343
Change-Id: I3f4e015e683f4003bb038424646cb51ae26c76fa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236848
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35329}
2021-11-10 12:30:18 +00:00
Niek van der Maas
dfec7a664b Added main profile to supported H264 codecs
This adds the Main 3.1 profile to the list of supported H264 codecs. This unifies the output of WebRTC codecs among macOS/Windows (which both have Main 3.1 codecs) and headless Linux browsers.

Bug: None
Change-Id: Ife2fe8c1827be9368fabccc5f24ba316671b1b8b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236600
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35328}
2021-11-10 10:56:13 +00:00
Evan Shrubsole
0b5656312b Test FrameBuffer::Clear and FrameBuffer::Stop
* Clearing while waiting for a frame should return a new frame
entering the buffer.
* Stopping while waiting for a frame should cancel the wait.

Bug: webrtc:13343
Change-Id: Ife9abfa8b6ea56141c9f32ff37d3b2a2e62a44f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236849
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35314}
2021-11-05 09:53:14 +00:00
Harald Alvestrand
97597c0f51 Remove usage of INFO alias for LS_INFO in log messages
Bug: webrtc:13362
Change-Id: Ifda893861a036a85c045cd366f9eab33c62ebde0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/237221
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35310}
2021-11-04 13:46:17 +00:00
philipel
d3eb8f1152 libaom AV1 encoder wrapper cleanup.
Bug: none
Change-Id: Ia62ab4653a1c95e7a609d767d76f7e7c64c0e751
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236843
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35292}
2021-11-01 13:58:32 +00:00
Evan Shrubsole
5b9b9aa38b Store first_frame as const& instead of *
Bug: webrtc:13343
Change-Id: Id6d73539fa3034be9e7d4e6a27ca5b615ad204da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236842
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35291}
2021-11-01 13:33:13 +00:00
philipel
448231d654 Always call aom_codec_encode for every spatial layer in the libaom AV1 encoder wrapper.
Bug: none
Change-Id: I8556c4ba14393b958f4012fe9942af5523aae356
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236341
Reviewed-by: Marco Paniconi <marpan@google.com>
Reviewed-by: Jerome Jiang <jianj@google.com>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35280}
2021-10-29 09:44:00 +00:00
Emil Lundmark
d891c4940a Configure generic temporal layer in VP8 screenshare
This ensures that the payload descriptor and potential generic
descriptors uses the same temporal layer.

Bug: b/200518293
Change-Id: I17e980b47fe6c814cb393fc459064576447aa27a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236520
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35275}
2021-10-28 14:32:49 +00:00
Jerome Jiang
f33fc35277 Set rates for av1 svc tests
Bug: webrtc:11404
Change-Id: I79c4cee99d1bee1cdd3a8e0f901fadc6178a07a6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235602
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/main@{#35250}
2021-10-20 16:52:53 +00:00
Emil Lundmark
823ba0b038 Cleanup WebRTC-Vp9DependencyDescriptor field trial
Bug: chromium:1178444
Change-Id: Ie2ec796e207fa427fdbe00c8ea41a6b4fefea155
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235374
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35241}
2021-10-19 14:29:29 +00:00
Ying Wang
d7dd0aa9ee Move sendtask after decoded frame writer is initialized.
Bug: webrtc:13293
Change-Id: Ic71f92a5204715480e207f908f70ffff63e31279
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235580
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35235}
2021-10-19 11:32:33 +00:00
Ilya Nikolaevskiy
54f377308f Revert "Added support for H264 YUV444 (I444) decoding."
This reverts commit 7d8ed34372.

Reason for revert: Breaks internal builds

Original change's description:
> Added support for H264 YUV444 (I444) decoding.
>
> Added Nutanix Inc. to the AUTHORS file.
>
> Bug: chromium:1251096
> Change-Id: Ib47c2b1f94797afb6c5090f3c46eae6f13110992
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/234540
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35200}

TBR=ilnik@webrtc.org,nisse@webrtc.org,stefan@webrtc.org,peterhanspers@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com,stefan.mitic@nutanix.com

Change-Id: I3048c353a2b6b4f3d4e5e53a88f48b456f1ce593
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1251096
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235203
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35207}
2021-10-14 12:59:29 +00:00
Stefan Mitic
7d8ed34372 Added support for H264 YUV444 (I444) decoding.
Added Nutanix Inc. to the AUTHORS file.

Bug: chromium:1251096
Change-Id: Ib47c2b1f94797afb6c5090f3c46eae6f13110992
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/234540
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35200}
2021-10-14 11:06:55 +00:00
Evan Shrubsole
9146d765e2 Cleaup WebRTC-AddRttToPlayoutDelay field trial
Field trial is not used in any rollouts and should be removed.

R=mhoro@webrtc.org

Bug: webrtc:13264
Change-Id: Ib896dcdec81db7c3f4e68a8dda266d96dfdc6aed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/234865
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Michael Horowitz <mhoro@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35195}
2021-10-13 17:01:14 +00:00
Shuhai Peng
2ab7d5b961 Fix bad license header style from CRLF to LF.
Bug: webrtc:13227
Change-Id: I39a83c7ba7ad69ee7dbbd53758d45d0b3c3b5b12
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/233884
Commit-Queue: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35189}
2021-10-12 16:59:50 +00:00
Jiwon Jung
5a79d28eba Require 16x16 alignment when using HardwareVideoEncoder for encoding.
It seems the Android CTS tests only verify that 16x16 aligned resolutions
are supported.

This change checks the validity of input frame's size when initialing
or encoding processes are about to start using H/W MediaCodec.

This change has additional APIs to retrieve
|requested_resolution_alignment| and |apply_alignment_to_all_simulcast_layers|
from JAVA VideoEncoder class and its inherited classes. HardwareVideoEncoder
using MediaCodec has values of 16 and true for above variables.

Bug: webrtc:13089
Change-Id: I0c4ebf94eb36da29c2e384a3edf85b82e779b7f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229460
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35169}
2021-10-08 13:15:12 +00:00
Shuhai Peng
f270770679 video: Implement bandwidth based scaler
The |slice_qp_detla| reported by the hardware is not credible, which
causing the quality scaler cannot work properly,the resolution cannot
be adjusted correctly.

To fix this issue, this CL implements a bandwidth scaler which is used
for adjust resolution, this scaler will be used when QP based quality
scaler is not working due to untrusted QP reported by HW AVC encoder.

Bug: webrtc:12942
Change-Id: I2fc5f07a5400ec7e5ead2c2c502faee84d7f2a76
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228860
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35120}
2021-09-29 10:39:27 +00:00
Johannes Kron
23bfff3383 Change default parameters for the low-latency video pipeline
min_pacing:8ms, to avoid the situation where bursts of frames are sent
to the decoder at once due to network jitter. The bursts of frames
caused the queues further down in the processing to be full and
therefore drop all frames.

max_decode_queue_size:8, in the event that too many frames have piled
up, do as before and send all frames to the decoder to avoid building
up any latency.

These setting only affect the low-latency video pipeline that is enabled
by setting the playout RTP header extension to min=0ms, max>0ms.

Bug: chromium:1138888
Change-Id: I8154bf3efe7450b770da8387f8fb6b23f6be26bd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/233220
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35119}
2021-09-29 09:53:17 +00:00
philipel
4275448cbc Use new CopyOnWriteBuffer ctor/append function in H264PacketBuffer.
Bug: none
Change-Id: I02aace124f3f5a578a52348675b346ff890d8d82
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232900
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35082}
2021-09-24 11:18:42 +00:00
Emil Lundmark
7b35b44b52 Zero initialize heap allocations in LibvpxVp9{Decoder,Encoder}
Bug: chromium:1251010
Change-Id: Iffefdc8bee3752f89b0201f56fd06a2253b53200
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232602
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35049}
2021-09-21 09:24:09 +00:00
Emil Lundmark
b01e6457fe Reland "Reland "Enable WebRTC-Vp9DependencyDescriptor by default""
This is a reland of b062829311

> Reland "Enable WebRTC-Vp9DependencyDescriptor by default"
>
> This is a reland of 4727071506
>
> Original change's description:
> > Enable WebRTC-Vp9DependencyDescriptor by default
> >
> > Bug: chromium:1178444
> > Change-Id: I420e1e9b3c557b8b186cb08c15b962a779e1ca17
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226941
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#34584}
>
> Bug: chromium:1178444
> Change-Id: I874412b41e657179be6ffbe399617e18a29ec804
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230121
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#34890}

Bug: chromium:1178444
Change-Id: I5bb3e3bd2da26f9a24d5e8161bd66b447543fc8e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231843
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35004}
2021-09-15 13:48:58 +00:00
Johannes Kron
b26863ed0c Reland "Handle scalability mode in QueryCodecSupport"
This reverts commit 74281bed53.

Reason for revert: Fixed unit test by removing VP9 profile 2 from encoder factory unit test since this is platform dependent.

Original change's description:
> Revert "Handle scalability mode in QueryCodecSupport"
>
> This reverts commit 715a148118.
>
> Reason for revert: Speculative revert. Breaks upstream project http://b/200009579
>
> Original change's description:
> > Handle scalability mode in QueryCodecSupport
> >
> > All valid scalability modes should be supported by the builtin
> > software decoder/encoder.
> >
> > Bug: chromium:1187565
> > Change-Id: If66105d210d5055019f35dae2f80a18ad4a70cdd
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222642
> > Commit-Queue: Johannes Kron <kron@webrtc.org>
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#34998}
>
> TBR=danilchap@webrtc.org,sprang@webrtc.org,kron@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com
>
> Change-Id: Ibf40d523c50791d73e2afdc3917892b859d2bcb6
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: chromium:1187565
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232020
> Reviewed-by: Andrey Logvin <landrey@webrtc.org>
> Commit-Queue: Andrey Logvin <landrey@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#35001}


Bug: chromium:1187565
Change-Id: I598a2a530b8fea22997bbb5910eb3b864d1e28a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232021
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35003}
2021-09-15 13:12:58 +00:00
Andrey Logvin
74281bed53 Revert "Handle scalability mode in QueryCodecSupport"
This reverts commit 715a148118.

Reason for revert: Speculative revert. Breaks upstream project http://b/200009579

Original change's description:
> Handle scalability mode in QueryCodecSupport
>
> All valid scalability modes should be supported by the builtin
> software decoder/encoder.
>
> Bug: chromium:1187565
> Change-Id: If66105d210d5055019f35dae2f80a18ad4a70cdd
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222642
> Commit-Queue: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#34998}

TBR=danilchap@webrtc.org,sprang@webrtc.org,kron@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com

Change-Id: Ibf40d523c50791d73e2afdc3917892b859d2bcb6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1187565
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232020
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35001}
2021-09-15 10:45:41 +00:00
philipel
10dc1a6d8b New H264PacketBuffer consolidating a bunch of H264 specific hacks into one class.
Bug: webrtc:12579
Change-Id: Idea35983e204e4a3f8628d5b4eb587bbdbff5877
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227286
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34999}
2021-09-15 09:57:29 +00:00
Johannes Kron
715a148118 Handle scalability mode in QueryCodecSupport
All valid scalability modes should be supported by the builtin
software decoder/encoder.

Bug: chromium:1187565
Change-Id: If66105d210d5055019f35dae2f80a18ad4a70cdd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222642
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34998}
2021-09-15 09:38:12 +00:00
Emil Lundmark
7f876c8930 Allow full SVC to reference T0 frame only after it has been encoded
The VP9 encoder may drop a frame internally which will not advance the
frame pattern. Consider the following scenario where only spatial layer
0 and temporal layer 0 is active:

1. Key frame encoded
2. Spatial layer 1 is activated
3. Delta T0 dropped
4. Delta T0 encoded

No S1T0 frame is encoded in (1) since it's not active. When
NextFrameConfig is called in (3) it will say that future frames may
reference T0 on both S0 and S1, but it's then dropped.

On step (4), the SVC controller essentially thinks it's encoding a new
picture and will happily reference the T0 on what it thinks is the first
delta frame. However, this is actually still the key frame and since
there was no S1T0 frame produced it will reference an invalid buffer.

To fix this, only say it's possible to reference a T0 frame after it has
been successfully encoded.

Bug: webrtc:11999, webrtc:13142, chromium:1178444
Change-Id: Iab3d2042ce0b3fa7d952b2831d1a36b1a6613a86
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231695
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34982}
2021-09-13 15:52:42 +00:00
Emil Lundmark
baa6090825 Fix SVC controller's bitrate allocation in VP9 encoder
Unlike libvpx, the VideoBitrateAllocation expects that the bitrate
allocation is separate for each temporal layer. In this instance, if the
bitrates are not separated it will fool the SVC controller into thinking
that all temporal layers are always active.

Bug: webrtc:11999
Change-Id: Ibc33ac00b8b7716c011b94e1ec9c640cedb5274e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231693
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34980}
2021-09-13 15:36:13 +00:00
Danil Chapovalov
32b917ac41 With Svc controller do not produce frame that will be dropped anyway
This cover scenario where target bitrate is changed in a middle of
of group of frame after spatial upswitch.
This change should avoid wasting encoder resources to produce those
frames, reduce number of errors
"Encoder produced a frame for layer that wasn't requested"

Bug: webrtc:11999
Change-Id: I06045259b1cee2c21bfdabbafff3892b57c82a84
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230543
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34969}
2021-09-10 13:57:35 +00:00
Danil Chapovalov
5d3bf6ae2a Add helper to query scalability structure configuration
without creating svc controller for it.

Bug: chromium:1187565
Change-Id: I219f88203e73036bf48bce04527bb8e46ccf1c33
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231128
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34968}
2021-09-10 13:47:22 +00:00
Emil Lundmark
5498676edd Revert "Reland "Enable WebRTC-Vp9DependencyDescriptor by default""
This reverts commit b062829311.

Reason for revert: Still causes crashes in perf tests.

Original change's description:
> Reland "Enable WebRTC-Vp9DependencyDescriptor by default"
>
> This is a reland of 4727071506
>
> Original change's description:
> > Enable WebRTC-Vp9DependencyDescriptor by default
> >
> > Bug: chromium:1178444
> > Change-Id: I420e1e9b3c557b8b186cb08c15b962a779e1ca17
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226941
> > Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#34584}
>
> Bug: chromium:1178444
> Change-Id: I874412b41e657179be6ffbe399617e18a29ec804
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230121
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#34890}

Bug: chromium:1178444
Change-Id: I8a789ee60d0cca6db72612ef3660fe595255c537
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231221
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34928}
2021-09-06 13:11:51 +00:00
Danil Chapovalov
cd4ab49ee7 in Vp9UncompressedHeaderParser fix reading delta quantization parameter
delta_q is encoded as signed integer (s(4)) that uses extra bit for the
sign. See VP9 Bitstream Specification section 6.2.10 Delta quantizer syntax

Bug: None
Change-Id: Ib458c2a2ded3c4d6c153b6bedd29c48ef12cc538
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231125
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34908}
2021-09-02 13:24:31 +00:00
Danil Chapovalov
faba0fa1c7 Change ParseUncompressedVp9Header implementation to use BitstreamReader
Bug: None
Change-Id: I91010b0102622fd8154f8ba941e61298b0584eae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230802
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34899}
2021-09-01 22:52:15 +00:00
Emil Lundmark
b062829311 Reland "Enable WebRTC-Vp9DependencyDescriptor by default"
This is a reland of 4727071506

Original change's description:
> Enable WebRTC-Vp9DependencyDescriptor by default
>
> Bug: chromium:1178444
> Change-Id: I420e1e9b3c557b8b186cb08c15b962a779e1ca17
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226941
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34584}

Bug: chromium:1178444
Change-Id: I874412b41e657179be6ffbe399617e18a29ec804
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230121
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34890}
2021-09-01 09:27:39 +00:00
Johannes Kron
3cd7a0ffdd Remove media/base/h264_profile_level_id.* and media/base/vp9_profile.h
The content of these files was moved to api/video_codecs in
https://webrtc.googlesource.com/src.git/+/c3fcee7c3a7714afc3e37d4753b40f4fdbc3653e
but the original files could not be removed due to dependencies
in downstream projects.

Bug: chromium:1187565
Change-Id: I414efa22102bfdea0765fa72a8cf8b0bd5c090db
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229303
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34869}
2021-08-30 10:31:08 +00:00
philipel
0d175356cb Revert "Always unwrap VP9 TL0PicIdx forward if the frame is newer."
This reverts commit dbab1be1d1.

Reason for revert: Breaks VP9 media performance under heavy packet loss.

Original change's description:
> Always unwrap VP9 TL0PicIdx forward if the frame is newer.
>
> Bug: webrtc:12979
> Change-Id: Idcc14f8f61b04f9eb194b55ffa40fb95319a881c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226463
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34513}

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

Bug: webrtc:12979
Change-Id: Id315db8d67143372724448b8801a86aee9a2f0aa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230422
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34863}
2021-08-30 09:23:47 +00:00
Danil Chapovalov
7f6444de08 Delete deprecated version of VideoCodingModule::RegisterReceiveCodec
Bug: webrtc:13045
Change-Id: I3b26ed0725008c424dee938d1341c4a241f9ab3f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228948
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34846}
2021-08-25 09:50:20 +00:00
Erik Språng
cc69ea4a93 Fix parsing of vp9 skip level segmentation feature
Bug: chromium:1241297
Change-Id: I44c3e8eddcb2467aae7433f3907cff34fa807f69
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229302
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34803}
2021-08-19 12:16:00 +00:00
Åsa Persson
062acd9eb4 Move frame drop functionality in VideoAdapter into a separate class.
This class will replace modules/video_coding/utility/framerate_controller.h

Bug: webrtc:13031
Change-Id: I8faa9c3c158b7c5ab0618e3504224c7e00f8e0b1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227350
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34802}
2021-08-19 11:50:41 +00:00
Danil Chapovalov
b6f19d7dfd Reland "Update remaining usage of VideoDecoder::InitDecode to Configure"
This reverts commit d6da4c23cc.

Reason for revert: downstream project adjusted

Original change's description:
> Revert "Update remaining usage of VideoDecoder::InitDecode to Configure"
>
> This reverts commit ca0a08ab60.
>
> Reason for revert: Breaks downstream project.
>
> Original change's description:
> > Update remaining usage of VideoDecoder::InitDecode to Configure
> >
> > Bug: webrtc:13045
> > Change-Id: I5253fddfd613cf0228fc3cd861b91e56558dd34a
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228947
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#34777}
>
> TBR=danilchap@webrtc.org,sprang@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com
>
> Change-Id: I1868700a43b5aa4b37e9bcba5af233d24526c974
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:13045
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229024
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34780}

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

Bug: webrtc:13045
Change-Id: I5a44e7126f9f2e405f3be6b84698de53b23203a2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229183
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34795}
2021-08-18 15:58:40 +00:00
Erik Språng
e57a493301 Reland "Rename vp9::FrameInfo to vp9::UncompressedHeader and add more fields."
This is a reland of 3097008de0

Patchset 1 is a pure reland. Patchset 2 contains a bugfix plus a test
covering that case.

Bug: webrtc:12354, chromium:1230448

Original change's description:
> Rename vp9::FrameInfo to vp9::UncompressedHeader and add more fields.
>
> These fields will be used for bitstream validation in upcoming CLs.
> A new vp9_constants.h file is also added, containing common constants
> defined by the bitstream spec.
>
> Bug: webrtc:12354
> Change-Id: If04256d83409069c8bee43ad41aed41c3707dfd3
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226060
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34476}

Bug: webrtc:12354
Change-Id: Ibd301eb458a6104b562cefbc0e616c39b54fb38b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229060
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34789}
2021-08-17 19:42:00 +00:00
Sergey Silkin
1fdafaeb21 Calculate bitrate and frame rate mismatches in video codec tests
Bug: webrtc:10812
Change-Id: I3408c0d7adefc37d088a5c6e10fce4f95aa1b668
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228943
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34782}
2021-08-17 10:33:08 +00:00
Mirko Bonadei
d6da4c23cc Revert "Update remaining usage of VideoDecoder::InitDecode to Configure"
This reverts commit ca0a08ab60.

Reason for revert: Breaks downstream project.

Original change's description:
> Update remaining usage of VideoDecoder::InitDecode to Configure
>
> Bug: webrtc:13045
> Change-Id: I5253fddfd613cf0228fc3cd861b91e56558dd34a
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228947
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34777}

TBR=danilchap@webrtc.org,sprang@webrtc.org,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com

Change-Id: I1868700a43b5aa4b37e9bcba5af233d24526c974
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:13045
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229024
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34780}
2021-08-17 09:35:28 +00:00
Danil Chapovalov
ca0a08ab60 Update remaining usage of VideoDecoder::InitDecode to Configure
Bug: webrtc:13045
Change-Id: I5253fddfd613cf0228fc3cd861b91e56558dd34a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228947
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34777}
2021-08-17 08:48:30 +00:00
Danil Chapovalov
ba0a306585 Move check for number_of_cores parameter validitity
from runtime check in proxy classes that picks decoder (VCMDecoderDataBase)
to a DCHECK in the VideoDecoder::Settings

Bug: None
Change-Id: Ic8c2e971486a3a7eb247f9d03815aba5ca5a7bad
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228644
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34761}
2021-08-14 11:51:53 +00:00
Danil Chapovalov
355b8d237c Use VideoDecoder::Configure interface when setting up decoder
Bug: webrtc:13045
Change-Id: I322ff91d96bab8bb7c40f4dea1c9c2b5c7631635
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228420
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34756}
2021-08-13 16:03:32 +00:00
Johannes Kron
b2745ba1f8 Condition frame pacing on min/max playout delay
As a first step we only want to enable frame pacing for the case
where min playout delay == 0 and max playout delay > 0.

Bug: chromium:1237402, chromium:1239469
Change-Id: Icf9641db7566083d0279135efa8618e435d881eb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228640
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34752}
2021-08-13 10:52:19 +00:00
Philipp Hancke
0c2a9caf8f fix some typos
BUG=None

Change-Id: If793268a5773dfab6a40bbd4ffa760f3d4cb5a46
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228428
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34745}
2021-08-12 18:37:10 +00:00
Danil Chapovalov
53d4be223b Migrate software decoders to new VideoDecoder::Configure
Bug: webrtc:13045
Change-Id: I1fa28a7c2dd59f0889d98c8ec5f58161c0ec9f95
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228380
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34716}
2021-08-11 09:16:22 +00:00
Johannes Kron
2ddc39e2b9 Add max pre-decode queue size threshold for pacing
When pacing is enabled for the low latency rendering path,
frames are sent to the decoder in regular intervals. In case of a
jitter, these frames intervals could add up to create a large latency.
Hence, disable frame pacing if the pre-decode queue grows beyond the
threshold. The threshold for when to disable frame pacing is set
through a field trial. The default value is high enough so that
the behavior is not changed unless the field trial is specified.

Bug: chromium:1237402
Change-Id: I901fd579f68da286eca3d654118f60d3c55e21ce
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228241
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34705}
2021-08-10 17:01:53 +00:00
Artem Titov
cfea2182f8 Use backticks not vertical bars to denote variables in comments
Bug: webrtc:12338
Change-Id: I89c8b3a328d04203177522cbdfd9e606fd4bce4c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228246
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34696}
2021-08-10 10:40:03 +00:00
‘Michael
37c155088e Reland "Updated the default VP9 per-spatial-temporal layer settings."
This is a reland of 99fb5945b9

Downstream project has been fixed.

Original change's description:
> Updated the default VP9 per-spatial-temporal layer settings.
>
> Bug: webrtc:11551
> Change-Id: If2029df444f576b41bfef302985d6e18d7cdc3b5
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227782
> Commit-Queue: Michael Horowitz <mhoro@google.com>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34668}

Bug: webrtc:11551
Change-Id: I23a87408f1a9df3a9ccb874698ff97f59cfbe791
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228280
Commit-Queue: Michael Horowitz <mhoro@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34688}
2021-08-09 17:42:35 +00:00
Artem Titov
dcd7fc7ea8 Use backticks not vertical bars to denote variables in comments for /modules/video_coding
Bug: webrtc:12338
Change-Id: Ia8a9adea291d594e4f59a6a1203a7bfb0758adac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227165
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34684}
2021-08-09 15:26:22 +00:00
Andrey Logvin
3754e7c7ad Revert "Updated the default VP9 per-spatial-temporal layer settings."
This reverts commit 99fb5945b9.

Reason for revert: Speculative revert: breaks upstream project

Original change's description:
> Updated the default VP9 per-spatial-temporal layer settings.
>
> Bug: webrtc:11551
> Change-Id: If2029df444f576b41bfef302985d6e18d7cdc3b5
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227782
> Commit-Queue: Michael Horowitz <mhoro@google.com>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34668}

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

Bug: webrtc:11551
Change-Id: Ief33f98d8a4e0ccf95d7004c2526c99829807d15
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228162
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34673}
2021-08-09 10:14:32 +00:00
‘Michael
99fb5945b9 Updated the default VP9 per-spatial-temporal layer settings.
Bug: webrtc:11551
Change-Id: If2029df444f576b41bfef302985d6e18d7cdc3b5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227782
Commit-Queue: Michael Horowitz <mhoro@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34668}
2021-08-06 21:12:20 +00:00
Danil Chapovalov
7b78a3142d Cleanup VCMDecoderDataBase and neigbour VCMGenericDecoder classes
Remove private members that are no longer used or always have same value
Use less allocations

Bug: None
Change-Id: I5430c2356f0039212baf8b248b92775e8852ce1b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227765
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34665}
2021-08-06 15:49:38 +00:00
Rezaul Barbhuiya
82c2248511 Calculate pacing delay based on decode start time
Schedule the frames to be decoded based on the pacing delay from the
last decode scheduled time. In the current implementation, multiple
threads and different functions in same thread can call
MaxWaitingTime(), thereby increasing the wait time each time the
function is called. Instead of returning the wait time for a future
frame based on the number of times the function is called, return the
wait time only for the next frame to be decoded. Threads can call the
function repeatedly to check the waiting time for next frame and wake
up and then go back to waiting if an encoded frame is not available.

Change-Id: I00886c1619599f94bde5d5eb87405572e435bd73
Bug: chromium:1237402
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226502
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34660}
2021-08-06 11:25:17 +00:00
Björn Terelius
53adc7b1c8 Revert "Enable WebRTC-Vp9DependencyDescriptor by default"
This reverts commit 4727071506.

Reason for revert: Suspected cause for crashes in perf tests.

Original change's description:
> Enable WebRTC-Vp9DependencyDescriptor by default
>
> Bug: chromium:1178444
> Change-Id: I420e1e9b3c557b8b186cb08c15b962a779e1ca17
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226941
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34584}

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

Bug: chromium:1178444
Change-Id: I582d6d1c9d2091ca37b0943235b5cea8d4e2790d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227282
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34619}
2021-08-02 09:52:24 +00:00
Emil Lundmark
4727071506 Enable WebRTC-Vp9DependencyDescriptor by default
Bug: chromium:1178444
Change-Id: I420e1e9b3c557b8b186cb08c15b962a779e1ca17
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226941
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34584}
2021-07-28 12:08:36 +00:00
Danil Chapovalov
5219c6f7ad Delete legacy forwarding header svc_rate_allocator.h
Bug: None
Change-Id: I8a73f1139560b8e5a654948497751e9515aa7b92
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227029
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34581}
2021-07-28 08:54:03 +00:00
Byoungchan Lee
75ac5ab859 Remove workaround for Android VideoFrame's ToI420() returning wrong type
Bug: webrtc:12602
Change-Id: I466a2751314fcff53051b63d77e4d5298368a095
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/227040
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Byoungchan Lee <daniel.l@hpcnt.com>
Cr-Commit-Position: refs/heads/master@{#34574}
2021-07-27 20:27:52 +00:00
Sergey Silkin
d4b087c6cf Use **** code for codec of unknown type
This allows dumping kVideoCodecGeneric to IVF.

Bug: none
Change-Id: I71ae5f11dc226f68aa60e4423556feb1af96d11c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226865
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34543}
2021-07-23 21:04:59 +00:00
Markus Handell
06a2bf09a4 NackModule2: Rename to NackRequester.
The alternative new name proposed, NackTracker, is already in
use in audio_coding.

Fixed: webrtc:11594
Change-Id: I6a05fafc05fa7ddb18ea4f64886a135e5ef59f7e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226744
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34539}
2021-07-23 08:30:33 +00:00
Tony Herre
b0ed12099f Update links to point at main branch
As part of go/coil update code search links to not point to the
"master" branch.

Bug: chromium:1226942
Change-Id: I0ae9e84ecc660f789a69fe0b226f93bbc39a8a66
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226081
Commit-Queue: Tony Herre <toprice@chromium.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34531}
2021-07-22 16:41:26 +00:00
Mirko Bonadei
190244bb59 Remove all #include <assert.h>/<cassert> and usage in Obj-C code.
This CL completes the removal of assert() and relative headers from
the codebase (excluded
//examples/objc/AppRTCMobile/third_party/SocketRocket which is in a
third_party sub-directory).

Bug: webrtc:6779
Change-Id: I93ed57168d2c0e011626873d66529488c5f484f2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/225546
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34528}
2021-07-22 14:00:26 +00:00
Markus Handell
0e62f7aa98 NackModule2: coalesce repeating tasks.
NackModule2 creates repeating tasks, but as there are
many modules (one per receiver) these tasks execute out
of phase with each other, multipliying the amount of wakeups
caused.

Fix this by creating a single wakeup source that serves all
NackModule2 instances in a call.

Bug: webrtc:12989
Change-Id: Ia9c84307eb57349679e42b673474feb2cb43f08e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226464
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34527}
2021-07-22 12:11:13 +00:00
philipel
dbab1be1d1 Always unwrap VP9 TL0PicIdx forward if the frame is newer.
Bug: webrtc:12979
Change-Id: Idcc14f8f61b04f9eb194b55ffa40fb95319a881c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226463
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34513}
2021-07-20 09:34:59 +00:00
Erik Språng
62af58448e Revert "Rename vp9::FrameInfo to vp9::UncompressedHeader and add more fields."
This reverts commit 3097008de0.

Reason for revert: suspected crash
Bug: chromium:1230239
TBR=philipel@webrtc.org

Original change's description:
> Rename vp9::FrameInfo to vp9::UncompressedHeader and add more fields.
>
> These fields will be used for bitstream validation in upcoming CLs.
> A new vp9_constants.h file is also added, containing common constants
> defined by the bitstream spec.
>
> Bug: webrtc:12354
> Change-Id: If04256d83409069c8bee43ad41aed41c3707dfd3
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226060
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34476}

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

Bug: webrtc:12354
Change-Id: Ia4d5180d593c66a053d5747e714a579c62ea2a37
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226327
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34496}
2021-07-17 18:00:23 +00:00
Erik Språng
3097008de0 Rename vp9::FrameInfo to vp9::UncompressedHeader and add more fields.
These fields will be used for bitstream validation in upcoming CLs.
A new vp9_constants.h file is also added, containing common constants
defined by the bitstream spec.

Bug: webrtc:12354
Change-Id: If04256d83409069c8bee43ad41aed41c3707dfd3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226060
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34476}
2021-07-15 11:25:25 +00:00
Sergey Silkin
d6afbead2d Correctly set number of reference buffers in H264 encoder
iNumRefFrame specifies total number of reference buffers to allocate.
For N temporal layers we need at least (N - 1) buffers to store last
encoded frames of all reference temporal layers.

There is no API in OpenH254 encoder to specify exact set of references
to be used to prediction of a given frame. Encoder can theoretically
use all available references.

Note that there is logic in OpenH264 which overrides iNumRefFrame to
max(iNumRefFrame, N - 1): https://source.chromium.org/chromium/chromium/src/+/main:third_party/openh264/src/codec/encoder/core/src/au_set.cpp;drc=8e90a2775c5b9448324fe8fef11d177cb65f36cc;l=122.
I.e., this change has no real effect. It only makes setup more clear.

Bug: none
Change-Id: If4b4970007e1cc55d8f052ea05213ab2e89a878f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/225480
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34445}
2021-07-09 13:49:41 +00:00
Mirko Bonadei
25ab3228f3 Replace assert() with RTC_DCHECK().
CL partially auto-generated with:

git grep -l "\bassert(" | grep "\.[c|h]" | \
  xargs sed -i 's/\bassert(/RTC_DCHECK(/g'

And with:

git grep -l "RTC_DCHECK(false)" |  \
  xargs sed -i 's/RTC_DCHECK(false)/RTC_NOTREACHED()/g'

With some manual changes to include "rtc_base/checks.h" where
needed.

A follow-up CL will remove assert() from Obj-C code as well
and remove the #include of <assert.h>.

The choice to replace with RTC_DCHECK is because assert()
is because RTC_DCHECK has similar behavior as assert()
based on NDEBUG.

This CL also contains manual changes to switch from
basic RTC_DCHECK to other (preferred) versions like
RTC_DCHECK_GT (and similar).

Bug: webrtc:6779
Change-Id: I00bed8886e03d685a2f42324e34aef2c9b7a63b0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/224846
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34442}
2021-07-09 07:49:43 +00:00
Erik Språng
5a5d751aa5 VP9 parser: undo r34393 and fix incorrect return statement.
Some code was deleted in
https://webrtc-review.googlesource.com/c/src/+/224266/2/modules/video_coding/utility/vp9_uncompressed_header_parser.cc
since it was detected as unreachable.
The root cause was an early return that should have been a
RETURN_IF_FALSE(x).

Bug: webrtc:12924
Change-Id: Ifadded9bbb4748d56cf65c30fd8f87e92fde10d8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/225040
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34422}
2021-07-06 14:39:57 +00:00
Sergey Silkin
54388a876a Fix a comment in FrameDropper
Bug: webrtc:12810
Change-Id: I340b1c84785070b3b12490aa873ca17aab2e423a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/225100
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34421}
2021-07-06 14:06:20 +00:00
Jerome Jiang
d45f9300b7 Add missing rate control settings for av1 wrapper
Bug: None
Change-Id: Ib2c22ca6ec57e85c7da5ebb0ac884ca9eeae3e5f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/224523
Reviewed-by: Marco Paniconi <marpan@google.com>
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/master@{#34404}
2021-07-01 21:34:56 +00:00
Peter Kasting
286b1db1b2 Fix -Wunreachable-code-aggressive.
Bug: chromium:1066980
Change-Id: I6888ea1fbc458c9b3063b3f60a7732af16ab5fc9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/224266
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#34393}
2021-06-30 11:14:37 +00:00
Johannes Kron
985905d42d Add fieldtrial to enable minimum pacing of video frames
If the RTP header extension playout-delay is used and set
to min=0, max>=0, frames are scheduled to be decoded as
soon as possible. There's a risk that too many frames are
sent to the decoder at once, which may cause problems
further down in the video pipeline.

This CL adds the fieldtrial WebRTC-ZeroPlayoutDelay with
the parameter min_pacing that determines the minimum
pacing interval between two frames scheduled for
decoding.

Bug: None
Change-Id: I471f7718761cfce9789b3aa8adea3e8a16ecb2fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/223742
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34387}
2021-06-29 19:37:42 +00:00
Christoffer Jansson
da9dfae850 Re-enable ChangeFramerateVP8 & ChangeBitrateVP8 for Android and iOS
Update expectations for ARM SOC's

Bug: webrtc:9267
Change-Id: I8d0d720ab7d4d086ccff92310396fc35f2222128
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/223661
Commit-Queue: Christoffer Jansson <jansson@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34384}
2021-06-29 09:56:12 +00:00
Evan Shrubsole
f906ec40d4 Handle null return from ToI420 in encoders
In cases where ToI420 fails it should be able to return null.

Bug: webrtc:12877
Change-Id: Ia13859c104d978a29712ae10f8e15acada8406ac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222613
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#34342}
2021-06-21 12:45:11 +00:00
Johannes Kron
ac82bd386a Add timestamp to log message in generic_decoder.cc
Bug: None
Change-Id: Ib558247d887aff880853ef824f8d80d8e7e4feee
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222610
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34319}
2021-06-17 10:14:14 +00:00
Henrik Boström
58126f92bf Update the only 3 remaining kFilterBilinear to kFilterBox.
Bilinear is faster but lesser quality, box is best quality. Our code
base has disagreed about which filter to use for quite some time,
causing aliasing bug reports. In an effort to avoid aliasing artifacts
and make our scaling filters more predictable, we're updating all uses
to kFilterBox.

WebRTC already uses kFilterBox everywhere except for these three
places. The main discrepency was between Chromium and WebRTC but that
has already been fixed. This CL fixes the last remaining bilinears.

This brings the WebRTC kFilterBox use count up from 11 to 14 and the
kFilterBilinear use count down from 3 to 0.

Bug: chromium:1212630
Change-Id: I5fe4aa92b9275d65b91ea97925533055d190d317
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221372
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34248}
2021-06-08 13:19:23 +00:00
Markus Handell
fccb052ee3 Add event traces to interesting places in WebRTC.
Bug: webrtc:12840
Change-Id: I2fe749039059c9f3d6da064dce10d9c24a27d02e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221044
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34199}
2021-06-02 13:06:04 +00:00
Erik Språng
486b0401c5 Make VP8 DefaultTemporalLayers always report TL count even with no rate.
If at creation of a VP8 encoder there is not enough bitrate to enable a
given spatial layer - the configuration won't be updated to indicate
the correct temporal layer count. This means GetEncoderInfo() will
indicate lack of temporal layer support, which triggers issues with
rate allocation.

This CL fixes that by always setting an initial bitrate of 0bps.

Bug: webrtc:12788
Change-Id: I10974e85446b58e597d2ca415eaf2550306ce986
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220929
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34198}
2021-06-02 10:35:07 +00:00
Erik Språng
f865444877 Make AV1 respect spatial layer active flag.
Bug: webrtc:12788
Change-Id: Ied629e1635b6ff9bf92fab2d1af708163f9dd28c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220928
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34189}
2021-06-01 16:07:25 +00:00
philipel
2182096e66 RtpFrameReferenceFinder return frames directly instead of via callback.
Bug: webrtc:12579
Change-Id: I41263f70a6f3dc60167e41f8b015a7d3b0dc3dd7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219633
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@google.com>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34136}
2021-05-26 15:47:03 +00:00
Ted Meyer
41a111d5b9 Switch to av_packet_alloc()
ffmpeg is going to be hiding the implementation of AVPacket, so we can't
allocate them on the stack anymore. av_init_packet is marked deprecated
on TOT ffmpeg, so remove its use everywhere in favor of av_packet_alloc
and av_packet_free.

Bug: chromium:1211508
Change-Id: I154311071123110dd749c71dec1ec2a0452b3908
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217780
Commit-Queue: Ted Meyer <tmathmeyer@google.com>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34106}
2021-05-24 23:33:08 +00:00
Henrik Boström
38f1d4bf8a [LibvpxVp8Encoder] Don't DCHECK crash if I420 is not equal to I420A.
In CL https://webrtc-review.googlesource.com/c/src/+/216323 we fixed
the issue where I420 and I420A not being equal would result in dropping
frames in release builds.

But we forgot to update the corresponding DCHECK, meaning the I420 not
being the same as I420A issue still causes crashes on debug builds.
(I must have been running a release build not to catch this before?)

This CL replaces the DCHECK_EQ with an RTC_NOTREACHED inside the
IsCompatibleVideoFrameBufferType check.

Because this only affects debug builds, this CL does not need to be
backmerged anywhere.

Bug: chromium:1203206
Change-Id: I101823e8bca293e94d0f7ce507fe78cedff3ea1b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219281
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34048}
2021-05-19 08:48:46 +00:00
Björn Terelius
a77e16ca2c Update BitBuffer methods to style guide
Specifically, use reference instead of pointer for out parameter
and place the out parameter last, for the following methods

ReadUInt8
ReadUInt16
ReadUInt32
ReadBits
PeekBits
ReadNonSymmetric
ReadSignedExponentialGolomb
ReadExponentialGolomb

Bug: webrtc:11933
Change-Id: I3f1efe3e29155985277b0cd18700ddea25fe7914
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/218504
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34037}
2021-05-18 11:10:27 +00:00
Zhaoliang Ma
074edf6016 Fix the VideoFrameType of super frame construction in VideoProcessor
When VideoFrameType for svc upper layer is kVideoFrameDelta for key pic,
the svc unittest will fail due to the wrong frame type for the super
frame of first key picture.

Bug: None
Change-Id: Iff026aaecb73890d3c45d2c88c9654a12d6fe3bf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/216461
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Zhaoliang Ma <zhaoliang.ma@intel.com>
Cr-Commit-Position: refs/heads/master@{#33986}
2021-05-12 02:21:45 +00:00
philipel
9599b3c582 Don't store RtpPacketInfo in the PacketBuffer.
Historically the PacketBuffer used a callback for assembled frames, and because of that RtpPacketInfos were piped through it even though they didn't have anything to do with the PacketBuffer.

With this CL RtpPacketInfos are stored in the RtpVideoStreamReceiver(2) instead.

Bug: webrtc:12579
Change-Id: Ia6285b59e135910eee7234b89b23425bb0fc0d2b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215320
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33980}
2021-05-11 10:37:46 +00:00
Erik Språng
fc88df81f6 Set new defaults for vp8 decoder deblocking params
Bug: webrtc:11551
Change-Id: Ica8d587c32b36500739120205dde954502e01c3f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217383
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33924}
2021-05-05 11:04:30 +00:00
Johannes Kron
f7de74c58c Use Timestamp to represent packet receive timestamps
Before this CL, timestamps of received packets were rounded
to the nearest millisecond and stored as int64_t. Due to the
rounding it sometimes happened that timestamps later in the
pipeline that are not rounded seem to occur even before the
video frame was received.

Change-Id: I92d8f3540b23baae2d4a1dc6a7cb3f58bcdaad18
Bug: webrtc:12722
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/216398
Reviewed-by: Chen Xing <chxg@google.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33916}
2021-05-04 13:16:54 +00:00
Danil Chapovalov
c27c047e3e Set non-zero target bitrate for AV1 single spatial layer case
VideoCodecInitializer::SetupCodec never sets startBitrate,
so SetAv1SvcConfig shouldn't use it.

Bug: webrtc:12720
Change-Id: I04835dc27368f32c19132d93c72364173d7050fc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217382
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33915}
2021-05-04 12:34:01 +00:00
Niels Möller
0694ce7d1b Mark AsyncInvoker as deprecated
Also fix similar annotation on NackModule to have effect
(when defining an alias with C++ using, ABSL_DEPRECATED should appear
on the left hand side).

Bug: webrtc:12339
Change-Id: Id80a20bf2c56a826777b8a40e06ac5c65e4f8db7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217242
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33905}
2021-05-03 16:27:10 +00:00
Tommi
87f7090fd9 Replace more instances of rtc::RefCountedObject with make_ref_counted.
This is essentially replacing `new rtc::RefCountedObject` with
`rtc::make_ref_counted` in many files. In a couple of places I
made minor tweaks to make things compile such as adding parenthesis
when they were missing.

Bug: webrtc:12701
Change-Id: I3828dbf3ee0eb0232f3a47067474484ac2f4aed2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215973
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33852}
2021-04-27 17:01:59 +00:00
Henrik Boström
065ce9cb22 [LibvpxVp8Encoder] Allow I420A to be scaled to I420.
In Chromium, the I420ABufferInterface implementation uses the default
CropAndScale() implementation which converts to I420 in the process.

This should be OK, because we do not encode the alpha channel anyway,
so having WebRTC scaling ignore the alpha channel might even be a good
thing. Unfortunatety, an if statement in the LibvpxVp8Encoder did not
consider I420A and I420 to be the same, resulting in dropping perfectly
valid frames.

This CL fixes that by considering I420A and I420 "compatible" in a
comparison helper function. The problem only happens in this encoder,
so only this encoder needs to be fixed.

Bug: chromium:1203206
Change-Id: Iec434d4ada897c79e09914cac823148fd5b05e57
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/216323
Reviewed-by: Evan Shrubsole <eshr@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33845}
2021-04-27 11:06:41 +00:00
Tomas Gunnarsson
e249d195e0 Make RefCountedObject require overriding virtual methods
Bug: webrtc:12701
Change-Id: Ia4ae4ad2e857cb8790d6ccfb6f88f07d52a8e91b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215967
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33831}
2021-04-26 11:05:19 +00:00
Danil Chapovalov
e7b752b221 Add fuzzer to validate libvpx vp9 encoder wrapper
Fix simulcast svc controller to reuse dropped frame configuration,
same as full svc and k-svc controllers do.
This fuzzer reminded the issue was still there.

This is a reland of https://webrtc-review.googlesource.com/c/src/+/212281

Bug: webrtc:11999
Change-Id: Id3b2cd6c7e0923adfffb4e04c35ed2d6faca6704
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215921
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33802}
2021-04-21 14:29:04 +00:00
Johannes Kron
c3fcee7c3a Move h264_profile_level_id and vp9_profile to api/video_codecs
This is a refactor to simplify a follow-up CL of adding
SdpVideoFormat::IsSameCodec.

The original files media/base/h264_profile_level_id.* and
media/base/vp9_profile.h must be kept until downstream projects
stop using them.

Bug: chroimium:1187565
Change-Id: Ib39eca095a3d61939a914d9bffaf4b891ddd222f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215236
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33782}
2021-04-20 09:42:05 +00:00
Erik Språng
edb7ea2e69 Refactors Vp9UncompressedHeaderParser.
Biggest change is a new helper class used to read data from the
bitstream and then pass the result to a function if reading was
successful. There's also helper to do if/else flow based on the read
values. This avoids a bunch of temporaries and in my view makes the
code esaier to read.

For example, this block:

uint32_t bit;
RETURN_FALSE_IF_ERROR(br->ReadBits(&bit, 1));
if (bit) {
  RETURN_FALSE_IF_ERROR(br->ConsumeBits(7));
}

...is now written as:

RETURN_IF_FALSE(
    br->IfNextBoolean([br] { return br->ConsumeBits(7); }));

In addition, we parse and put a few extra things in FrameInfo:
show_existing_frame, is_keyframe, and base_qp.

Bug: webrtc:12354
Change-Id: Ia0b707b223a1afe0a4521ce2b995437d41243c06
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215239
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33776}
2021-04-19 16:46:48 +00:00
Rasmus Brandt
b291da8d03 Add conceptual docs for modules/video_coding
Bug: webrtc:12558
Change-Id: I6d258fcd6b666453397ce833d906efc7a6ce3dbc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215071
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33754}
2021-04-16 08:46:12 +00:00
Byoungchan Lee
403e32898a Fix build with rtc_libvpx_build_vp9=false
Like aom and openh264, VP9 can be disabled with the gn argument.

Bug: None
Change-Id: I7d67e3946afae0bb4cac8a7e591445604dda9ce1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215260
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33737}
2021-04-15 08:42:20 +00:00
philipel
dad500a728 Remove PacketBuffers internal mutex.
In RtpVideoStreamReceiver2 it can be protected by the `worker_task_checker_` instead.

Bug: webrtc:12579
Change-Id: I4f7d64f16172139eddc7a3e07d1dbbf338beaf2e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215224
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33734}
2021-04-14 16:05:51 +00:00
philipel
ce423ce12d Track last packet receive times in RtpVideoStreamReceiver instead of the PacketBuffer.
Bug: webrtc:12579
Change-Id: I4adb8c6ada913127b9e65d97ddce0dc71ec6ccee
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214784
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33713}
2021-04-13 18:24:45 +00:00
Åsa Persson
9071957da3 Remove unused members in tests.
VideoStreamEncoderTest: Remove unneeded set_timestamp_rtp in CreateFrame methods (the timestamp is set based on ntp_time_ms in VideoStreamEncoder::OnFrame).

Bug: none
Change-Id: I6b5531a9ac21cde5dac54df6de9b9d43261e90c6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214488
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33683}
2021-04-12 07:21:03 +00:00
Johannes Kron
fc5d2762f5 Fix dropped frames not counted issue
There's been reports of dropped frames that are not counted and
correctly reported by getStats().

If a HW decoder is used and the system is provoked by stressing
the system, I've been able to reproduce this problem. It turns out
that we've missed frames that are dropped because there is no
callback to the Decoded() function.

This CL restructures the code so that dropped frames are counted
even in cases where there's no corresponding callback for some frames.

Bug: webrtc:11229
Change-Id: I0216edba3733399c188649908d459ee86a9093d0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214783
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33671}
2021-04-09 14:47:52 +00:00
Erik Språng
b6c3e89a8a Optimize VP8 DefaultTemporalLayers by reducing set/map usage
...though the big issue was probably that pending frames weren't being
culled properly in the case of frame dropping.

Bug: webrtc:12596
Change-Id: I9a03282b2a99087aa7c5650e57ce30fe0f0d3036
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214127
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33638}
2021-04-07 13:02:25 +00:00
Henrik Boström
3b4dd4c71a LibvpxVp8Encoder: Clarify RTC_LOG error message.
While debugging https://crbug.com/1195144 I found it useful to clarify
this log statement.

The log would say "When scaling [kNative], the image was unexpectedly
converted to [kI420]..." but not saying what it was trying to convert
it to. This CL adds: "... instead of [kNV12]."

Bug: chromium:1195144
Change-Id: I13e0040edf5d7d98d80ce674812f67dfb73be36e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214040
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33634}
2021-04-07 10:45:23 +00:00
Fyodor Kyslov
b454767f10 AV1: Use AOM_USAGE_REALTIME when creating encoder
libaom is compiled with REALTIME_ONLY option. Soon it will be impossible
to create encoder or request default config with usage other than
AOM_USAGE_REALTIME. Fixing the wrapper to use proper usage parameter

Bug: None
Change-Id: I862741a724e4a8524f22ae79700b3da6517dbfb2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/214100
Commit-Queue: Fyodor Kyslov <kyslov@google.com>
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33624}
2021-04-06 02:38:34 +00:00
Markus Handell
eca855197a VCMEncodedFrame: add basic support for AV1.
This change adds basic support for setting codecType kVideoCodecAV1 in
VCMEncodedFrames.

Bug: chromium:1191972
Change-Id: I258b39ff89c8b92ebbb288ef32c88b900a35d10e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/213182
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33594}
2021-03-30 11:45:00 +00:00
Mirko Bonadei
6e6411c099 Revert "Add fuzzer to validate libvpx vp9 encoder wrapper"
This reverts commit c184047fef.

Reason for revert: Breaks the WebRTC->Chromium roll:

ERROR Unresolved dependencies.
//third_party/webrtc/test/fuzzers:vp9_encoder_references_fuzzer(//build/toolchain/win:win_clang_x64)
  needs //third_party/webrtc/modules/video_coding:mock_libvpx_interface(//build/toolchain/win:win_clang_x64)

We need to add tryjob to catch these. The fix is to make 
//third_party/webrtc/modules/video_coding:mock_libvpx_interface
visible in built_with_chromium builds by moving the target
out of this "if" https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/modules/video_coding/BUILD.gn;l=615;drc=3889de1c4c7ae56ec742fb9ee0ad89657f638169.

Original change's description:
> Add fuzzer to validate libvpx vp9 encoder wrapper
>
> Fix simulcast svc controller to reuse dropped frame configuration,
> same as full svc and k-svc controllers do.
> This fuzzer reminded the issue was still there.
>
> Bug: webrtc:11999
> Change-Id: I74156bd743124723562e99deb48de5b5018a81d0
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212281
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#33568}

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

Change-Id: I1676986308c6d37ff168467ff2099155e8895452
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:11999
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212973
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33573}
2021-03-26 11:17:00 +00:00
Jeremy Leconte
b258c56267 Send and Receive VideoFrameTrackingid RTP header extension.
Bug: webrtc:12594
Change-Id: I2372a361e55d0fdadf9847081644b6a3359a2928
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212283
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/master@{#33570}
2021-03-25 21:57:29 +00:00
Danil Chapovalov
c184047fef Add fuzzer to validate libvpx vp9 encoder wrapper
Fix simulcast svc controller to reuse dropped frame configuration,
same as full svc and k-svc controllers do.
This fuzzer reminded the issue was still there.

Bug: webrtc:11999
Change-Id: I74156bd743124723562e99deb48de5b5018a81d0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212281
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33568}
2021-03-25 18:52:38 +00:00
philipel
02b1321b47 Clean up video_coding namespace snipets.
Bug: webrtc:12579
Change-Id: I487fe017f30746e2fe83a122123b236295d96d28
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212962
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33558}
2021-03-25 10:44:40 +00:00
Aaron Clauson
5d6abbddf4 Adds missing header to fix compilation error when compiling with use_custom_libcxx set to false.
Fixed: webrtc:12584
Change-Id: I8830095f887e7ee8887bc37106da847b60c1e996
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211762
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33557}
2021-03-25 09:57:00 +00:00
Henrik Boström
56db9ff1e1 VideoStreamEncoder: Don't map kNative video frame buffers.
Follow-up CL to VP8 and VP9 encoders taking care of mapping.
Context again:
  This CL is part of Optimized Scaling efforts. In Chromium, the native
frame buffer is getting an optimized CropAndScale() implementation. To
support HW accelerated scaling, returning pre-scaled images and skipping
unnecessary intermediate downscales, WebRTC needs to 1) use CropAndScale
instead of libyuv::XXXXScale and 2) only map buffers it actually intends
to encode.

In this CL, VideoStreamEncoder no longer calls GetMappedFrameBuffer() on
behalf of the encoders, since the encoders are now able to either do the
mapping or performs ToI420() anyway.

- Tests for old VSE behaviors are updated to test the new behavior (i.e.
  that native frames are pretty much always forwarded).
- The "having to call ToI420() twice" workaround to Android bug
  https://crbug.com/webrtc/12602 is added to H264 and AV1 encoders.

Bug: webrtc:12469
Change-Id: Ibdc2e138d4782a140f433c8330950e61b9829f43
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211940
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#33548}
2021-03-24 09:43:11 +00:00
Fyodor Kyslov
26abdaf478 AV1: Use Default TX type for encoding
This will further speed up intra frame encoding

Bug: None
Change-Id: I3c836502cdcb1037e3128850a085b92acd8fc7ad
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212821
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Fyodor Kyslov <kyslov@google.com>
Cr-Commit-Position: refs/heads/master@{#33544}
2021-03-23 17:19:27 +00:00
philipel
ca18809ee5 Move RtpFrameObject and EncodedFrame out of video_coding namespace.
Bug: webrtc:12579
Change-Id: Ib7ecd624eb5c54abb77fe08440a014aa1e963865
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212860
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33542}
2021-03-23 14:22:47 +00:00
Henrik Boström
3889de1c4c Support native scaling of VideoFrameBuffers in LibvpxVp8Encoder.
This is a follow-up to the VP9, fixing VP8 this time. Context again:

This CL is part of Optimized Scaling efforts. In Chromium, the native
frame buffer is getting an optimized CropAndScale() implementation. To
support HW accelerated scaling, returning pre-scaled images and skipping
unnecessary intermediate downscales, WebRTC needs to 1) use CropAndScale
instead of libyuv::XXXXScale and 2) only map buffers it actually intends
to encode.
- To achieve this, WebRTC encoders are updated to map kNative video
  buffers so that in a follow-up CL VideoStreamEncoder can stop mapping
  intermediate buffer sizes.

Bug: webrtc:12469, chromium:1157072
Change-Id: I026527ae77e36f66d02e149ad6fe304f6a8ccb05
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212600
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#33537}
2021-03-23 09:08:58 +00:00
philipel
6a6715042a Move RtpFrameReferenceFinder out of video_coding namespace.
Namespace used because of copy-pasting an old pattern, should never have been used in the first place. Removing it now to make followup refactoring prettier.

Bug: webrtc:12579
Change-Id: I00a80958401cfa368769dc0a1d8bbdd76aaa4ef5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212603
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33536}
2021-03-23 08:48:37 +00:00
Henrik Boström
bd9e4a95eb Support native scaling of VideoFrameBuffers in LibvpxVp9Encoder.
This CL is part of Optimized Scaling efforts. In Chromium, the native
frame buffer is getting an optimized CropAndScale() implementation. To
support HW accelerated scaling, returning pre-scaled images and skipping
unnecessary intermediate downscales, WebRTC needs to 1) use CropAndScale
instead of libyuv::XXXXScale and 2) only map buffers it actually intends
to encode.
- To achieve this, WebRTC encoders are updated to map kNative video
  buffers so that in a follow-up CL VideoStreamEncoder can stop mapping
  intermediate buffer sizes.

In this CL LibvpxVp9Encoder is updated to map kNative buffers of pixel
formats it supports and convert ToI420() if the kNative buffer is
something else. A fake native buffer that keeps track of which
resolutions were mapped, MappableNativeBuffer, is added.

Because VP9 is currently an SVC encoder and not a simulcast encoder, it
does not need to invoke CropAndScale.

This CL also fixes MultiplexEncoderAdapter, but because it simply
forwards frames it only cares about the pixel format when
|supports_augmented_data_| is true so this is the only time we map it.
Because this encoder is not used with kNative in practise, we don't care
to make this path optimal.

Bug: webrtc:12469, chromium:1157072
Change-Id: I74edf85b18eccd0d250776bbade7a6444478efce
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212580
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#33526}
2021-03-22 13:35:35 +00:00
Niels Möller
490c1503d9 Delete unowned buffer in EncodedImage.
Bug: webrtc:9378
Change-Id: Ice48020c0f14905cbc185b52c88bbb9ac3bb4c93
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128575
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33510}
2021-03-19 14:12:28 +00:00
Fyodor Kyslov
f8776cba62 Revert "AV1: Use Default TX type for encoding"
This reverts commit b0dc518f82.

Reason for revert: corresponding change  https://chromium-review.googlesource.com/c/chromium/src/+/2765225 from chromium has not been backported to webrtc yet.


Original change's description:
> AV1: Use Default TX type for encoding
>
> This will further speed up intra frame encoding
>
> Bug: None
> Change-Id: I1a105c6d2cdd9dc82f84d0039dbea3f0d090ab93
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212320
> Reviewed-by: Marco Paniconi <marpan@webrtc.org>
> Commit-Queue: Fyodor Kyslov <kyslov@google.com>
> Cr-Commit-Position: refs/heads/master@{#33492}

TBR=jianj@google.com,marpan@webrtc.org,kyslov@google.com

Change-Id: I7ff93537942ab34706db0b71c6b5f8535209619d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212340
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Commit-Queue: Fyodor Kyslov <kyslov@google.com>
Cr-Commit-Position: refs/heads/master@{#33494}
2021-03-17 19:16:50 +00:00
Fyodor Kyslov
b0dc518f82 AV1: Use Default TX type for encoding
This will further speed up intra frame encoding

Bug: None
Change-Id: I1a105c6d2cdd9dc82f84d0039dbea3f0d090ab93
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212320
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Fyodor Kyslov <kyslov@google.com>
Cr-Commit-Position: refs/heads/master@{#33492}
2021-03-17 18:43:28 +00:00
Fyodor Kyslov
bff6489c94 AV1: Disable several intra coding tools.
This will speed up key frame encoding (together with libaom changes)
3x-4x times with ~13% BDRate loss on key frames only

Bug: None
Change-Id: I24332f4f7285811cdc6619ba29844fe564cae95e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212040
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Fyodor Kyslov <kyslov@google.com>
Cr-Commit-Position: refs/heads/master@{#33468}
2021-03-15 23:20:08 +00:00
philipel
b3159517c3 Remove incorrect DCHECKs from LibaomAv1Encoder::SetRates.
Bug: none
Change-Id: I6474418e04538151cfc1588a63e9ffa476e7fd7b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211870
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33465}
2021-03-15 15:20:14 +00:00
Sergey Silkin
0e42cf703b Reland "Parse encoded frame QP if not provided by encoder"
This reverts commit 727d2afc43.

Reason for revert: Use thread-safe wrapper for H264 parser.

Original change's description:
> Revert "Parse encoded frame QP if not provided by encoder"
>
> This reverts commit 8639673f0c.
>
> Reason for revert: linux_tsan fails https://ci.chromium.org/ui/p/webrtc/builders/ci/Linux%20Tsan%20v2/25329/overview
>
> Original change's description:
> > Parse encoded frame QP if not provided by encoder
> >
> > Bug: webrtc:12542
> > Change-Id: Ic70b46e226f158db7a478a9f20e1f940804febba
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/210966
> > Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#33434}
>
> TBR=asapersson@webrtc.org,ssilkin@webrtc.org
>
> Change-Id: Ie251d8f70f8e87fd86b63730aefd2ef3f941e4bb
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:12542
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211355
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#33441}

# Not skipping CQ checks because this is a reland.

Bug: webrtc:12542
Change-Id: Ib7601fd6f2f26bceddbea2b4ba54d67a281f3a59
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211660
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33458}
2021-03-15 10:11:22 +00:00
Erik Språng
c80f955114 Avoid log spam when decoder implementation changes
A refactoring (https://webrtc-review.googlesource.com/c/src/+/196520)
of decoder metadata handling introduced a bug which causes us to log an
info-level entry for every frame decoded if the implementation changes
during runtime (e.g. due to software fallback).

This CL fixes that to avoid spamming the logs.

Bug: webrtc:12271
Change-Id: I89016351b8752b259299c4cf56c6feddcca43460
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211664
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33451}
2021-03-12 17:12:25 +00:00
philipel
7c7885c016 Remove NTP timestamp from PacketBuffer::Packet.
Bug: webrtc:12579
Change-Id: I64ca0ddb6f5c20bef5e9503955e0e4b4c484a1e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211662
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33448}
2021-03-12 15:19:35 +00:00
Danil Chapovalov
048e9c2f45 In full svc controller reuse unused frame configuration
vp9 encoder wrapper rely on that behavioue
when generates vp9-specific temporal references

Bug: webrtc:11999
Change-Id: Ie1b4cb60adf290992cc3307b56397a88eda78be4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211661
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33446}
2021-03-12 14:50:39 +00:00
Danil Chapovalov
8da67f6165 In ksvc controller reuse unused frame configuration
vp9 encoder wrapper rely on that behaviour
to generate vp9-specific temporal references

Bug: webrtc:11999
Change-Id: I35536af4eca76450e2f72777e06ad3af872a5800
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211340
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33445}
2021-03-12 13:39:38 +00:00
Sergey Silkin
727d2afc43 Revert "Parse encoded frame QP if not provided by encoder"
This reverts commit 8639673f0c.

Reason for revert: linux_tsan fails https://ci.chromium.org/ui/p/webrtc/builders/ci/Linux%20Tsan%20v2/25329/overview 

Original change's description:
> Parse encoded frame QP if not provided by encoder
>
> Bug: webrtc:12542
> Change-Id: Ic70b46e226f158db7a478a9f20e1f940804febba
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/210966
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#33434}

TBR=asapersson@webrtc.org,ssilkin@webrtc.org

Change-Id: Ie251d8f70f8e87fd86b63730aefd2ef3f941e4bb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:12542
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211355
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33441}
2021-03-11 17:06:06 +00:00
Sergey Silkin
8639673f0c Parse encoded frame QP if not provided by encoder
Bug: webrtc:12542
Change-Id: Ic70b46e226f158db7a478a9f20e1f940804febba
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/210966
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33434}
2021-03-11 11:48:38 +00:00
Jerome Jiang
662d4c328f AV1 test: change ssim threshold
Bug: webrtc:12519
Change-Id: Ibdcaa08800d03d289f86e14cc7d94b5f2d3b7117
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209480
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/master@{#33377}
2021-03-03 18:22:45 +00:00
Johannes Kron
b6b782da68 Fix potential unsafe access to VCMTimestampMap::data
The access to |_timestampMap| was guarded by a lock but
not the access to the data pointer stored in |_timestampMap|.
There was a potential race condition if new data was added
in VCMGenericDecoder::Decode() while the data pointer
retrieved from _timestampMap.Pop() was being used in
VCMDecodedFrameCallback::Decoded().

This CL moves the storage of data to within |_timestampMap|,
instead of being a pointer so that it's guarded by the same
lock.

Bug: webrtc:11229
Change-Id: I3f2afb568ed724db5719d508a73de402c4531dec
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209361
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33374}
2021-03-03 14:21:17 +00:00
Sergey Silkin
db0b4a8935 Do not crash if codec is not available
Check if codec was successfully created and exit from RunTest if not
before creating VideoProcessor.

Bug: none
Change-Id: Ia6d7171650dbc9824fb78f4a8e2851f755cfd63b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209362
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33372}
2021-03-03 13:56:17 +00:00
philipel
625e1d9b16 VP8 ref finder unittest cleanup
Change-Id: I627dda1229ceb4b2da3f37f7418da7b7653e4d04
Bug: webrtc:12221
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208482
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33362}
2021-03-01 17:23:38 +00:00
Sergio Garcia Murillo
dac39c5b1e Reland "Add test for odd sizes with spatial layers"
This is a reland of 6fe3fa14c6

Original change's description:
> Add test for odd sizes with spatial layers
>
> Bug: webrtc:12398
> Change-Id: If28f22f8c08913315806d26ad0b355eabda67da6
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203889
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Jerome Jiang <jianj@google.com>
> Cr-Commit-Position: refs/heads/master@{#33319}

TBR=philipel@webrtc.org

Bug: webrtc:12398
Change-Id: I0c52a5d2d503180793603c148b3211df3ca035e1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208640
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33336}
2021-02-24 21:10:03 +00:00
Johannes Kron
0093a38f7c Fix low-latency renderer with unset playout delays
The low-latency renderer is activated by the RTP header extension
playout-delay if the min value is set to 0 and the max value is
set to something greater than 0.

According to the specification of the playout-delay header
extension it doesn't have to be set for every frame but only if
it is changed. The bug that this CL fixes occured if a playout
delay had been set previously but some frames without any specified
playout-delay were received. In this case max composition delay
would not be set and the low-latency renderer algorithm would be
disabled for the rest of the session.

Bug: chromium:1138888
Change-Id: I12d10715fd5ec29f6ee78296ddfe975d7edab8a9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208581
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33330}
2021-02-24 09:35:49 +00:00
Florent Castelli
d0844a80de Revert "Add test for odd sizes with spatial layers"
This reverts commit 6fe3fa14c6.

Reason for revert: Test failures on Android x86

Original change's description:
> Add test for odd sizes with spatial layers
>
> Bug: webrtc:12398
> Change-Id: If28f22f8c08913315806d26ad0b355eabda67da6
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203889
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Jerome Jiang <jianj@google.com>
> Cr-Commit-Position: refs/heads/master@{#33319}

Bug: webrtc:12398
Change-Id: I801d2d1d2b27e89e4b6af64d79af80a901708682
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208521
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33323}
2021-02-23 11:45:34 +00:00
Jerome Jiang
90ea0a65f4 AV1: Change multithreading, speed, qp settings
Use 4 threads for 360p and above.
Use tile rows for VGA and 4 threads.
Use speed 8 for 360p.
Change min max qp scaling threshold.

Bug: None
Change-Id: Ib7a5b7e539d26d9fa60aa2c4a75eb6f4b19f7dea
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208340
Commit-Queue: Jerome Jiang <jianj@google.com>
Commit-Queue: Fyodor Kyslov <kyslov@google.com>
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33320}
2021-02-22 21:14:30 +00:00
Sergio Garcia Murillo
6fe3fa14c6 Add test for odd sizes with spatial layers
Bug: webrtc:12398
Change-Id: If28f22f8c08913315806d26ad0b355eabda67da6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203889
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/master@{#33319}
2021-02-22 19:24:19 +00:00
Danil Chapovalov
e904161cec Replace RTC_DEPRECATED with ABSL_DEPRECATED
This remove webrtc-specific macro that has no reason to be webrtc specific
ABSL_DEPRECATED takes a message parameter encouraging to write text how class or function is deprecated.

Bug: webrtc:12484
Change-Id: I89f1398f91dacadc37f7db469dcd985e3724e444
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208282
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33314}
2021-02-22 12:53:23 +00:00
Jerome Jiang
04a6529c86 AV1: set superblock to 64x64 for 720p 4 threads.
Multithreading is more effective.

Change-Id: Ic850de4ee6affe3c0f623deb0318f991675c4351
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208300
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/master@{#33306}
2021-02-19 18:51:14 +00:00
Johannes Kron
16359f65c4 Delay creation of decoders until they are needed
Before this CL, WebRTC created a decoder for each negotiated codec
profile. This quickly consumed all available HW decoder resources
on some platforms. This CL adds a field trial,
WebRTC-PreStreamDecoders, that makes it possible to set how many
decoders that should be created up front, from 0 to ALL. If the
field trial is set to 1, we only create a decoder for the
preferred codec. The other decoders are only created when they are
needed (i.e., if we receive the corresponding payload type).

Bug: webrtc:12462
Change-Id: I087571b540f6796d32d34923f9c7f8e89b0959c5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208284
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33300}
2021-02-19 12:08:49 +00:00
Emil Lundmark
c9b9930c97 Add L2T3 K-SVC structure
Bug: webrtc:11999
Change-Id: I1bfb8674b95be8155035117c771b5e4c4bfc29c5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208260
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33299}
2021-02-19 10:27:23 +00:00
Danil Chapovalov
735e33fae0 Add S3T3 video scalability structure
Bug: None
Change-Id: I93760b501ff712ca2f7a9dfa3cba6ed5245e4f4b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208080
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33297}
2021-02-18 17:46:29 +00:00
Niels Möller
f4e3e2b83f Delete rtc::Callback0 and friends.
Replaced with std::function.

Bug: webrtc:6424
Change-Id: Iacc43822cb854ddde3cb1e5ddd863676cb07510a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205005
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33281}
2021-02-16 12:41:35 +00:00
philipel
9aa9b8dbbe Prepare to replace VideoLayerFrameId with int64_t.
Bug: webrtc:12206
Change-Id: I10bfdefbc95a79e0595956c1a0e688051da6d2b9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/207180
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33265}
2021-02-15 14:42:02 +00:00
Danil Chapovalov
f91f8b517a Consolidate full svc structures in one source file
Keeping structures in the same file makes it clearer which are missing
and makes it easier to see if structures are consistent with one another.

No-Try: True
Bug: None
Change-Id: I4e5e6971054dd28dd326c68369ee57b6df62725e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206987
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33256}
2021-02-13 16:17:54 +00:00
Åsa Persson
bc1cdef4e8 EncoderInfoSettings: Add common string which applies to all encoders.
Change "-LibvpxVp9Encoder-" to "-VP9-" for consistency.

Bug: none
Change-Id: I7a73759db00e92286fe9a4bbed8512baf91decdb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206982
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33249}
2021-02-12 14:49:28 +00:00
philipel
f109193fba Remove VideoLayerFrameId::spatial_layer, use EncodedImage::SpatialIndex instead.
Next step is to replace VideoLayerFrameId with int64_t.

Bug: webrtc:12206
Change-Id: I414f491e383acf7f8efd97f7bf93dc55a5194fbf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206804
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33245}
2021-02-12 11:16:23 +00:00
Danil Chapovalov
45d2234a5c Test and fix unscalable video structure.
Bug: webrtc:11999
Change-Id: I94e3a97ebadbf92ca741d750f67fbea5cbd2b66f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206984
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33237}
2021-02-11 17:23:56 +00:00
Jerome Jiang
de7ee3a53d Reland "AV1: change update freq and disable denoiser explicitly."
This is a reland of abf5701c37

Original change's description:
> AV1: change update freq and disable denoiser explicitly.
>
> Change speed/thread settings for faster encoding.
>
> Change-Id: I74d93eac26ae8700a48c437fe235643810de1ca0
> Bug: None
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206480
> Reviewed-by: Marco Paniconi <marpan@webrtc.org>
> Reviewed-by: Marco Paniconi <marpan@google.com>
> Commit-Queue: Jerome Jiang <jianj@google.com>
> Cr-Commit-Position: refs/heads/master@{#33208}

Bug: None
Change-Id: Icc8e064b4af175214a7fdec16f3c8078c0220e50
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206900
Reviewed-by: Jerome Jiang <jianj@google.com>
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33226}
2021-02-11 08:25:27 +00:00
Artem Titov
d15a575ec3 Use SequenceChecker from public API
Bug: webrtc:12419
Change-Id: I00cca16a0ec70246156ba00b97aa7ae5ccbf5364
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205323
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33220}
2021-02-10 15:04:55 +00:00
Mirko Bonadei
fa5ad8c0b5 Revert "AV1: change update freq and disable denoiser explicitly."
This reverts commit abf5701c37.

Reason for revert: Breaks downstream tests.

Original change's description:
> AV1: change update freq and disable denoiser explicitly.
>
> Change speed/thread settings for faster encoding.
>
> Change-Id: I74d93eac26ae8700a48c437fe235643810de1ca0
> Bug: None
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206480
> Reviewed-by: Marco Paniconi <marpan@webrtc.org>
> Reviewed-by: Marco Paniconi <marpan@google.com>
> Commit-Queue: Jerome Jiang <jianj@google.com>
> Cr-Commit-Position: refs/heads/master@{#33208}

TBR=jianj@google.com,marpan@google.com,marpan@webrtc.org

Change-Id: I47b65e1c78ccb055238a44886dac87f8fc2f5330
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206644
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33213}
2021-02-10 09:30:10 +00:00
Jerome Jiang
abf5701c37 AV1: change update freq and disable denoiser explicitly.
Change speed/thread settings for faster encoding.

Change-Id: I74d93eac26ae8700a48c437fe235643810de1ca0
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/206480
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Reviewed-by: Marco Paniconi <marpan@google.com>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/master@{#33208}
2021-02-09 20:36:37 +00:00
Hua, Chunbo
a0848ddeff Correct SpatialLayer in VP9 unittest.
Bug: None
Change-Id: If8b26c8e7afa380f109d71a93b78bad784da34ad
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205961
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33187}
2021-02-08 10:13:18 +00:00
Ilya Nikolaevskiy
483b31c231 Reland "Enable Video-QualityScaling experiment by default"
This time exclude iOS from the default behaviour.

Bug: webrtc:12401
Change-Id: Ib1f77123b72c3365591b56455332b3d97b307b26
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205006
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33173}
2021-02-05 09:49:13 +00:00
Danil Chapovalov
b5823055be In VP9 encoder avoid crashing when encoder produce an unexpected frame
Since for such frame SvcController haven't setup how buffer should be
referenced and updated, the frame would likely have unexpected configuration.
Log an error to note resource have been wasted produce it and drop such frame.

Bug: webrtc:11999
Change-Id: I1784403e67b7207092d46016510460738994404e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205140
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33148}
2021-02-03 14:56:09 +00:00
Åsa Persson
9111bd18b1 LibvpxVp8Encoder: add option to configure resolution_bitrate_limits.
Bug: none
Change-Id: Ia01d630fc95e19a4a08cd7a004238c22d823b4dc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205521
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33144}
2021-02-03 11:25:32 +00:00
Artem Titov
c8421c4c3e Replace rtc::ThreadChecker with webrtc::SequenceChecker
Bug: webrtc:12419
Change-Id: I825c014cc1c4b1dcba5ef300409d44859e971144
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205002
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33136}
2021-02-02 14:56:27 +00:00
Ilya Nikolaevskiy
d6604df27f Revert "Enable Video-QualityScaling experiment by default"
This reverts commit 066b5b6ed7.

Reason for revert: Regressions on iOS testbots.

Original change's description:
> Enable Video-QualityScaling experiment by default
>
> Bug: webrtc:12401
> Change-Id: Iebf3130e785892bb9fddf1012bc46027a21085a4
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204000
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#33091}

TBR=ilnik@webrtc.org,asapersson@webrtc.org

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

Bug: webrtc:12401
Change-Id: I489b805c7741b63c22c16cfce03347179a3e2602
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205001
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33123}
2021-02-01 13:20:49 +00:00
Sergio Garcia Murillo
3faea70d1a allow empty scalability mode in AV1 encoder
Bug: chromium:1170699
Change-Id: I74c633e74c85c3b940d6302cdc8fa319e187b1e5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204221
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33122}
2021-02-01 13:00:09 +00:00
Åsa Persson
c91c4233e3 LibvpxVp9Encoder: add option to configure resolution_bitrate_limits.
Bug: none
Change-Id: Icdd7333296d652b1e0c159226df702084303475c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204701
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33121}
2021-02-01 11:48:00 +00:00
Andrey Logvin
7864600a6e Add absl_deps field for rtc_test and rtc_executable
To be able to build these targets in chromium we need to replace all abseil dependencies with "//third_party/abseil-cpp:absl".

Bug: webrtc:12404
Change-Id: Ie0f6af73f2abc73e5744520cfd9a6414e2f948e3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202762
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33108}
2021-01-29 16:40:49 +00:00
Ilya Nikolaevskiy
066b5b6ed7 Enable Video-QualityScaling experiment by default
Bug: webrtc:12401
Change-Id: Iebf3130e785892bb9fddf1012bc46027a21085a4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/204000
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33091}
2021-01-28 18:17:03 +00:00
Jerome Jiang
103876f379 av1: turn off a few tools that are not used for rtc
Explicitly turn off obmc, warped motion, global motion and ref frame mv.

Bug: chromium:1095763, chromium:1170346
Change-Id: I19bc4fceef4cd5e35ea6699e6af883af244f8954
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203900
Reviewed-by: Marco Paniconi <marpan@webrtc.org>
Reviewed-by: Marco Paniconi <marpan@google.com>
Commit-Queue: Jerome Jiang <jianj@google.com>
Cr-Commit-Position: refs/heads/master@{#33075}
2021-01-26 17:49:34 +00:00
Florent Castelli
54fb32a15e IvfFileReader: Fix SpatialIndex values
The SpatialIndex value from an EncodedImage is 0-based, but values were
off by 1.

Bug: none
Change-Id: Ie74e6450ddef1cfaee68fa230c441030fa86a64a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/203525
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33067}
2021-01-25 13:11:45 +00:00
Danil Chapovalov
11215febb9 Require scalability mode to initialize av1 encoder.
To make VideoCodec::scalability_mode the only option to set and
change the scalability structure, for easier maintainability.

Bug: webrtc:11404
Change-Id: I6570e9a93ddf2897ff7584c5d20a246346e853e2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/192361
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33056}
2021-01-22 09:46:52 +00:00
Erik Språng
03eed7c8d0 Fixes issue triggered by WebRTC-VP9-PerformanceFlags trial.
Using WebRTC-VP9-PerformanceFlags and settings a multi-layer config,
and then configuring the codec in non-svc mode would cause us to not
set the cpu speed in libvpx. For some reason, that could trigger a
crash in the encoder.

This CL fixes that, and adds new test coverage for the code affected
byt the trial.

Bug: chromium:1167353, webrtc:11551
Change-Id: Iddb92fe03fc12bac37717908a8b5df4f3d411bf2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202761
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33051}
2021-01-21 10:29:05 +00:00
Danil Chapovalov
ba91dbcb3e In SVC controllers add support for frames dropped by encoder
by updating flag that T1 frame can be referenced when it is encoded
rather than when it is sent for encoding.
Otherwise when encoder drops T1 frame, configuration for following T2 frame would
still try to reference that absent T1 frame leading to invalid references.

Bug: None
Change-Id: I6398275971596b0618bcf9c926f0282f74120976
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202030
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33002}
2021-01-15 17:17:45 +00:00
Mirko Bonadei
e5f4c6b8d2 Reland "Refactor rtc_base build targets."
This is a reland of 69241a93fb

Fix: The problem was related to NO_MAIN_THREAD_WRAPPING, which
affects https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/rtc_base/thread.cc;l=257-263;drc=7acc2d9fe3a6e3c4d8881d2bdfc9b8968a724cd5.
The original CL didn't attach the definition of the macro
NO_MAIN_THREAD_WRAPPING when building for Chromium (which doesn't have
to be related to //rtc_base anymore but to //rtc_base:threading).

Original change's description:
> Refactor rtc_base build targets.
>
> The "//rtc_base:rtc_base" build target has historically been one of the
> biggest targets in the WebRTC build. Big targets are the main source of
> circular dependencies and non-API types leakage.
>
> This CL is a step forward into splitting "//rtc_base:rtc_base" into
> smaller targets (as originally started in 2018).
>
> The only non-automated changes are (like re-wiring the build system):
> * The creation of //rtc_base/async_resolver.{h,cc} which allows to
>   break a circular dependency (is has been extracted from
>   //rtc_base/net_helpers.{h,cc}).
> * The creation of //rtc_base/internal/default_socket_server.{h,cc} to
>   break another circular dependency.
>
> Bug: webrtc:9987
> Change-Id: I0c8f5e7efe2c8fd8e6bffa0d6dd2dd494cf3df02
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196903
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#32941}

Bug: webrtc:9987
Change-Id: I7cdf49d2aac8357f1f50f90010bf2c2f62fa19f6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202021
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33001}
2021-01-15 17:00:05 +00:00
Sergio Garcia Murillo
1528e2b3a7 Set AV1E_SET_ERROR_RESILIENT_MODE on T1 and T2 enhanced layers
TBR=marpan@webrtc.org

Bug: webrtc:11404
Change-Id: I21c97861d6df06a0e50641a9fdf26d56e50c2030
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201627
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Marco Paniconi <marpan@google.com>
Cr-Commit-Position: refs/heads/master@{#32997}
2021-01-15 11:14:00 +00:00
Mirko Bonadei
7acc2d9fe3 Revert "Refactor rtc_base build targets."
This reverts commit 69241a93fb.

Reason for revert: Breaks WebRTC roll into Chromium.

Original change's description:
> Refactor rtc_base build targets.
>
> The "//rtc_base:rtc_base" build target has historically been one of the
> biggest targets in the WebRTC build. Big targets are the main source of
> circular dependencies and non-API types leakage.
>
> This CL is a step forward into splitting "//rtc_base:rtc_base" into
> smaller targets (as originally started in 2018).
>
> The only non-automated changes are (like re-wiring the build system):
> * The creation of //rtc_base/async_resolver.{h,cc} which allows to
>   break a circular dependency (is has been extracted from
>   //rtc_base/net_helpers.{h,cc}).
> * The creation of //rtc_base/internal/default_socket_server.{h,cc} to
>   break another circular dependency.
>
> Bug: webrtc:9987
> Change-Id: I0c8f5e7efe2c8fd8e6bffa0d6dd2dd494cf3df02
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196903
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#32941}

TBR=mbonadei@webrtc.org,hta@webrtc.org

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

No-Try: True
Bug: webrtc:9987
Change-Id: I1e36ad64cc60092f38d6886153a94f1a58339256
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201840
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32986}
2021-01-14 21:27:38 +00:00
Erik Språng
c12f625938 Adds VideoDecoder::GetDecoderInfo()
This adds a new way to poll decoder metadata.
A default implementation still delegates to the old methods.
Root call site is updates to not use the olds methods.

Follow-ups will dismantle usage of the olds methods in wrappers.

Bug: webrtc:12271
Change-Id: Id0fa6863c96ff9e3b849da452d6540e7c5da4512
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196520
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32976}
2021-01-14 13:33:22 +00:00
Danil Chapovalov
b942d45110 Fill fps allocation by LibaomAv1Encoder::GetEncoderInfo
Absent fps allocation imply single layer stream which confuses bitrate adjuster.
As a result bitrate adjuster turned off S0T1 and S0T2 layers for the L3T3 structure.

Bug: webrtc:12148
Change-Id: I5b3a7b44322f347f41dd8858b3d703827e69dd72
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201384
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32952}
2021-01-12 17:26:40 +00:00
Niels Möller
a68bfc5537 Delete KeepBufferRefs helpers, and use of rtc::Bind.
The rtc::Bind usages are replaced with lambdas with copy-capture
of the ref pointers.

Bug: webrtc:11339
Change-Id: I2fb544fcd2780feac3d725993c360df91899b532
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201201
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32946}
2021-01-12 12:35:38 +00:00
Mirko Bonadei
69241a93fb Refactor rtc_base build targets.
The "//rtc_base:rtc_base" build target has historically been one of the
biggest targets in the WebRTC build. Big targets are the main source of
circular dependencies and non-API types leakage.

This CL is a step forward into splitting "//rtc_base:rtc_base" into
smaller targets (as originally started in 2018).

The only non-automated changes are (like re-wiring the build system):
* The creation of //rtc_base/async_resolver.{h,cc} which allows to
  break a circular dependency (is has been extracted from
  //rtc_base/net_helpers.{h,cc}).
* The creation of //rtc_base/internal/default_socket_server.{h,cc} to
  break another circular dependency.

Bug: webrtc:9987
Change-Id: I0c8f5e7efe2c8fd8e6bffa0d6dd2dd494cf3df02
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196903
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32941}
2021-01-11 18:32:30 +00:00
philipel
360da05ed1 Remove webrtc::VideoDecoder::PrefersLateDecoding.
This is just general cleanup.

The assumed behavior is late decoding, and this function is not used to make any decision (except in the deprecated jitter buffer).

Bug: webrtc:12271
Change-Id: Ifb48186d55903f068f25e44c5f73e7a724f6f456
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/200804
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32940}
2021-01-11 18:02:25 +00:00