Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: webrtc/api/java/jni/androidmediadecoder_jni.cc

Issue 1888593004: Delete all use of tick_util.h. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 14 matching lines...) Expand all
25 #include "webrtc/api/java/jni/surfacetexturehelper_jni.h" 25 #include "webrtc/api/java/jni/surfacetexturehelper_jni.h"
26 #include "webrtc/base/bind.h" 26 #include "webrtc/base/bind.h"
27 #include "webrtc/base/checks.h" 27 #include "webrtc/base/checks.h"
28 #include "webrtc/base/logging.h" 28 #include "webrtc/base/logging.h"
29 #include "webrtc/base/scoped_ref_ptr.h" 29 #include "webrtc/base/scoped_ref_ptr.h"
30 #include "webrtc/base/thread.h" 30 #include "webrtc/base/thread.h"
31 #include "webrtc/base/timeutils.h" 31 #include "webrtc/base/timeutils.h"
32 #include "webrtc/common_video/include/i420_buffer_pool.h" 32 #include "webrtc/common_video/include/i420_buffer_pool.h"
33 #include "webrtc/modules/video_coding/include/video_codec_interface.h" 33 #include "webrtc/modules/video_coding/include/video_codec_interface.h"
34 #include "webrtc/system_wrappers/include/logcat_trace_context.h" 34 #include "webrtc/system_wrappers/include/logcat_trace_context.h"
35 #include "webrtc/system_wrappers/include/tick_util.h"
36 35
37 using rtc::Bind; 36 using rtc::Bind;
38 using rtc::Thread; 37 using rtc::Thread;
39 using rtc::ThreadManager; 38 using rtc::ThreadManager;
40 39
41 using webrtc::CodecSpecificInfo; 40 using webrtc::CodecSpecificInfo;
42 using webrtc::DecodedImageCallback; 41 using webrtc::DecodedImageCallback;
43 using webrtc::EncodedImage; 42 using webrtc::EncodedImage;
44 using webrtc::VideoFrame; 43 using webrtc::VideoFrame;
45 using webrtc::RTPFragmentationHeader; 44 using webrtc::RTPFragmentationHeader;
46 using webrtc::TickTime;
47 using webrtc::VideoCodec; 45 using webrtc::VideoCodec;
48 using webrtc::VideoCodecType; 46 using webrtc::VideoCodecType;
49 using webrtc::kVideoCodecH264; 47 using webrtc::kVideoCodecH264;
50 using webrtc::kVideoCodecVP8; 48 using webrtc::kVideoCodecVP8;
51 using webrtc::kVideoCodecVP9; 49 using webrtc::kVideoCodecVP9;
52 50
53 namespace webrtc_jni { 51 namespace webrtc_jni {
54 52
55 // Logging macros. 53 // Logging macros.
56 #define TAG_DECODER "MediaCodecVideoDecoder" 54 #define TAG_DECODER "MediaCodecVideoDecoder"
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 Bind(&MediaCodecVideoDecoder::InitDecodeOnCodecThread, this)); 310 Bind(&MediaCodecVideoDecoder::InitDecodeOnCodecThread, this));
313 } 311 }
314 312
315 void MediaCodecVideoDecoder::ResetVariables() { 313 void MediaCodecVideoDecoder::ResetVariables() {
316 CheckOnCodecThread(); 314 CheckOnCodecThread();
317 315
318 key_frame_required_ = true; 316 key_frame_required_ = true;
319 frames_received_ = 0; 317 frames_received_ = 0;
320 frames_decoded_ = 0; 318 frames_decoded_ = 0;
321 frames_decoded_logged_ = kMaxDecodedLogFrames; 319 frames_decoded_logged_ = kMaxDecodedLogFrames;
322 start_time_ms_ = GetCurrentTimeMs(); 320 start_time_ms_ = rtc::TimeMillis();
323 current_frames_ = 0; 321 current_frames_ = 0;
324 current_bytes_ = 0; 322 current_bytes_ = 0;
325 current_decoding_time_ms_ = 0; 323 current_decoding_time_ms_ = 0;
326 current_delay_time_ms_ = 0; 324 current_delay_time_ms_ = 0;
327 } 325 }
328 326
329 int32_t MediaCodecVideoDecoder::InitDecodeOnCodecThread() { 327 int32_t MediaCodecVideoDecoder::InitDecodeOnCodecThread() {
330 CheckOnCodecThread(); 328 CheckOnCodecThread();
331 JNIEnv* jni = AttachCurrentThreadIfNeeded(); 329 JNIEnv* jni = AttachCurrentThreadIfNeeded();
332 ScopedLocalRefFrame local_ref_frame(jni); 330 ScopedLocalRefFrame local_ref_frame(jni);
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 580
583 // Try to drain the decoder and wait until output is not too 581 // Try to drain the decoder and wait until output is not too
584 // much behind the input. 582 // much behind the input.
585 if (codecType_ == kVideoCodecH264 && 583 if (codecType_ == kVideoCodecH264 &&
586 frames_received_ > frames_decoded_ + max_pending_frames_) { 584 frames_received_ > frames_decoded_ + max_pending_frames_) {
587 // Print warning for H.264 only - for VP8/VP9 one frame delay is ok. 585 // Print warning for H.264 only - for VP8/VP9 one frame delay is ok.
588 ALOGW << "Decoder is too far behind. Try to drain. Received: " << 586 ALOGW << "Decoder is too far behind. Try to drain. Received: " <<
589 frames_received_ << ". Decoded: " << frames_decoded_; 587 frames_received_ << ". Decoded: " << frames_decoded_;
590 EnableFrameLogOnWarning(); 588 EnableFrameLogOnWarning();
591 } 589 }
592 const int64 drain_start = GetCurrentTimeMs(); 590 const int64 drain_start = rtc::TimeMillis();
593 while ((frames_received_ > frames_decoded_ + max_pending_frames_) && 591 while ((frames_received_ > frames_decoded_ + max_pending_frames_) &&
594 (GetCurrentTimeMs() - drain_start) < kMediaCodecTimeoutMs) { 592 (rtc::TimeMillis() - drain_start) < kMediaCodecTimeoutMs) {
595 if (!DeliverPendingOutputs(jni, kMediaCodecPollMs)) { 593 if (!DeliverPendingOutputs(jni, kMediaCodecPollMs)) {
596 ALOGE << "DeliverPendingOutputs error. Frames received: " << 594 ALOGE << "DeliverPendingOutputs error. Frames received: " <<
597 frames_received_ << ". Frames decoded: " << frames_decoded_; 595 frames_received_ << ". Frames decoded: " << frames_decoded_;
598 return ProcessHWErrorOnCodecThread(); 596 return ProcessHWErrorOnCodecThread();
599 } 597 }
600 } 598 }
601 if (frames_received_ > frames_decoded_ + max_pending_frames_) { 599 if (frames_received_ > frames_decoded_ + max_pending_frames_) {
602 ALOGE << "Output buffer dequeue timeout. Frames received: " << 600 ALOGE << "Output buffer dequeue timeout. Frames received: " <<
603 frames_received_ << ". Frames decoded: " << frames_decoded_; 601 frames_received_ << ". Frames decoded: " << frames_decoded_;
604 return ProcessHWErrorOnCodecThread(); 602 return ProcessHWErrorOnCodecThread();
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 ". TS: " << presentation_timestamps_ms << 835 ". TS: " << presentation_timestamps_ms <<
838 ". DecTime: " << (int)decode_time_ms << 836 ". DecTime: " << (int)decode_time_ms <<
839 ". DelayTime: " << (int)frame_delayed_ms; 837 ". DelayTime: " << (int)frame_delayed_ms;
840 } 838 }
841 839
842 // Calculate and print decoding statistics - every 3 seconds. 840 // Calculate and print decoding statistics - every 3 seconds.
843 frames_decoded_++; 841 frames_decoded_++;
844 current_frames_++; 842 current_frames_++;
845 current_decoding_time_ms_ += decode_time_ms; 843 current_decoding_time_ms_ += decode_time_ms;
846 current_delay_time_ms_ += frame_delayed_ms; 844 current_delay_time_ms_ += frame_delayed_ms;
847 int statistic_time_ms = GetCurrentTimeMs() - start_time_ms_; 845 int statistic_time_ms = rtc::TimeMillis() - start_time_ms_;
848 if (statistic_time_ms >= kMediaCodecStatisticsIntervalMs && 846 if (statistic_time_ms >= kMediaCodecStatisticsIntervalMs &&
849 current_frames_ > 0) { 847 current_frames_ > 0) {
850 int current_bitrate = current_bytes_ * 8 / statistic_time_ms; 848 int current_bitrate = current_bytes_ * 8 / statistic_time_ms;
851 int current_fps = 849 int current_fps =
852 (current_frames_ * 1000 + statistic_time_ms / 2) / statistic_time_ms; 850 (current_frames_ * 1000 + statistic_time_ms / 2) / statistic_time_ms;
853 ALOGD << "Frames decoded: " << frames_decoded_ << 851 ALOGD << "Frames decoded: " << frames_decoded_ <<
854 ". Received: " << frames_received_ << 852 ". Received: " << frames_received_ <<
855 ". Bitrate: " << current_bitrate << " kbps" << 853 ". Bitrate: " << current_bitrate << " kbps" <<
856 ". Fps: " << current_fps << 854 ". Fps: " << current_fps <<
857 ". DecTime: " << (current_decoding_time_ms_ / current_frames_) << 855 ". DecTime: " << (current_decoding_time_ms_ / current_frames_) <<
858 ". DelayTime: " << (current_delay_time_ms_ / current_frames_) << 856 ". DelayTime: " << (current_delay_time_ms_ / current_frames_) <<
859 " for last " << statistic_time_ms << " ms."; 857 " for last " << statistic_time_ms << " ms.";
860 start_time_ms_ = GetCurrentTimeMs(); 858 start_time_ms_ = rtc::TimeMillis();
861 current_frames_ = 0; 859 current_frames_ = 0;
862 current_bytes_ = 0; 860 current_bytes_ = 0;
863 current_decoding_time_ms_ = 0; 861 current_decoding_time_ms_ = 0;
864 current_delay_time_ms_ = 0; 862 current_delay_time_ms_ = 0;
865 } 863 }
866 864
867 // |.IsZeroSize())| returns true when a frame has been dropped. 865 // |.IsZeroSize())| returns true when a frame has been dropped.
868 if (!decoded_frame.IsZeroSize()) { 866 if (!decoded_frame.IsZeroSize()) {
869 // Callback - output decoded frame. 867 // Callback - output decoded frame.
870 const int32_t callback_status = 868 const int32_t callback_status =
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 webrtc::VideoDecoder* decoder) { 984 webrtc::VideoDecoder* decoder) {
987 ALOGD << "Destroy video decoder."; 985 ALOGD << "Destroy video decoder.";
988 delete decoder; 986 delete decoder;
989 } 987 }
990 988
991 const char* MediaCodecVideoDecoder::ImplementationName() const { 989 const char* MediaCodecVideoDecoder::ImplementationName() const {
992 return "MediaCodec"; 990 return "MediaCodec";
993 } 991 }
994 992
995 } // namespace webrtc_jni 993 } // namespace webrtc_jni
996
OLDNEW
« no previous file with comments | « webrtc/api/java/jni/androidmediacodeccommon.h ('k') | webrtc/api/java/jni/androidmediaencoder_jni.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698