From patchwork Wed May 17 21:23:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 41698 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1202617pzb; Wed, 17 May 2023 06:24:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6wUHclUhAYFWvQ+PEE90SPN97kTqQfVMqq5V7qrNget/WquQHZ9sWzkl2/GHbCLTB3oj+h X-Received: by 2002:a17:907:1b17:b0:94f:432f:243e with SMTP id mp23-20020a1709071b1700b0094f432f243emr36041418ejc.14.1684329879418; Wed, 17 May 2023 06:24:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684329879; cv=none; d=google.com; s=arc-20160816; b=Dwx+T/Z1cO8xmI3W7YyH23gS8FpybloqNWn15EYmIIm9sH1J3KFWwuUVQ/7vPvGT5T 0pnAMBqVk3dTdlnIt889K+hbyVVpZFDm5bofwsGU7/3jEpxlGB5k/72DDWq07jy/3zkG w3qWksl7fDV09OhcLgehLz5HvsHkqxszVcfJSevC17Ig4BWNDw3j1mRwzyJUsecO+0LH hYlSvipKUOjuxUmATGhKGroCw0/RWR9FjCbYa6M5kunu1Rh+7onJVU2RUu7s1QhzLVQs QgePDwWqwihK1LUZiU7FkUVEqFOgcLpVfgFX170BOFGUb9hC10eEPixVThfHCzb+PS81 Q76w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=1rWB+748NfPy4N+CJgksXIkvFs/rUWQWgDGN1zVRRek=; b=kqywmquoOquNDVO2Y0BndIHAoXhL9WjGxwU8cv2Mt9fqwlpM8cu7R7Bq8h8Kc0c5l2 DH3LYkfpZg5GDieNjRn4fKgJE+KQ7w1rnPm9MF23rWYRiRDClaKLdRRJWSqB8bsTvZxZ AsB+J0MUYUQtiygKMvqYcCyYaVSRSIS42larPA3p3G6vbrgbTFIrCOgRSMGIe3Ib9GmK h9aDwrGgx3Ys7jqcn/znUolN/ihcO5Hp+kofon/bVJtT0DfAtq9OQkaTVliHUPH7pHy3 oLxwBlzH1fma38kPI/URWcC5GpTCrrmY44RqztJgOFF4nQ6qf7em5mVESF1CUE34MlUH LZ7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=fUUKLa7u; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i5-20020a170906250500b0094f442c8a6dsi15968234ejb.291.2023.05.17.06.24.39; Wed, 17 May 2023 06:24:39 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=fUUKLa7u; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3BA8868C094; Wed, 17 May 2023 16:23:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IVlwr+oD8ViD 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,