From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id AA24646412 for ; Wed, 17 May 2023 13:24:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 06FA068C118; Wed, 17 May 2023 16:23:59 +0300 (EEST) Received: from out203-205-221-240.mail.qq.com (out203-205-221-240.mail.qq.com [203.205.221.240]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8516A68BFDE for ; Wed, 17 May 2023 16:23:49 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684329819; bh=TRQOcW+IvHqcS/Z/TJH5njecbPY8z7OqjteZlun81ss=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=fUUKLa7urpJIKlc7pYrHVbSWXGOsplLu8bwQ9bAJSddzrdj+58eFQlmLr3N4BotP7 XetypsZO6xndnxNKroQZabe6zoi27TJkmtswz9F4ZgchCEUZ4TbfdqxXJSiPcfmfb5 kYkW55RenN6VWXG2e2bXftyTjIIRspUDXbU1I+MU= Received: from localhost.localdomain ([119.147.10.197]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 5E5A2C20; Wed, 17 May 2023 21:23:37 +0800 X-QQ-mid: xmsmtpt1684329818toycdh0qf Message-ID: X-QQ-XMAILINFO: MOAO5R/161EuWsv18r2y0Pr1pR/3WStKC+OF76+a3xjVu9FAD9yNxEQTiS9y2B 6ug+de9jtXyJ/gFpg5gxiDNZMCbK2K6D75r8GCJaOIbRKNSloCydcZ3lLeTpsfyQAYutF4rFRiyO XTOdCEOegKmUXx3Pj+MAQF63iDYPTRpfX6jy1zWpCew+Mrpokh5UmiljeMx3SynTx1ooi+TalYgy wpNYZ6GqJAk34x5hhQeC/WKPwN+KGVYK55+D09Iowr1XQFTrPdjSnz1JuetTIPAxTkVsEfy5Zw1X rgBcYIBXXqnjd0g4BSrJpGPd4XDz+SBUxLBOuMNDY8HuQE3ETWU9QLykaur0DYRPj/O2MubmeLZW 4VjZsNQL+qSgtd/VhpXbl3zhRcXUE47q4NiLsmet/ysjH6LZpiDzpq/Jkj9CwvqNpWZV2fs17GGT 46gWYQvRc6aP6ZdmgyyhRplNQ+pUyN3k69CEnuxqr6Y3XzjfVtxYcDH2R5V7CI2EKnJlG3/AyQnZ xP2tO607CQMkIPyg/FKehyy6H0lvSxC3SObhOQSrCBqxtofNe2BzKars10iUSI1uFeV6uag/llwY UCuiYXI7V2vxEuxExQEHHzK5BrdxUpBz46iBcCPOgE4D9MHxzlgoJaLJ4hIUTS2Rh7wmL+icUz+W ykRrb9KYeAva+rbsWEqdtdrkoGobyd+PHXkj1DSgM5TWjx/SgKX0PjnzLNlWPtOX+YMAvDl+mK9p enjK6Ad9KRX0Ey5l+1BatEsNAKY2Ex7u74PFqXuRjTn8kCKvtVdcunsU4ZJ063ZS5QCDbBdodn2d fGJbSVObe2RmgB4nzz4Vw80sEWaFYbQcG0SYeB2fJKPhqHgmx92AdpkZi8A1PhSMKXQkrBYKSABD lVlXxbpM+6TfRSEseiC1gy5wQ5sLJINHiZvaVq8Vn1wyht9Ko80r+pl5CoDnc3JBbnLxexfwocjO w0hY88nic8HR+uWt24/WBsx2nlyLbKdmPst/26hyqCDLqsDFNOZQ== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 May 2023 05:23:39 +0800 X-OQ-MSGID: <20230517212343.1874354-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230517212343.1874354-1-quinkblack@foxmail.com> References: <20230517212343.1874354-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/6] avcodec/cbs_h2645: add discarded_unit implementation for H.264 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 Cc: Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili --- libavcodec/cbs_h2645.c | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index 80e48829af..c616ac2202 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1213,6 +1213,58 @@ static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx, return 0; } +static int cbs_h264_discarded_nal_unit(CodedBitstreamContext *ctx, + const CodedBitstreamUnit *unit, + enum AVDiscard skip) +{ + H264RawNALUnitHeader *header; + H264RawSliceHeader *slice; + int slice_type_i, slice_type_b, slice_type_si; + + if (skip <= AVDISCARD_DEFAULT) + return 0; + + // keep non-VCL + if (unit->type != H264_NAL_SLICE && + unit->type != H264_NAL_IDR_SLICE && + unit->type != H264_NAL_AUXILIARY_SLICE) + return 0; + + if (skip >= AVDISCARD_ALL) + return 1; + + if (skip >= AVDISCARD_NONKEY && unit->type != H264_NAL_IDR_SLICE) + return 1; + + header = (H264RawNALUnitHeader *)unit->content; + if (!header) { + av_log(ctx->log_ctx, AV_LOG_WARNING, + "h264 nal unit header is null, missing decompose?\n"); + return 0; + } + + if (skip >= AVDISCARD_NONREF && !header->nal_ref_idc) + return 1; + + slice = (H264RawSliceHeader *)unit->content; + if (!slice) { + av_log(ctx->log_ctx, AV_LOG_WARNING, + "h264 slice header is null, missing decompose?\n"); + return 0; + } + + slice_type_i = slice->slice_type % 5 == 2; + slice_type_b = slice->slice_type % 5 == 1; + slice_type_si = slice->slice_type % 5 == 4; + + if (skip >= AVDISCARD_BIDIR && slice_type_b) + return 1; + if (skip >= AVDISCARD_NONINTRA && !slice_type_i && !slice_type_si) + return 1; + + return 0; +} + static int cbs_h2645_unit_requires_zero_byte(enum AVCodecID codec_id, CodedBitstreamUnitType type, int nal_unit_index) @@ -1441,6 +1493,7 @@ const CodedBitstreamType ff_cbs_type_h264 = { .split_fragment = &cbs_h2645_split_fragment, .read_unit = &cbs_h264_read_nal_unit, .write_unit = &cbs_h264_write_nal_unit, + .discarded_unit = &cbs_h264_discarded_nal_unit, .assemble_fragment = &cbs_h2645_assemble_fragment, .flush = &cbs_h264_flush, -- 2.25.1 _______________________________________________ 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".