2153 Commits

Author SHA1 Message Date
magjed@webrtc.org
c8895aa2f3 Unify underlying frame buffer in I420VideoFrame and WebRtcVideoFrame
Currently, I420VideoFrame uses three webrtc::Plane to store pixel data, and WebRtcVideoFrame uses WebRtcVideoFrame::FrameBuffer/webrtc::VideoFrame. The two subclasses WebRtcTextureVideoFrame and TextureVideoFrame use a NativeHandle to store pixel data, and there is also a class WebRtcVideoRenderFrame that wraps an I420VideoFrame.

This CL replaces these classes with a new interface VideoFrameBuffer that provides the common functionality. This makes it possible to remove deep frame copies between cricket::VideoFrame and I420VideoFrame.

Some additional minor changes are:
* Disallow creation of 0x0 texture frames.
* Remove the half-implemented ref count functions in I420VideoFrame.
* Remove the Alias functionality in WebRtcVideoFrame

The final goal is to eliminate all frame copies, but to limit the scope of this CL, some planned changes are postponed to follow-up CL:s (see planned changes in https://webrtc-codereview.appspot.com/38879004, or https://docs.google.com/document/d/1bxoJZNmlo-Z9GnQwIaWpEG6hDlL_W-bzka8Zb_K2NbA/preview). Specifically, this CL:
* Keeps empty subclasses WebRtcTextureVideoFrame and TextureVideoFrame, and just delegates the construction to the superclass.
* Keeps the deep copies from cricket::VideoFrame to I420VideoFrame.

BUG=1128
R=mflodman@webrtc.org, pbos@webrtc.org, perkj@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8580}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8580 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 21:22:26 +00:00
henrik.lundin@webrtc.org
bcef431902 Revert r8577 "Collapse AudioEncoderDecoderIsacRed into ..."
Some of the build bots seems to have reacted to this change.

TBR=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8578}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8578 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 20:13:48 +00:00
henrik.lundin@webrtc.org
1fc28f2305 Collapse AudioEncoderDecoderIsacRed into AudioEncoderDecoderIsac
With this change, support for iSAC-RED is incorporated into the regular
AudioEncoderDecoderIsac class.

COAUTHOR=kwiberg@webrtc.org
R=jmarusic@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8577}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8577 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 19:31:17 +00:00
sprang@webrtc.org
b144b4b74e Fixed bug in SendTimeHistory, where deleting packets via the getter
would not update the oldest suence number.

BUG=
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8574}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8574 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 15:44:54 +00:00
minyue@webrtc.org
0561716ae2 Adding Opus DTX support in ACM.
This solution does not use the existing VAD/DTX logic of ACM, since Opus DTX is codec feature, while ACM VAD/DTX is mainly for setting the WebRTC VAD/DTX.

During the development of this CL, two old bugs were found and are fixed in this CL too.

They are in
webrtc/modules/audio_coding/test/Channels.cc
and webrtc/modules/audio_coding/main/acm2/acm_opus_unittest.cc
respectively.

BUG=webrtc:1014
R=henrik.lundin@webrtc.org, tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8573}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8573 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 12:03:14 +00:00
minyue@webrtc.org
db93b68031 Removing NetEq's direct dependencies on Opus headers.
Neteq had a direct dependency on Chromium/third_party/opus. This should be relayed by target webrtc_opus.

BUG=
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8567}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8567 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 09:28:53 +00:00
aluebs@webrtc.org
c9ce07ed87 Add Config option to enable 48kHz support in AudioProcessing
BUG=webrtc:3146
R=andrew@webrtc.org, bjornv@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8563}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8563 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 20:07:51 +00:00
magjed@webrtc.org
97ed2a4b70 I420VideoFrame: Remove function ResetSize
This is a partial reland of https://webrtc-codereview.appspot.com/39939004/.

The original CL was reverted because ViECapturer use ResetSize/IsZeroSize on |captured_frame_| as a check to make sure each captured frame is only delivered once. Removing ResetSize introduced a race condition where a captured frame could be delivered multiple times.

I have fixed this problem in this CL by replacing ResetSize with scoped_ptr::release.

BUG=4352
R=perkj@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8561}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8561 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 17:33:41 +00:00
bjornv@webrtc.org
976c0f3043 audio_processing/aec: NEON code should not be invoked if it is detectable, but is not NEON
There exist devices with runtime checks for NEON, but where the device is not NEON. One such device is Tegra2 on which currently NEON code is running.

This fix adds a missing feature check when initializing the AEC.

BUG=4304
R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8559}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8559 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 16:25:51 +00:00
marpan@webrtc.org
3fe17d1598 Adjust a few thresholds for VP9 tests.
Needed for the upcoming libvpx roll.

TBR=stefan@webrtc.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#8557}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8557 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 15:34:19 +00:00
magjed@webrtc.org
fd33293d58 I420VideoFrame: Remove functions set_width and set_height
This is a partial reland of https://webrtc-codereview.appspot.com/39939004/.

The functions set_width and set_height in I420VideoFrame are not needed and just add complexity.

R=perkj@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8556}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8556 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 13:57:44 +00:00
andresp@webrtc.org
e8f50df6b9 Remove avi recorder and corresponding enable_video flags.
R=mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8554}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8554 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 13:07:44 +00:00
henrik.lundin@webrtc.org
f56c162310 Remove AudioCodingModule::Process()
An earlier change moved the encoding work from Process to
Add10MsData; process was just a no-op.

BUG=3520
COAUTHOR=kwiberg@webrtc.org
R=henrika@webrtc.org, minyue@webrtc.org, tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8553}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8553 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 12:30:19 +00:00
sprang@webrtc.org
f35e4bc694 Introduce a send time history class, keeping track of packet send times.
BUG=4308
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8546}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8546 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 09:06:17 +00:00
bjornv@webrtc.org
2f6ae0de5b audio_coding/codec/ilbc: Removed usage of WEBRTC_SPL_MUL_16_16_RSFT
The macro is defined as
#define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \
    (WEBRTC_SPL_MUL_16_16(a, b) >> (c))

where the latter macro is in C defined as
(For definitions on ARMv7 and MIPS, see common_audio/signal_processing/include/spl_inl_{armv7,mips}.h)

The replacement consists of
- avoiding casts to int16_t if inputs already are int16_t
- adding explicit cast to <type> if result is assigned to <type> (other than int or int32_t)
- minor cleanups like remove of unnecessary parantheses and style changes

BUG=3348, 3353
TESTED=locally on Mac and trybots
R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8544}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8544 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-01 19:51:31 +00:00
magjed@webrtc.org
7400e0b876 Revert "I420VideoFrame: Remove functions set_width, set_height, and ResetSize"
This reverts commit r8434.

Reason for revert: Introduced a race condition. If ViECaptureProcess() -> SwapCapturedAndDeliverFrameIfAvailable() is called twice without a call to OnIncomingCapturedFrame() in between (with both captured_frame_ and deliver_frame_ populated), an old frame will be delivered again, since captured_frame_->IsZeroSize() will never be true.

BUG=4352
TBR=perkj@webrtc.org, stefan@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8530}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8530 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 15:19:18 +00:00
tommi@webrtc.org
3985f0151a ProcessThread improvements.
* Added a way to notify a Module that it's been attached to a ProcessThread.
  The benefit of this is to give the module a way to wake up the thread
  when it needs work to happen on the worker thread, immediately.
  Today, module instances are typically registered with a process thread
  outside the control of the modules themselves.  I.e. they typically
  don't know about the process thread they're attached to.

* Improve ProcessThread's WakeUp algorithm to not call TimeUntilNextProcess
  when a WakeUp call is requested.  This is an optimization for the above
  case which avoids the module having to acquire a lock or do an interlocked
  operation before calling WakeUp(), which would ensure the module's
  TimeUntilNextProcess() implementation would return 0.

BUG=2822
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8527}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8527 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 13:37:25 +00:00
jmarusic@webrtc.org
abbdd520b0 AudioEncoder: documentation fix
Follow-up to https://webrtc-codereview.appspot.com/38279004/

R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8524}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8524 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 09:20:25 +00:00
aluebs@webrtc.org
3aca0b0b31 Add 48kHz support to Beamformer
Doing something similar for the band 16-24kHz to what is done for the band 8-16kHz
Tested for 32kHz sample rate and the output is bitexact with how it was before this CL.

BUG=webrtc:3146
R=andrew@webrtc.org, kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8522}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8522 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 21:53:00 +00:00
jmarusic@webrtc.org
b1f0de30be AudioEncoder: change Encode and EncodeInternal return type to void
After code cleanup done on issues:
https://webrtc-codereview.appspot.com/34259004/
https://webrtc-codereview.appspot.com/43409004/
https://webrtc-codereview.appspot.com/34309004/
https://webrtc-codereview.appspot.com/34309004/
https://webrtc-codereview.appspot.com/36209004/
https://webrtc-codereview.appspot.com/40899004/
https://webrtc-codereview.appspot.com/39279004/
https://webrtc-codereview.appspot.com/42099005/
and the similar work done for AudioEncoderDecoderIsacT,  methods AudioEncoder::Encode and AudioEncoder::EncodeInternal will always succeed. Therefore, there is no need for them to return bool value that represents success or failure.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8518}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8518 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 15:38:46 +00:00
kwiberg@webrtc.org
00b8f6b364 Use base/scoped_ptr.h; system_wrappers/interface/scoped_ptr.h is going away
BUG=
R=andrew@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8517}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8517 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:43:50 +00:00
kwiberg@webrtc.org
ac2d27d9ae Fix style violations in common_types.h and config.h
Mostly, it's about moving constructors and descructors to the .cc
files, so that they won't be inlined everywhere.

The reason this CL is so big is that a lot of code was using
common_types.h without declaring a dependency on webrtc_common, which
broke the build once common_types.h started to depend on
common_types.cc.

BUG=163
R=kjellander@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8516}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8516 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:01:28 +00:00
pbos@webrtc.org
891d48393e Wire up target_media_bitrate in VideoSendStream.
Also wires up target_enc_bitrate in WebRtcVideoEngine2.

BUG=1667,1788
R=mflodman@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8515}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8515 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 13:16:17 +00:00
mflodman@webrtc.org
9dd0ebc379 Remove the default RTP module.
This CL removes the default module owned by ViEEncoder, functionality in
the module to register default modules and the final changes in
rtp_rtcp_impl using default/child modules.

BUG=769
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8514}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8514 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 12:58:24 +00:00
henrik.lundin@webrtc.org
38d9cc51d5 Add back return statement after FATAL()
Some compilers do not accept that non-void functions end with FATAL()
instead of a return statement. This change adds back a few return
statements that were removed in r8463.

BUG=4344
R=phoglund@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8509}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8509 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 09:43:19 +00:00
magjed@webrtc.org
f09e7b8a4f WebRtcVideoFrame: DCHECK exclusive ownership for non-const pixel access
Add some const safety by DCHECK(HasOneRef()) in non-const GetYPlane. This CL also replaces all incorrect non-const calls with const calls for pixel data access in cricket::VideoFrame. It's easy to call the non-const version of e.g. GetYPlane by mistake, even if only const-access is needed. For example:
const scoped_ptr<cricket::VideoFrame> foo;
const uint8_t* y = foo->GetYPlane();
will actually call the non-const version of GetYPlane.

R=mflodman@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8507}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8507 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 14:50:19 +00:00
mflodman@webrtc.org
96abda0316 Removing FEC functionality from the default RTP module.
This CL removes the last default module methods used from ViEEncoder and
the default module itself will be removed in a separate CL.

BUG=769
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8505}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8505 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 13:50:51 +00:00
jmarusic@webrtc.org
9b969e167d AudioEncoderCopyRed: CHECK that encode call doesn't fail
Call to AudioEncoder::Encode fails only if fed bad input, so instead of handling failure, we can just CHECK.
There is also no need to handle case where size of encoded data is larger than allowed maximum, so we just CHECK.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8504}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8504 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 11:53:45 +00:00
andresp@webrtc.org
749c60217d Moved gypi to avoid presubmit warning about '..' when touching the files.
R=kjellander@webrtc.org,mflodman@webrtc.org
TBR=kjellander@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8503}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8503 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 11:50:44 +00:00
henrik.lundin@webrtc.org
c5558b7021 Remove AudioCodingModule's dependency on the Module interface
BUG=3520
COAUTHOR=kwiberg@webrtc.org
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8500}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8500 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 10:37:46 +00:00
henrik.lundin@webrtc.org
af82f75690 Let Add10MsData method do the encoding work as well
This change essentially makes the Process method a no-op. All it does
now is to return a stored value from the last encoding.

The purpose of this change is to forge the Add... and Process methods
into one and the same.

BUG=3520
COAUTHOR=kwiberg@webrtc.org
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8499}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8499 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 10:33:42 +00:00
henrik.lundin@webrtc.org
8d350d4bc4 Add new AcmGenericCodecTest and verify output from Encode function
The test specifically verifies that the output is as expected when
DTX/CNG is used.

COAUTHOR=kwiberg@webrtc.org
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8497}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8497 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 10:06:20 +00:00
henrik.lundin@webrtc.org
1eda4e3db6 Reland r8476 "Set decoder output frequency in AudioDecoder::Decode call"
This should be safe to land now that issue 4143 was resolved (in r8492).
This change effectively reverts 8488.

TBR=kwiberg@webrtc.org

Original commit message:
This CL changes the way the decoder sample rate is set and updated. In
practice, it only concerns the iSAC (float) codec.

One single iSAC decoder instance is used for both wideband and
super-wideband decoding, and the instance must be told to switch
output frequency if the payload type changes. This used to be done
through a call to UpdateDecoderSampleRate, but is now instead done in
the Decode call as an extra parameter.

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

Cr-Commit-Position: refs/heads/master@{#8496}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8496 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 10:03:19 +00:00
henrika@webrtc.org
0a3ff7976b New AudioTrack implementation now works on pre-Lollipop devices.
The previous version used an AudioTrack.write() implementation that required API Level 21. This is now fixed.

BUG=4339
R=magjed@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8494}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8494 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 09:28:20 +00:00
kwiberg@webrtc.org
d4dfba8ea1 iSAC Decode: Prevent Memcheck from complaining about uninitialized value
Without this patch, Valgrind's Memcheck was complaining that the test
for whether we should return -1 following the call to
WebRtcIsac_DecodeLb made a conditional branch or move based on the
value of numSamplesLB, which was uninitialized if WebRtcIsac_DecodeLb
failed.

However, as can be seen in the source, the control flow only depends
on the value of numSamplesLB if numDecodedBytesLB >= 0; i.e., if
WebRtcIsac_DecodeLb returned successfully, in which case numSamplesLB
is always initialized. The discrepancy is due to the fact that
Valgrind works on the generated machine code, which contains spurious
such dependencies. The generated code for this test:

  if ((numDecodedBytesLB < 0) || (numDecodedBytesLB > lenEncodedLBBytes) ||
      (numSamplesLB > MAX_FRAMESAMPLES)) {

looks like this:

  95:   0f bf 45 d6             movswl -0x2a(%rbp),%eax
  99:   3d c0 03 00 00          cmp    $0x3c0,%eax
  9e:   0f 8f 45 01 00 00       jg     1e9 <Decode+0x1e9>
  a4:   44 89 f0                mov    %r14d,%eax
  a7:   c1 e0 10                shl    $0x10,%eax
  aa:   0f 88 39 01 00 00       js     1e9 <Decode+0x1e9>
  b0:   41 0f bf ce             movswl %r14w,%ecx
  b4:   89 8d 98 e1 ff ff       mov    %ecx,-0x1e68(%rbp)
  ba:   41 0f bf c7             movswl %r15w,%eax
  be:   39 c1                   cmp    %eax,%ecx
  c0:   0f 8f 23 01 00 00       jg     1e9 <Decode+0x1e9>

Note how the compiler has seemingly ignored the C language's guarantee
that the arguments to || must be evaluated in left-to-right order, and
compares numSamplesLB (%eax) with MAX_FRAMESAMPLES (0x3c0, a.k.a. 960)
before the other two conditions! If the uninitialized value in
numSamplesLB happens to be greater than 960, we'll jump to
Decode+0x1e9 (where we'll return -1) without even looking at the other
two conditions. Has the compiler generated broken code?

Well, no. If numDecodedBytesLB is < 0 so that numSamplesLB is
uninitialized, we'll end up jumping to 1e9 whether that value is
greater than 960 or not; we'll just do it with different jump
instructions. This is entirely invisible as far as the C language is
concerned, but the dependency on the uninitialized value is visible at
the machine code level, which is why Memcheck complains.

This patch solves the problem by pragmatically initializing
numSamplesLB before the call even though it isn't necessary other than
for placating Memcheck.

BUG=4143
R=henrik.lundin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8492}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8492 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 08:09:28 +00:00
andresp@webrtc.org
87a592dc50 Fix dependencies of media_file module and move gypi into the right dir to
avoid submit warnings referencing files with '..'.

TBR=kjellander@webrtc.org
R=kjellander@webrtc.org
BUG=4185

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

Cr-Commit-Position: refs/heads/master@{#8491}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8491 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-25 03:18:44 +00:00
pbos@webrtc.org
49096de442 DCHECK send DataCountersUpdated for valid SSRCs.
Also updates RTPSender to not update RTX stats when RTX is disabled.

BUG=
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8489}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8489 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 22:38:22 +00:00
henrik.lundin@webrtc.org
903182bd8e Revert r8476 "Set decoder output frequency in AudioDecoder::Decode call"
This change uncovered issue 4143, evading the Memcheck suppression
since the signature is changed in the Decode function.

A fix for this is in the making; see
https://review.webrtc.org/36309004. This CL will be re-landed once the
fix is in place.

BUG=4143
TBR=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8488}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8488 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 21:18:44 +00:00
henrik.lundin@webrtc.org
b9c18d5643 Set decoder output frequency in AudioDecoder::Decode call
This CL changes the way the decoder sample rate is set and updated. In
practice, it only concerns the iSAC (float) codec.

One single iSAC decoder instance is used for both wideband and
super-wideband decoding, and the instance must be told to switch
output frequency if the payload type changes. This used to be done
through a call to UpdateDecoderSampleRate, but is now instead done in
the Decode call as an extra parameter.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8476}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8476 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 15:59:20 +00:00
jmarusic@webrtc.org
f88791d783 AudioEncoderCng: CHECK that encode calls don't fail
Calls to WebRtcCng_Encode, AudioEncoder::Encode and Vad::VoiceActivity fail only if fed bad input, so instead of handling failure, we can just CHECK. This also makes it unnecessary for methods AudioEncoderCng::EncodePassive and AudioEncoderCng::EncodeActive to return a value, so we can make them void.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8475}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8475 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 14:59:19 +00:00
sprang@webrtc.org
db8e605c16 Break out BWE test models to separate files
BUG=
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8471}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8471 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 13:24:56 +00:00
henrik.lundin@webrtc.org
ccd7c7c45d Remove more unused code in ACM
This CL removes a lot of unused code in AudioCodingModuleImpl and
ACMGenericCodec.

BUG=4228
COAUTHOR=kwiberg@webrtc.org
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8470}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8470 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 12:02:18 +00:00
jmarusic@webrtc.org
13ca5f6db2 AudioEncoderOpus: CHECK that encode call doesn't fail
WebRtcOpus_Encode will only ever fail if fed bad input, and since we don't do that, we can CHECK that it doesn't fail instead of having code that tries to handle failure.

R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8469}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8469 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-24 09:57:18 +00:00
pkasting@chromium.org
d324546ced Misc. cleanup split out of https://webrtc-codereview.appspot.com/37699004/ :
* Move constants into the files/functions that use them
* Declare variables in the narrowest scope possible
* Use correct (expected, actual) order for gtest macros
* Remove unused functions
* Untabify
* 80-column limit
* Avoid C-style casts
* Prefer true typed constants to "enum hack" constants
* Print size_t using the right format macro
* Shorten and simplify code
* Other random cleanup bits and style fixes

BUG=none
TEST=none
R=henrik.lundin@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8467}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8467 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 21:29:45 +00:00
kjellander@webrtc.org
722739108a Roll chromium_revision b0c3ed3..2c3ffb2 (316737:317530)
Includes GN changes from
https://webrtc-codereview.appspot.com/39249004/

Android changes for JNI were required due to
https://codereview.chromium.org/843103003

Other relevant changes:
* src/buildtools: 5c5e924..93b3d0a
* src/third_party/boringssl/src: d306f16..b180ee9
* src/third_party/icu: 4e3266f..2081ee6
* src/third_party/libvpx: 5cdd302..33bbffe
* src/third_party/usrsctp/usrsctplib: 190c8cb..13718c7
* src/tools/gyp: 4d7c139..3464008
* src/tools/swarming_client: bdad118..1b7bfec
Details: b0c3ed3..2c3ffb2/DEPS

Clang version was not updated in this roll.

R=dpranke@chromium.org, phoglund@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8466}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8466 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 19:09:22 +00:00
henrik.lundin@webrtc.org
829a6f4ac2 Merge ACMGenericCodec and ACMGenericCodecWrapper
ACMGenericCodecWrapper was the only remaining subclass of
ACMGenericCodec, and was the only class that was ever instantiated.
This CL merges the two, essentially keeping the function implementations
from ACMGenericCodecWrapper except where the base class's code was
invoked.

As it turns out, a lot of functions were never used, but in some cases
they were refernced in AudioCodingModuleImpl. In these cases, the
referencing code is commented out and marked FATAL(). This will be
further cleaned up in follow-up CLs.

BUG=4228
COAUTHOR=kwiberg@webrtc.org
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8463}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8463 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 16:33:49 +00:00
jmarusic@webrtc.org
f3a306b5bc g722: Enhanced documentation. Added CHECK.
R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8462}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8462 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 15:41:49 +00:00
jmarusic@webrtc.org
2acec4cc32 Enhanced documentation. Replaced DCHECK with CHECK.
R=kwiberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8461}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8461 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 15:28:14 +00:00
henrika@webrtc.org
962c62475e Refactoring WebRTC Java/JNI audio track in C++ and Java.
This CL is part II in a major refactoring effort. See https://webrtc-codereview.appspot.com/33969004 for part I.

- Removes unused code and old WEBRTC logging macros
- Now uses optimal sample rate and buffer size in Java AudioTrack (used hard-coded sample rate before)
- Makes code more inline with the implementation in Chrome
- Adds helper methods for JNI handling to improve readability
- Changes the threading model (high-prio audio thread now lives in Java-land and C++ only works as proxy)
- Simplified the delay estimate
- Adds basic thread checks
- Removes all locks in C++ land
- Removes all locks in Java
- Improves construction/destruction
- Additional cleanup

Tested using AppRTCDemo and WebRTCDemo APKs on N6, N5, N7, Samsung Galaxy S4 and
Samsung Galaxy S4 mini (which uses 44.1kHz as native sample rate).

BUG=NONE
R=magjed@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8460}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8460 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 11:54:41 +00:00
henrik.lundin@webrtc.org
fa58745445 Delete all codec-specific subclasses of ACMGenericCodec
They have all been replaced by AudioEncoder subclasses, accessed throgh
ACMGenericCodecWrapper objects. After this change, the only subclass of
ACMGenericCodec is ACMGenericCodecWrapper. (The two will be consolidated
in a future cl.)

This CL also deletes acm_opus_unittest.cc. This test file was already
replaced audio_encoder_opus_unittest.cc	in r8244.

BUG=4228
COAUTHOR=kwiberg@webrtc.org
R=tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8457}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8457 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 09:26:51 +00:00