From f741dff0425e2a1464bbc3c3ccb82c989cdcbec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20K=C3=B6nig?= Date: Fri, 19 Jan 2024 09:45:14 +0100 Subject: [PATCH] Cleanup of broken mpeg fix --- codec.c | 5 ++--- video.c | 26 ++++++++++++-------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/codec.c b/codec.c index de9a983..78cf75b 100644 --- a/codec.c +++ b/codec.c @@ -490,7 +490,7 @@ void CodecVideoDecode(VideoDecoder *decoder, const AVPacket *avpkt) { decoder->filter = 2; } } - if (decoder->filter == 2 && (frame->height != 720)) { // broken ZDF sends Interlaced flag + if (decoder->filter == 2) { push_filters(video_ctx, decoder->HwDecoder, frame); continue; } @@ -561,8 +561,7 @@ next_part: decoder->filter = 2; } } - if (frame->interlaced_frame && decoder->filter == 2 && - (frame->height != 720)) { // broken ZDF sends Interlaced flag + if (decoder->filter == 2)) { ret = push_filters(video_ctx, decoder->HwDecoder, frame); // av_frame_unref(frame); continue; diff --git a/video.c b/video.c index fdea40d..6266ba2 100644 --- a/video.c +++ b/video.c @@ -2691,8 +2691,6 @@ int push_filters(AVCodecContext *dec_ctx, CuvidDecoder *decoder, AVFrame *frame) while ((ret = av_buffersink_get_frame(decoder->buffersink_ctx, filt_frame)) >= 0) { filt_frame->pts /= 2; decoder->Interlaced = 0; - // printf("vaapideint video:new %#012" PRIx64 " old %#012" PRIx64 - // "\n",filt_frame->pts,frame->pts); CuvidSyncRenderFrame(decoder, dec_ctx, filt_frame); filt_frame = av_frame_alloc(); // get new frame } @@ -2981,18 +2979,18 @@ static enum AVPixelFormat Cuvid_get_format(CuvidDecoder *decoder, AVCodecContext CuvidUpdateOutput(decoder); // update aspect/scaling } -#ifdef YADIF - if (VideoDeinterlace[decoder->Resolution] == VideoDeinterlaceYadif) { - deint = 0; - ist->filter = 1; // init yadif_cuda - } else { - deint = 2; - ist->filter = 0; - } - CuvidMessage(2, "deint = %s\n", deint == 0 ? "Yadif" : "Cuda"); - if (av_opt_set_int(video_ctx->priv_data, "deint", deint, 0) < 0) { // adaptive - Fatal(_("codec: can't set option deint to video codec!\n")); - } +#if defined YADIF && defined CUVID + if (VideoDeinterlace[decoder->Resolution] == VideoDeinterlaceYadif) { + deint = 0; + ist->filter = 1; // init yadif_cuda + } else { + deint = 2; + ist->filter = 0; + } + CuvidMessage(2, "deint = %s\n", deint == 0 ? "Yadif" : "Cuda"); + if (av_opt_set_int(video_ctx->priv_data, "deint", deint, 0) < 0) { // adaptive + Fatal(_("codec: can't set option deint to video codec!\n")); + } #endif CuvidMessage(2, "GetFormat Init ok %dx%d\n", video_ctx->width, video_ctx->height);