New interface uses two bitrates (max/min). The pace multiplier is also
removed from the interface and instead utilized outside. Min bitrate
will be filled with padding if there's not enough media to transmit.
Also fixes a bug in minimum transmission bitrate that made it ignore
REMBs. A regression test has been added to catch it.
BUG=3014
R=mflodman@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/10059004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5723 4adac7df-926f-26a2-2b94-8c16560cd09d
Replaces VideoCodec in VideoSendStream::Config with an EncoderSettings
struct. The EncoderSettings struct uses an external encoder for all
codecs. This means that external users, such as libjingle, will provide
the encoders themselves, removing the previous distinction of internal
and external codecs.
For now VideoSendStream translates to VideoCodec internally. In the
interrim (before the corresponding change is implemented in
VideoReceiveStream) tests convert EncoderSettings to VideoCodecs.
Removes Call::GetVideoCodecs().
Disables RampUpTest.WithPacingAndRtx as its further exposed with changes
to bitrates used in tests.
BUG=2854,2992
R=mflodman@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/7919004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5722 4adac7df-926f-26a2-2b94-8c16560cd09d
The deadlock can happen when using HW encoder. HW encoder calls
the encode complete callback on libjingle worker thread instead
of ViECaptureThread. The capture thread can hold VieEncoder::|data_cs_|
and wait for ModuleRtpRtcpImpl::|critical_section_module_ptrs_|.
When libjingle worker thread runs encode complete callback, it
can hold ModuleRtpRtcpImpl::|critical_section_module_ptrs_| and
wait for VieEncoder::|data_cs_|.
|default_rtp_rtcp_| is not guarded by |data_cs|. So move it out of
the critical section to avoid the deadlock.
BUG=chromium:352567
TEST=Run apprtc loopback on CrOS.
Run apprtc between CrOS and Linux.
Run vie_auto_test.
R=henrik.lundin@webrtc.org, pbos@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/10039004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5721 4adac7df-926f-26a2-2b94-8c16560cd09d
The CL was reverted in r5712, due to bots going red. However, these bots
are unrelated to this CL.
Original description:
VideoSendStreamTest.SuspendBelowMinBitrate was flaky. The problem was
that when the first non-padding packet was sent after the stream was
resumed, the statistics had not always been updated so that
stats.suspended was false. After seeing the first non-padding packet
after suspension, the test will now go into a state where it waits for
the statistics to be changed.
BUG=3068
R=pbos@webrtc.orgTBR=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/10099004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5713 4adac7df-926f-26a2-2b94-8c16560cd09d
VideoSendStreamTest.SuspendBelowMinBitrate was flaky. The problem was that when the first non-padding packet was sent after the stream was resumed, the statistics had not always been updated so that stats.suspended was false. After seeing the first non-padding packet after suspension, the test will now go into a state where it waits for the statistics to be changed.
BUG=3068
R=pbos@webrtc.orgTBR=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/10069004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5711 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL adds support for reading .y4m files to the infra in
video_quality_analysis.cc, adding new functions
ExtractFrameFromYuvFile() and ExtractFrameFromY4mFile(),
instad of the previous ExtractFrameFromI420(). The decision
as to which one to use is taken from the file extension,
if it is .y4m then is considered a YUV4MPEG file, otherwise
is taken as a raw .yuv file.
It also removes the pseudo duplicated function
GetNextI420Frame(), that is used from psnr_ssim_analyzer.c,
and adds support for y4m files there.
Tested/validated via local compile-run.
YUV4MPEG is a trivial container with a file header
and a per-frame header, see [1]
[1]
http://wiki.multimedia.cx/index.php?title=YUV4MPEG2
BUG=https://code.google.com/p/chromium/issues/detail?id=343504
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5702 4adac7df-926f-26a2-2b94-8c16560cd09d
Wrote a new NetEq unit test to test a network freeze during comfort
noise playout. The network freezes and resumes during the silence
period, and then resumes speech. It was verified that the delay
increased due to the freeze, and this CL contains a fix for that
problem.
BUG=2995
R=turaj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/9849004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5701 4adac7df-926f-26a2-2b94-8c16560cd09d
In practice, this will have only marginal effect. The length_limit
was increased from 6.7 ms to 10 ms. This is compared with the
input_length, which is equal to the decoded frame size. Thus,
this change will only affect encoded frame sizes in this range
(including 10 ms).
BUG=2696
R=tina.legrand@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/9969004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5700 4adac7df-926f-26a2-2b94-8c16560cd09d
We've had problems that seem to manifest in run_tests.mm getting stuck
on exit. For our automated test targets only full_stack.cc was making
use of the platform-specific renderers provided by webrtc_test_common
and since no one currently monitors these the use case is hypothetical.
Readding platform-specific renderers to video_loopback is tracked with
issue 3039, though as far as I'm aware no one's currently using the
video_loopback target.
BUG=2987
R=kjellander@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/9789004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5686 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL implements a unit test to cover an case where comfort noise
packets should be discarded. The situation arises when NetEq gets a
duplicate comfort noise packet. Without this check, the duplicate would
be decoded, and a the timing would shift.
As it turned out, the corner-case funcionality was not completely
accurate in NetEq4. This is because decision_logic_::cng_state_ is set
after the corner-case check. In the old NetEq3, the corresponding state
was changed before the check. This is now fixed.
R=turaj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/9639005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5685 4adac7df-926f-26a2-2b94-8c16560cd09d
Adding option to use mock or real objects instead of mocks.
This will help future testing efforts, where each test case can
select whether a mock or a real object should be used.
Adding new test InsertPacketsUntilBufferIsFull.
Removing a few uniteresting mock call warning.
R=turaj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/9839004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5684 4adac7df-926f-26a2-2b94-8c16560cd09d
- Add an Initialize() overload to allow specification of format
parameters. This is mainly useful for testing, but could be used in
the cases where a consumer knows the format before the streams arrive.
- Add a reverse_sample_rate_hz_ parameter to prepare for mismatched
capture and render rates. There is no functional change as it is
currently constrained to match the capture rate.
- Fix a bug in the float dump: we need to use add_ rather than set_.
- Add a debug dump test for both int and float interfaces.
- Enable unpacking of float dumps.
- Enable audioproc to read float dumps.
- Move more shared functionality to test_utils.h, and generally tidy up
a bit by consolidating repeated code.
BUG=2894
TESTED=Verified that the output produced by the float debug dump test is
correct. Processed the resulting debug dump file with audioproc and
ensured that we get identical output. (This is crucial, as we need to
be able to exactly reproduce online results offline.)
R=aluebs@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/9489004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5676 4adac7df-926f-26a2-2b94-8c16560cd09d