From patchwork Fri May 19 16:41:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 41721 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1130106pzb; Fri, 19 May 2023 01:41:48 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4lDjXyw3C/ycADE+tmTNVOuj+RoegLuMT+RLSOSAj0pXcI0cSOevwTTiJyBts0TpsONdSw X-Received: by 2002:a05:6402:35a:b0:50b:c4d5:3da1 with SMTP id r26-20020a056402035a00b0050bc4d53da1mr1759195edw.8.1684485707932; Fri, 19 May 2023 01:41:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684485707; cv=none; d=google.com; s=arc-20160816; b=mWLVavMKmO5lGVyGch50tThugK+boFQx2+ucs467NfUxQ+HZB2iFnVfeNQMuEl5UTy zxlc3ndL8KJ1b0bSfWZUNvizSntpTj8MqEUewG+gMFaIuTmI6OFU2gxdWdy0rAoFozVI XJflv/3iBW0Iw1ta78duMj1OwPRLA2ubNoSDPO+M+hNCHaCLVI6aBUuT2PO8ivKvX79s djm+9lbce9w02ag+cFKUh2j9bPxkifyY1DCz3eczPPKczi4kw1q/DkfWVXlXPFVx/VgN asqQXcZ185ZD6GMpn4skbWkRcCZBbPZojqupT3H5BRNNaWuwRcGms8JR5zbjGPf+kQAj 23xQ== 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=; b=lgdBuL27aiHE6QKUA+Cs+y7xuwejNU9Doki+rARw0uiy64AS4lqjnEF5k6r5l3780l Wu1icrQOKU38pIzaUFzFw+s0IfnQnHIviDSfSlr6CghpCih70Gy2Zj3DJaZ2/CQHoPjB TfiQH/TU25L2L/jWz3Nh39MT7xF9CI3+hMObo7O/82dF4Hpz1r1rx2nwY+K5Q971t0hN rN3IlmkkNVsiglVLBvL81kVGHIQsO4s7HnzNCh8OA0HuQ3Z5cbEWD1Vf679ggSP5XnZt BBJCzZJM0h07oPGBtb54uk/Nw85LkKhzV9icPnG8fUv0OLfTH4RwLgy/TrZFrCoNNt8a X62A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=fNXg97K4; 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 d14-20020aa7ce0e000000b0050bc56c1ff8si2427015edv.184.2023.05.19.01.41.47; Fri, 19 May 2023 01:41:47 -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=fNXg97K4; 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 DCFDD68C13A; Fri, 19 May 2023 11:41:42 +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 4C28E68C033 for ; Fri, 19 May 2023 11:41:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684485688; bh=/6PgLCBuvjpceDHseb9tM7knBRzhCcIvMmBA9pCIsfA=; h=From:To:Cc:Subject:Date; b=fNXg97K4A3wr0Tz5nUiMpQ3V2TDwzCxkNzt0+BgsTDOgVjRm5tvHCEEHmD6ke27+D AAYY+C3PqoJ5TQvIYVHuVnjvcsyhRK19ie1FCQYVSpW5Y77ftdC4V1Z/trENTJ3ET4 x4lyXpXqXhq7jEsVfZozzUoH5X/JiDm17lSKyh00= Received: from localhost.localdomain ([119.147.10.201]) by newxmesmtplogicsvrszc2-0.qq.com (NewEsmtp) with SMTP id A5B2749A; Fri, 19 May 2023 16:41:27 +0800 X-QQ-mid: xmsmtpt1684485687txk1z1i1p Message-ID: X-QQ-XMAILINFO: OCfk4Ew1/b2Lu/iiFlDI8aClYJZxZg0TwU+VMFJlm3vrWsmH2/2M+6/2zr+c9j 6EsK7e/UkNL3f5bDlNIh1hSXWx5PgFn9Jf44VR4yi8FOguxyMqCv9jK9H3x+58t3IPEyQ/xy6U7p f3Z0sWeW3sD+X8EPp7GDd1PuKevwFcniEjcqQhRI/jszqljKse3UFYKT3z+Q9Ah6Ioc0uZ9hrqiv IAvJJVsjadIE0Uxt2QG6Zif+tPk/ez94NFbdauLFFlWclt2USgqlcfDStpy6KZGpOoiYoGk0dKwk 05D/xHm1eP7BXWnVtn06QH3+DlvHjMorIHt8uJjWupWT05P9mVf4ReQ2abNwuKFqp1NxPtuxbMYz mXH4+tQ7IlS716c3WB8KRU6aSkiAZJsmkeu4YMwPH4Hi4PU9e7RNRy8JFm8Ho2EQj5/9QrF0NZnU CIQM3EXzTC5YFwuDe8MoEFALSD2hByTiddquUhYcerHOmj06MHvj9dptAFzv5SFDirTNITrSzK9Y gw12+z5IspaJiQEz9JtgKS280OJjZsJ9RPNxKzDQr3RnNXI7yoMArxHoXFk/ji+S0DMj1ADP6zch QPOaKFcS/E0bIs6OJmj3ypqYdvnbsS0TsoA+uj9nHpwoJbsmo9z3ZW4uwMK7h/nSyk+6+Kkw4yzc 9FMSRUHo8Vqv2ttIuofIKoX6qevsvpaCfiKu2PuB2q5uaBLdrhPGSjxVnr1N8Uk6Xfhg+bQ+9gvy chbXZ3cYBpuxi/rtDbiYB6y1phK1C2Gi5iKC0XMX64kepfZmw0C1clp1my5YUGDmS65zh15wzSrD 2kt3qY4NpdqeBEZg/xbh/rAGGumXFdHeae5eFIeMck8FDwfhMtkHCuiSwWjEjxFVPja2IvDftq+/ fuTpXG2ZWgTuCuK2aNdFaxBkSpCdhZRT1DlvkKZpiFJ1K5cc+4dFo899QzYrGXJsqDZjdUKvEi7H +CqZC2CJBHQHiNzzjqA0BZfv4Cz81YgXetY9FKyZPki8EHo006WA== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 May 2023 00:41:29 +0800 X-OQ-MSGID: <20230519164133.3278597-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 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: vE+RrRyzUOUY 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 May 19 16:41:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 41723 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1130296pzb; Fri, 19 May 2023 01:42:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5Xeosm429/WTDdQ68pdCU+sBmTu46aE63wVVm3BuoRIilqk/pZyzMAT3k+RxVX1rLqGjRn X-Received: by 2002:a17:907:940e:b0:966:550f:9bfe with SMTP id dk14-20020a170907940e00b00966550f9bfemr972265ejc.33.1684485728349; Fri, 19 May 2023 01:42:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684485728; cv=none; d=google.com; s=arc-20160816; b=WO3vXQB2QzGGSHlY/hbn2TNUGIm2lW5w++IbZ+ZtuVtlrpUkIlbeacLtSn2oEzeETx /T26PirZ91odEgkZvm+1RnWOINal3GzGYtZ7LiyCO0nx9QoIyiVDR7llIDaPr50Knc7S eQTnJ5ABychJd6yYtwXT6epaKwaC3emeDcXJ1yZhVcIpUFf9AjolwEu25wU07jhk0Tjg N6NzMm7W53/9SF4gVNtyCH6TRd9uFtLZyNThmnMJEK429xV9FuB6510ebwYF1iAzysel AExuzOB5ExGvVS4D6tGucR/W7A7wuNeXlMPD22m6jKaTNDsJlzWU3pZ2Zyzx8QZ3X1AI Ddow== 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=; b=WkhNSMxEJlYffpik/I9u7shZxxaONHb7Ayli95+KB82HoeeoVCxLN5vkkdbIu+CRLR D0z/FcKazpnJ8Iyd31G6T5nKqla7RF59X0cYgoffg/wU8mKMQLPBnmVlYiVgo7E/ksq+ YEfmwQf2BzoeffnzoOQh3YFZtortgqzZcfTr45Twscr6l/FFUS7IlwbA/J6FJh4/qLuf xjqM7dbsBsGaK/d7c1ejxvvj/loMGXZ4jQOH9t+M44V6H5X/1ASSuzmwXYx47SZmRaT+ C6kum25ZXaBMxwPuJeg3xfg6pW2cxStcOD0hAfw5QoGDRaU7iLSVLDhyTTMg8H/aqVpj GGYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ZuwBMaBf; 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 gx10-20020a1709068a4a00b0096b247ef9aesi91506ejc.509.2023.05.19.01.42.07; Fri, 19 May 2023 01:42:08 -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=ZuwBMaBf; 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 2B23268C16A; Fri, 19 May 2023 11:41:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-239.mail.qq.com (out203-205-221-239.mail.qq.com [203.205.221.239]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 33346680536 for ; Fri, 19 May 2023 11:41:36 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684485689; bh=EA/8jVXkkvYpbA6+KYDnlUM5LVLZimC2+XNOn1YQpok=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ZuwBMaBfndIj888uD10MS9A/YswdSZFj/o+u74Uc4Ai67H9GFx/SnLkWUZW39guYj e+bG0bHW4BaKQ9QMY1RuMtXZZCZiQv+KxHfeneLU7xxQhkJmB3pu1NMjvfHmJeD6w4 xhCk2U50XhBNfeX5GU11FmeSlO8EO5dVxIxJ3N/Q= Received: from localhost.localdomain ([119.147.10.201]) by newxmesmtplogicsvrszc2-0.qq.com (NewEsmtp) with SMTP id A5B2749A; Fri, 19 May 2023 16:41:27 +0800 X-QQ-mid: xmsmtpt1684485687tqnuwalq0 Message-ID: X-QQ-XMAILINFO: Mrv6PNPZjcp65q5O28Q+pZSou/ITmK28zX3lNtwzfuzDQz4ZNM5F4zbmHpmNu3 GwUC3GxLv4DKqOfK3l9gSXMJLrHmci4/8h2Vp2z7lHYW3kemDgJOKQM1+826wJYn9wGZWWi8y2Zq fnT0VrLuZFFG9fQgmeHy327iySkCEzf3b6PswJkXyA5nvDH+YeGPDnB/CHfBSu3uUR6KeRz04N8v hP2ZrUcudkHXO7km8VxZHxM2Js1O2I8+uEVEGph4d/NPurgGxwyx5MrGrJVBkY0Qjp8JTJviTnyo 5UNctew/tCWFy4oo4QkQplzyZdZpULnXRb2VJD38i+2Z5leR4vXQpafUybRXS56kHSd4g6A9UnW/ AqCPZ3SwiQcDSlE9i5d44LWWo7TusP0rHnN+SYsu14e3gJs2sQpsss/rAL0SJxxri3RJ2oHsdGG3 IShAL2YGwhCL23d+D8/Vkz6yg2UtRYNBsnaysNFOeagDu7zhq6Xr/539z7kGGQDfZavWoAFkXlsJ 8S2TCBz2w1gfZYOtz4lOwlcz9ofw8u7wJy/KYpQuZPw3rxfbDoM2Oqh4fCONSF8SWn8DF2hkwfrw Q6OEbpEuE1d+zvarcRPQV6I0F6gYtDabqxH4ijJs0p9BFrapUPIuCQGFbkDYcsMhBTRVaH3NUKe0 FSW8l98sgPCn8kEMMVl6A50YA/efFijrNh1PUbuy1iWX0eAgyreOUv5bj0UwvgeZMWAw+KMxm3Mb ra2kTz237IReLBz1HWmTGyHvGT+mFF+igjySoMaCd1KAeJMl7FdiZMkRQmGDaVAGr6D6MG4bKp2p rAE+O3lvve+lzPlYPS+nQOXrbsdzcCgPalqPTWzrEmLsMAILywMSC3XnEOEmzTATA6hBHv9/Nr9j vb/8rIHWkj14jZSeEUaIr1uxw3OBQ24UVo22KwpTgV++9PRV+smw3jgWPjNEdw641VxUwXQtbdah R/40PRsoq5dQEnSsv6ltbX8m7SKYlpuyzvMJiyvPEGDpaYBH+Hxg== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 May 2023 00:41:30 +0800 X-OQ-MSGID: <20230519164133.3278597-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230519164133.3278597-1-quinkblack@foxmail.com> References: <20230519164133.3278597-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 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: T9ZWYG4cP2/l 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 May 19 16:41:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 41724 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1130390pzb; Fri, 19 May 2023 01:42:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4MXxng55E5Me/ZCA3UB9UMsg21sAjeEe3lqfu2XQbaW8LoaqtYwXglsLH7yCZ0hLHsQ6bL X-Received: by 2002:a17:907:6d26:b0:957:2e48:5657 with SMTP id sa38-20020a1709076d2600b009572e485657mr878717ejc.68.1684485737836; Fri, 19 May 2023 01:42:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684485737; cv=none; d=google.com; s=arc-20160816; b=mbyQkBAesB5WzkedUVWW9OsgtA6+6SLwKJ50IBec9Lo/eAmMU5nrl7fwpPie4G4CDF xZHLlfZbjjiWnYsyliNS9mpBcJ8LNdxVSzYxMuD1TTMl8vl/WpoUrjR8F+LrIqFST8Ze GSudVMi7vpqZzeCnE7WVvlIxu5LRx+g+8Sw/VfRvx/sx8uLVU5D8stwPf6n4rok33uZ+ X59IC19BeqXkEq+XNDU0yZl3CbxntM7rTt6lR/RXhO/jzLAwlUQT4b8MbgK71Wxz1ElK jcdud30jXyu80xdvZ+SRrQw95RSdjPq7eG19TCnYmQUnZAU21C2ROOkqHAEvRKnnddFg h5dQ== 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=tHN2u8JMx1EUYBBUUf6ugn4hS/mxpiaiftLXtyKRARk=; b=H+SHhwNuEWVwAXAOHT8BmEl7BqHNIA+sNwjU1KdOcmzAIgZE5BDf+5ahNVZ04d9rir OYmzdvZcugX2cNwcq9V7jtbjfJGBEU0EQ7ReNWOg1pe9NJXJRGeUowUPcjzKUCaso5n4 zJMmjOaWV2L1CmE3n4SIO8c/DhxlP+a+xTI1jwQX79O+ML863cW38XaeD4QCVvwx8o6x BcoxiP7zlwL3S85L90inKvt05zw6h9bWyNilVPcA0JpHzEp/Vh+RKG4ggKhd7mFMO9cA zwJ7AUSuX9WQwipSLqvi3qRsKNxAQbhV7NbKJBcXx+vSmQhQkmFDZwZc0yDBkjzWIxDH 6smg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b="qWAsQ8+/"; 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 mj3-20020a170906af8300b0094f1eee5a9dsi2640588ejb.555.2023.05.19.01.42.17; Fri, 19 May 2023 01:42:17 -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="qWAsQ8+/"; 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 284E468C178; Fri, 19 May 2023 11:41:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-64.mail.qq.com (out162-62-57-64.mail.qq.com [162.62.57.64]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 429E368ADCE for ; Fri, 19 May 2023 11:41:37 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684485689; bh=6uEL8MCQaN7adfQeSB0qUt90oiFuebfwuv9AbaORl/s=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=qWAsQ8+/TXwUhq7KblP8wi9IYo+LDFomRNfoUn7apiIdKbgmgo7BHK54dbvzWJgSc Rf/n6mjSwRsMOUHXYFXZ7U2f+LR4ympwws85j5xr4UoFKsHMZHjvTGn0S9ODoX0aE0 hpQEDgtY1uJbWd6ZLCSP6M+d1Xkgq7qaqMZSRqzA= Received: from localhost.localdomain ([119.147.10.201]) by newxmesmtplogicsvrszc2-0.qq.com (NewEsmtp) with SMTP id A5B2749A; Fri, 19 May 2023 16:41:27 +0800 X-QQ-mid: xmsmtpt1684485688t9pvrocsc Message-ID: X-QQ-XMAILINFO: MB5+LsFw85NoStkxfg1JR/6sZSpKwexhXHqxDEFCfr/gEMxlIhgj/mjt0wC0oy lOoTWnkfgSvD5Ih6LBD68A09qT+VSZZSLeWd7pTLBRb27JA9dY799ovbtMBBi+Ei36JgX1FmsJW/ XvQPi3WKbHFsQGfB843SruwxhxJXuCfYIMedChLQKJa/sYaO+lGLfYDd7+rxI1Mnk/nrWkAqo8pI g18RFcTCcKeH2ctPC3xB8JfdUxq8caOwC3AOEa7LJX4KSYnkJExzSHccSE5UN1WWsPS4MK+nSruO EeffdO+xl9XtGlOkKt3aJkZSm243b336YUz2aomjWXiQTvYwvIm2YGuZ8o7KUAlvQAen6bRoQbVl 9/5rB7GT78ghTiOGMfhhbcL1MQDAtFBtBIP9Siq2OJhwaKsjksk2RhKjJ8QlBxSxiEpvvRN4HoK2 bBGvthCvFCINEM/vcQrM9jbDIjRG/9JFSGz77yWelxsmDFf1rg3kb/yvzsvUKKk2lMZ07kgXCTNe Jb/WpNQrorzzTgDibPD164CZ3WgdCmuMucMeXB1lIptGQiir+8TR5TyEMsWpcNrdXkNgnseyqhkz K+d64Zk/R6XWPsNZtzIwGlaiT48/6fttFkLjV8T4FWw/iLJ6Uq3lBW6mpK04QuAKN3UWuB/oKsDD pBMAYuOqLWbSR0Yoo5f9Lo17JrhPeQsBzhvbdlSIa2A2GZ0EPrQ5Qc/0EQIabCUyQ27VSPNsxWgW ojTbDx7SRFn6TxawxRNvonaEgSlyZaYPWdJnwC7u+/Wt1TjeCJB32u/VH6dbNFxeRcX9Sfc65xQ1 tlr57jFqhGvLyQr2jdVRwdIaPI/rD4NndgfBlkHWRyV+y8aNM+nSt0bpT2fxbr+I6PIj5ipFCqWK DI5tivADDhKjWQqPo44vK8ooCmyrSZyYtQSeUvZaZl0pkJGg09hU5FQ2zDK/XFIYGk+aE7UMa0eC UzDo2tzX5deIf4Xxw3PRlmLPN5HE7qL1bBxngpoBlQMZw/uDTdUf7ZZUSKA9ecnuPcQoPiqwa6c3 WECSK3Dhsh8K1Khi+nWM+vjAu1Low= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 May 2023 00:41:31 +0800 X-OQ-MSGID: <20230519164133.3278597-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230519164133.3278597-1-quinkblack@foxmail.com> References: <20230519164133.3278597-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 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: jndADAbcJgYv 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. --- sample file h264/ps_prefix_first_idr.mp4 https://drive.google.com/file/d/1GEImeE-Wx1T0veQClSuasEJbs4fssMo9/view?usp=sharing 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..d75aebb253 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 = 872608399a9aac7cf91a7c447f366f32 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 May 19 16:41:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 41722 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1130200pzb; Fri, 19 May 2023 01:41:59 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ71jwmiu6ZeZwzX0vyRQLlBYPnuR3DqbpTbDmfvposXebkKGgszYW/vHhDMo4hZNoqAWIIu X-Received: by 2002:aa7:da16:0:b0:510:f3a6:d50 with SMTP id r22-20020aa7da16000000b00510f3a60d50mr746151eds.36.1684485719251; Fri, 19 May 2023 01:41:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684485719; cv=none; d=google.com; s=arc-20160816; b=HxXepRhNFCbBj8p382hj+v2FGI8x7o+BFEEa5xNyHoPolD+QlXu0BCT4OMfncgSweq a7CaAJo5hUaFLct34YKvCUzoIAtB3IqsWuiHgqvyUXpXs48kNFv66mDl2GMoCtPDaCIT m6Ah+7CzjfSr5Uj/mJwXfJYRO0n0RHIik7rNyJEFuNdewTLu28GFloJnClel2f7bi6Mo 9gF/edA03bglGa1Ay8G1gzwFmiHJUvkZaq1Dq/axo0hERmpA3qnxMoEkJ5+0W1iAJdE2 9lYQDNLIirTM0D6R7YRlmbWRd4DRmWoJy5+Z7F/yIGgxKyNuANrJWpmiV+F1Wjp2emg2 h3kg== 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=WUkQUgKFLlPYnHDTVj2k0rI7IyrwbykDHscuF7i0ups=; b=xm6l/Mdquk/Air8zmolDPsLRbU6ex8U7F8RV9Kal1d/kv4rPOXXV3vWlD4XmdQNU1u 3/G8L+GbSHSYGwKZkG0l3G1u5kk8Wqdqm1VdQZ9/RbV6FcGBG//0rSWcDB2AJGtH71Aq 48aOrNGEtpF/1iM0roZ0EueM5lPEfWKtedXcjE642Z9Im/0wGOW8rGY2xZkOihct45ZK 0ALNZiJIU9wBwLO+6ZRvficGo2cMj8Wz6DjmZCp5wNkVvoU4yva0l8yBVJDXCquEAq7s I1mnzVnrQOrCmcfkKNmlsHXwraw8KTjhQtP+bBZ0gXetoLp2MK/YryQ7HyRxIgJzZvcI PzDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=BdoA+lYg; 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 b14-20020a05640202ce00b0050dbe83a003si2129049edx.10.2023.05.19.01.41.58; Fri, 19 May 2023 01:41:59 -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=BdoA+lYg; 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 1669E68C162; Fri, 19 May 2023 11:41:46 +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 D0EFE68C125 for ; Fri, 19 May 2023 11:41:36 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684485689; bh=5MUZe4cdoxTbBzZH71EiKkhgnDIdxzuxgaL9if0nePE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=BdoA+lYg083B9q6SbValosBQlOJUMQF6x4e6N88m97v8KMLW4CGVOTQVXklje+sJa lq64IcjINviDBzvIStnSGLH8kWOgJ1lMpMVu2y/WaVqrp0Yw0ZYePIBRQ5IQNJfadD fy27S1l6fLudCLppfMNnoBYt7hmdAW49NnVDC/lQ= Received: from localhost.localdomain ([119.147.10.201]) by newxmesmtplogicsvrszc2-0.qq.com (NewEsmtp) with SMTP id A5B2749A; Fri, 19 May 2023 16:41:27 +0800 X-QQ-mid: xmsmtpt1684485689tpo87j61w Message-ID: X-QQ-XMAILINFO: OZZSS56D9fAj2m8DG7brdtUgcTjyfZaUh3Eus/g3gTaTDjVToWqqIk97wdOU5I n2d04o78GClYPUga2YT6Ba+zC6V+xj1gTIl/Pjd86Zax9UzKKPwYRkZZ4c+sMTc0lSSHq1hkXvML L8uo1EO1CIYKkQtHbDgheXGIEvF53jPBRkr/Ybd/8/sxI4bF30uLmxhirxZUxSNcln9BOxb3Kiwb 26lZ7FlMMKasB8hFuEoV+PaZ5BJhmoE1H9LgAMZfe69eHN3yc7pO94w0ITP2DkcZ5PAf654Kp+kb jf1A8bpIvWJhzJ4e/Uqv5UbcbR+DyTUv66dbcLKAsqMba7bn9UtkGpNuYGH13gCliXVW+KINlTCF 43BOyGpY1ZbNY7L5ET6io/Z4G8VQFeVvlcv1d4Ak3BIiWWcM93SacCZKxyS+kQ+7frvtogN/TYUI ZGO/yYtg6nx+4MTdlfzXoYKktboSb18XDRd6eLbaYBzvFM0E2vHV88Rp/QacH7fR3Az0NkFddjCD JGttR1hB4KtVaxR7kzHseeyAYa0Ab9qMSQnpSfgfn5YSMz2Tey7DBPR3CaHGnCGSWCohevPGdix4 FMeR8ga2dcoEPJLmIEdJzjSdjVsyGsMz7nb3WH/LAisRXAF3FDQx4k9FNtZhAaTFwB4jGtnvPyoe PEX0gBgaFPgnDO/a/aXV560Iv1pkhXqpVeoZLPTIwUc54dnqNL4NA5gz1qA0QLM2YhBo2cM0dR45 EYsyx2Ct/0ZUk05UIzSUWr9NU7BYBh0MH8ncYZH74znRhCLtUL4PUGIGaIDrbEoKQbtmqrVmIb9m 1A+euLmKZo3dvzlnFSdo46ooWuINe/C1wyWUBF9zGy2ueGbFya/Ois8DvnrI3+Wipg4WiKOxLkDR OwfAXHItBD6tkFoD8AZY9l8RO7r4mY7UbkQEK1331E9Nf8i7zhL0kk7SHnHP60yvuph0+W59pyC1 fR/iFPX6du3vklzy19OfxnhVgckcyCGfkhLvAX5LAtX2I0gMRPJVW7iAer9WVj6DVGoSuzsqnEVP ikh+nLQRGUoWKca2S/+w0cTo3Prw0hkmQ+qN6JVRanshAxj3UT From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 May 2023 00:41:32 +0800 X-OQ-MSGID: <20230519164133.3278597-4-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230519164133.3278597-1-quinkblack@foxmail.com> References: <20230519164133.3278597-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 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: mq7dLahI01xX 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 d75aebb253..cf08cb9e54 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 = 872608399a9aac7cf91a7c447f366f32 +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 May 19 16:41:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 41725 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1130490pzb; Fri, 19 May 2023 01:42:28 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5WFkQiPxdfJJgC//gTldBHK8eP/XqT/MgczbJwBAn9sZI8yTWZGnZIVEmw7mxsMcQAoFP3 X-Received: by 2002:a17:907:9708:b0:959:b757:e49 with SMTP id jg8-20020a170907970800b00959b7570e49mr1279266ejc.1.1684485747830; Fri, 19 May 2023 01:42:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684485747; cv=none; d=google.com; s=arc-20160816; b=G1lXprEDXdrORmWTogmegwWY0g3JEiWRlTxXrAKFXfXUf3vBKUoUePhBv6udLsZoCz D9SNT0Abo+zQQn2XH/LG0RqxxE8rYj0/OVdAX4CGEM/iar7DXhiXRgG3QL3cSYOUK9vq FxKZZrcmGjGUn1Fu++4VOM6vj11n+uWFDA1SW8eR8SubPIzcOI1Ja2mbwrhVj5+K+X7S uS3lVqvbaUDKa6Qpwfos+QrpK7FGiDRuagroSlJm7ufO6gk24mcGiIzwQHmkWDgDS7QI 9Vc+YkmWjBzbjmeLQhRHGRTK5g559WEkGwgtqpOdfBacvYPQrsC1eQXjhYC+4xWo0kT5 m/4A== 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=aNzWrc44oH/pFSdfGJYvS7SLQSF59IcKXZXfdq+7VjY=; b=fuOEn9WccJipR7DJUdWXnxj/46q4yyJ8cxc7ikrUtZKkDD7rS0+KIkXFeXUOdYORqd WN7VhiPYZBAk40h7LlZcL65/Wt7zyf9NqktNwH2yhkoYiiKUPHTvHyP11CUvFpDHVrhR aSh3alzPnmhC8rC/g/n7J6kIKASouRG/NjL0nOsLe/eo/7+necersTcnJ4Ph6RElON6R vud0x6kXkeXs6XQFv9gs98/LZUuCqpn5vWYHCLNCFUaWdlbpb0E/H4bx4soN21kX12LU 78Swm7z9XvPF//k6V6s3NKzcpln6WBd7muvzx7b4Lmzvg0lRs4J/k06B1SJtLTKqaOpA Smlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=rawd+BFh; 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 t27-20020a1709060c5b00b0094f557aeae7si2778682ejf.283.2023.05.19.01.42.27; Fri, 19 May 2023 01:42:27 -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=rawd+BFh; 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 3027668C17E; Fri, 19 May 2023 11:41:49 +0300 (EEST) 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 D2B2D68C139 for ; Fri, 19 May 2023 11:41:37 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1684485690; bh=s5Xtx5n7O18Sxq3NhsyzNE6+PwBiVTaiqjRlWlLnG4I=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=rawd+BFh9dCkB1LmpvdYI+eGOITQB1J8d0LBwUwMNUe3JTGBGBkf8tBVDR0pJDHSy SvIsidE4MexoHq8U+dgh8C7ObAUMn4TrYva1bNP5uP3ZooP+cRCoIhMGbgt+1UqKV2 mJLhu71evCu0U6GxOkiKZRvJRmN3vdYRZpe251Hs= Received: from localhost.localdomain ([119.147.10.201]) by newxmesmtplogicsvrszc2-0.qq.com (NewEsmtp) with SMTP id A5B2749A; Fri, 19 May 2023 16:41:27 +0800 X-QQ-mid: xmsmtpt1684485689ti2l8khjb Message-ID: X-QQ-XMAILINFO: MzViUhZOUTdXk0ZeYjUwHTOA6fXKlL4n2hv7YSN7XlnEBE3TQPfb9hh2TESO2S at05T3kVlJjeIXY5NZshUyvhez7ZvUPC4BTIaXOiY8QA6Dtsf+RQ4027SDV8WmY20GtCEpUVGsrS cJGTOvi02y/kmDUY+/qhfs7LG34zZVmqA23NKfwW4knOiG1JHd2hidM7l/rv3iurSbPK5uaE+A5Q Ofd0bMiksv7LvGa3WxlHxVTC4D5maZBvH7tNF3uZrzwzA1PZx/FVrqV0nwwoYvBJsLFBcGfC2Ip+ ddR8Bsxrd2X88cuQPnJW0bQysFkba/qahb20mofUNqoQCydVXnb3CdR7sBw3udFT1G+onvuK/jYd WMjJHaUipTE2nEm1kFyIEE6ObsUCAYizntekShJ4p8Jr+iTCyKgG7tSDqIMcwh/HBpz/nAh4lMFo tmkANtiG2fecNqGpD0h8TAzCH0o0Pw45/jpFQCepwuav99HGhDMiT9nSIVX2LgEGk/Kx+n0rG1iO doUgM8+ozHDbvyRn4OYRBO+eptZ4jXlth3fCkOZdFPmFAbKMae+Jh0FazHFOnT3KjTdP4rLbeglF tNDoOZ/luXKbbd/xX7/eURGSkZkjI7E4vOD9ql/KU4UWnzqo2nxYY0uhxyW6Kq8uqO3UivPRvdBf 2znlwWXPBRvLVE0Z90oaILHVNrL4w5shsLcx4ioQ4pYKbM1EmSR06wSqk6XPoskClCQUMNUe/+0i t/e/SD2LmDTIy0N5vCHgjJfnpCqFiJp+VFON/nVz3FoULPC01DI/NodUWCOkRPGXQphHbGPYdrxp QTwTJrR4XlTCc+uokySdx5rZ45dNFYAMMHpwG3BIRoJ7n5KVUy75eo9AcnhCtlPgD8KVPTaPTX5D sF6KC28HEJ7pibgRnMjVWHB7Xf4NndvtyTZIsWKkpqhlmyNzavemEtIUo+ainhvBr9lBerDa4yrY 8kmaBwQd09za0K19UlEeaPqs2574y3IyQmMUt4pf1sXwJaf2JWN7lknXv7CFc4OHJH1lM0ahpNpo gXJ3oGakNSKd3H2StU From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 May 2023 00:41:33 +0800 X-OQ-MSGID: <20230519164133.3278597-5-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230519164133.3278597-1-quinkblack@foxmail.com> References: <20230519164133.3278597-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 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: ELgGnw2gvgBs 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 0f33c2a0ed..1ef2df7697 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -199,13 +199,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 cf08cb9e54..7240ca1c46 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 = 872608399a9aac7cf91a7c447f366f32 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