From: Roman Arzumanyan <r.arzumanyan@visionlabs.ai> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: [FFmpeg-devel] [PATCH v2] avcodec/cuvidddec: Guess pixel format based on probed bit depth and chroma sampling Date: Fri, 2 Aug 2024 16:31:16 +0300 Message-ID: <CAJZRZVkuSRo=bBMprdUhzc=3oCPpn84HMSVmNhzPTrZ5JDKNpg@mail.gmail.com> (raw) [-- Attachment #1: Type: text/plain, Size: 186 bytes --] Hello world, Please find v2 of the previous patch attached. Both bit depth and chroma sampling (420 and 444 as supported by Nvdec) are now taken into account when selecting sw_pix_fmt. [-- Attachment #2: 0001-Guess-pixel-format-based-on-bit-depth-and-chroma-sam.patch --] [-- Type: text/x-patch, Size: 2415 bytes --] From a0c0c8497e75987ae771a466c9f0fce5c3ef106c Mon Sep 17 00:00:00 2001 From: Roman Arzumanyan <r.arzumanyan@visionlabs.ai> Date: Thu, 1 Aug 2024 16:35:22 +0300 Subject: [PATCH] Guess pixel format based on bit depth and chroma sampling: --- libavcodec/cuviddec.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c index f88ad75e88..a7185fecbf 100644 --- a/libavcodec/cuviddec.c +++ b/libavcodec/cuviddec.c @@ -834,22 +834,41 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx) int ret = 0; enum AVPixelFormat pix_fmts[3] = { AV_PIX_FMT_CUDA, - AV_PIX_FMT_NV12, + AV_PIX_FMT_NONE, AV_PIX_FMT_NONE }; int probed_width = avctx->coded_width ? avctx->coded_width : 1280; int probed_height = avctx->coded_height ? avctx->coded_height : 720; - int probed_bit_depth = 8; + int probed_bit_depth = 8, is_yuv444 = 0; const AVPixFmtDescriptor *probe_desc = av_pix_fmt_desc_get(avctx->pix_fmt); if (probe_desc && probe_desc->nb_components) probed_bit_depth = probe_desc->comp[0].depth; + if (probe_desc && !probe_desc->log2_chroma_w && !probe_desc->log2_chroma_h) + is_yuv444 = 1; + + // Pick pixel format based on bit depth and chroma sampling. + // Only 420 and 444 sampling are supported by HW so far, no need to check for 422. + switch (probed_bit_depth) { + case 8: + pix_fmts[1] = is_yuv444 ? AV_PIX_FMT_YUV444P : AV_PIX_FMT_NV12; + break; + case 10: + pix_fmts[1] = is_yuv444 ? AV_PIX_FMT_YUV444P10 : AV_PIX_FMT_P010; + break; + case 12: + pix_fmts[1] = is_yuv444 ? AV_PIX_FMT_YUV444P16 : AV_PIX_FMT_P016; + break; + default: + break; + } + ctx->pkt = avctx->internal->in_pkt; // Accelerated transcoding scenarios with 'ffmpeg' require that the // pix_fmt be set to AV_PIX_FMT_CUDA early. The sw_pix_fmt, and the // pix_fmt for non-accelerated transcoding, do not need to be correct - // but need to be set to something. We arbitrarily pick NV12. + // but need to be set to something. ret = ff_get_format(avctx, pix_fmts); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "ff_get_format failed: %d\n", ret); -- 2.34.1 [-- Attachment #3: Type: text/plain, Size: 251 bytes --] _______________________________________________ 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".
next reply other threads:[~2024-08-02 13:31 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-08-02 13:31 Roman Arzumanyan [this message] 2024-08-02 13:57 ` Timo Rothenpieler 2024-08-02 14:05 ` Roman Arzumanyan 2024-08-02 15:32 ` Timo Rothenpieler
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAJZRZVkuSRo=bBMprdUhzc=3oCPpn84HMSVmNhzPTrZ5JDKNpg@mail.gmail.com' \ --to=r.arzumanyan@visionlabs.ai \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git