| Index: webrtc/sdk/android/src/jni/videodecoderwrapper.cc
|
| diff --git a/webrtc/sdk/android/src/jni/videodecoderwrapper.cc b/webrtc/sdk/android/src/jni/videodecoderwrapper.cc
|
| index 536e8746d2adb2ac7be4a3d3e1597f186433114e..23a83141b3853a9ef3c47a002aff9e3d9224359f 100644
|
| --- a/webrtc/sdk/android/src/jni/videodecoderwrapper.cc
|
| +++ b/webrtc/sdk/android/src/jni/videodecoderwrapper.cc
|
| @@ -15,6 +15,7 @@
|
| #include "webrtc/modules/video_coding/utility/vp8_header_parser.h"
|
| #include "webrtc/modules/video_coding/utility/vp9_uncompressed_header_parser.h"
|
| #include "webrtc/rtc_base/logging.h"
|
| +#include "webrtc/rtc_base/timeutils.h"
|
| #include "webrtc/sdk/android/src/jni/classreferenceholder.h"
|
|
|
| namespace webrtc {
|
| @@ -127,7 +128,8 @@ int32_t VideoDecoderWrapper::Decode(
|
| ScopedLocalRefFrame local_ref_frame(jni);
|
|
|
| FrameExtraInfo frame_extra_info;
|
| - frame_extra_info.capture_time_ms = input_image.capture_time_ms_;
|
| + frame_extra_info.capture_time_ns =
|
| + input_image.capture_time_ms_ * rtc::kNumNanosecsPerMillisec;
|
| frame_extra_info.timestamp_rtp = input_image._timeStamp;
|
| frame_extra_info.qp =
|
| qp_parsing_enabled_ ? ParseQP(input_image) : rtc::Optional<uint8_t>();
|
| @@ -174,7 +176,6 @@ void VideoDecoderWrapper::OnDecodedFrame(JNIEnv* jni,
|
| jobject jqp) {
|
| const jlong capture_time_ns =
|
| jni->CallLongMethod(jframe, video_frame_get_timestamp_ns_method_);
|
| - const uint32_t capture_time_ms = capture_time_ns / 1000 / 1000;
|
| FrameExtraInfo frame_extra_info;
|
| do {
|
| if (frame_extra_infos_.empty()) {
|
| @@ -186,7 +187,7 @@ void VideoDecoderWrapper::OnDecodedFrame(JNIEnv* jni,
|
| frame_extra_infos_.pop_front();
|
| // If the decoder might drop frames so iterate through the queue until we
|
| // find a matching timestamp.
|
| - } while (frame_extra_info.capture_time_ms != capture_time_ms);
|
| + } while (frame_extra_info.capture_time_ns != capture_time_ns);
|
|
|
| VideoFrame frame = android_video_buffer_factory_.CreateFrame(
|
| jni, jframe, frame_extra_info.timestamp_rtp);
|
| @@ -237,12 +238,12 @@ jobject VideoDecoderWrapper::ConvertEncodedImageToJavaEncodedImage(
|
| if (image.qp_ != -1) {
|
| qp = jni->NewObject(*integer_class_, integer_constructor_, image.qp_);
|
| }
|
| - return jni->NewObject(*encoded_image_class_, encoded_image_constructor_,
|
| - buffer, static_cast<jint>(image._encodedWidth),
|
| - static_cast<jint>(image._encodedHeight),
|
| - static_cast<jlong>(image.capture_time_ms_), frame_type,
|
| - static_cast<jint>(image.rotation_),
|
| - image._completeFrame, qp);
|
| + return jni->NewObject(
|
| + *encoded_image_class_, encoded_image_constructor_, buffer,
|
| + static_cast<jint>(image._encodedWidth),
|
| + static_cast<jint>(image._encodedHeight),
|
| + static_cast<jlong>(image.capture_time_ms_ * rtc::kNumNanosecsPerMillisec),
|
| + frame_type, static_cast<jint>(image.rotation_), image._completeFrame, qp);
|
| }
|
|
|
| int32_t VideoDecoderWrapper::HandleReturnCode(JNIEnv* jni, jobject code) {
|
|
|