* Add VideoProcessorIntegrationTestMediaCodec tests, including
a standard foreman test and a forced SW fallback test.
* Morph PlotVideoProcessorIntegrationTest into
VideoProcessorIntegrationTestParameterized. This test is intended
to be patched locally, depending on what metric is of interest.
It is run on the bots to ensure that it doesn't break.
* Remove the plot_videoprocessor_integrationtest binary. The test
above is instead moved to the modules_tests binary.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3011043002
Cr-Commit-Position: refs/heads/master@{#19727}
sync flag should only be true if:
* temporal layer > 0
* frame predics _only_ from tl0 (last)
Furthermore, flags should not predict from a buffer unless it has been
previously updated in the current iteration for the pattern.
I also added an experiment with an alternative pattern for a three
layer setup, where loose some efficieny by halving the pattern but
gain a little bit by updating arf for the top layer. The theory is that
this will cause fewer frame drops since we don't have as much
dependency on previous frames in the upper layer (which might not be
retransmitted).
BUG=webrtc:8162
Review-Url: https://codereview.webrtc.org/3003823003
Cr-Commit-Position: refs/heads/master@{#19716}
* Reorder and rename members of FrameStatistic.
* Rename corresponding temp variables used in the summary calculations.
* Make Stats class less structy.
* Try to enforce consistent frame numbers at all times.
* Remove VideoProcessor::FrameInfo struct and use the Stats class
for keeping track of encode/decode start times, etc.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3011923002
Cr-Commit-Position: refs/heads/master@{#19703}
We use Optional in our public API, so its header should be in
webrtc/api/.
BUG=webrtc:8205
Review-Url: https://codereview.webrtc.org/3011943002
Cr-Commit-Position: refs/heads/master@{#19693}
Changes made:
* VideoProcessorIntegrationTest definition goes in .h file.
* Member function definitions go into .cc file.
* Tests move to _libvpx.cc and _openh264.cc files.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3008913002
Cr-Commit-Position: refs/heads/master@{#19637}
* First do all frame processing, then do all rate control
statistics calculations. This means that we only need to
synchronize once.
* Run the VideoProcessor on a task queue, thus supporting Android
HW codecs.
* Add some unit tests for the VideoProcessor.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2997283002
Cr-Commit-Position: refs/heads/master@{#19604}
This CL replaces:
namespace webrtc_jni {
with:
namespace webrtc {
namespace jni {
The main benefit is that we don't have to use the webrtc:: qualifier
inside the jni namespace so we can reduce some clutter.
BUG=None
Review-Url: https://codereview.webrtc.org/3009613002
Cr-Commit-Position: refs/heads/master@{#19569}
Now we always process |rate_profile.num_frames| number of frames.
This means that the output of the tests in
videoprocessor_integrationtest.cc will be slightly different,
as we will no process 300 frames, instead of 299. No rate control
or quality thresholds need to be updated, however.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3004583002
Cr-Commit-Position: refs/heads/master@{#19515}
We can't handle no value here anyway and end up setting a default
at each call site. The defaults aren't even the same in each place.
BUG=None
Review-Url: https://codereview.webrtc.org/2998293002
Cr-Commit-Position: refs/heads/master@{#19485}
This test is and should be independent of RTP, so we don't need the
information provided in this struct.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2995403002
Cr-Commit-Position: refs/heads/master@{#19443}
* Guard members with a SequencedTaskChecker.
* Intercept encoder/decoder callbacks, and post onto task queue if needed.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2996253002
Cr-Commit-Position: refs/heads/master@{#19428}
The LockManagerOperation global function uses void** which does not work
well with the thread_annotations.h macros and produce compiler warnings
on clang (chromium default). Workarounds to this is hacky and unhelpful
so we disable the analysis for this function, which isn't helpful in
this case anyway.
webrtc_h264_config is no longer needed and is removed.
BUG=8090, 8119
Review-Url: https://codereview.webrtc.org/3000263002
Cr-Commit-Position: refs/heads/master@{#19425}
* Rename some members.
* Shorten visualization file names.
* Make some member functions static, in preparation for moving them
to be helper functions in an anonymous namespace.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3001193002
Cr-Commit-Position: refs/heads/master@{#19424}
* Make ProcessFrame return void.
* Make |encode_callback_| and |decode_callback_| direct members.
* Remove ::EncodedFrameSize() and ::EncodedFrameType()
* Remove unused |timestamp| member from FrameInfo.
* Reorder printf output from PrintCodecSettings.
* Make some member functions const.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2998063002
Cr-Commit-Position: refs/heads/master@{#19421}
Reason for revert:
Create reland CL to add fix to.
Original issue's description:
> Revert of Add a flags field to video timing extension. (patchset #15 id:280001 of https://codereview.webrtc.org/3000753002/ )
>
> Reason for revert:
> Speculative revet for breaking remoting_unittests in fyi bots.
> https://build.chromium.org/p/chromium.webrtc.fyi/waterfall?builder=Win7%20Tester
>
> Original issue's description:
> > Add a flags field to video timing extension.
> >
> > The rtp header extension for video timing shuold have an additional
> > field for signaling metadata, such as what triggered the extension for
> > this particular frame. This will allow separating frames select because
> > of outlier sizes from regular frames, for more accurate stats.
> >
> > This implementation is backwards compatible in that it can read video
> > timing extensions without the new flag field, but it always sends with
> > it included.
> >
> > BUG=webrtc:7594
> >
> > Review-Url: https://codereview.webrtc.org/3000753002
> > Cr-Commit-Position: refs/heads/master@{#19353}
> > Committed: cf5d485e14
>
> TBR=danilchap@webrtc.org,kthelgason@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:7594
>
> Review-Url: https://codereview.webrtc.org/2995953002
> Cr-Commit-Position: refs/heads/master@{#19360}
> Committed: f0f7378b05TBR=danilchap@webrtc.org,kthelgason@webrtc.org,stefan@webrtc.org,emircan@google.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:7594
Review-Url: https://codereview.webrtc.org/2996153002
Cr-Commit-Position: refs/heads/master@{#19405}
Make it possible for forced VP8 SW fallback encoder to set min_pixels_per_frame via GetScalingSettings().
Add a min required resolution (in addition to bitrate) before releasing forced SW fallback.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3000693003
Cr-Commit-Position: refs/heads/master@{#19390}
Make it possible to switch from VP8 HW -> VP8 SW -> VP8 HW depending on bitrate and resolution.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2988963002
Cr-Commit-Position: refs/heads/master@{#19362}
Reason for revert:
Speculative revet for breaking remoting_unittests in fyi bots.
https://build.chromium.org/p/chromium.webrtc.fyi/waterfall?builder=Win7%20Tester
Original issue's description:
> Add a flags field to video timing extension.
>
> The rtp header extension for video timing shuold have an additional
> field for signaling metadata, such as what triggered the extension for
> this particular frame. This will allow separating frames select because
> of outlier sizes from regular frames, for more accurate stats.
>
> This implementation is backwards compatible in that it can read video
> timing extensions without the new flag field, but it always sends with
> it included.
>
> BUG=webrtc:7594
>
> Review-Url: https://codereview.webrtc.org/3000753002
> Cr-Commit-Position: refs/heads/master@{#19353}
> Committed: cf5d485e14TBR=danilchap@webrtc.org,kthelgason@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7594
Review-Url: https://codereview.webrtc.org/2995953002
Cr-Commit-Position: refs/heads/master@{#19360}
The rtp header extension for video timing shuold have an additional
field for signaling metadata, such as what triggered the extension for
this particular frame. This will allow separating frames select because
of outlier sizes from regular frames, for more accurate stats.
This implementation is backwards compatible in that it can read video
timing extensions without the new flag field, but it always sends with
it included.
BUG=webrtc:7594
Review-Url: https://codereview.webrtc.org/3000753002
Cr-Commit-Position: refs/heads/master@{#19353}
Also remove |key_frame_interval| from argument list, since it is always
set to -1.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2999643002
Cr-Commit-Position: refs/heads/master@{#19331}
* Don't loop over fps, but do loop over codec implementation type.
* Order codec settings as they are defined in the test.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/3000613002
Cr-Commit-Position: refs/heads/master@{#19330}
This CL brings us one step closer to removing CodecDatabase and
GenericEncoder, by removing the static VCM::Codec(). Codec specific
methods are moved to video_encoder.cc (they already belonged to this
class) and getting default generic codec settings has been moved to a
test specific file.
This CL also makes video_encoder.h pass style guide and lint checks,
since these checks are triggered with the new video_encoder.cc file.
BUG=webrtc:8064
Review-Url: https://codereview.webrtc.org/2993923002
Cr-Commit-Position: refs/heads/master@{#19303}
It serves a very limited purpose: converting from the input YUV
file to an output Y4M file. The experimenter can do this manually,
if this is of interest. (It is generally not.)
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2993063002
Cr-Commit-Position: refs/heads/master@{#19257}
The current ObjC HW encoder is implemented as a C++
webrtc::VideoEncoder. We then wrap it two times in the following way:
webrtc::VideoEncoder -> RTCVideoEncoder -> webrtc::VideoEncoder.
This was originally done to minimize the code diff when landing the
injectable encoder.
This CL removes the first wrapping and implements the ObjC HW encoder
as a RTCVideoEncoder directly. Similarly, the decoder is implemented
as a RTCVideoDecoder directly.
Based on andersc@ CL: https://codereview.webrtc.org/2978623002/.
BUG=webrtc:7924
Review-Url: https://codereview.webrtc.org/2987413002
Cr-Commit-Position: refs/heads/master@{#19255}
- Make all overridden methods of VideoProcessorImpl public,
in preparation of the removal of the VideoProcessor interface.
- Place corresponding method definitions in correct order
in .cc file.
- Harmonize the stdout printing.
- Make timestamp calculations adhere to set frame rate.
Except for the last bullet, these changes should not lead to
different functionality.
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2995513002
Cr-Commit-Position: refs/heads/master@{#19254}
Add SetProcessParams method for configuring process settings (removes intermediate step of configuring settings via ProcessParams).
BUG=webrtc:6634
Review-Url: https://codereview.webrtc.org/2962293002
Cr-Commit-Position: refs/heads/master@{#19206}
Removes keying on pattern_idx inside TemporalLayers implementations for
several properties that are different between screencast temporal layers
and normal/default temporal layers.
This is a step towards sharing PopulateCodecSpecific between the layer
patterns and code deduplication to longer term be able to separate the
packetizer step from encoder settings, so that temporal patterns can be
used for asynchronous hardware encoders where there may be outstanding
frames.
BUG=chromium:702017, webrtc:7349
R=brandtr@webrtc.org
Review-Url: https://codereview.webrtc.org/2924993002
Cr-Commit-Position: refs/heads/master@{#19097}