diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h --- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h +++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h @@ -175,11 +175,10 @@ PtsCorrectionContext mPtsContext; DurationMap mDurationMap; const bool mLowLatency; - AVDiscard mFrameDrop = AVDISCARD_DEFAULT; const Maybe mTrackingId; PerformanceRecorderMulti mPerformanceRecorder; // True if we're allocating shmem for ffmpeg decode buffer. Maybe> mIsUsingShmemBufferForDecode; diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp --- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp +++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp @@ -850,17 +850,10 @@ packet.dts = aSample->mTimecode.ToMicroseconds(); packet.pts = aSample->mTime.ToMicroseconds(); packet.flags = aSample->mKeyframe ? AV_PKT_FLAG_KEY : 0; packet.pos = aSample->mOffset; - mCodecContext->skip_frame = mFrameDrop; -#if MOZ_LOGGING - if (mFrameDrop == AVDISCARD_NONREF) { - FFMPEG_LOG("Frame skip AVDISCARD_NONREF"); - } -#endif - mTrackingId.apply([&](const auto& aId) { MediaInfoFlag flag = MediaInfoFlag::None; flag |= (aSample->mKeyframe ? MediaInfoFlag::KeyFrame : MediaInfoFlag::NonKeyFrame); flag |= (IsHardwareAccelerated() ? MediaInfoFlag::HardwareDecoding @@ -943,22 +936,10 @@ return MediaResult( NS_ERROR_DOM_MEDIA_DECODE_ERR, RESULT_DETAIL("avcodec_receive_frame error: %s", errStr)); } - if (mFrameDrop == AVDISCARD_NONREF) { - FFMPEG_LOG("Requested pts %" PRId64 " decoded frame pts %" PRId64, - packet.pts, GetFramePts(mFrame) + mFrame->pkt_duration); - // Switch back to default frame skip policy if we hit correct - // decode times. 5 ms treshold is taken from mpv project which - // use similar approach after seek (feed_packet() at f_decoder_wrapper.c). - if (packet.pts - 5000 <= GetFramePts(mFrame) + mFrame->pkt_duration) { - FFMPEG_LOG("Set frame drop to AVDISCARD_DEFAULT."); - mFrameDrop = AVDISCARD_DEFAULT; - } - } - UpdateDecodeTimes(decodeStart); decodeStart = TimeStamp::Now(); MediaResult rv; # ifdef MOZ_WAYLAND_USE_VAAPI @@ -1366,14 +1347,10 @@ FFMPEG_LOG("ProcessFlush()"); MOZ_ASSERT(mTaskQueue->IsOnCurrentThread()); mPtsContext.Reset(); mDurationMap.Clear(); mPerformanceRecorder.Record(std::numeric_limits::max()); - // Discard non-ref frames on HW accelerated backend to avoid decode artifacts. - if (IsHardwareAccelerated()) { - mFrameDrop = AVDISCARD_NONREF; - } return FFmpegDataDecoder::ProcessFlush(); } AVCodecID FFmpegVideoDecoder::GetCodecId( const nsACString& aMimeType) {