| Index: talk/app/webrtc/java/jni/androidmediadecoder_jni.cc
|
| diff --git a/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc b/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc
|
| index dce5a22e8262ef3ee2329b09d85d63553714e294..a59a2e9606dbca371b6ec6761f6065861f6820c6 100644
|
| --- a/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc
|
| +++ b/talk/app/webrtc/java/jni/androidmediadecoder_jni.cc
|
| @@ -96,7 +96,7 @@ class MediaCodecVideoDecoder : public webrtc::VideoDecoder,
|
|
|
| int32_t InitDecodeOnCodecThread();
|
| int32_t ReleaseOnCodecThread();
|
| - int32_t DecodeOnCodecThread(const EncodedImage& inputImage);
|
| + int32_t DecodeOnCodecThread(const EncodedImage* inputImage);
|
| // Deliver any outputs pending in the MediaCodec to our |callback_| and return
|
| // true on success.
|
| bool DeliverPendingOutputs(JNIEnv* jni, int dequeue_timeout_us);
|
| @@ -489,11 +489,11 @@ int32_t MediaCodecVideoDecoder::Decode(
|
| }
|
|
|
| return codec_thread_->Invoke<int32_t>(Bind(
|
| - &MediaCodecVideoDecoder::DecodeOnCodecThread, this, inputImage));
|
| + &MediaCodecVideoDecoder::DecodeOnCodecThread, this, &inputImage));
|
| }
|
|
|
| int32_t MediaCodecVideoDecoder::DecodeOnCodecThread(
|
| - const EncodedImage& inputImage) {
|
| + const EncodedImage* inputImage) {
|
| CheckOnCodecThread();
|
| JNIEnv* jni = AttachCurrentThreadIfNeeded();
|
| ScopedLocalRefFrame local_ref_frame(jni);
|
| @@ -527,29 +527,29 @@ int32_t MediaCodecVideoDecoder::DecodeOnCodecThread(
|
| reinterpret_cast<uint8_t*>(jni->GetDirectBufferAddress(j_input_buffer));
|
| RTC_CHECK(buffer) << "Indirect buffer??";
|
| int64_t buffer_capacity = jni->GetDirectBufferCapacity(j_input_buffer);
|
| - if (CheckException(jni) || buffer_capacity < inputImage._length) {
|
| - ALOGE << "Input frame size "<< inputImage._length <<
|
| + if (CheckException(jni) || buffer_capacity < inputImage->_length) {
|
| + ALOGE << "Input frame size "<< inputImage->_length <<
|
| " is bigger than buffer size " << buffer_capacity;
|
| return ProcessHWErrorOnCodecThread();
|
| }
|
| jlong timestamp_us = (frames_received_ * 1000000) / codec_.maxFramerate;
|
| ALOGV("Decoder frame in # %d. Type: %d. Buffer # %d. TS: %lld. Size: %d",
|
| - frames_received_, inputImage._frameType, j_input_buffer_index,
|
| - timestamp_us / 1000, inputImage._length);
|
| - memcpy(buffer, inputImage._buffer, inputImage._length);
|
| + frames_received_, inputImage->_frameType, j_input_buffer_index,
|
| + timestamp_us / 1000, inputImage->_length);
|
| + memcpy(buffer, inputImage->_buffer, inputImage->_length);
|
|
|
| // Save input image timestamps for later output.
|
| frames_received_++;
|
| - current_bytes_ += inputImage._length;
|
| - timestamps_.push_back(inputImage._timeStamp);
|
| - ntp_times_ms_.push_back(inputImage.ntp_time_ms_);
|
| + current_bytes_ += inputImage->_length;
|
| + timestamps_.push_back(inputImage->_timeStamp);
|
| + ntp_times_ms_.push_back(inputImage->ntp_time_ms_);
|
| frame_rtc_times_ms_.push_back(GetCurrentTimeMs());
|
|
|
| // Feed input to decoder.
|
| bool success = jni->CallBooleanMethod(*j_media_codec_video_decoder_,
|
| j_queue_input_buffer_method_,
|
| j_input_buffer_index,
|
| - inputImage._length,
|
| + inputImage->_length,
|
| timestamp_us);
|
| if (CheckException(jni) || !success) {
|
| ALOGE << "queueInputBuffer error";
|
|
|