diff --git a/sdk/android/src/jni/videodecoderwrapper.cc b/sdk/android/src/jni/videodecoderwrapper.cc index d5812cde40d..66ae28a0174 100644 --- a/sdk/android/src/jni/videodecoderwrapper.cc +++ b/sdk/android/src/jni/videodecoderwrapper.cc @@ -48,6 +48,8 @@ VideoDecoderWrapper::VideoDecoderWrapper(JNIEnv* jni, { decoder_thread_checker_.DetachFromThread(); + dump_output_ = nullptr; + enable_dump_ = true; } VideoDecoderWrapper::~VideoDecoderWrapper() = default; @@ -58,6 +60,16 @@ int32_t VideoDecoderWrapper::InitDecode(const VideoCodec* codec_settings, JNIEnv* jni = AttachCurrentThreadIfNeeded(); codec_settings_ = *codec_settings; number_of_cores_ = number_of_cores; + + if(enable_dump_ && codec_settings_.codecType == kVideoCodecH264) { + std::string outfile = "/sdcard/dump_decoder_" + std::to_string(reinterpret_cast(this)) + ".h264"; + dump_output_ = fopen(outfile.c_str(), "wb"); + if(dump_output_) { + RTC_LOG(LS_INFO) << "Open "< #include +#include #include "api/video_codecs/video_decoder.h" #include "common_video/h264/h264_bitstream_parser.h" #include "rtc_base/race_checker.h" @@ -108,6 +109,10 @@ class VideoDecoderWrapper : public VideoDecoder { rtc::CriticalSection frame_extra_infos_lock_; std::deque frame_extra_infos_ RTC_GUARDED_BY(frame_extra_infos_lock_); + + FILE* dump_output_; + bool enable_dump_; + }; /* If the j_decoder is a wrapped native decoder, unwrap it. If it is not,