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 A848C45B26 for ; Wed, 17 May 2023 13:24:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5EA4268C0BA; Wed, 17 May 2023 16:23:56 +0300 (EEST) Received: from out203-205-221-205.mail.qq.com (out203-205-221-205.mail.qq.com [203.205.221.205]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 540CD68BFB7 for ; Wed, 17 May 2023 16:23:47 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684329819; bh=4N8jpIMH6mVzEd8OAG2wR5B75er6xzvf0fPo/9DDOQE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=KXis81LM0c6yR4I+ixPIyrP7w86HbROyv+mNnUGuxAIgEM0l7Zy8lJoPw1al4djuV pveD/c3EkC2u2HLn+Bw1vnfu/jCpOgR3BoIsUFRt4vxGzwG1RAebg23orgfr3v5tHN vdHXNHBv3AJoPbZI+DL2xj3IQxQp0VfIi8181HeU= 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: xmsmtpt1684329819t6oulu9ib Message-ID: X-QQ-XMAILINFO: ME9VhegEez81xlvzBFevIA4pEugVaxrEV+qIz7a0ZTuUE4RHbDI6kRmGnOJE6Y cIrcU6sWFTlczCk9Hf6Zt6+upNmYfcOB5Sv6Y2Fj77CSnPNDkSnDRSNCnAJ9hK+ErUjjq8NJGANU dbpKzF+1O5MYoqpHrUbJyVyTe3H0mRV3wVu9sexnd6vxNVMdmR2Yv35me10YH0uBi69OyhxMT9S6 3hk7sicA848Wt7G3QH/unxidvkJ4+WtLmmbYGaTWfOTASVs5cIZT0CgFRdMkHKmRxd7bo3VwOx+W 47daxkscEjUJq8u46gGrHxzYDh+U4/1WEVRO0d4xsp5R7KLJZdJeTM1xW7jW4ui5LHROCksay5YA wUBHegMLwd79Dzfu1gzMyzk6C0UQFM/+pJoLRv4T4MDerOQAnth7XXrukV+E7I6oS/70E45kcZ9+ uJgkjjzutVv4aqMJDM8rKFwH5bAkszra//PzNioPHGd9IwzRpTB5D0EptbGXf+IzNqDb51ipdyI3 Drood09ycqmldKrvdlp5+m1ie3Sz4U+nDAZp+bb/RdT7ptwI4+Nbm+a9MT0mMw/aUE3PktjsBseY eP68u3IpBmypYZrM3ac7oF+CPw1YJPR8Y5eNkKeOnQFOeKjUWT/2yMTtoG66XGOBsf6WOxaarNJT I0asv5bs0nqNYae7p7QJbMwNVr5T1mGokZr/U8JR0h3sOa1Etr0aET8zTSh/Y7wC9qh+q6bkI4fY rGP70Liyh5C5YUsz8zqPfNO5EYM16NADGGBjV6fSEMIbnneazhctfJrQeAGb5RfnWbdudbWyIriF 7hjQcXikfnwOAm1g6vhV/RaZnR6Xns6e0vqDuZTD03riN71G0K2AdDxVBqDd8M0dBp1YBHtJOIov yRvvtjlah9AcB068GWzMvlPtakN+xTgoF6YzNIEg1IN+fDapCV+GZpcjiH0yuTL+HRz8QGqjXp6M iHC4YMn2zGE1AoQ9hUMuuxW4bSQ8agCadcFAjTKlej7mg9hJ0qapowgW1lPvWDNdb8sCWVGORugf WKRXzF02wa8Se+YDAW From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 May 2023 05:23:40 +0800 X-OQ-MSGID: <20230517212343.1874354-3-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 3/6] avcodec/cbs_h2645: add discard_unit implementation for H.265 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 | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index c616ac2202..f2e59f1ac7 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1265,6 +1265,79 @@ static int cbs_h264_discarded_nal_unit(CodedBitstreamContext *ctx, return 0; } +static int cbs_h265_discarded_nal_unit(CodedBitstreamContext *ctx, + const CodedBitstreamUnit *unit, + enum AVDiscard skip) +{ + H265RawSliceHeader *slice; + + if (skip <= AVDISCARD_DEFAULT) + return 0; + + switch (unit->type) { + case HEVC_NAL_BLA_W_LP: + case HEVC_NAL_BLA_W_RADL: + case HEVC_NAL_BLA_N_LP: + case HEVC_NAL_IDR_W_RADL: + case HEVC_NAL_IDR_N_LP: + case HEVC_NAL_CRA_NUT: + // IRAP slice + if (skip < AVDISCARD_ALL) + return 0; + break; + + case HEVC_NAL_TRAIL_R: + case HEVC_NAL_TRAIL_N: + case HEVC_NAL_TSA_N: + case HEVC_NAL_TSA_R: + case HEVC_NAL_STSA_N: + case HEVC_NAL_STSA_R: + case HEVC_NAL_RADL_N: + case HEVC_NAL_RADL_R: + case HEVC_NAL_RASL_N: + case HEVC_NAL_RASL_R: + // Slice + break; + default: + // Don't discard non-slice nal. + return 0; + } + + if (skip >= AVDISCARD_NONKEY) + return 1; + + slice = (H265RawSliceHeader *)unit->content; + if (!slice) { + av_log(ctx->log_ctx, AV_LOG_WARNING, + "h265 slice header is null, missing decompose?\n"); + return 0; + } + + if (skip >= AVDISCARD_NONINTRA && slice->slice_type != HEVC_SLICE_I) + return 1; + if (skip >= AVDISCARD_BIDIR && slice->slice_type == HEVC_SLICE_B) + return 1; + + if (skip >= AVDISCARD_NONREF) { + switch (unit->type) { + case HEVC_NAL_TRAIL_N: + case HEVC_NAL_TSA_N: + case HEVC_NAL_STSA_N: + case HEVC_NAL_RADL_N: + case HEVC_NAL_RASL_N: + case HEVC_NAL_VCL_N10: + case HEVC_NAL_VCL_N12: + case HEVC_NAL_VCL_N14: + // non-ref + return 1; + default: + break; + } + } + + return 0; +} + static int cbs_h2645_unit_requires_zero_byte(enum AVCodecID codec_id, CodedBitstreamUnitType type, int nal_unit_index) @@ -1510,6 +1583,7 @@ const CodedBitstreamType ff_cbs_type_h265 = { .split_fragment = &cbs_h2645_split_fragment, .read_unit = &cbs_h265_read_nal_unit, .write_unit = &cbs_h265_write_nal_unit, + .discarded_unit = &cbs_h265_discarded_nal_unit, .assemble_fragment = &cbs_h2645_assemble_fragment, .flush = &cbs_h265_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".