From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 37D5F4CB21 for ; Tue, 27 May 2025 18:25:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 4ECE068D862; Tue, 27 May 2025 21:25:07 +0300 (EEST) Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id AA09F68CAB9 for ; Tue, 27 May 2025 21:25:00 +0300 (EEST) Received: by mail-oi1-f169.google.com with SMTP id 5614622812f47-3fbaa18b810so602823b6e.2 for ; Tue, 27 May 2025 11:25:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748370299; x=1748975099; darn=ffmpeg.org; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=/YwJM/iqrmLQgV6fiAJuRIrRJIyJXJHkQGovFCgDoeY=; b=d9BP5nA0mbH63mzB+TMJxahXLpbHghQ3paAPjylHkUwEYK0rOGcEph5rI94CarmVa5 ZzQ8l4NYv/fl6LuleMdV+9vE+AgAWXxx9ALt5GInL+WfogkV2VRmEKS+2Fx+JzAmLv0M 9U3MfG4XidJZQJR8uSz8UAE0sg7mpM/i8JgcZ5i51keDP/WyiNETpXKlmtNW/9PReC0l EijG7HuJsoig+KplKdEF2WKgrKysst6ZCjhgakCUorpyaPIVBs9exSA8IJX2Pv//iBVA kAI4mFxw5fEr0ob4Q1ypjuRRF3ienVbxBrbELDFPC7NB8s7XTTjcikRAEHLpk9KN9FHC aO9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748370299; x=1748975099; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/YwJM/iqrmLQgV6fiAJuRIrRJIyJXJHkQGovFCgDoeY=; b=dtTyglYhmZgqGpIib0oFFVsA2sxhXf0XMRa3l4YOdAo8vtAvQ5Gnv0mFi9tnEm3EyI 3/Z3To2JpaiTv2pmI5hLSkqDTKOECEAYT7vm0D12LwQQSjaeuDQZ4bE7qVkN58fV3t3Y Q/3tDoAYUWw6emqCEPB2brzbtStxG9nizJf3COMqf9UX0cjmVi9AucLUhzcL2Dy1MXzR xhY92eoSgNPL5EucpneL4waP2mQ9NcgCXlUQWK2e2oQYuK3Bl3X+gCBH/5oTY4+lhr/g zhEGj4KFcCAE4PHBRZWGAGW7vv5DXdhfQkpLzXZUokCivCHArbg/5//2k+0l+f3xgfyf BE3g== X-Gm-Message-State: AOJu0YzrU73DmZDOCzJrpTncRyUOl3KuUiIpReNG5vDKqnDnihZhFDXz Bk7PzHo6V73Psh1VdJ6iNJ78SS1QAACkY4s/Io2GNe50PGXbfW4Eo1taE3M7lkNU X-Gm-Gg: ASbGncuVvLKPVfUhAVeian1zUOZX6rT99K/tLyUZRjoX0bOqg9Y2VYGcUZSlc0VDfmg GV/QgXQbew83iUJXUfieiR7ubXslmMKM+rzbUv2d2vQNEuqSV5ZBanU+D5x6EfJNyyV++5oIcEJ zAJhPL/L1TCwtR9DIr+5uTiHGg1LzYstzkhOSSHULxzycT06yZycBTZPhX07r0rSd6Wyc+BLsMU 4JunH9FTlDKKh7bVk3wMMf/BMjYOzixK4iaLs3I1xs2Qy6JayX9tBJrmbBXbBpDrjUNEguGZT3K VEmMCDursWUUa8k15cN52djKUshLXjzMiccqAd1clrxq66SVdyQ3y1kDaxw= X-Google-Smtp-Source: AGHT+IFen3SAK541KknPkBcGKWsdn408hKzHN1S4Jevgaw8wd7isC+PoXBmHRO0YdXqWTIjR6/RP4w== X-Received: by 2002:a05:6808:8494:b0:406:59f3:73a1 with SMTP id 5614622812f47-40659f3785amr2083724b6e.18.1748370298502; Tue, 27 May 2025 11:24:58 -0700 (PDT) Received: from [192.168.1.30] ([97.125.40.144]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-609f2f58b94sm4856511eaf.17.2025.05.27.11.24.58 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 May 2025 11:24:58 -0700 (PDT) Message-ID: <90c31845-ef4f-4aa2-b87d-93800e1a469b@gmail.com> Date: Tue, 27 May 2025 13:24:57 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Ethan Halsall To: ffmpeg-devel@ffmpeg.org Content-Language: en-US Subject: [FFmpeg-devel] [PATCH] add yuv444p support to mcdeint X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Signed-off-by: Ethan Halsall --- libavfilter/vf_mcdeint.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/libavfilter/vf_mcdeint.c b/libavfilter/vf_mcdeint.c index 82048b51d0..11ad19f5cd 100644 --- a/libavfilter/vf_mcdeint.c +++ b/libavfilter/vf_mcdeint.c @@ -51,8 +51,10 @@ #include "libavutil/opt.h" #include "libavcodec/avcodec.h" +#include "libavutil/pixdesc.h" #include "avfilter.h" #include "filters.h" +#include "formats.h" #include "video.h" enum MCDeintMode { @@ -76,6 +78,7 @@ typedef struct MCDeintContext { AVPacket *pkt; AVFrame *frame_dec; AVCodecContext *enc_ctx; + const AVPixFmtDescriptor *pix_fmt_desc; } MCDeintContext; #define OFFSET(x) offsetof(MCDeintContext, x) @@ -99,6 +102,17 @@ static const AVOption mcdeint_options[] = { AVFILTER_DEFINE_CLASS(mcdeint); +static const enum AVPixelFormat pix_fmts[] = { + AV_PIX_FMT_YUV420P, + AV_PIX_FMT_YUV444P, + AV_PIX_FMT_NONE +}; + +static int query_formats(AVFilterContext *ctx) +{ + return ff_set_common_formats(ctx, ff_make_format_list(pix_fmts)); +} + static int config_props(AVFilterLink *inlink) { AVFilterContext *ctx = inlink->dst; @@ -122,13 +136,16 @@ static int config_props(AVFilterLink *inlink) mcdeint->enc_ctx = avcodec_alloc_context3(enc); if (!mcdeint->enc_ctx) return AVERROR(ENOMEM); + mcdeint->pix_fmt_desc = av_pix_fmt_desc_get(inlink->format); + if (!mcdeint->pix_fmt_desc) + return AVERROR(ENOMEM); enc_ctx = mcdeint->enc_ctx; enc_ctx->width = inlink->w; enc_ctx->height = inlink->h; enc_ctx->time_base = (AVRational){1,25}; // meaningless enc_ctx->gop_size = INT_MAX; enc_ctx->max_b_frames = 0; - enc_ctx->pix_fmt = AV_PIX_FMT_YUV420P; + enc_ctx->pix_fmt = inlink->format; enc_ctx->flags = AV_CODEC_FLAG_QSCALE | AV_CODEC_FLAG_LOW_DELAY | AV_CODEC_FLAG_RECON_FRAME; enc_ctx->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL; enc_ctx->global_quality = 1; @@ -201,8 +218,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpic) for (i = 0; i < 3; i++) { int is_chroma = !!i; - int w = AV_CEIL_RSHIFT(inlink->w, is_chroma); - int h = AV_CEIL_RSHIFT(inlink->h, is_chroma); + int w, h; + if (is_chroma) { + w = inlink->w >> mcdeint->pix_fmt_desc->log2_chroma_w; + h = inlink->h >> mcdeint->pix_fmt_desc->log2_chroma_h; + } else { + w = inlink->w; + h = inlink->h; + } int fils = frame_dec->linesize[i]; int srcs = inpic ->linesize[i]; int dsts = outpic ->linesize[i]; @@ -307,5 +330,6 @@ const FFFilter ff_vf_mcdeint = { .uninit = uninit, FILTER_INPUTS(mcdeint_inputs), FILTER_OUTPUTS(ff_video_default_filterpad), - FILTER_SINGLE_PIXFMT(AV_PIX_FMT_YUV420P), + FILTER_QUERY_FUNC(query_formats), }; + -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".