Commit Graph

5 Commits

Author SHA1 Message Date
fe5d36b6fe Move RtcpStatistics to webrtc/common_types.h, to be used by vie as well.
We will do some refactoring of video engine and would like to use the
same rtcp stats struct there. Both video and audio seem to use 8bit
fraction lost, so that is changed in the struct as well.

BUG=
R=henrik.lundin@webrtc.org, kjellander@webrtc.org, mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2959004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5039 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-28 09:21:07 +00:00
a6101d76f4 Update sampling rate and number of channels of NetEq4 if decoder is changed.
We encounter a sample-underrun if NetEq is initialized with a sampling rate fs =16000 and receive Opus packets with frame-size less than 5 ms. The reason is as follows.

Let say NetEq buffer has 4 packets of Opus each of size 2.5ms this means that internally timestamp of packets incremented by 80 (internally Opus treated as 32 kHz codec). Given the initial sampling rate of NetEq, at the first time that it wants to fetch packets, it targets to fetch 160 samples. Therefore, it will only extracts 2 packets. Decoding these packets give us exactly 160 samples (5 ms at 32 kHz), however, upon decoding the first packet the internal sampling rate will be updated to 32 kHz. So it is expected that sync buffer to deliver 320 samples while it does only have 160 samples (or maybe few more as it starts with some zeros). And we encounter and under-run.

Even if we ignore the under-run  "assert(sync_buffer_->FutureLength() >= expand_->overlap_length())" (neteq_impl.cc::811) is trigered. I'm not sure what happens if we remove this assert perhaps NetEq will work fine in subsequent calls. However the first under-run is blocking ACM2 test to pass.

Here I have a solution to update sample rate as soon as a packet is inserted, if required. It not a very efficient approach as we do the same reset in NetEqImpl::Decode().

It is a bit tricky to reproduce this because the TOT ACM tests do not run ACM2. In https://webrtc-codereview.appspot.com/2192005/ I have a patch to run both ACMs. To reproduce the problem, one can patch that CL and run

$ out/Debug/modules_tests --gtest_filter=AudioCodingModuleTest.TestOpus

Note that we would not encounter any problem if NetEq4 is initiated with 32000 Hz sampling rate. You can test this by setting |kNeteqInitSampleRateHz| to 32000 in webrtc/modules/audio_coding/main/acm2/acm_receiver.cc

BUG=
R=andrew@webrtc.org, henrik.lundin@webrtc.org, kjellander@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2306004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4896 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-01 22:01:09 +00:00
34773d9b6b Unreverts revert: Makes it possible to find files used by some unit tests when running them as Chrome native tests.
TBR=andrew@webrtc.org

BUG=N/A

Review URL: https://webrtc-codereview.appspot.com/1754005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4303 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-08 14:55:23 +00:00
db7d82f26f Revert 4298 "Makes it possible to find files used by some unit t..."
> Makes it possible to find files used by some unit tests when running them as Chrome native tests.
> 
> BUG=N/A
> R=andrew@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/1749004

Broke Android NDK/Android.mk builds.

TBR=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1752006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4299 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-05 08:49:09 +00:00
caf2fcca6a Makes it possible to find files used by some unit tests when running them as Chrome native tests.
BUG=N/A
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1749004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4298 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-05 04:15:38 +00:00