| Index: media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
|
| diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
|
| index c229df48aa5dbc833e3fc2a11f91dd8c9ac56c66..c0e776d3554c54df9d6e56922eab7bc5a33cb9c3 100644
|
| --- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
|
| +++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
|
| @@ -77,7 +77,6 @@ class MediaCodecBridge {
|
| private long mLastPresentationTimeUs;
|
| private String mMime;
|
| private boolean mAdaptivePlaybackSupported;
|
| - private int mSampleRate;
|
|
|
| private static class DequeueInputResult {
|
| private final int mStatus;
|
| @@ -449,6 +448,12 @@ class MediaCodecBridge {
|
| }
|
|
|
| @CalledByNative
|
| + private int getOutputSamplingRate() {
|
| + MediaFormat format = mMediaCodec.getOutputFormat();
|
| + return format.getInteger(MediaFormat.KEY_SAMPLE_RATE);
|
| + }
|
| +
|
| + @CalledByNative
|
| private ByteBuffer getInputBuffer(int index) {
|
| if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
|
| return mMediaCodec.getInputBuffer(index);
|
| @@ -569,7 +574,7 @@ class MediaCodecBridge {
|
| MediaFormat newFormat = mMediaCodec.getOutputFormat();
|
| if (mAudioTrack != null && newFormat.containsKey(MediaFormat.KEY_SAMPLE_RATE)) {
|
| int newSampleRate = newFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE);
|
| - if (newSampleRate != mSampleRate && !reconfigureAudioTrack(newFormat)) {
|
| + if (mAudioTrack.setPlaybackRate(newSampleRate) != AudioTrack.SUCCESS) {
|
| status = MEDIA_CODEC_ERROR;
|
| }
|
| }
|
| @@ -694,14 +699,14 @@ class MediaCodecBridge {
|
| mAudioTrack.release();
|
| }
|
|
|
| - mSampleRate = format.getInteger(MediaFormat.KEY_SAMPLE_RATE);
|
| + int sampleRate = format.getInteger(MediaFormat.KEY_SAMPLE_RATE);
|
| int channelCount = format.getInteger(MediaFormat.KEY_CHANNEL_COUNT);
|
| int channelConfig = getAudioFormat(channelCount);
|
| // Using 16bit PCM for output. Keep this value in sync with
|
| // kBytesPerAudioOutputSample in media_codec_bridge.cc.
|
| - int minBufferSize = AudioTrack.getMinBufferSize(mSampleRate, channelConfig,
|
| + int minBufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig,
|
| AudioFormat.ENCODING_PCM_16BIT);
|
| - mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, mSampleRate, channelConfig,
|
| + mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig,
|
| AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM);
|
| if (mAudioTrack.getState() == AudioTrack.STATE_UNINITIALIZED) {
|
| mAudioTrack = null;
|
|
|