| 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 a7fe13bb4329c964ef67684fdc8534e15e3e655f..bbe4aa4a3b603d39b566a23d8fd2d67c5f4890de 100644
|
| --- a/media/base/android/sdk_media_codec_bridge.cc
|
| +++ b/media/base/android/sdk_media_codec_bridge.cc
|
| @@ -89,41 +89,41 @@ SdkMediaCodecBridge::SdkMediaCodecBridge(const std::string& mime,
|
| DCHECK(!mime.empty());
|
| ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime);
|
| j_media_codec_.Reset(Java_MediaCodecBridge_create(
|
| - env, j_mime.obj(), is_secure, direction, require_software_codec));
|
| + env, j_mime, is_secure, direction, require_software_codec));
|
| }
|
|
|
| SdkMediaCodecBridge::~SdkMediaCodecBridge() {
|
| JNIEnv* env = AttachCurrentThread();
|
| CHECK(env);
|
| if (j_media_codec_.obj())
|
| - Java_MediaCodecBridge_release(env, j_media_codec_.obj());
|
| + Java_MediaCodecBridge_release(env, j_media_codec_);
|
| }
|
|
|
| bool SdkMediaCodecBridge::Start() {
|
| JNIEnv* env = AttachCurrentThread();
|
| - return Java_MediaCodecBridge_start(env, j_media_codec_.obj());
|
| + return Java_MediaCodecBridge_start(env, j_media_codec_);
|
| }
|
|
|
| void SdkMediaCodecBridge::Stop() {
|
| JNIEnv* env = AttachCurrentThread();
|
| - Java_MediaCodecBridge_stop(env, j_media_codec_.obj());
|
| + Java_MediaCodecBridge_stop(env, j_media_codec_);
|
| }
|
|
|
| MediaCodecStatus SdkMediaCodecBridge::Flush() {
|
| JNIEnv* env = AttachCurrentThread();
|
| return static_cast<MediaCodecStatus>(
|
| - Java_MediaCodecBridge_flush(env, j_media_codec_.obj()));
|
| + Java_MediaCodecBridge_flush(env, j_media_codec_));
|
| }
|
|
|
| MediaCodecStatus SdkMediaCodecBridge::GetOutputSize(gfx::Size* size) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> result =
|
| - Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_.obj());
|
| + Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_);
|
| MediaCodecStatus status = static_cast<MediaCodecStatus>(
|
| - Java_GetOutputFormatResult_status(env, result.obj()));
|
| + Java_GetOutputFormatResult_status(env, result));
|
| if (status == MEDIA_CODEC_OK) {
|
| - size->SetSize(Java_GetOutputFormatResult_width(env, result.obj()),
|
| - Java_GetOutputFormatResult_height(env, result.obj()));
|
| + size->SetSize(Java_GetOutputFormatResult_width(env, result),
|
| + Java_GetOutputFormatResult_height(env, result));
|
| }
|
| return status;
|
| }
|
| @@ -132,11 +132,11 @@ MediaCodecStatus SdkMediaCodecBridge::GetOutputSamplingRate(
|
| int* sampling_rate) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> result =
|
| - Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_.obj());
|
| + Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_);
|
| MediaCodecStatus status = static_cast<MediaCodecStatus>(
|
| - Java_GetOutputFormatResult_status(env, result.obj()));
|
| + Java_GetOutputFormatResult_status(env, result));
|
| if (status == MEDIA_CODEC_OK)
|
| - *sampling_rate = Java_GetOutputFormatResult_sampleRate(env, result.obj());
|
| + *sampling_rate = Java_GetOutputFormatResult_sampleRate(env, result);
|
| return status;
|
| }
|
|
|
| @@ -144,11 +144,11 @@ MediaCodecStatus SdkMediaCodecBridge::GetOutputChannelCount(
|
| int* channel_count) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> result =
|
| - Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_.obj());
|
| + Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_);
|
| MediaCodecStatus status = static_cast<MediaCodecStatus>(
|
| - Java_GetOutputFormatResult_status(env, result.obj()));
|
| + Java_GetOutputFormatResult_status(env, result));
|
| if (status == MEDIA_CODEC_OK)
|
| - *channel_count = Java_GetOutputFormatResult_channelCount(env, result.obj());
|
| + *channel_count = Java_GetOutputFormatResult_channelCount(env, result);
|
| return status;
|
| }
|
|
|
| @@ -166,7 +166,7 @@ MediaCodecStatus SdkMediaCodecBridge::QueueInputBuffer(
|
| return MEDIA_CODEC_ERROR;
|
| JNIEnv* env = AttachCurrentThread();
|
| return static_cast<MediaCodecStatus>(Java_MediaCodecBridge_queueInputBuffer(
|
| - env, j_media_codec_.obj(), index, 0, data_size,
|
| + env, j_media_codec_, index, 0, data_size,
|
| presentation_time.InMicroseconds(), 0));
|
| }
|
|
|
| @@ -231,16 +231,15 @@ MediaCodecStatus SdkMediaCodecBridge::QueueSecureInputBuffer(
|
| return static_cast<MediaCodecStatus>(
|
| Java_MediaCodecBridge_queueSecureInputBuffer(
|
| env, j_media_codec_.obj(), index, 0, j_iv.obj(), j_key_id.obj(),
|
| - clear_array.obj(), cypher_array.obj(), new_subsamples_size,
|
| + clear_array, cypher_array, new_subsamples_size,
|
| presentation_time.InMicroseconds()));
|
| }
|
|
|
| void SdkMediaCodecBridge::QueueEOS(int input_buffer_index) {
|
| DVLOG(3) << __PRETTY_FUNCTION__ << ": " << input_buffer_index;
|
| JNIEnv* env = AttachCurrentThread();
|
| - Java_MediaCodecBridge_queueInputBuffer(env, j_media_codec_.obj(),
|
| - input_buffer_index, 0, 0, 0,
|
| - kBufferFlagEndOfStream);
|
| + Java_MediaCodecBridge_queueInputBuffer(
|
| + env, j_media_codec_, input_buffer_index, 0, 0, 0, kBufferFlagEndOfStream);
|
| }
|
|
|
| MediaCodecStatus SdkMediaCodecBridge::DequeueInputBuffer(
|
| @@ -248,10 +247,10 @@ MediaCodecStatus SdkMediaCodecBridge::DequeueInputBuffer(
|
| int* index) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> result = Java_MediaCodecBridge_dequeueInputBuffer(
|
| - env, j_media_codec_.obj(), timeout.InMicroseconds());
|
| - *index = Java_DequeueInputResult_index(env, result.obj());
|
| + env, j_media_codec_, timeout.InMicroseconds());
|
| + *index = Java_DequeueInputResult_index(env, result);
|
| MediaCodecStatus status = static_cast<MediaCodecStatus>(
|
| - Java_DequeueInputResult_status(env, result.obj()));
|
| + Java_DequeueInputResult_status(env, result));
|
| DVLOG(3) << __PRETTY_FUNCTION__ << ": status: " << status
|
| << ", index: " << *index;
|
| return status;
|
| @@ -267,25 +266,24 @@ MediaCodecStatus SdkMediaCodecBridge::DequeueOutputBuffer(
|
| bool* key_frame) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> result =
|
| - Java_MediaCodecBridge_dequeueOutputBuffer(env, j_media_codec_.obj(),
|
| + Java_MediaCodecBridge_dequeueOutputBuffer(env, j_media_codec_,
|
| timeout.InMicroseconds());
|
| - *index = Java_DequeueOutputResult_index(env, result.obj());
|
| - *offset = base::checked_cast<size_t>(
|
| - Java_DequeueOutputResult_offset(env, result.obj()));
|
| + *index = Java_DequeueOutputResult_index(env, result);
|
| + *offset =
|
| + base::checked_cast<size_t>(Java_DequeueOutputResult_offset(env, result));
|
| *size = base::checked_cast<size_t>(
|
| - Java_DequeueOutputResult_numBytes(env, result.obj()));
|
| + Java_DequeueOutputResult_numBytes(env, result));
|
| if (presentation_time) {
|
| *presentation_time = base::TimeDelta::FromMicroseconds(
|
| - Java_DequeueOutputResult_presentationTimeMicroseconds(env,
|
| - result.obj()));
|
| + Java_DequeueOutputResult_presentationTimeMicroseconds(env, result));
|
| }
|
| - int flags = Java_DequeueOutputResult_flags(env, result.obj());
|
| + int flags = Java_DequeueOutputResult_flags(env, result);
|
| if (end_of_stream)
|
| *end_of_stream = flags & kBufferFlagEndOfStream;
|
| if (key_frame)
|
| *key_frame = flags & kBufferFlagSyncFrame;
|
| MediaCodecStatus status = static_cast<MediaCodecStatus>(
|
| - Java_DequeueOutputResult_status(env, result.obj()));
|
| + Java_DequeueOutputResult_status(env, result));
|
| DVLOG(3) << __PRETTY_FUNCTION__ << ": status: " << status
|
| << ", index: " << *index << ", offset: " << *offset
|
| << ", size: " << *size << ", flags: " << flags;
|
| @@ -297,8 +295,7 @@ void SdkMediaCodecBridge::ReleaseOutputBuffer(int index, bool render) {
|
| JNIEnv* env = AttachCurrentThread();
|
| CHECK(env);
|
|
|
| - Java_MediaCodecBridge_releaseOutputBuffer(env, j_media_codec_.obj(), index,
|
| - render);
|
| + Java_MediaCodecBridge_releaseOutputBuffer(env, j_media_codec_, index, render);
|
| }
|
|
|
| MediaCodecStatus SdkMediaCodecBridge::GetInputBuffer(int input_buffer_index,
|
| @@ -306,7 +303,7 @@ MediaCodecStatus SdkMediaCodecBridge::GetInputBuffer(int input_buffer_index,
|
| size_t* capacity) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> j_buffer(Java_MediaCodecBridge_getInputBuffer(
|
| - env, j_media_codec_.obj(), input_buffer_index));
|
| + env, j_media_codec_, input_buffer_index));
|
| if (j_buffer.is_null())
|
| return MEDIA_CODEC_ERROR;
|
|
|
| @@ -323,7 +320,7 @@ MediaCodecStatus SdkMediaCodecBridge::GetOutputBufferAddress(
|
| size_t* capacity) {
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> j_buffer(
|
| - Java_MediaCodecBridge_getOutputBuffer(env, j_media_codec_.obj(), index));
|
| + Java_MediaCodecBridge_getOutputBuffer(env, j_media_codec_, index));
|
| if (j_buffer.is_null())
|
| return MEDIA_CODEC_ERROR;
|
| const size_t total_capacity = env->GetDirectBufferCapacity(j_buffer.obj());
|
| @@ -340,8 +337,8 @@ std::string SdkMediaCodecBridge::GetName() {
|
| return "";
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jstring> j_name =
|
| - Java_MediaCodecBridge_getName(env, j_media_codec_.obj());
|
| - return ConvertJavaStringToUTF8(env, j_name.obj());
|
| + Java_MediaCodecBridge_getName(env, j_media_codec_);
|
| + return ConvertJavaStringToUTF8(env, j_name);
|
| }
|
|
|
| // static
|
| @@ -416,7 +413,7 @@ bool AudioCodecBridge::ConfigureAndStart(const AudioCodec& codec,
|
| ScopedJavaLocalRef<jstring> j_mime =
|
| ConvertUTF8ToJavaString(env, codec_string);
|
| ScopedJavaLocalRef<jobject> j_format(Java_MediaCodecBridge_createAudioFormat(
|
| - env, j_mime.obj(), sample_rate, channel_count));
|
| + env, j_mime, sample_rate, channel_count));
|
| DCHECK(!j_format.is_null());
|
|
|
| if (!ConfigureMediaFormat(j_format.obj(), codec, extra_data, extra_data_size,
|
| @@ -424,7 +421,7 @@ bool AudioCodecBridge::ConfigureAndStart(const AudioCodec& codec,
|
| return false;
|
| }
|
|
|
| - if (!Java_MediaCodecBridge_configureAudio(env, media_codec(), j_format.obj(),
|
| + if (!Java_MediaCodecBridge_configureAudio(env, media_codec(), j_format,
|
| media_crypto, 0, play_audio)) {
|
| return false;
|
| }
|
| @@ -479,13 +476,12 @@ bool AudioCodecBridge::ConfigureMediaFormat(jobject j_format,
|
| ScopedJavaLocalRef<jbyteArray> first_header =
|
| base::android::ToJavaByteArray(env, current_pos, header_length[0]);
|
| Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0,
|
| - first_header.obj());
|
| + first_header);
|
| // The last header is codec header.
|
| ScopedJavaLocalRef<jbyteArray> last_header =
|
| base::android::ToJavaByteArray(env, extra_data + total_length,
|
| extra_data_size - total_length);
|
| - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1,
|
| - last_header.obj());
|
| + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, last_header);
|
| break;
|
| }
|
| case kCodecAAC: {
|
| @@ -523,8 +519,7 @@ bool AudioCodecBridge::ConfigureMediaFormat(jobject j_format,
|
| csd[1] = (frequency_index & 0x01) << 7 | channel_config << 3;
|
| ScopedJavaLocalRef<jbyteArray> byte_array =
|
| base::android::ToJavaByteArray(env, csd, kCsdLength);
|
| - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0,
|
| - byte_array.obj());
|
| + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, byte_array);
|
|
|
| // TODO(qinmin): pass an extra variable to this function to determine
|
| // whether we need to call this.
|
| @@ -541,19 +536,19 @@ bool AudioCodecBridge::ConfigureMediaFormat(jobject j_format,
|
| // csd0 - Opus Header
|
| ScopedJavaLocalRef<jbyteArray> csd0 =
|
| base::android::ToJavaByteArray(env, extra_data, extra_data_size);
|
| - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, csd0.obj());
|
| + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, csd0);
|
|
|
| // csd1 - Codec Delay
|
| ScopedJavaLocalRef<jbyteArray> csd1 = base::android::ToJavaByteArray(
|
| env, reinterpret_cast<const uint8_t*>(&codec_delay_ns),
|
| sizeof(int64_t));
|
| - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, csd1.obj());
|
| + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, csd1);
|
|
|
| // csd2 - Seek Preroll
|
| ScopedJavaLocalRef<jbyteArray> csd2 = base::android::ToJavaByteArray(
|
| env, reinterpret_cast<const uint8_t*>(&seek_preroll_ns),
|
| sizeof(int64_t));
|
| - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 2, csd2.obj());
|
| + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 2, csd2);
|
| break;
|
| }
|
| default:
|
| @@ -597,8 +592,8 @@ MediaCodecStatus AudioCodecBridge::PlayOutputBuffer(int index,
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jbyteArray> byte_array =
|
| base::android::ToJavaByteArray(env, buffer, numBytes);
|
| - *playback_pos = Java_MediaCodecBridge_playOutputBuffer(
|
| - env, media_codec(), byte_array.obj(), postpone);
|
| + *playback_pos = Java_MediaCodecBridge_playOutputBuffer(env, media_codec(),
|
| + byte_array, postpone);
|
| return status;
|
| }
|
|
|
| @@ -637,12 +632,12 @@ VideoCodecBridge* VideoCodecBridge::CreateDecoder(const VideoCodec& codec,
|
| JNIEnv* env = AttachCurrentThread();
|
| ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime);
|
| ScopedJavaLocalRef<jobject> j_format(
|
| - Java_MediaCodecBridge_createVideoDecoderFormat(
|
| - env, j_mime.obj(), size.width(), size.height()));
|
| + Java_MediaCodecBridge_createVideoDecoderFormat(env, j_mime, size.width(),
|
| + size.height()));
|
| DCHECK(!j_format.is_null());
|
| - if (!Java_MediaCodecBridge_configureVideo(
|
| - env, bridge->media_codec(), j_format.obj(), surface, media_crypto, 0,
|
| - allow_adaptive_playback)) {
|
| + if (!Java_MediaCodecBridge_configureVideo(env, bridge->media_codec(),
|
| + j_format, surface, media_crypto, 0,
|
| + allow_adaptive_playback)) {
|
| return nullptr;
|
| }
|
|
|
| @@ -672,11 +667,11 @@ VideoCodecBridge* VideoCodecBridge::CreateEncoder(const VideoCodec& codec,
|
| ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime);
|
| ScopedJavaLocalRef<jobject> j_format(
|
| Java_MediaCodecBridge_createVideoEncoderFormat(
|
| - env, j_mime.obj(), size.width(), size.height(), bit_rate, frame_rate,
|
| + env, j_mime, size.width(), size.height(), bit_rate, frame_rate,
|
| i_frame_interval, color_format));
|
| DCHECK(!j_format.is_null());
|
| if (!Java_MediaCodecBridge_configureVideo(env, bridge->media_codec(),
|
| - j_format.obj(), nullptr, nullptr,
|
| + j_format, nullptr, nullptr,
|
| kConfigureFlagEncode, true)) {
|
| return nullptr;
|
| }
|
|
|