Index: media/base/android/sdk_media_codec_bridge.cc |
diff --git a/media/base/android/sdk_media_codec_bridge.cc b/media/base/android/sdk_media_codec_bridge.cc |
index bde695598a358688b488fb831439b3f6b9cf7b00..5b1675737b76d80329d502ee81b06ffed81382b5 100644 |
--- a/media/base/android/sdk_media_codec_bridge.cc |
+++ b/media/base/android/sdk_media_codec_bridge.cc |
@@ -345,6 +345,23 @@ AudioCodecBridge::AudioCodecBridge(const std::string& mime) |
// audio encoding yet. |
: SdkMediaCodecBridge(mime, false, MEDIA_CODEC_DECODER) {} |
+bool AudioCodecBridge::ConfigureAndStart(const AudioDecoderConfig& config, |
+ bool play_audio, |
+ jobject media_crypto) { |
+ const int channel_count = |
+ ChannelLayoutToChannelCount(config.channel_layout()); |
+ const int64_t codec_delay_ns = base::Time::kNanosecondsPerSecond * |
+ config.codec_delay() / |
+ config.samples_per_second(); |
+ const int64_t seek_preroll_ns = |
+ 1000LL * config.seek_preroll().InMicroseconds(); |
+ |
+ return ConfigureAndStart(config.codec(), config.samples_per_second(), |
+ channel_count, config.extra_data().data(), |
+ config.extra_data().size(), codec_delay_ns, |
+ seek_preroll_ns, play_audio, media_crypto); |
+} |
+ |
bool AudioCodecBridge::ConfigureAndStart(const AudioCodec& codec, |
int sample_rate, |
int channel_count, |
@@ -354,7 +371,14 @@ bool AudioCodecBridge::ConfigureAndStart(const AudioCodec& codec, |
int64_t seek_preroll_ns, |
bool play_audio, |
jobject media_crypto) { |
- JNIEnv* env = AttachCurrentThread(); |
+ DVLOG(2) << __FUNCTION__ << ": " |
+ << " codec:" << GetCodecName(codec) |
+ << " samples_per_second:" << sample_rate |
+ << " channel_count:" << channel_count |
+ << " codec_delay_ns:" << codec_delay_ns |
+ << " seek_preroll_ns:" << seek_preroll_ns |
+ << " extra data size:" << extra_data_size |
+ << " play audio:" << play_audio << " media_crypto:" << media_crypto; |
xhwang
2016/02/12 10:15:04
nit: If you don't care about this overloaded versi
Tima Vaisburd
2016/02/13 01:31:24
I wanted to see that conversion to nanoseconds is
xhwang
2016/02/13 07:43:12
Acknowledged.
|
if (!media_codec()) |
return false; |
@@ -363,6 +387,8 @@ bool AudioCodecBridge::ConfigureAndStart(const AudioCodec& codec, |
if (codec_string.empty()) |
return false; |
+ JNIEnv* env = AttachCurrentThread(); |
+ |
ScopedJavaLocalRef<jstring> j_mime = |
ConvertUTF8ToJavaString(env, codec_string); |
ScopedJavaLocalRef<jobject> j_format(Java_MediaCodecBridge_createAudioFormat( |
@@ -477,7 +503,9 @@ bool AudioCodecBridge::ConfigureMediaFormat(jobject j_format, |
// TODO(qinmin): pass an extra variable to this function to determine |
// whether we need to call this. |
- Java_MediaCodecBridge_setFrameHasADTSHeader(env, j_format); |
+ if (0) { |
+ Java_MediaCodecBridge_setFrameHasADTSHeader(env, j_format); |
+ } |
xhwang
2016/02/12 10:15:04
Is this for local test only?
Tima Vaisburd
2016/02/13 01:31:24
Oops! Reverted.
|
break; |
} |
case kCodecOpus: { |