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; |
} |