- Compute RMS over a packet's worth of audio to be sent in Channel, rather than the captured audio in TransmitMixer.
- We now use the entire packet rather than the last 10 ms frame.
- Restore functionality to LevelEstimator.
- Fix a bug in the splitting filter.
- Fix a number of bugs in process_test related to a poorly named
AudioFrame member.
- Update the unittest protobuf and float reference output.
- Add audioproc unittests.
- Reenable voe_extended_tests, and add a real function test.
- Use correct minimum level of 127.
TEST=audioproc_unittest, audioproc, voe_extended_test, voe_auto_test
Review URL: http://webrtc-codereview.appspot.com/279003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@950 4adac7df-926f-26a2-2b94-8c16560cd09d
When a Mac goes to sleep, the OS pauses the IO threads. If a
subsequent StopSend/Playout happens, we time out waiting for the IO
threads, but didn't ensure they were shut down.
BUG=
TEST=voe_cmd_test, voe_auto_test
Review URL: http://webrtc-codereview.appspot.com/269013
git-svn-id: http://webrtc.googlecode.com/svn/trunk@949 4adac7df-926f-26a2-2b94-8c16560cd09d
Rewrote the codec test to render to file and do video comparisons.
Refactored the coded tests somewhat. I still need to figure out how to do comparison in the automated case.
Added video analysis to the test. This will make sure that the system output roughly the right thing.
Moved the video metrics library into the test_support library. Made the metrics library available in the automated tests.
Made sure no one passes in too large YUV videos into the autotest.
The standard test's output now gets captured for both the left and right windows.
Wrote a rendering device which just writes the raw frames to file, for analysis. Updated the base standard test to dump its left window output to file. We don't do anything with it yet though.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/249001
git-svn-id: http://webrtc.googlecode.com/svn/trunk@931 4adac7df-926f-26a2-2b94-8c16560cd09d
A single participant is not processed at all. With multiple
participants, we divide-by-2 as before when mixing. Afterwards,
the mixed signal is limited by the AGC to -7 dBFS and then doubled to
restore the original level.
This preserves the level while guaranteeing good saturation protection.
Add a test to voe_auto_test. Hijack and improve the existing mixing test
for this.
TEST=voe_auto_test, voe_cmd_test
Review URL: http://webrtc-codereview.appspot.com/241013
git-svn-id: http://webrtc.googlecode.com/svn/trunk@920 4adac7df-926f-26a2-2b94-8c16560cd09d
Details:
The mixer looks at all the participants desired frequency and concludes the highest desired mixing frequency. This is the frequency that the mixer will mix at. Participants that are always mixed are in a separate list and the function concluding the highest desired mixing frequency did not look at that list and therefore always conclude that the lowest mixing frequency is sufficient.
Review URL: http://webrtc-codereview.appspot.com/277003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@915 4adac7df-926f-26a2-2b94-8c16560cd09d
Changing how the max payload length is calculated. Instead
of handling RTP and FEC header overhead explicitly, call the
MaxDataPayloadLength method which already does it. Avoid redundant code. Had to move MaxDataPayloadLength to the
RTPSenderInterface.
Review URL: http://webrtc-codereview.appspot.com/269002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@901 4adac7df-926f-26a2-2b94-8c16560cd09d
I also fixed compilation on Mac (by enabling exceptions for the NetEqTestTools target). Executing the test fails on Mac, but I assume this is because it checks bit exactness, similar to the issue we had with audio_coding_module (see issue 114)
Review URL: http://webrtc-codereview.appspot.com/255004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@895 4adac7df-926f-26a2-2b94-8c16560cd09d
According to project structure discussed with Andrew. We want to flatten out the hierarchy and minimize the number of GYP files.
No changes at all are being made in the source files; they are just moved.
The only modified files are the GYP file and Android.mk
Kevin: I updated relative paths in Android.mk so please verify it is correct, since I don't know how to build that.
Review URL: http://webrtc-codereview.appspot.com/256006
git-svn-id: http://webrtc.googlecode.com/svn/trunk@894 4adac7df-926f-26a2-2b94-8c16560cd09d
Patch Set 1: Removing blanks at end of lines.
Patch Set 2: Removing tabs.
Patch Set 3: Fixing include-guards.
Patch Set 4-7: Formatting files in the list.
Patch Set 8: Formatting CNG.
Patch Set 9:
* Fixing comments from code review
* Fixing formating in acm_dtmf_playout.cc
* Started fixing formating of acm_g7221.cc. More work needed, so don't spend too much time reviewing.
* Refactored constructor of ACMGenericCodec. Rest of file still to be fixed.
* Fixing break; after return ...; in several files.
Patch Set 10:
* Chaning from reintepret_cast to static_cast in three files, acm_amr.cc, acm_cng.cc and acm_g722.cc
NOTE! Not all files have the right format. That work will continue in separate CLs.
Review URL: http://webrtc-codereview.appspot.com/175002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@881 4adac7df-926f-26a2-2b94-8c16560cd09d
Changing the assignment operator in VCMJitterBuffer to a named
function (CopyFrom) instead, since it is not a straight
assignment. Also fixing two bugs in the jitter copy function.
Bug fix in VCMEncodedFrame: The copy constructor did not
copy _length.
In VCM codec database, make sure that the callback object is
preserved when copying back from secondary to primary decoder.
In VP8 wrapper, adding code to copy the _decodedImage to the
Copy() method.
Bugfix in video_coding_test rtp_player:
The retransmissions where made in reverse order. Now new items are
appended to the end of the LostPackets list, which makes the order
correct when retransmitting.
Handling the case when cloning an unused decoder state:
When the decoder has not successfully decoded a frame yet,
it cannot be cloned. A NULL pointer will be returned all
the way out to VideoCodingModuleImpl::Decode(). When this
happens, the VCM will call Reset() for the dual receiver,
in order to reset the state to kPassive.
Review URL: http://webrtc-codereview.appspot.com/239010
git-svn-id: http://webrtc.googlecode.com/svn/trunk@873 4adac7df-926f-26a2-2b94-8c16560cd09d
call. strncopy will not explicity copy or add a "\0" therefore
strcat did not know where to append the "\n" which was causing
an out of bounds crash.
Because we are checking the length, strcpy should be good enough
as it also copies the "\0". Please note that that I am pre-emptively
adding 2 instead of 1 to the length to take into account of the \n
that will be added later.
Review URL: http://webrtc-codereview.appspot.com/253004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@857 4adac7df-926f-26a2-2b94-8c16560cd09d
It could happen that if you want to restart playout, the new sponsored Render thread would catch this event
if the previous Render thread quits before this event is set.
With this modification, the device plugging out/in during talking would be supported well.
Review URL: http://webrtc-codereview.appspot.com/248002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@839 4adac7df-926f-26a2-2b94-8c16560cd09d
When creating a new custom call, now able to set start bit rate (default is 1000)
The following modify call options were added
9. Toggle Encoder Observer
10. Toggle Decoder Observer
12. Print Call Statistics
Also set the trace filter to kTraceAll
File defaults new call VGA (640x480)
Review URL: http://webrtc-codereview.appspot.com/239012
git-svn-id: http://webrtc.googlecode.com/svn/trunk@826 4adac7df-926f-26a2-2b94-8c16560cd09d
Issues solved:
1. Possible overflow when reducing the bandwidth estimate at the send-side
2. A burst of loss reports could make us reduce the rate way too far since
we reduced the rate relative the current estimate and not the actual
rate sent.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/244011
git-svn-id: http://webrtc.googlecode.com/svn/trunk@822 4adac7df-926f-26a2-2b94-8c16560cd09d
WebRtc_UWord64[2] wasn't always aligned to 128 bytes, which
is necessary for _mm_store_si128. By declaring the
variable as __m128i it will always be 128 bytes aligned.
Incorrect include files.
__m128i is defined in emmintrin.h for visual studio. Extra include on mac and linux is not a problem.
Review URL: http://webrtc-codereview.appspot.com/239013
git-svn-id: http://webrtc.googlecode.com/svn/trunk@816 4adac7df-926f-26a2-2b94-8c16560cd09d
Tests now fail more cleanly if the input video file is incorrect. Fixed some of the style issues in vie_autotest_codec.
Rewrote the automated standard codec test to use the new fake camera.
Started sketching on a new test case. Wrote a new abstraction called ViEFakeCamera which hides the details of how to thread a file capture device in the typical test case.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/242008
git-svn-id: http://webrtc.googlecode.com/svn/trunk@815 4adac7df-926f-26a2-2b94-8c16560cd09d
This fixes an issue in the VCM where we don't wait for a packet to arrive
if the jitter buffer is empty. This also fixes an issue where an old
packet can trigger a packet event signal for a future frame.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/248001
git-svn-id: http://webrtc.googlecode.com/svn/trunk@814 4adac7df-926f-26a2-2b94-8c16560cd09d
It can happen that the capture thread tries to access an invalid object after StopPlayout has been called.
I have also extended the usage of the new ScopedCOMInitializer to all threads. See this step as code cleanup.
Review URL: http://webrtc-codereview.appspot.com/239014
git-svn-id: http://webrtc.googlecode.com/svn/trunk@813 4adac7df-926f-26a2-2b94-8c16560cd09d
Changed unsigned longs into uint64_t to be a bit more portable.
Merge branch 'master' into fake_camera
Conflicts:
src/video_engine/main/test/AutoTest/source/vie_autotest_base.cc
Removed unnecessary use of WebRTC types. Fixed style issues.
Fixed style issues. Added comments where needed.
(After review) Made the standard base test not mirror the render stream since that is assumed to be tested in the render module. Renamed functions accordingly.
Fixed merge errors.
Merge branch 'master' into fake_camera
Conflicts:
src/video_engine/main/interface/vie_capture.h
src/video_engine/main/test/AutoTest/automated/vie_standard_integration_test.cc
src/video_engine/main/test/AutoTest/interface/vie_autotest.h
src/video_engine/main/test/AutoTest/interface/vie_autotest_defines.h
src/video_engine/main/test/AutoTest/source/vie_autotest_base.cc
src/video_engine/main/test/AutoTest/source/vie_autotest_linux.cc
src/video_engine/main/test/AutoTest/vie_auto_test.gypi
Merge branch 'extended_tests' into fake_camera
Conflicts:
src/video_engine/main/test/AutoTest/automated/vie_standard_integration_test.cc
src/video_engine/main/test/AutoTest/interface/vie_autotest.h
src/video_engine/main/test/AutoTest/source/vie_autotest_base.cc
src/video_engine/main/test/AutoTest/source/vie_autotest_linux.cc
src/video_engine/main/test/AutoTest/vie_auto_test.gypi
More updates after review.
Updates after review.
Added new automated test. - Added a new mode to the vie_auto_test binary. It is now possible to pass --automated to it to make it run noninteractively. - To be precise, it will run everything that has been rewritten as GUnit tests, which currently is one "test suite" in the binary.
Added comments to the new test.
- Fixed a bug which caused test error messages to not get shown.
- Added extended and API tests.
- Abstracted out an integration test base class since all integration
tests set up the exact same way.
- The ViETest::TestError static method will now assert using GTest
asserts if we are running in GTest mode. This gets rid of the hard
asserts that get run otherwise. The hard asserts are still in when using
"classic" mode. TestError will use neither GUnit nor hard asserts if
VIE_ASSERT_ERROR is not defined.
- Formatted vie_autotest_defines.h according to Google style rules.
- Extracted a method for finding a capture device on the system. This
removes a fair bit of logic from the huge test method (mostly straight
statements remain there now).
Rebase from svn.
- Whitespace fixes after review.
Fixed presubmit warning.
- Fixed cpplint.py warnings.
Fixed merge error.
Merge branch 'extended_tests' into fake_camera
Conflicts:
src/video_engine/main/test/AutoTest/automated/vie_extended_integration_test.cc
src/video_engine/main/test/AutoTest/automated/vie_standard_integration_test.cc
src/video_engine/main/test/AutoTest/helpers/vie_window_creator.cc
src/video_engine/main/test/AutoTest/interface/vie_autotest.h
src/video_engine/main/test/AutoTest/source/vie_autotest_base.cc
src/video_engine/main/test/AutoTest/source/vie_autotest_linux.cc
src/video_engine/main/test/AutoTest/vie_auto_test.gypi
More updates after review.
Updates after review.
Added new automated test. - Added a new mode to the vie_auto_test binary. It is now possible to pass --automated to it to make it run noninteractively. - To be precise, it will run everything that has been rewritten as GUnit tests, which currently is one "test suite" in the binary.
Added comments to the new test.
- Fixed a bug which caused test error messages to not get shown.
- Added extended and API tests.
- Abstracted out an integration test base class since all integration
tests set up the exact same way.
- The ViETest::TestError static method will now assert using GTest
asserts if we are running in GTest mode. This gets rid of the hard
asserts that get run otherwise. The hard asserts are still in when using
"classic" mode. TestError will use neither GUnit nor hard asserts if
VIE_ASSERT_ERROR is not defined.
- Formatted vie_autotest_defines.h according to Google style rules.
- Extracted a method for finding a capture device on the system. This
removes a fair bit of logic from the huge test method (mostly straight
statements remain there now).
Rebase from svn.
- Whitespace fixes after review.
Fixed presubmit warning.
- Fixed cpplint.py warnings.
Fixed merge error.
Fixed cpplint.py warnings.
Merge branch 'extended_tests' into fake_camera
Conflicts:
src/video_engine/main/test/AutoTest/automated/vie_api_integration_test.cc
src/video_engine/main/test/AutoTest/automated/vie_extended_integration_test.cc
src/video_engine/main/test/AutoTest/automated/vie_integration_test_base.cc
src/video_engine/main/test/AutoTest/automated/vie_standard_integration_test.cc
src/video_engine/main/test/AutoTest/helpers/vie_window_creator.cc
src/video_engine/main/test/AutoTest/interface/vie_autotest.h
src/video_engine/main/test/AutoTest/source/vie_autotest_base.cc
src/video_engine/main/test/AutoTest/source/vie_autotest_linux.cc
src/video_engine/main/test/AutoTest/source/vie_autotest_main.cc
src/video_engine/main/test/AutoTest/vie_auto_test.gypi
Revert "Revert "- Whitespace fixes after review.""
This reverts commit 3da2a148814e8dea78f73d3feeb32dce690dc2d4.
Revert "- Whitespace fixes after review."
This reverts commit fac670ca313580fb883191ae919091a2637ad0af.
- Whitespace fixes after review.
- Wrote a "file capture device" which is a kind of fake capture device. It reads a YUV file from disk and pretends that it is what the "camera" is seeing. This makes is possible to run tests based on video input without having an actual physical camera. This is good because physical cameras are quite unreliable. - Rewrote the standard mirrored preview loopback test so it can use the new file capture device. The old "classic" test is preserved. I tried to minimize duplication between the classic test case and the new one, which turned out to be quite painful. - There are some rough edges left in in the code. Suggested improvements is to get rid of the error counting mechanism since the code seems to assume that TestError invocations cause hard asserts anyway. The code will segfault for certain errors if the hard asserts doesn't happen, which means the error counting mechanism is unnecessary. This, by the way, could be a problem for the new test since it doesn't cause hard asserts. - Fixed comments for the thread wrapper and the external capture device interface.
- Extracted a method for finding a capture device on the system. This removes a fair bit of logic from the huge test method (mostly straight statements remain there now).
- The ViETest::TestError static method will now assert using GTest asserts if we are running in GTest mode. This gets rid of the hard asserts that get run otherwise. The hard asserts are still in when using "classic" mode. TestError will use neither GUnit nor hard asserts if VIE_ASSERT_ERROR is not defined. - Formatted vie_autotest_defines.h according to Google style rules.
- Added extended and API tests. - Abstracted out an integration test base class since all integration tests set up the exact same way.
- Fixed a bug which caused test error messages to not get shown.
Added comments to the new test.
- Added a new mode to the vie_auto_test binary. It is now possible to pass --automated to it to make it run noninteractively. - To be precise, it will run everything that has been rewritten as GUnit tests, which currently is one "test suite" in the binary.
- Fixed cpplint.py warnings.
Fixed presubmit warning.
- Whitespace fixes after review.
Rebase from svn.
- Extracted a method for finding a capture device on the system. This removes a fair bit of logic from the huge test method (mostly straight statements remain there now).
- The ViETest::TestError static method will now assert using GTest asserts if we are running in GTest mode. This gets rid of the hard asserts that get run otherwise. The hard asserts are still in when using "classic" mode. TestError will use neither GUnit nor hard asserts if VIE_ASSERT_ERROR is not defined. - Formatted vie_autotest_defines.h according to Google style rules.
- Added extended and API tests. - Abstracted out an integration test base class since all integration tests set up the exact same way.
- Fixed a bug which caused test error messages to not get shown.
Added comments to the new test.
- Added a new mode to the vie_auto_test binary. It is now possible to pass --automated to it to make it run noninteractively. - To be precise, it will run everything that has been rewritten as GUnit tests, which currently is one "test suite" in the binary.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/247004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@803 4adac7df-926f-26a2-2b94-8c16560cd09d
Wrote a "file capture device" which is a kind of fake capture device. It reads a YUV file from disk and pretends that it is what the "camera" is seeing. This makes is possible to run tests based on video input without having an actual physical camera. This is good because physical cameras are quite unreliable.
Rewrote the standard mirrored preview loopback test so it can use the new file capture device. The old "classic" test is preserved. I tried to minimize duplication between the classic test case and the new one, which turned out to be quite painful.
There are some rough edges left in in the code. Suggested improvements is to get rid of the error counting mechanism since the code seems to assume that TestError invocations cause hard asserts anyway. The code will segfault for certain errors if the hard asserts doesn't happen, which means the error counting mechanism is unnecessary. This, by the way, could be a problem for the new test since it doesn't cause hard asserts.
Fixed comments for the thread wrapper and the external capture device interface.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/224003
git-svn-id: http://webrtc.googlecode.com/svn/trunk@801 4adac7df-926f-26a2-2b94-8c16560cd09d
Changes how we signal frame rate and frame durations to the encoder. Rather
than changing the time base, we now only modify the frame durations, while
keeping the timebase constant. The frame duration is currently calculated
from the average input frame rate. Ideally, the frame duration should
be calculated as the timestamp diff, which is the real duration of a
frame, but the encoder doesn't seem to like too varying durations.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/247001
git-svn-id: http://webrtc.googlecode.com/svn/trunk@795 4adac7df-926f-26a2-2b94-8c16560cd09d
* Split the WEBRTC_VIDEO_EXTERNAL_CAPTURE_AND_RENDER into WEBRTC_INCLUDE_INTERNAL_VIDEO_CAPTURE and WEBRTC_INCLUDE_INTERNAL_VIDEO_RENDER.
* Add DummyDeviceInfo for the case when WEBRTC_INCLUDE_INTERNAL_VIDEO_CAPTURE is not defined.
Review URL: http://webrtc-codereview.appspot.com/224005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@778 4adac7df-926f-26a2-2b94-8c16560cd09d
The VP8 decoder wrapper will request key frames 30 frames after seeing
a packet loss, if it hasn't received a state refresh (only possible
through key frames in this version).
For this to be possible the jitter buffer has been made aware of
picture ids to be able to detect frame losses. Legacy JB code to
handle streams without marker bits was also removed since it
conflicts with streams with FEC.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/239002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@774 4adac7df-926f-26a2-2b94-8c16560cd09d
Fixed the Windows build.
Fixed whitespace.
Split the platform-specific code for creating a window manager into separate source files since the mac one must be suffixed .mm and not .cc when we happen to use objective-c code. Tested on Linux.
BUG=
TEST=
Review URL: http://webrtc-codereview.appspot.com/214009
git-svn-id: http://webrtc.googlecode.com/svn/trunk@771 4adac7df-926f-26a2-2b94-8c16560cd09d