From patchwork Fri Nov 17 17:24:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 44690 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a20:b0:181:818d:5e7f with SMTP id e32csp450752pzh; Fri, 17 Nov 2023 01:25:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IHGxf8/Upjb4Bdg8DMNqfPjveUsqOyXw1vteAkRTRNqjFi+pMIzsmy4HO8GZuooO5hG0R5T X-Received: by 2002:a05:6402:192:b0:543:dd0:a0d8 with SMTP id r18-20020a056402019200b005430dd0a0d8mr14331093edv.31.1700213141019; Fri, 17 Nov 2023 01:25:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700213141; cv=none; d=google.com; s=arc-20160816; b=QSZgj8hb9wXtbtvZonQ3I1Bx4Ae7Llae5wtQbak8PjI+ePk215AFnwCtklHvYo5KGQ cbXfIhiaHxktviPx1o2OGj49035r2oK0/K6J4tNxkF7AdN7g1YjkF/UrpD8rP+fFA5uQ yc2i+fqu5Lzv16XBQzTm84lUyJEBc0W28/feP8toHE3zw19h4PqDU+AL+JMDhiB5jWkf UYskePI0pQcPWDjv8LOm6iFlqUX+Qyd7INTGql6NkFDp4O9czgv5giCvzagFCiyEmJzM rsbtTna3oRj8pUxtBJmaIULctbsmSx1ym/Np6bTrrQAIPWKK+8FQUqq0UKl+nkxDp3+Y i4Rw== 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:date:to:from:message-id :dkim-signature:delivered-to; bh=kLPfbk7yKzhKNCVYTmtL4DdY3rEtDdsEgMmobl2fEdM=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=p3romfAP5weFjcl0FCnab2aU16BxcXQS0c6yL6NTsAus7P8YsSWAUVQjOb8vNXLdlK q4f2Xkz9g91Vv9E/cO+6wHYsfIMXeHA8+iag3bxYK02uXWuR1R8wpqE688QKBIw9F8h4 JE3tDXHZwvrFOGp8Nw1PZy/R1GP8Sw3WikFMqkpkaBCXeq8m4I2CkYqls4zDoQaiRSCV GQyPAGwAWLLMwxoNdKlO599mSeRDUjQ+oFwPjOs4Tgg8Vn8qsp/3FnMDPO48ruoJimD2 ZE9kX7h7EJepZbfa5/EzQ7twPJp/wkvoBPSiHOIUAy/vD6SxlPRE8bfQJH+MX30vc+x4 gDdQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=WlvFO8CG; 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 g26-20020a50d0da000000b0053e08a66bccsi778295edf.371.2023.11.17.01.25.40; Fri, 17 Nov 2023 01:25:40 -0800 (PST) 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=WlvFO8CG; 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 B4EC468CD26; Fri, 17 Nov 2023 11:25:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-87.mail.qq.com (out162-62-57-87.mail.qq.com [162.62.57.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0191668CCDC for ; Fri, 17 Nov 2023 11:24:56 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1700213085; bh=/6PgLCBuvjpceDHseb9tM7knBRzhCcIvMmBA9pCIsfA=; h=From:To:Cc:Subject:Date; b=WlvFO8CGY6LewB+P/sASQDxf+RBVV2womW0HfYY047iW5zqN7dYcsVEqAYvRIITfq Bsi3eSjQFRNvG6rrYUu0NSoUkcU4LD2IezhavnSBxvGhD7jTOyZDVTE2h2eHmZQ6X6 YENk3Jm+bYpdC13LSvuOPNt21/d605JI7pmNQxKQ= Received: from localhost.localdomain ([113.108.77.61]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 62C14297; Fri, 17 Nov 2023 17:24:44 +0800 X-QQ-mid: xmsmtpt1700213084t4xabax7r Message-ID: X-QQ-XMAILINFO: MmPNY57tR1XnJqt1Srw/MxdOUIj4wykL8m7BMrU/n4xroHKHGHhS957JYLHVHe T/dsVjNenaCv6gOi5d8C5IDFEcubAb5/76lvBKdD82x/9YkTH0275dB62HHXraTFbuATZYnkx8Ap XJbPMLBlcLVcDMSO1r0zXbDKycs02ISLiem+019h2w2R0fc55eqkozNgA4kEQkJYaCrpi4VxtUhM KVkzteV0ieXzTIYfQfCzpTcHyaSqZC3viISczDsan7ILzXA+eQ691Ccmuk+NSRiZgyuBu7bsyz5x Qdr0JWPelCIbcoMZOLWaVjyOuqBShCuJFxFBOiF7Kt/Jb+hhPSh51No4UDKwT6KFiy1us7GQivCl g7AU2P8LcX0JHSufQ3/QcTWNV4atM6/pbCrAIex2Y66ATeYmiNZ6OlRE/Vuw5ImdpuzOKPdWuPEV buU1iXykfLuOGuJChbIQd8wpu3yvbP3h6H24lxThlMOjaJk43WW3IQlbn/qXwplh7GFrgOIc1Ow5 4uqul3+zh/q6REOZW+i/wOzShIGGZi+biTcrh6qIlP3cioAvn3vCqrBFZobHzRCbj8/vPy6YBu1b jE2Y5znQAeysK75VD9w5ZjtlQNWvQvKaCVn8J2C/FOvMzWHhWFD1JJWNTObuwL1VKTq623CqL6N+ Tmoe8R+zHZALdqitXjF1nBRs0UQXfAucBydNR2TSNwnHoTHJpug4VPex5Uh5nh+7XCVhpuaaSJfw JQpDxZiZpylBc20pNtkvpo7p6jmnbCrcBwNFRaU12fTgE4zlc7uj1q03Ii9dFsfcb6mqL8U7p/IR +f0ZB/CubJnQemB/qjx+hyH6R8Aa7kO2VIxcU8VM52MshlIWSeXqWmbOVOWbSZ7DmhvNKDlPZD6R beJc3phRa0b1SjYETaA7Ia59wWuxPn62ZBTo6UAr+y+lnSsqsBd2/45tnirk9QkstINMKwqSsPd8 6uZucRN8noGsYMIG8izc2gAgqjXcxv X-QQ-XMRINFO: M/715EihBoGSf6IYSX1iLFg= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 Nov 2023 01:24:37 +0800 X-OQ-MSGID: <20231117172441.288316-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/5] avcodec/h264_mp4toannexb_bsf: refactor start_code_size handling 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: /i83ndcd9T2i From: Zhao Zhili start_code_size depends on whether PS comes from out-of-band or in-band. Make the code more readable. --- libavcodec/h264_mp4toannexb_bsf.c | 34 ++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c index d11be455c2..7dce1ae9b6 100644 --- a/libavcodec/h264_mp4toannexb_bsf.c +++ b/libavcodec/h264_mp4toannexb_bsf.c @@ -43,10 +43,26 @@ typedef struct H264BSFContext { int extradata_parsed; } H264BSFContext; +enum PsSource { + PS_OUT_OF_BAND = -1, + PS_NONE = 0, + PS_IN_BAND = 1, +}; + static void count_or_copy(uint8_t **out, uint64_t *out_size, - const uint8_t *in, int in_size, int ps, int copy) + const uint8_t *in, int in_size, enum PsSource ps, int copy) { - uint8_t start_code_size = ps < 0 ? 0 : *out_size == 0 || ps ? 4 : 3; + uint8_t start_code_size; + + if (ps == PS_OUT_OF_BAND) + /* start code already present in out-of-band ps data, so don't need to + * add it manually again + */ + start_code_size = 0; + else if (ps == PS_IN_BAND || *out_size == 0) + start_code_size = 4; + else + start_code_size = 3; if (copy) { memcpy(*out + start_code_size, in, in_size); @@ -202,6 +218,7 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) do { uint32_t nal_size = 0; + enum PsSource ps; /* possible overread ok due to padding */ for (int i = 0; i < s->length_size; i++) @@ -230,7 +247,7 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) if (!s->sps_size) { LOG_ONCE(ctx, AV_LOG_WARNING, "SPS not present in the stream, nor in AVCC, stream may be unreadable\n"); } else { - count_or_copy(&out, &out_size, s->sps, s->sps_size, -1, j); + count_or_copy(&out, &out_size, s->sps, s->sps_size, PS_OUT_OF_BAND, j); sps_seen = 1; } } @@ -246,19 +263,22 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) if (new_idr && unit_type == H264_NAL_IDR_SLICE && !sps_seen && !pps_seen) { if (ctx->par_out->extradata) count_or_copy(&out, &out_size, ctx->par_out->extradata, - ctx->par_out->extradata_size, -1, j); + ctx->par_out->extradata_size, PS_OUT_OF_BAND, j); new_idr = 0; /* if only SPS has been seen, also insert PPS */ } else if (new_idr && unit_type == H264_NAL_IDR_SLICE && sps_seen && !pps_seen) { if (!s->pps_size) { LOG_ONCE(ctx, AV_LOG_WARNING, "PPS not present in the stream, nor in AVCC, stream may be unreadable\n"); } else { - count_or_copy(&out, &out_size, s->pps, s->pps_size, -1, j); + count_or_copy(&out, &out_size, s->pps, s->pps_size, PS_OUT_OF_BAND, j); } } - count_or_copy(&out, &out_size, buf, nal_size, - unit_type == H264_NAL_SPS || unit_type == H264_NAL_PPS, j); + if (unit_type == H264_NAL_SPS || unit_type == H264_NAL_PPS) + ps = PS_IN_BAND; + else + ps = PS_NONE; + count_or_copy(&out, &out_size, buf, nal_size, ps, j); if (!new_idr && unit_type == H264_NAL_SLICE) { new_idr = 1; sps_seen = 0; From patchwork Fri Nov 17 17:24:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 44693 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a20:b0:181:818d:5e7f with SMTP id e32csp450693pzh; Fri, 17 Nov 2023 01:25:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHjRuL/nelT5KuBrwg9na1wDuJcGfhSTFNyfF41OE9nxJpJJqI+vIN04zrio3kKqNXVJTkE X-Received: by 2002:a05:6402:2022:b0:543:54da:1a37 with SMTP id ay2-20020a056402202200b0054354da1a37mr11991166edb.6.1700213130643; Fri, 17 Nov 2023 01:25:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700213130; cv=none; d=google.com; s=arc-20160816; b=JDNrxfnM4ZO8ssUbIJ1JDm0J3lhVPGwmwVCLlRh2EMM/TW0zD9Sa7znhZTLjbQ6K85 OplSJyF4s2Ki2ziRDNDd4K/mzaAwNkApzHJXOVt90bc2Top7YrzGAMOWU6BVTx3urtCn RNK6KRClCg/1M3YUMSswc8tP6fjfRqlNhBsvRawSz7AuqGQvwrSWjL/LWU5Bz68IJWxW CV0aMQW+qfKar5SaIaqpub/fKWwMDGQLKbLjOMTJVGCH2lQpXB8yQLXHt+9s8dIEr/Di okLViORtm1B9lM5dZnxYPndySnb6qrU8c7FPSs2a1w2ySDGUc9+f1AbudbEDqj5Xd3XP INaQ== 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=OhidYGB9Y6T4BnX7ZMSakS9e4mNw1QMcw4G/7/T6t7U=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=cNyAaAlwYM4xBS+yBIusdTsUQg/qLy246tV5RoMOk1FbRlxLbD+zGbltKKgk5rV2vV bPkN75ps6kFoats0C5ZAnxmFaEt3IcVUk4mU54x3MUm7tMkL/WhtG5tyJDOvwWJxbl0s 7mQ2wywssEFfApJ1d69sd4ALLWSO5eNESRRSzOGCY4YjoeOIuHqv4TjYM3FubL5XUmC1 mMTDER5vKpxzO/g2wWY+q77n9lfGgqJ+vMacfduedpyR324HBWp2eOxTYYuZMqj3sjM+ aqxvN4nxN+dSmBwa38mJtQhlQnzsMjBeFa+uIwW+RLc3FMHJmmVbsZ/A6/nqLT7SbH0D yhiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=F7XcE1pN; 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 r2-20020aa7cfc2000000b005435a064545si765252edy.195.2023.11.17.01.25.30; Fri, 17 Nov 2023 01:25:30 -0800 (PST) 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=F7XcE1pN; 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 9550A68CD29; Fri, 17 Nov 2023 11:25:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-210.mail.qq.com (out162-62-57-210.mail.qq.com [162.62.57.210]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0576368CCEB for ; Fri, 17 Nov 2023 11:24:56 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1700213085; bh=EA/8jVXkkvYpbA6+KYDnlUM5LVLZimC2+XNOn1YQpok=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=F7XcE1pNpTw5GcaDo55qYlqTqAVoBVQFOEKsPqE8Eo4bg3JJRchb+4lQC9gv224IG qEJeexoaBgDNtL9ihX5vpqOlZ8sF0YO3o95lgrftsaRfLMSEf8ldYunfqFs9Q18kE2 phvNlc9/aMVmk3v+23W4chiTg9qcetA1ELK+DI04= Received: from localhost.localdomain ([113.108.77.61]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 62C14297; Fri, 17 Nov 2023 17:24:44 +0800 X-QQ-mid: xmsmtpt1700213085t5y9hi82o Message-ID: X-QQ-XMAILINFO: MmpliBmRb3iC3IwL82etZq2d+ghe/PV6rt8M3SF1vhZcr4LzapTRdNXqWBqwf4 9tOzUARaI62eIvo3VXiK0hvFApiFQNjsYW3hDEplLmGsu0l0OlL4iWj023+OhmS0vDtSdM/0EnmA p5VjuF7aMQgKp0QFkHEnKL6GFpevtGPs0b3FJX15w2NZW93ozYFh84oavjZT5wRxg7xfNghM8jFg ROtF+VaASa38Q8hgOn3xytYv8JkMZCHLJitzFKA1Edq/mmN1y1eXJbQtQd6osJl1YSga0efbB+/Z 9RXMb06aXYy9io08Kq2Xdjvm6Nzq79gu8RjwNC9Z2x58ZHmjglysjRDsz6nYqwXXExgCXh4DuJJy xbUCNyJyqT4Nh+ldiYrnzDAGw/7dZXhQpaisz8ab/LA1tTNXaZ/Dg2tvl3vP+l4JLxFHhczHorLf ns+tcdjmIeEUE5ZDHaQbBzhVgg4e/uXqgIt9Z8VRvOdi/mOnCEZs0hPaL2uKcldfyz+JBVppXV9J /EJlQ7blPwa62TfZfeh0ARWFKSJ/5W8kxG4/9ZxYBJlb/KRb5Y8uTf/bnWeWUwkOYEpmgG933aRG PXluCAD4FrqFp3FwTYq5RLMtywJYIK7HqbAoKauFB3rVncQKY3Ymw2MNJwaSt/T2awOfNpKyowwn 4q0EQb/VYP+TncQbSSJQ0Bp3T0HTKaB1XaZ5LSu44BrYlLomo04nz0jwpbHlJPTMgLjrY2SuQIgv a5/4DCnRYdSAMj9SSnAVT5B3hKcDMVIyS/F46SxqwwsgBD6H3Zc2h59fc95gZoeQlosLtYcOgLQa sHhWZkGkK83ClwMn9Sk5ViTKFp612k3lYfwcsJaOuEKOJaajE9NJgzzrJRdhd79SmxHZZOv2p5bX YyZYgVumXKvd8DprXlPfjguBw4PtEDWnBj3xoidEQcrFje44CuC56yvdEATc+BJqCSTFdOiEO3qI s8QsDlk2zC0gV865Z1y+VOan3yj/Ki0Ucka+vdfZd0tRdp1fEKK9MiXFD4pW3Y X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 Nov 2023 01:24:38 +0800 X-OQ-MSGID: <20231117172441.288316-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231117172441.288316-1-quinkblack@foxmail.com> References: <20231117172441.288316-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/5] avcodec/h264_mp4toannexb_bsf: remove pass padding size as argument 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: GrZntsmORJMq From: Zhao Zhili It's a fixed value. There is no use case to change that. --- libavcodec/h264_mp4toannexb_bsf.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c index 7dce1ae9b6..846671abb6 100644 --- a/libavcodec/h264_mp4toannexb_bsf.c +++ b/libavcodec/h264_mp4toannexb_bsf.c @@ -78,7 +78,7 @@ static void count_or_copy(uint8_t **out, uint64_t *out_size, *out_size += start_code_size + in_size; } -static int h264_extradata_to_annexb(AVBSFContext *ctx, const int padding) +static int h264_extradata_to_annexb(AVBSFContext *ctx) { H264BSFContext *s = ctx->priv_data; GetByteContext ogb, *gb = &ogb; @@ -86,6 +86,7 @@ static int h264_extradata_to_annexb(AVBSFContext *ctx, const int padding) uint32_t total_size = 0; uint8_t *out = NULL, unit_nb, sps_done = 0; static const uint8_t nalu_header[4] = { 0, 0, 0, 1 }; + const int padding = AV_INPUT_BUFFER_PADDING_SIZE; int length_size, pps_offset = 0; bytestream2_init(gb, ctx->par_in->extradata, ctx->par_in->extradata_size); @@ -165,7 +166,7 @@ static int h264_mp4toannexb_init(AVBSFContext *ctx) av_log(ctx, AV_LOG_VERBOSE, "The input looks like it is Annex B already\n"); } else if (extra_size >= 7) { - ret = h264_extradata_to_annexb(ctx, AV_INPUT_BUFFER_PADDING_SIZE); + ret = h264_extradata_to_annexb(ctx); if (ret < 0) return ret; From patchwork Fri Nov 17 17:24: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: 44692 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a20:b0:181:818d:5e7f with SMTP id e32csp450635pzh; Fri, 17 Nov 2023 01:25:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IHsoyMztuj7PhY7YIaNDmyAvW8FaLfBFGu04e1uLHRShFWCXMYDmEXA5AepDN5hd+ldULKl X-Received: by 2002:a17:906:10d9:b0:9cb:b7d3:bcf0 with SMTP id v25-20020a17090610d900b009cbb7d3bcf0mr8398920ejv.1.1700213121537; Fri, 17 Nov 2023 01:25:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700213121; cv=none; d=google.com; s=arc-20160816; b=PK0fBe0a+i3HY8Q9zHKne8u5ku4msjLE5qkunUeEvXMQyAJnegrvcNURUrVDfDJwHy R8BaJiM9gH3oM1Ks2sGgWOH9btvo+qq8O5VQipk/xpRS5qLm2oPoGGgReYXgaI9fjEgj 7wASju+wifpPECF/8KtILo/Pxoo0VJ+q7hDV8UaVIVIgcYPQnfT7NebUCBlwPyC1k3pt aMW2iEasbPxtu2XRfYbD0q7PvzuBgI6TC3MyYI3S9w+ee/PqDepu/1aWVLNGaFaC0EhH K4eAaSmCG5Xi+8t4pz76uAaCz2KrRtuBY+ul9yHQ2OsiF9qUXMRl0O6y0B1vhdJLYidI ywMA== 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=oFXewZsMkZaLfdEVjIWircUgZWff0mGofCEi/9+QM9w=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=fgrAepA7lDJosR+21YCa1K0JllFtBgyAdB1HnT2MRWcf8o7gMcDm4Uezey0E00SWc4 CwOrOvknFX5knUSq7ovMt4V0tNIgr786aafOzD+kcAFVKnL6isyXA5Qz6Ng0YA1rR8Ro PaC6Q3TmZxZZEJEtbweVrTGJal7pzQMR0xXoyFOdyMEpxlywvzDdKQDYjzFgvMGRNPxj Xn82lXlSC2O5uyJpQD3iBFHlNsjJ5YlpBSwUTZZX6gjSxyO+IVM5TlCKGWh5bjq5IRpt s8I6bSthyKdr/iefy7CTT+OnLQJzbChLQKUMr/ISYAaXLk5/aP5sW/0dNsup7BgEFrTG E59Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=llDgVCX5; 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 n21-20020a170906089500b009b98debed92si674270eje.180.2023.11.17.01.25.21; Fri, 17 Nov 2023 01:25:21 -0800 (PST) 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=llDgVCX5; 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 6E35F68C778; Fri, 17 Nov 2023 11:25:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-87.mail.qq.com (out162-62-57-87.mail.qq.com [162.62.57.87]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F21B168CCC2 for ; Fri, 17 Nov 2023 11:24:56 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1700213086; bh=TJHyCOv2/+K7GpoQKoNvD2Vdmj/GBfKmFYZCFQRpVQw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=llDgVCX54UZUj/m6jaumVipMn7/9963m6AGhUSvb0SPMjAven72CduKNeWNa5d27v m7D9CAPYwfjz6oAULiECDvn+WrjJKGnz0ZEmHhM3hEmPcouxAE9o+vski1kcolH611 rwHyYQTPQmLNM8R5hbuYt1UhoD9cTEBowvptu2pg= Received: from localhost.localdomain ([113.108.77.61]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 62C14297; Fri, 17 Nov 2023 17:24:44 +0800 X-QQ-mid: xmsmtpt1700213085thaqrgb9e Message-ID: X-QQ-XMAILINFO: NvH2zBBgt3uTOjeXrXe+vyGya2/tdSRYCCZUebv7FN5izdQLzuKrGntRsLx1hD iiCQBOELseqcXD3QJ+NVCEuUkSFSDKNQuDBKshvF1e3ZgQ+zA8fZhwR9Pb7sHGO1uB13Mr7Oqxm1 ViMzihyT/HRwS8vQFBPIiQyxADtsoXRsbvdUBhgqMhZptQcm2F7PR6IHY6BHgXw+WAN2+LfAn/z6 8YrOWRcIqGTKBkiM5haLHtfEMWZlblcopVLLLjF1ODfntUPN6DZ8Bs2XTJNUNL0vZ7Xp0o01izIW WQk5ZzpIEzALEb2uYnwh4asn37lAjXXk/qoYS3JUfcxkTkdgBpGjMnxiRzwQFerRxDZzL8a4g0PR zRFqQaf/ZJzP+E0Hak8BVdRljhKJy9Va4rOdxjc7JRBh8dasb+9cr4cgWzAJpvkyjpaK3gDwqmOY kzOHZWYvwpWhYF1K+MnG3A37uxooeGjb9jM0PSHjNWnzfmwCUyXsN/6qSiSZ+cJmYUMFEblFzQw/ hli2SLWunsZBvyZEe+vYh6kmeyUw4jic9cGJWo1L8Pr3gcbJDQQcwFdOdUr+/aaUjCEg79LiY6zL Utf6cN0N15kti9qwTps6TgcYVeOJVM+yDKZeH/W3GZuiD3k5+q1EQfdAcsMc2aUbRj81Tx3ccPxO zZno/anH//OjsN0uOXKGw0qSpp+AcxpDR7P/2oC8H3ObicCIRsEDVtZAEGLK/y/qviusUk9NeEA1 QTeLveEJPTc/71BJShjU0w1ozWVDsiKszL+jMo+8cfgWLsok+9/0I4daN1bNtUdoPcLIDWldprc+ KEhOL0NFBMzrJXCynwz+WV+Ci48YvQnlCwV6lc6HxXLyhf0s1tdZaSfBV9+mfC5vDb2hwgt3/3PV 2lAUpIS1kfopyM71Pk3G2pXWIWNda9vjAQWPDNDP+EwMMtDwzh0F8SRKrHedyaQ9OD+YLYMo5KJ4 +5/QPwDfe2tv5BDDlHY+4n34V7upa/axdykvvJSc5FRkBudcr1pg== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 Nov 2023 01:24:39 +0800 X-OQ-MSGID: <20231117172441.288316-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231117172441.288316-1-quinkblack@foxmail.com> References: <20231117172441.288316-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 3/5] avcodec/h264_mp4toannexb_bsf: fix missing PS before IDR frames 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: lcuCnnQZPwDA From: Zhao Zhili If there is a single group of SPS/PPS before an IDR frame, but no SPS/PPS after that, we will miss the chance to reset idr_sps_seen/idr_pps_seen. No SPS/PPS are inserted afterwards. This patch saves in-band SPS/PPS and insert them before IDR frames when necessary. --- libavcodec/h264_mp4toannexb_bsf.c | 83 ++++++++++++++++++++++++++++--- tests/fate/h264.mak | 8 ++- 2 files changed, 84 insertions(+), 7 deletions(-) diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c index 846671abb6..4073c780c5 100644 --- a/libavcodec/h264_mp4toannexb_bsf.c +++ b/libavcodec/h264_mp4toannexb_bsf.c @@ -36,6 +36,8 @@ typedef struct H264BSFContext { uint8_t *pps; int sps_size; int pps_size; + unsigned sps_buf_size; + unsigned pps_buf_size; uint8_t length_size; uint8_t new_idr; uint8_t idr_sps_seen; @@ -130,16 +132,33 @@ pps: memset(out + total_size, 0, padding); if (pps_offset) { - s->sps = out; + uint8_t *sps; + s->sps_size = pps_offset; + sps = av_fast_realloc(s->sps, &s->sps_buf_size, s->sps_size); + if (!sps) { + av_free(out); + return AVERROR(ENOMEM); + } + s->sps = sps; + memcpy(s->sps, out, s->sps_size); } else { av_log(ctx, AV_LOG_WARNING, "Warning: SPS NALU missing or invalid. " "The resulting stream may not play.\n"); } if (pps_offset < total_size) { - s->pps = out + pps_offset; + uint8_t *pps; + s->pps_size = total_size - pps_offset; + pps = av_fast_realloc(s->pps, &s->pps_buf_size, s->pps_size); + if (!pps) { + av_freep(&s->sps); + av_free(out); + return AVERROR(ENOMEM); + } + s->pps = pps; + memcpy(s->pps, out + pps_offset, s->pps_size); } else { av_log(ctx, AV_LOG_WARNING, "Warning: PPS NALU missing or invalid. " @@ -153,6 +172,35 @@ pps: return length_size; } +static int h264_mp4toannexb_save_ps(uint8_t **dst, int *dst_size, + unsigned *dst_buf_size, + const uint8_t *nal, uint32_t nal_size, + int first) +{ + static const uint8_t nalu_header[4] = { 0, 0, 0, 1 }; + const int start_code_size = sizeof(nalu_header); + uint8_t *ptr; + uint32_t size; + + if (first) + size = 0; + else + size = *dst_size; + + ptr = av_fast_realloc(*dst, dst_buf_size, size + nal_size + start_code_size); + if (!ptr) + return AVERROR(ENOMEM); + + memcpy(ptr + size, nalu_header, start_code_size); + size += start_code_size; + memcpy(ptr + size, nal, nal_size); + size += nal_size; + + *dst = ptr; + *dst_size = size; + return 0; +} + static int h264_mp4toannexb_init(AVBSFContext *ctx) { H264BSFContext *s = ctx->priv_data; @@ -211,6 +259,9 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) if (j) \ av_log(__VA_ARGS__) for (int j = 0; j < 2; j++) { + int sps_count = 0; + int pps_count = 0; + buf = in->data; new_idr = s->new_idr; sps_seen = s->idr_sps_seen; @@ -241,8 +292,18 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) if (unit_type == H264_NAL_SPS) { sps_seen = new_idr = 1; + if (!j) { + h264_mp4toannexb_save_ps(&s->sps, &s->sps_size, &s->sps_buf_size, + buf, nal_size, !sps_count); + sps_count++; + } } else if (unit_type == H264_NAL_PPS) { pps_seen = new_idr = 1; + if (!j) { + h264_mp4toannexb_save_ps(&s->pps, &s->pps_size, &s->pps_buf_size, + buf, nal_size, !pps_count); + pps_count++; + } /* if SPS has not been seen yet, prepend the AVCC one to PPS */ if (!sps_seen) { if (!s->sps_size) { @@ -262,9 +323,10 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) /* prepend only to the first type 5 NAL unit of an IDR picture, if no sps/pps are already present */ if (new_idr && unit_type == H264_NAL_IDR_SLICE && !sps_seen && !pps_seen) { - if (ctx->par_out->extradata) - count_or_copy(&out, &out_size, ctx->par_out->extradata, - ctx->par_out->extradata_size, PS_OUT_OF_BAND, j); + if (s->sps_size) + count_or_copy(&out, &out_size, s->sps, s->sps_size, PS_OUT_OF_BAND, j); + if (s->pps_size) + count_or_copy(&out, &out_size, s->pps, s->pps_size, PS_OUT_OF_BAND, j); new_idr = 0; /* if only SPS has been seen, also insert PPS */ } else if (new_idr && unit_type == H264_NAL_IDR_SLICE && sps_seen && !pps_seen) { @@ -280,7 +342,7 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) else ps = PS_NONE; count_or_copy(&out, &out_size, buf, nal_size, ps, j); - if (!new_idr && unit_type == H264_NAL_SLICE) { + if (unit_type == H264_NAL_SLICE) { new_idr = 1; sps_seen = 0; pps_seen = 0; @@ -320,6 +382,14 @@ fail: return ret; } +static void h264_mp4toannexb_close(AVBSFContext *ctx) +{ + H264BSFContext *s = ctx->priv_data; + + av_freep(&s->sps); + av_freep(&s->pps); +} + static void h264_mp4toannexb_flush(AVBSFContext *ctx) { H264BSFContext *s = ctx->priv_data; @@ -339,5 +409,6 @@ const FFBitStreamFilter ff_h264_mp4toannexb_bsf = { .priv_data_size = sizeof(H264BSFContext), .init = h264_mp4toannexb_init, .filter = h264_mp4toannexb_filter, + .close = h264_mp4toannexb_close, .flush = h264_mp4toannexb_flush, }; diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 0ff3d6df55..c7e0d0a84e 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -224,7 +224,9 @@ FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-unescaped-extradata # this sample contains field-coded frames, with both fields in a single packet FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-twofields-packet -FATE_H264-$(call DEMMUX, MOV, H264, H264_MP4TOANNEXB_BSF) += fate-h264-bsf-mp4toannexb +FATE_H264-$(call DEMMUX, MOV, H264, H264_MP4TOANNEXB_BSF) += fate-h264-bsf-mp4toannexb \ + fate-h264-bsf-mp4toannexb-2 + FATE_H264-$(call FRAMECRC, MATROSKA, H264) += fate-h264-direct-bff FATE_H264-$(call FRAMECRC, FLV, H264, SCALE_FILTER) += fate-h264-brokensps-2580 FATE_H264-$(call FRAMECRC, MXF, H264, PCM_S24LE_DECODER SCALE_FILTER ARESAMPLE_FILTER) += fate-h264-xavc-4389 @@ -426,6 +428,10 @@ fate-h264-conformance-sva_nl1_b: CMD = framecrc -i $(TARGET_SAM fate-h264-conformance-sva_nl2_e: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/SVA_NL2_E.264 fate-h264-bsf-mp4toannexb: CMD = md5 -i $(TARGET_SAMPLES)/h264/interlaced_crop.mp4 -c:v copy -f h264 +# First IDR is prefixed by SPS/PPS +fate-h264-bsf-mp4toannexb-2: CMD = md5 -i $(TARGET_SAMPLES)/h264/ps_prefix_first_idr.mp4 -c:v copy -f h264 +fate-h264-bsf-mp4toannexb-2: CMP = oneline +fate-h264-bsf-mp4toannexb-2: REF = cffcfa6a2d0b58c9de1f5785f099f41d fate-h264-crop-to-container: CMD = framemd5 -i $(TARGET_SAMPLES)/h264/crop-to-container-dims-canon.mov fate-h264-direct-bff: CMD = framecrc -i $(TARGET_SAMPLES)/h264/direct-bff.mkv From patchwork Fri Nov 17 17:24:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 44691 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a20:b0:181:818d:5e7f with SMTP id e32csp450545pzh; Fri, 17 Nov 2023 01:25:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IFnoBxlqwYFUTu5/ORfMH+RVhSqAFoV+STMJ+XnzAeJyIjXbIcvUC3BYWmvsWB7W7AmuN6P X-Received: by 2002:a17:906:e12:b0:9a5:a0c6:9e8e with SMTP id l18-20020a1709060e1200b009a5a0c69e8emr12406364eji.31.1700213109838; Fri, 17 Nov 2023 01:25:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700213109; cv=none; d=google.com; s=arc-20160816; b=ntFpnW/rjqeo6uuCefesqXtyrXpB7L6Nxh5xX5WelNiG+ZJ+F9Mn+os56TjY/Q0JdN wGhdjk4zE3jriBiw9RkEvU78aRn/JtZ+Hgw6XcQFJVZcJ87oMjTlZNUEQe9MxVcrPKUY tdMiQlyoTmrJkk6VXFPdqDsIem8chlPcMvOES4q3bZ0XT06QFOwUs/hkY9ivmuRzV2p8 +H/pKJJ5wQIC3DCpo8SBvUINaRlTnKLmSqjIQZ5i0UHgcIw8A6OLBoZd5zqMhgW8JZS4 NI7lbczc7/uOrOcPhTdsbxDB6oUYam6E+SSsQ3LlObs/l2MFryeyCOTikGUF35TlQOdx w1BQ== 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=kVlZJfpf96eWgSXOWTywqr81JyzN9dini4k/1DWE82A=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=sVagRuCYXoSYrtK8TdkXsKwly6saCdudsKqxfMo+B5ve2az+0qwP8XfzyAZRgtgvyl PfC0cawAqur7BMETnikf+mOAnnG6lKiSnk0XtJCn7tC65VasVIrZOBwmAXkzT9b0E7F2 PqIHpGPZRCiAEYXWOGxnAemxPllfDld7OC9gq9p5nHlsg8YyUDtqW06J9/l4JWSYSQF2 2ptUxqzrjHZhRTyq5x0luAmlPI+bNuc1tfxzXCP9Em1tpqASl9qq7zClM2ZSCl1PSBFK SXgiP/MEt1q+MZp7l6+eTwTbo223GJUNHfIPCH4blABUuZOoEvnVU6tNiMIZSlk0wvEW quLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=Gg92r8iJ; 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 j21-20020a170906255500b009b65b665a89si712378ejb.788.2023.11.17.01.25.08; Fri, 17 Nov 2023 01:25:09 -0800 (PST) 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=Gg92r8iJ; 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 1DFC768CD07; Fri, 17 Nov 2023 11:25:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-173.mail.qq.com (out203-205-221-173.mail.qq.com [203.205.221.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 181FB68CCC0 for ; Fri, 17 Nov 2023 11:24:55 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1700213086; bh=8w3SvwkBmBI+AAzqdsMcRHeMC8zIA8uKTvLi5L9bTy0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Gg92r8iJGAGwU1QpwLmr0CUr4t8aOGhuCWoWlNS/gz+A4iEBmpwCqvCPt2IlrebKj a4f+jYXFYdJVFFH7hV3dsg7SOWBh44hsU/EEUl103XOCcjnSg4TmtlHnNsV5tzi+q1 zk/FHN8cYRnL6Uh1OzaErOK+DOPllAu+s7bw1dzs= Received: from localhost.localdomain ([113.108.77.61]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 62C14297; Fri, 17 Nov 2023 17:24:44 +0800 X-QQ-mid: xmsmtpt1700213086td2igmpxa Message-ID: X-QQ-XMAILINFO: OakVxA/3u/8RIy3+QUV56RUdAT3ekJt9J+7E3MZfYEvV6BL15DhP3809E3rPRY hZcSkH+VPb9n2lGBHmML8Cnd3SMoi7LjRqqruQkne/ttuSoPBFagkBK76Yc23LfhY2UlM8PvdXu7 UHWn4Y+MIx0U0NhvxGRa2e8uT1188wCuqQgqE2/+CaByh3Ha0kjX6NhrYEgnMNObWG65rMJ6yIab wf32SwVUjx8QD83OT2qs/hT/Jxf6FehYX4ksFUdDRYl9EQ5xA+UTqSmk38a1r6eokeLn2Pll6SAB uh3HxrznZVZ+8Rxusl50XBrNG0uWIVdZA7FhVXWZddKTIOAi57QoDTrl8wTc+ij2csUfar3/U+1W 0MuVkO8WqjcLJm4eelDn6GzBZGOczrXI8rWYfls9fyM8OaFCzq5ol4/HAiRF8FE/weTzGnezP0G2 ffUmaJgIit4Mffq1tMKX8QOIJOBWv1bZK2k8YUoHB+cPHne7HMpWYTCZ/SBpNGrqLvKk5V3kh0E5 rY9tV0bUDVk0ipLRhkXZ38SSpaZ43x8T3urkmOCafdx1eT2mjskH3RI+ZK9jtyHozNFPiu6FXvws pR3sGcI66vTxnfXyedPYxlozjQt2PUKThAAWb+L5YQ/qEEBlNfdjD8xT6LPG0LFLuIiHVSh37c9K 5CQ8cmc+tXRWPP0sHlsuAQtC88ZOjWfM3IUZL3uuuSY8GzeVnszvaxDeKRxRTjpX0UpZt0+fqdov hjGlq3/b6paI2GZARKmY3cRF6rbyLps9k2NUpLTCxyp3mJoNCO3IpRk7S0H4jeVk4MKI8DgCRfwt 1/1v4Xu6kneGp6womGxYjbvifLuP3eg0AUpk+xb+EPcUfF3824JccbiZQpoiim9aJzp7R6OCTGHw ibQtoaELLZAEBxHxGZeS/b1X7/fF6lRc8x6xRV6Gyy2V1k5C1wk46PlZM8uqXzPKXUIv64ccy12Q J7Y+3EX+krneq6wmyZ3AqgcW0M9mmDSAnPJUcb0Infckpajklnqg== X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 Nov 2023 01:24:40 +0800 X-OQ-MSGID: <20231117172441.288316-4-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231117172441.288316-1-quinkblack@foxmail.com> References: <20231117172441.288316-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 4/5] avcodec/h264_mp4toannexb_bsf: process new extradata 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: PBOSggG5XtqF From: Zhao Zhili For fate-h264_mp4toannexb_ticket5927 and fate-h264_mp4toannexb_ticket5927_2, they work by accident previously. The sample file has two 'avc1' entries, and video samples use the second one. It means packets should be decoded with new extradata in side data. Before this patch, only extradata was kept in the output, new extradata has been dropped. The output can be decoded because the two extradata are almost the same, except level indication. This patch fixed the issue, and add another fate test. --- libavcodec/h264_mp4toannexb_bsf.c | 37 ++++++++++++------- tests/fate/h264.mak | 4 +- .../fate/h264-bsf-mp4toannexb-new-extradata | 9 +++++ tests/ref/fate/h264_mp4toannexb_ticket5927 | 8 ++-- tests/ref/fate/h264_mp4toannexb_ticket5927_2 | 8 ++-- 5 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 tests/ref/fate/h264-bsf-mp4toannexb-new-extradata diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c index 4073c780c5..120241c892 100644 --- a/libavcodec/h264_mp4toannexb_bsf.c +++ b/libavcodec/h264_mp4toannexb_bsf.c @@ -80,7 +80,8 @@ static void count_or_copy(uint8_t **out, uint64_t *out_size, *out_size += start_code_size + in_size; } -static int h264_extradata_to_annexb(AVBSFContext *ctx) +static int h264_extradata_to_annexb(AVBSFContext *ctx, + uint8_t *extradata, int extradata_size) { H264BSFContext *s = ctx->priv_data; GetByteContext ogb, *gb = &ogb; @@ -91,7 +92,7 @@ static int h264_extradata_to_annexb(AVBSFContext *ctx) const int padding = AV_INPUT_BUFFER_PADDING_SIZE; int length_size, pps_offset = 0; - bytestream2_init(gb, ctx->par_in->extradata, ctx->par_in->extradata_size); + bytestream2_init(gb, extradata, extradata_size); bytestream2_skipu(gb, 4); @@ -169,7 +170,13 @@ pps: ctx->par_out->extradata = out; ctx->par_out->extradata_size = total_size; - return length_size; + s->length_size = length_size; + s->new_idr = 1; + s->idr_sps_seen = 0; + s->idr_pps_seen = 0; + s->extradata_parsed = 1; + + return 0; } static int h264_mp4toannexb_save_ps(uint8_t **dst, int *dst_size, @@ -203,9 +210,7 @@ static int h264_mp4toannexb_save_ps(uint8_t **dst, int *dst_size, static int h264_mp4toannexb_init(AVBSFContext *ctx) { - H264BSFContext *s = ctx->priv_data; int extra_size = ctx->par_in->extradata_size; - int ret; /* retrieve sps and pps NAL units from extradata */ if (!extra_size || @@ -214,15 +219,9 @@ static int h264_mp4toannexb_init(AVBSFContext *ctx) av_log(ctx, AV_LOG_VERBOSE, "The input looks like it is Annex B already\n"); } else if (extra_size >= 7) { - ret = h264_extradata_to_annexb(ctx); - if (ret < 0) - return ret; - - s->length_size = ret; - s->new_idr = 1; - s->idr_sps_seen = 0; - s->idr_pps_seen = 0; - s->extradata_parsed = 1; + return h264_extradata_to_annexb(ctx, + ctx->par_in->extradata, + ctx->par_in->extradata_size); } else { av_log(ctx, AV_LOG_ERROR, "Invalid extradata size: %d\n", extra_size); return AVERROR_INVALIDDATA; @@ -241,11 +240,21 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, AVPacket *opkt) uint8_t *out; uint64_t out_size; int ret; + size_t extradata_size; + uint8_t *extradata; ret = ff_bsf_get_packet(ctx, &in); if (ret < 0) return ret; + extradata = av_packet_get_side_data(in, AV_PKT_DATA_NEW_EXTRADATA, + &extradata_size); + if (extradata) { + ret = h264_extradata_to_annexb(ctx, extradata, extradata_size); + if (ret < 0) + goto fail; + } + /* nothing to filter */ if (!s->extradata_parsed) { av_packet_move_ref(opkt, in); diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index c7e0d0a84e..010dd9abf6 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -225,7 +225,8 @@ FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-unescaped-extradata FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-twofields-packet FATE_H264-$(call DEMMUX, MOV, H264, H264_MP4TOANNEXB_BSF) += fate-h264-bsf-mp4toannexb \ - fate-h264-bsf-mp4toannexb-2 + fate-h264-bsf-mp4toannexb-2 \ + fate-h264-bsf-mp4toannexb-new-extradata \ FATE_H264-$(call FRAMECRC, MATROSKA, H264) += fate-h264-direct-bff FATE_H264-$(call FRAMECRC, FLV, H264, SCALE_FILTER) += fate-h264-brokensps-2580 @@ -432,6 +433,7 @@ fate-h264-bsf-mp4toannexb: CMD = md5 -i $(TARGET_SAMPLES) fate-h264-bsf-mp4toannexb-2: CMD = md5 -i $(TARGET_SAMPLES)/h264/ps_prefix_first_idr.mp4 -c:v copy -f h264 fate-h264-bsf-mp4toannexb-2: CMP = oneline fate-h264-bsf-mp4toannexb-2: REF = cffcfa6a2d0b58c9de1f5785f099f41d +fate-h264-bsf-mp4toannexb-new-extradata: CMD = stream_remux mov $(TARGET_SAMPLES)/h264/extradata-reload-multi-stsd.mov "" h264 "-map 0:v" fate-h264-crop-to-container: CMD = framemd5 -i $(TARGET_SAMPLES)/h264/crop-to-container-dims-canon.mov fate-h264-direct-bff: CMD = framecrc -i $(TARGET_SAMPLES)/h264/direct-bff.mkv diff --git a/tests/ref/fate/h264-bsf-mp4toannexb-new-extradata b/tests/ref/fate/h264-bsf-mp4toannexb-new-extradata new file mode 100644 index 0000000000..a0423ad295 --- /dev/null +++ b/tests/ref/fate/h264-bsf-mp4toannexb-new-extradata @@ -0,0 +1,9 @@ +#tb 0: 1/25 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 256x128 +#sar 0: 1/1 +0, 0, 0, 1, 49152, 0x08745db9 +0, 1, 1, 1, 49152, 0x96bf5e58 +0, 2, 2, 1, 49152, 0x8fe31b6d +0, 3, 3, 1, 49152, 0x0b621cc3 diff --git a/tests/ref/fate/h264_mp4toannexb_ticket5927 b/tests/ref/fate/h264_mp4toannexb_ticket5927 index 95e35c4d80..eb0b5cf283 100644 --- a/tests/ref/fate/h264_mp4toannexb_ticket5927 +++ b/tests/ref/fate/h264_mp4toannexb_ticket5927 @@ -1,12 +1,12 @@ -a3b02fd09392e01619cebc959d4d9ff2 *tests/data/fate/h264_mp4toannexb_ticket5927.h264 +edddeef7901b2bd8d55625b8105b579f *tests/data/fate/h264_mp4toannexb_ticket5927.h264 595583 tests/data/fate/h264_mp4toannexb_ticket5927.h264 -#extradata 0: 33, 0x84fe08f8 +#extradata 0: 33, 0x84e308f7 #tb 0: 1/1200000 #media_type 0: video #codec_id 0: h264 #dimensions 0: 1920x1080 #sar 0: 0/1 -0, -48000, -9223372036854775808, 48000, 247993, 0x1ce821ea +0, -48000, -9223372036854775808, 48000, 247993, 0x541321e9 0, 0, -9223372036854775808, 48000, 43354, 0xa05dca6f, F=0x0 0, 48000, -9223372036854775808, 48000, 11423, 0x5e8086dd, F=0x0 0, 96000, -9223372036854775808, 48000, 50798, 0x145fbe4f, F=0x0 @@ -18,4 +18,4 @@ a3b02fd09392e01619cebc959d4d9ff2 *tests/data/fate/h264_mp4toannexb_ticket5927.h2 0, 384000, -9223372036854775808, 48000, 54483, 0xefead99f, F=0x0 0, 432000, -9223372036854775808, 48000, 13705, 0x23cd27e8, F=0x0 0, 480000, -9223372036854775808, 48000, 22308, 0x4093b5af, F=0x0 -0, 528000, -9223372036854775808, 48000, 6369, 0x858b2aa1 +0, 528000, -9223372036854775808, 48000, 6369, 0x6cca2aa0 diff --git a/tests/ref/fate/h264_mp4toannexb_ticket5927_2 b/tests/ref/fate/h264_mp4toannexb_ticket5927_2 index 8db6a7e54a..8c3613ee79 100644 --- a/tests/ref/fate/h264_mp4toannexb_ticket5927_2 +++ b/tests/ref/fate/h264_mp4toannexb_ticket5927_2 @@ -1,12 +1,12 @@ -a3b02fd09392e01619cebc959d4d9ff2 *tests/data/fate/h264_mp4toannexb_ticket5927_2.h264 +edddeef7901b2bd8d55625b8105b579f *tests/data/fate/h264_mp4toannexb_ticket5927_2.h264 595583 tests/data/fate/h264_mp4toannexb_ticket5927_2.h264 -#extradata 0: 33, 0x84fe08f8 +#extradata 0: 33, 0x84e308f7 #tb 0: 1/1200000 #media_type 0: video #codec_id 0: h264 #dimensions 0: 1920x1080 #sar 0: 0/1 -0, -48000, -9223372036854775808, 48000, 247993, 0x1ce821ea +0, -48000, -9223372036854775808, 48000, 247993, 0x541321e9 0, 0, -9223372036854775808, 48000, 43354, 0xa05dca6f, F=0x0 0, 48000, -9223372036854775808, 48000, 11423, 0x5e8086dd, F=0x0 0, 96000, -9223372036854775808, 48000, 50798, 0x145fbe4f, F=0x0 @@ -18,4 +18,4 @@ a3b02fd09392e01619cebc959d4d9ff2 *tests/data/fate/h264_mp4toannexb_ticket5927_2. 0, 384000, -9223372036854775808, 48000, 54483, 0xefead99f, F=0x0 0, 432000, -9223372036854775808, 48000, 13705, 0x23cd27e8, F=0x0 0, 480000, -9223372036854775808, 48000, 22308, 0x4093b5af, F=0x0 -0, 528000, -9223372036854775808, 48000, 6369, 0x858b2aa1 +0, 528000, -9223372036854775808, 48000, 6369, 0x6cca2aa0 From patchwork Fri Nov 17 17:24:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 44694 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a20:b0:181:818d:5e7f with SMTP id e32csp450815pzh; Fri, 17 Nov 2023 01:25:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IH3kip/PoO983D6Gb67jwBSYAZQww3KUNL6X9jij0Mg/6w5YhwU1PhWgAtCwv5vwo07a5tb X-Received: by 2002:a17:906:38da:b0:9ae:50ec:bd81 with SMTP id r26-20020a17090638da00b009ae50ecbd81mr3377237ejd.21.1700213150902; Fri, 17 Nov 2023 01:25:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700213150; cv=none; d=google.com; s=arc-20160816; b=hTOTYxV3WGmGpnOsOYUC8ecmGK3tF/xT9Va8VsMSM354Wjtrsh8n+7XcAVFCrwNTzX dzIpq9XiljMxh/2HF5h0iS3JGRq2AqBvabzumMJRWaFNIQySd9s9YDfn/UlL7/nBVoO8 dkNm6u4GD/F3KD35lv5bXANSxU4gTX5K+nCrp1NHWwiHA3102kGJ4VWO5PwsnhqPZ4kV eRBcGKzjD//uFijOPOzVKfVWaVPw+FtudIVX1+cV3p3IUMkjXkVUsdWzMOVM+X0+cFwq rpM91aMLlLsizBHkVviQTNmUxj0a/0Mi1P9UJG9iMgiy4xrk0qGgWuqcXWL5XkF160ei zn+A== 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=zZ3fDs+uwAEzN+H0GL37SnKLJDauvJOSOiahCXVxhTw=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=sg7eLK+Ua4ZBaFmY3aC7J1AtUqFqjwiXp5e6xd6H0o+Z+FeF08LlfMpy2JtPT2Dij3 gdeNmFumzvsB9vJEDo8l4iqnczxh27ANXUvWlKIMmKa2hQm1BPy0rG48mxyTiJbQCE73 h7NxKdj/ofd2jAc8zoBg/9WCg4bX9yUbWAbP+Fs0FbtS9VmCUe9v2bS+Rmq72BNe1OKy U0LHgtlqjGSLCbPsuye0tphkXqWGmOJxxIe/kfps+lJcOh6K6j7XDJMyJhhdlaFmssxq SstOLLe7DFfGOqJkilLBHOH6rrBGIE5ev2q9aa5YDvF0zogYKf9JtXBBnzrLQ4qL4Z73 ivLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=VR4Lho97; 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 f3-20020a170906560300b009b9ee68d83csi778189ejq.672.2023.11.17.01.25.50; Fri, 17 Nov 2023 01:25:50 -0800 (PST) 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=VR4Lho97; 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 B4F5C68CD5C; Fri, 17 Nov 2023 11:25:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-66.mail.qq.com (out203-205-251-66.mail.qq.com [203.205.251.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5C28E68CD19 for ; Fri, 17 Nov 2023 11:25:01 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1700213087; bh=1aznW9WbsvxNR3nxEGAS7arBvrq0PAgkD1D//y+2tCw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VR4Lho978cduk8nH6cslepHHPe2s7l5pkmkiej1AZIWnFQ/+UNhqO2A+HthgpmRqs Q+jWgGcJntCmps5gDEIa6cDpGz0+U36lf2y+nPHcu/YLFhOocJKOJlrkL9zQ7Okncq 4J/6Dcutj87dlA9ISmNNZuQ1EgZ8dvMJoAebJKv0= Received: from localhost.localdomain ([113.108.77.61]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 62C14297; Fri, 17 Nov 2023 17:24:44 +0800 X-QQ-mid: xmsmtpt1700213086tp63bsaxr Message-ID: X-QQ-XMAILINFO: OKKHiI6c9SH3N3/6vLjbsBaUSgwZDJqA6PV74UUrjcJU3eIFqjHbteF+vaCgaf 5r4iHCaQHP7SAU39orVKosYYD89gk2GcGq33dIUxU7NJycAyM24JociXDUtqswgPV3+0GbtsO5ET JsY4mQHamrXHxsMARfA5j3IzREXNCg9UummaULcPSZV/5LA/mqudLr5UqU3i43Qdg3+U/mJbZRrZ XIWcWffb+VaFLYoMANaAf/inkFfSHpD/Em7P0QL9gNBYzqE91h2wYOlPWZkIk7XC4h5sWwbHRlQk +vPQ1Hqk6utDv2yHopCZ+ZA9Y+pgbB9gBfFd6JXI9e1uL1IcnFGu4IeQ8DgGcqptXMdhkjSs7Blp /auRgMKNnBBAOgBbt7JfAdgztuzPXvTpenbVPVvs2avqT/GX82EbWD4KMNPPmpSENWbI9yDUpkJH neUnXlO1G1SkZtNefkpER7cY8VIk4S250YQJnao09BTifOLBVF8ArE85IxQ+4tpnFKEHiztgN0do x3gxYKs96r788htxJRDpT+/4pNlSmpLKBWf+ZhMB3MqZSzEhKZM8gFHSRR+j69BKNteAliNOoBe0 xGs04WuC/6yVK1XjwOWrZnMJAz1O+B8IBQDQQvL54L78IlxvdaHccd6uh6UY7PGZtx5c1Tm5ruas aHr0Z1EywpguYuoMn2sktbTcV8Av1YfAzJv0bsiCSx8koEcBbM9f/C5QYfU5HXvjiKNWcWGlJnaE 92OyVNgLCjblYcijeGGE+zCm5NLa6xD7wJsjPtKZYEHdEQ5hZ0HB9fWh9gqVBL0Spr1XVpWM/q08 liYyjEZWwoZ1XrFE9/umww+e7i26UFkbvUNuh+XCo8jBTFy8ukXQ01in3nUZhoJ/IU2ZMkdTwHnv kng0FasK1HMh/mzaGBjO1JqUjr2ok8ySGXh0fuN/9Lf/er95m7OjKBRd5OeCkJTveieSnyMMf2u6 U9hvMKPS2pyV4QU1DlCdDH527StR3z5pOragzHImw1uYfk7iuDjt7693kredT0KX7as6WekfcXRG hK6aeuAg== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 Nov 2023 01:24:41 +0800 X-OQ-MSGID: <20231117172441.288316-5-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231117172441.288316-1-quinkblack@foxmail.com> References: <20231117172441.288316-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 5/5] fate/h264: move mp4toannexb_ticket5927 test to fate-h264 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: H6GBoOXQHWim From: Zhao Zhili --- tests/fate/ffmpeg.mak | 6 +----- tests/fate/h264.mak | 6 ++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak index 835770a924..a3e2bb37be 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -227,13 +227,9 @@ FATE_SAMPLES_FFMPEG-$(call REMUX, MOV, AAC_DEMUXER AAC_DECODER AAC_PARSER AAC_AD fate-adtstoasc_ticket3715: CMD = transcode "aac" $(TARGET_SAMPLES)/aac/foo.aac\ mov "-c copy -bsf:a aac_adtstoasc" "-codec copy" -FATE_SAMPLES_FFMPEG-$(call REMUX, H264, MOV_DEMUXER H264_MP4TOANNEXB_BSF H264_PARSER H264_DECODER EXTRACT_EXTRADATA_BSF) += fate-h264_mp4toannexb_ticket2991 fate-h264_mp4toannexb_ticket5927 fate-h264_mp4toannexb_ticket5927_2 +FATE_SAMPLES_FFMPEG-$(call REMUX, H264, MOV_DEMUXER H264_MP4TOANNEXB_BSF H264_PARSER H264_DECODER EXTRACT_EXTRADATA_BSF) += fate-h264_mp4toannexb_ticket2991 fate-h264_mp4toannexb_ticket2991: CMD = transcode "mp4" $(TARGET_SAMPLES)/h264/wwwq_cut.mp4\ h264 "-c:v copy -bsf:v h264_mp4toannexb" "-codec copy" -fate-h264_mp4toannexb_ticket5927: CMD = transcode "mp4" $(TARGET_SAMPLES)/h264/thezerotheorem-cut.mp4 \ - h264 "-c:v copy -bsf:v h264_mp4toannexb -an" "-c:v copy" -fate-h264_mp4toannexb_ticket5927_2: CMD = transcode "mp4" $(TARGET_SAMPLES)/h264/thezerotheorem-cut.mp4 \ - h264 "-c:v copy -an" "-c:v copy" FATE_SAMPLES_FFMPEG-$(call TRANSCODE, MPEG4 MPEG2VIDEO, AVI, MPEGPS_DEMUXER MPEGVIDEO_DEMUXER MPEGVIDEO_PARSER EXTRACT_EXTRADATA_BSF REMOVE_EXTRADATA_BSF) += fate-ffmpeg-bsf-remove-k fate-ffmpeg-bsf-remove-r fate-ffmpeg-bsf-remove-e fate-ffmpeg-bsf-remove-k: CMD = transcode "mpeg" $(TARGET_SAMPLES)/mpeg2/matrixbench_mpeg2.lq1.mpg\ diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 010dd9abf6..8eb51ce84e 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -227,6 +227,8 @@ FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-twofields-packet FATE_H264-$(call DEMMUX, MOV, H264, H264_MP4TOANNEXB_BSF) += fate-h264-bsf-mp4toannexb \ fate-h264-bsf-mp4toannexb-2 \ fate-h264-bsf-mp4toannexb-new-extradata \ + fate-h264_mp4toannexb_ticket5927 \ + fate-h264_mp4toannexb_ticket5927_2 \ FATE_H264-$(call FRAMECRC, MATROSKA, H264) += fate-h264-direct-bff FATE_H264-$(call FRAMECRC, FLV, H264, SCALE_FILTER) += fate-h264-brokensps-2580 @@ -434,6 +436,10 @@ fate-h264-bsf-mp4toannexb-2: CMD = md5 -i $(TARGET_SAMPLES) fate-h264-bsf-mp4toannexb-2: CMP = oneline fate-h264-bsf-mp4toannexb-2: REF = cffcfa6a2d0b58c9de1f5785f099f41d fate-h264-bsf-mp4toannexb-new-extradata: CMD = stream_remux mov $(TARGET_SAMPLES)/h264/extradata-reload-multi-stsd.mov "" h264 "-map 0:v" +fate-h264_mp4toannexb_ticket5927: CMD = transcode "mp4" $(TARGET_SAMPLES)/h264/thezerotheorem-cut.mp4 \ + h264 "-c:v copy -bsf:v h264_mp4toannexb -an" "-c:v copy" +fate-h264_mp4toannexb_ticket5927_2: CMD = transcode "mp4" $(TARGET_SAMPLES)/h264/thezerotheorem-cut.mp4 \ + h264 "-c:v copy -an" "-c:v copy" fate-h264-crop-to-container: CMD = framemd5 -i $(TARGET_SAMPLES)/h264/crop-to-container-dims-canon.mov fate-h264-direct-bff: CMD = framecrc -i $(TARGET_SAMPLES)/h264/direct-bff.mkv