From patchwork Wed Jul 14 14:33:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 28924 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp470958ios; Wed, 14 Jul 2021 07:43:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4fBv2phtP7EqsTuoyo6U0a9xhhUnQfKYvOpENtR7ROEzxQXyKKmH1uGuljk8MjTOAFCPD X-Received: by 2002:a5d:408d:: with SMTP id o13mr9465719wrp.246.1626273779982; Wed, 14 Jul 2021 07:42:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626273779; cv=none; d=google.com; s=arc-20160816; b=loK2DQj3+r4xICGmZr9UrSjieauvvLPRh2BsLVtZY2Yb7jeNeX8I8N56lYw8EnqaHW g6Jd6T1kAqKoofXmPqmDsDZN1EN8PX15ckbV1BvKWdcwuX3ECn3qdhsy82gfR5joNkCy em6SBN8LED1acxmR80DHL3hjUbsD1Szf/qk/fi6Rg+T73Y5fO5CSDGBS92/XhkI8TLDi ZETV8/x0ldLNI/caNzjX6xQ1vqnz/wuEN4V98wB6zG/ieMlk8g5t4VURKDm5PFXINHFA +rszZtuFilu15dxGJjUvRmBAS2OfVfCGUFzlr6K29butO5SCTCXKMip5wPSYCPykNgFw uAtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=FvaqgcvRyybaM/FhMHaINJZrLfh42lDZd9kHXz+ElT0=; b=oVpfFLwFom1bt+Gq8EUI9giX0m+DxfXGV40bisTjfclsulBjcvoj1dYO/SyG4JM+8g rykZAgz0cYFVEp2zEhcmHrincq7rNUSGifOf/1SHGgs1CdjvvabqBsBB/izLaq11tFix xfT5AT5+QHdg3BTMHBkV0IpPeIEe2G1ueiEN5QQSOpPZJ1JBCUYLVWo/+x56rTm4JkKZ lSIGdx/dcmOSV5kqdbiDS0nvWG2OH0vkujXLt3nFBLsFl9dRX0j9lqwdDewAIjUgT4rX 2FOQ4cYkmAB2YcPxcscmsDuIsDR0w6onydcmcKvFudSzPB2NkWcfeFM3BhlP727+e50v PZpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ekg+zIbY; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f14si2695096ejj.667.2021.07.14.07.42.58; Wed, 14 Jul 2021 07:42: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=@gmail.com header.s=20161025 header.b=ekg+zIbY; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A90F6687F21; Wed, 14 Jul 2021 17:42:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0209E68A596 for ; Wed, 14 Jul 2021 17:42:49 +0300 (EEST) Received: by mail-pf1-f176.google.com with SMTP id x16so2207104pfa.13 for ; Wed, 14 Jul 2021 07:42:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=FarSUM3nDIH8SrsCy/5f+KFXdbk3U8wAmVcrRHFYxUg=; b=ekg+zIbYjAFbiS/ANzk0o2Ijes8W8aKbjHJ7vmwuCxY+s8+2F5kJ0WlocCIqkp4XJg UQwUNqxN3EsWZ421IvnNp27cIViVNKINacN6WPZGMLenMHvE25z2whSv6n0QO9PLBC8z APnU2+0siv21mXXYWQGGDlAdqYjEmc/swJVdwogLkPyvxJ0aWlK2XyTkSa7ijTdJIw6w FIUmcuXnJ2+m3gI+HHQscTkV6KOQVFa96vuNj7p5JbzeiN98Md7yl7vRZ3Ye3zIHVWCy 4KBDVzNQPlH6oOXxk24VLyC14OLLGpw7gfXeAkg7rLONPLk0J45Cr8dsV2Bmw9IXY0r8 o7Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=FarSUM3nDIH8SrsCy/5f+KFXdbk3U8wAmVcrRHFYxUg=; b=CLYUOYq6r04H3/YV+FYwEXt9UFojelgP5XJXq2TMOhAccF64EbMEyvztNCZXOAJ+/B IrSvbi9WcnrugkaEl1+6NfZsCEtVWhdcxvC6OCMFj35Z8P2Z2H3WbzFrbRVkd/B2UrA8 zrwqQ6GYcgapLmyKBKx8rhFkB6ObGdl8LVXVotJI6r8iIvMn8vlr39p+qbqSpwm6quWs rCABhxuHr5AEinp/FrozklDjCnK2oDkbJZPIlq8QcQmrD3rCmzhmiUtaxM7dxTFVAaTr rau2JuuOFj5f9CiJvUJ0nRrWwUo8KJjnJxWCOkS0D+SHTrIevrTb8VFQ3vEP5vGpErGW qcQA== X-Gm-Message-State: AOAM532ZN8LRnpWaZA+rUUlj37Ud7oHWUwdfVWKdkcKzSq1PH+RSyuKj iBIRoJojKxo2lohLeHCgbp+llcmj0l0= X-Received: by 2002:a63:5442:: with SMTP id e2mr9985888pgm.365.1626273373456; Wed, 14 Jul 2021 07:36:13 -0700 (PDT) Received: from localhost.localdomain ([191.83.217.217]) by smtp.gmail.com with ESMTPSA id b17sm1132030pfm.54.2021.07.14.07.36.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 07:36:12 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Jul 2021 11:33:59 -0300 Message-Id: <20210714143401.890-1-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec: add a parser flag to enable keyframe tagging heuristics 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: c0WdTptYA5dP It will be used to allow parsers to be more liberal when tagging packets as keyframes. Signed-off-by: James Almer --- libavcodec/avcodec.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 8b97895aeb..8e3d888266 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2809,6 +2809,7 @@ typedef struct AVCodecParserContext { #define PARSER_FLAG_ONCE 0x0002 /// Set if the parser has a valid file offset #define PARSER_FLAG_FETCHED_OFFSET 0x0004 +#define PARSER_FLAG_USE_KEYFRAME_HEURISTICS 0x0008 #define PARSER_FLAG_USE_CODEC_TS 0x1000 int64_t offset; ///< byte offset from starting packet start From patchwork Wed Jul 14 14:34:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 28923 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp465398ios; Wed, 14 Jul 2021 07:36:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzg7crO7G6+Lj1HshEuIR+WD3/2ilPJE5nD8TTcYV03xyYbJPvsvuj9gXNLvhrKNzKj6RXc X-Received: by 2002:a17:906:2acc:: with SMTP id m12mr2105808eje.231.1626273388268; Wed, 14 Jul 2021 07:36:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626273388; cv=none; d=google.com; s=arc-20160816; b=ieIExgDtW7+v+aFwE2PesZivCPRSGpz08XMZXVQr+vhxI++Hr+5lPRZeEMigSuicVp BTDmB6k2RSD10A6s8z+iUocGLhTAn1YiYgALIm7jpkMzY5DK8KSyCP5DMPnLIuV5kTQO JVwL9Pk0fHoBdMbbEedIj7+rfG7t+xfnqLZckgukGZaOkk6DfX1xqSpTKqeVCTxaM8Jx 3CseJ8mTnDupY2oIxSeynCA9hs6N9eMoWpXYp9TvNAZ9xwcn1lC/XaYqkO6wHoaBtLIy gXCtB38ZarluiBtkodngQDNWCpZw5yeFpbIuXBv810g1pK3R4B+p4maN0EbYTqKzBbGA S6+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=fLfYRd+Y0TXXSo9rQalGrjVXd0kTFrUhMGhb5Sy6msE=; b=XwHjtpvikfEWUzORNirH3oVd4Jh8yxwNtXxT5j+HF8ahhZ0PPD6oVeHAhF2Mqf4kGI 6yJLgaG0SnPJy8Wp8GzcyBlGYcKCoQAF8L08Zc1HXe5mxiIl0K+PHw1ndGcwhmH/RZQz dZeFVANRM/+aIQUaJBo1/h9CTX4EVvlg7BkaLgHltC6hznjFThEmN7PAwCq2Kp65uEJx 11TmXIBYQKIlTfFA/IQTT7pfqWyaNAkR6prQQlTJ7u9pbe6rZ57gcMgiG2glwQjEcNHz bhNn3JhTm6slDj/jNS5x0EvtjPOKRX6LruVPM9g7tMLIp3T11wlD7/2W6tLoDPKNTtNq S3Iw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=mrn0O9+N; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ee55si2639491edb.109.2021.07.14.07.36.27; Wed, 14 Jul 2021 07:36:28 -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=@gmail.com header.s=20161025 header.b=mrn0O9+N; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0558E68A7C8; Wed, 14 Jul 2021 17:36:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 137B6687F21 for ; Wed, 14 Jul 2021 17:36:17 +0300 (EEST) Received: by mail-pj1-f47.google.com with SMTP id cu14so1714245pjb.0 for ; Wed, 14 Jul 2021 07:36:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=TMfZQf5V2STqrTmrwyex7Bmk8QKBoXlNRf3CbXnHDvA=; b=mrn0O9+NzNEtHDCJkBoMob+WbAD5viRIz+6KuD2Kzcu3XiqEqQ1ejcJHIdMTdNJYEi xV2WyUMsjOTdeMizemflHOfOhITU0nue9LXdF7Ix2UriFZGQB8q8XJxL0KqbV3JivDDE R7gj/ERS9VRCz00OBgJKXJmTm0Xrnz4wwCPV3+3GPcOx6qf+VyTX0EZ81E9WUhQQSbrC 2PMuX0C4cPuIjFYiNm+Rvd7kx9769ac/rYaOhIYGrHmWwQ0gfHJ3vJ4oWkBk+RkzmkJ9 nHxo4F3UnkUV96EZAkwVfOdksvBOn9Y++xlNFVPqWDsSo+a6RWK6cxG4Ohnotqc2CFHP UUFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TMfZQf5V2STqrTmrwyex7Bmk8QKBoXlNRf3CbXnHDvA=; b=H7RZlkMabw6PztFKvMXvO9pMqiRYXGpIf/JRBZD1fEk22zYtGXCVByTdLP6sWToX4V 1kuNmG93RvxYgg5KS+/ge7cEW8PNoT8fdDgJArR2MiBUZyoH6O12FBO+qfaxgp8NxHRv 1euhJJxYrNhZk+7Ez331dZfKKkm1lXYZ6hQxSLnyMskajWA8g0uW4WwICT9cip7UJIkv PmhS6UNmhA7ONKUhEhopF01h1lLHwrrIwpqTSRMkOEQzTuutm24ZTC9gzTtAtYGPKLHL pshxwIKmktntUkIqHoH5Ky2u7OSDOr9QA1Y711J8piTzRmQI0qzdTUEy3Uw/pNjqV6qY jxuA== X-Gm-Message-State: AOAM532z6SkrbzKSY0WB35Favds5iqwcEXZI4TPaF0LEYexYnnIRkpGM nw5eXEwXsCUpkvsHqLnuuW0ptuu8wPY= X-Received: by 2002:a17:90a:43c3:: with SMTP id r61mr4140808pjg.11.1626273374900; Wed, 14 Jul 2021 07:36:14 -0700 (PDT) Received: from localhost.localdomain ([191.83.217.217]) by smtp.gmail.com with ESMTPSA id b17sm1132030pfm.54.2021.07.14.07.36.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 07:36:14 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Jul 2021 11:34:00 -0300 Message-Id: <20210714143401.890-2-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210714143401.890-1-jamrial@gmail.com> References: <20210714143401.890-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avformat/mpegtsenc: use an AVParser for h264 streams 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: xFq6eFr8hdGN Use it to enable keyframe tagging heuristics to mark as many RAPs as possible. Signed-off-by: James Almer --- configure | 2 +- libavformat/mpegtsenc.c | 45 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/configure b/configure index 2d2d125fd3..bbf0283a67 100755 --- a/configure +++ b/configure @@ -3378,7 +3378,7 @@ mp3_demuxer_select="mpegaudio_parser" mp3_muxer_select="mpegaudioheader" mp4_muxer_select="mov_muxer" mpegts_demuxer_select="iso_media" -mpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_mp4toannexb_bsf hevc_mp4toannexb_bsf" +mpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_parser h264_mp4toannexb_bsf hevc_mp4toannexb_bsf" mpegtsraw_demuxer_select="mpegts_demuxer" mxf_muxer_select="golomb pcm_rechunk_bsf" mxf_d10_muxer_select="mxf_muxer" diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 98dac17994..4e15f3da07 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -257,6 +257,10 @@ typedef struct MpegTSWriteStream { int opus_queued_samples; int opus_pending_trim_start; + /* For H.264 */ + AVCodecParserContext *parser; + AVCodecContext *parser_avctx; + DVBAC3Descriptor *dvb_ac3_desc; } MpegTSWriteStream; @@ -1216,6 +1220,21 @@ static int mpegts_init(AVFormatContext *s) ts_st->payload_dts = AV_NOPTS_VALUE; ts_st->cc = 15; ts_st->discontinuity = ts->flags & MPEGTS_FLAG_DISCONT; + if (st->codecpar->codec_id == AV_CODEC_ID_H264) { + ts_st->parser = av_parser_init(st->codecpar->codec_id); + if (!ts_st->parser) + return AVERROR(ENOMEM); + ts_st->parser_avctx = avcodec_alloc_context3(NULL); + if (!ts_st->parser_avctx) + return AVERROR(ENOMEM); + ret = avcodec_parameters_to_context(ts_st->parser_avctx, st->codecpar); + if (ret < 0) + return ret; + // We only want to parse frame headers + ts_st->parser->flags |= PARSER_FLAG_COMPLETE_FRAMES; + // And we want keyframe tagging heuristics + ts_st->parser->flags |= PARSER_FLAG_USE_KEYFRAME_HEURISTICS; + } if (st->codecpar->codec_id == AV_CODEC_ID_AAC && st->codecpar->extradata_size > 0) { AVStream *ast; @@ -1832,6 +1851,7 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) const int64_t delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE) * 2; const int64_t max_audio_delay = av_rescale(s->max_delay, 90000, AV_TIME_BASE) / 2; int64_t dts = pkt->dts, pts = pkt->pts; + int flags = pkt->flags; int opus_samples = 0; size_t side_data_size; uint8_t *side_data = NULL; @@ -1864,11 +1884,18 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) if (st->codecpar->codec_id == AV_CODEC_ID_H264) { const uint8_t *p = buf, *buf_end = p + size; uint32_t state = -1; - int extradd = (pkt->flags & AV_PKT_FLAG_KEY) ? st->codecpar->extradata_size : 0; + int extradd; int ret = ff_check_h264_startcode(s, st, pkt); if (ret < 0) return ret; + av_parser_parse2(ts_st->parser, ts_st->parser_avctx, + &buf, &size, pkt->data, pkt->size, + pkt->pts, pkt->dts, pkt->pos); + if (ts_st->parser->key_frame) + flags |= AV_PKT_FLAG_KEY; + + extradd = (flags & AV_PKT_FLAG_KEY) ? st->codecpar->extradata_size : 0; if (extradd && AV_RB24(st->codecpar->extradata) > 1) extradd = 0; @@ -2106,7 +2133,7 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) av_assert0(!ts_st->payload_size); // for video and subtitle, write a single pes packet mpegts_write_pes(s, st, buf, size, pts, dts, - pkt->flags & AV_PKT_FLAG_KEY, stream_id); + flags & AV_PKT_FLAG_KEY, stream_id); ts_st->opus_queued_samples = 0; av_free(data); return 0; @@ -2115,7 +2142,7 @@ static int mpegts_write_packet_internal(AVFormatContext *s, AVPacket *pkt) if (!ts_st->payload_size) { ts_st->payload_pts = pts; ts_st->payload_dts = dts; - ts_st->payload_flags = pkt->flags; + ts_st->payload_flags = flags; } memcpy(ts_st->payload + ts_st->payload_size, buf, size); @@ -2184,6 +2211,9 @@ static void mpegts_deinit(AVFormatContext *s) if (ts_st) { av_freep(&ts_st->dvb_ac3_desc); av_freep(&ts_st->payload); + avcodec_free_context(&ts_st->parser_avctx); + av_parser_close(ts_st->parser); + ts_st->parser = NULL; if (ts_st->amux) { avformat_free_context(ts_st->amux); ts_st->amux = NULL; @@ -2207,8 +2237,15 @@ static int mpegts_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && (AV_RB24(pkt->data) != 0x000001 || (st->codecpar->extradata_size > 0 && - st->codecpar->extradata[0] == 1))) + st->codecpar->extradata[0] == 1))) { ret = ff_stream_add_bitstream_filter(st, "h264_mp4toannexb", NULL); + if (ret == 1) { + MpegTSWriteStream *ts_st = st->priv_data; + int err = avcodec_parameters_to_context(ts_st->parser_avctx, st->internal->bsfc->par_out); + if (err < 0) + return err; + } + } } else if (st->codecpar->codec_id == AV_CODEC_ID_HEVC) { if (pkt->size >= 5 && AV_RB32(pkt->data) != 0x0000001 && (AV_RB24(pkt->data) != 0x000001 || From patchwork Wed Jul 14 14:34:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 28925 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp472360ios; Wed, 14 Jul 2021 07:44:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycrhcDp8AAAI9ZWncLYSF9PXJbSDfGuLqlC0JX0e0gCXfBlxWYL4F+7VqLwP4pFvN2ZQkY X-Received: by 2002:a17:906:1b41:: with SMTP id p1mr12752422ejg.486.1626273887938; Wed, 14 Jul 2021 07:44:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626273887; cv=none; d=google.com; s=arc-20160816; b=dVslctVrpxBQFFfFsD0ChET76OyQCjgD74E0JPKs9fAdnrFGJp91PsYQAKkXMhSFsD hMtr4ceyEQAj2pmyVVWR6BSyRZ5JjhyPMkdFHokZr/vQymoO/jloHy1uPoy/GCE64b/N iBrskVfRibZM2xZyXfp7xuQX2g7dUHUiE8Ghve7VvX4bpG0m2CdJ43ffb9rB0PLk40nx FJeoYPLYUYz+PdM0gfdwuHsr/34HjQg2V7LKOqb4EKe3fVwDuvklmreyFGjcqIc83G52 eaRWRVYtEoJkYAlp1pJltrph7XPGXyuI0fsHup2AKgYWNzy+QFsPvNWCaaYEZJi4GJpo ZqlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=k2HedI9I0C0S7193/ouF2MYxVk7thLQAgZe5bCqzmSE=; b=r+KJXYTZfAYqs8VQE6FHmLDNBxvc32wiFCvDo5wLbmC7IyezshWhRMlaX26PCarPcK rEdpw+wv/1GKf9bP8K1DFKYLU+WW1JONo6swai61AQNmkzwBPmiJgLkHi4LENfVimPKd xDgHCega9aUK+n0c6EAU/ut8lTHsNSR/4I+UJ9h6+M+NOO2FhxLkCQTJ5bO+53hHR68v AR1vXqfs6RvEsx4LdrCg5o2s666UZiD5+jTrwrWSJJ2xVnporcBrHgOfupHP8It5tTYJ aQOSh1r03bYw7muzsgSjfprhja7owIbnIEQfXCAre8V2bHLVl6AVyzE4zHnIz0YgpPU6 VgTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=hZxsqPN6; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4si2845453ejm.546.2021.07.14.07.44.47; Wed, 14 Jul 2021 07:44: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=@gmail.com header.s=20161025 header.b=hZxsqPN6; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0882368A7B4; Wed, 14 Jul 2021 17:44:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E766468A2CF for ; Wed, 14 Jul 2021 17:44:37 +0300 (EEST) Received: by mail-pg1-f181.google.com with SMTP id y17so2632626pgf.12 for ; Wed, 14 Jul 2021 07:44:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=scV7rdRDk6W5FQJwNZbgSFEUbMSxiuxtCS8Qwz72l80=; b=hZxsqPN6eCZY5Ostu2nybmC9MbyA7a2985XstwS5CiCBd7UoD9oNWfASLa5bm2oSry Dw3xVFzP8U+iCl5baE2io8N7IfPTB4VVGnz+C26Y0aBpwSDMcXRZvHlmwl7JSweObbzQ NtKM/ECY1Gbfh/glp90Gv6siM8kEvCrOe2nK5M4zHiJ+B/3Yv0dBWpw9jomPAT8LMt7T Nii+RlZbmrV9bsnkeMSTNrP0mtfTy08A6xJrtYXQn0DDo+1aRbt17WOndpbO8H+JgJ0B FhQWhHCGEnbWKEtrEEg75JUeB5aT5VsRvOdj2qGHEjBhgFxIBIZyXTEn0gP8NtT6waJB I88w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=scV7rdRDk6W5FQJwNZbgSFEUbMSxiuxtCS8Qwz72l80=; b=QZ5VuvoGQiybFjNDNn32nMAvV+w4S4X0B1R0YvGJ6ctK8o7Ex9m/LXxnZXN3/Bvr36 YBWPnoLlhf0CQCls9Q1OLnHEDP6Lunc90b21DIDGGqJ/81NXHgj/+FWrmQ3igktiqe5d ODZcKboyoWSkB0s7oMZDaOs3WOQAlE7dCji07iJDRf3CenQFUA+QERBkIpDyzhJsfHnX I5fncMsLadwC89oW7mLq+mUE2f8KmEwv+cNGTrl+cHAiqlgFq6L+RHMTZor2DGdw1jvV /lnkDvGqw/Z7J0kuJQgR8uXUIukzZ9J7+flYC783gp+QCUytlPMhvZH/JZLSdLN/lRCS gDWQ== X-Gm-Message-State: AOAM530Rb5AdYJs4f0cctXO1VA43qXkMOlOGCfsfsoCEakeI1cOEYm+a sQn/JFSu5ddguVnOHjb//ECI5BD5wBo= X-Received: by 2002:a65:5c89:: with SMTP id a9mr9915921pgt.207.1626273376571; Wed, 14 Jul 2021 07:36:16 -0700 (PDT) Received: from localhost.localdomain ([191.83.217.217]) by smtp.gmail.com with ESMTPSA id b17sm1132030pfm.54.2021.07.14.07.36.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jul 2021 07:36:15 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Jul 2021 11:34:01 -0300 Message-Id: <20210714143401.890-3-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210714143401.890-1-jamrial@gmail.com> References: <20210714143401.890-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/h264_parser: use the keyframe heuristics flag 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kOZz6IcMuCh1 Tag only packets containing with IDR pictures as keyframes by default, same as the decoder. Fixes MP4 and Matroska muxers marking incorrect samples as Sync Samples in scenarios where this AVParser is used. Signed-off-by: James Almer --- libavcodec/h264_parser.c | 16 ++++++++++------ tests/fate-run.sh | 4 ++-- tests/fate/ffmpeg.mak | 2 +- tests/fate/lavf-container.mak | 12 ++++++------ tests/fate/matroska.mak | 2 +- tests/ref/fate/copy-trac2211-avi | 2 +- tests/ref/fate/matroska-h264-remux | 4 ++-- tests/ref/fate/segment-mp4-to-ts | 10 +++++----- tests/ref/lavf-fate/h264.mp4 | 4 ++-- 9 files changed, 30 insertions(+), 26 deletions(-) diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index d3c56cc188..532dc462b0 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -344,9 +344,11 @@ static inline int parse_nal_units(AVCodecParserContext *s, get_ue_golomb_long(&nal.gb); // skip first_mb_in_slice slice_type = get_ue_golomb_31(&nal.gb); s->pict_type = ff_h264_golomb_to_pict_type[slice_type % 5]; - if (p->sei.recovery_point.recovery_frame_cnt >= 0) { - /* key frame, since recovery_frame_cnt is set */ - s->key_frame = 1; + if (s->flags & PARSER_FLAG_USE_KEYFRAME_HEURISTICS) { + if (p->sei.recovery_point.recovery_frame_cnt >= 0) { + /* key frame, since recovery_frame_cnt is set */ + s->key_frame = 1; + } } pps_id = get_ue_golomb(&nal.gb); if (pps_id >= MAX_PPS_COUNT) { @@ -370,9 +372,11 @@ static inline int parse_nal_units(AVCodecParserContext *s, p->ps.sps = p->ps.pps->sps; sps = p->ps.sps; - // heuristic to detect non marked keyframes - if (p->ps.sps->ref_frame_count <= 1 && p->ps.pps->ref_count[0] <= 1 && s->pict_type == AV_PICTURE_TYPE_I) - s->key_frame = 1; + if (s->flags & PARSER_FLAG_USE_KEYFRAME_HEURISTICS) { + // heuristic to detect non marked keyframes + if (p->ps.sps->ref_frame_count <= 1 && p->ps.pps->ref_count[0] <= 1 && s->pict_type == AV_PICTURE_TYPE_I) + s->key_frame = 1; + } p->poc.frame_num = get_bits(&nal.gb, sps->log2_max_frame_num); diff --git a/tests/fate-run.sh b/tests/fate-run.sh index ba437dfbb8..8680e35524 100755 --- a/tests/fate-run.sh +++ b/tests/fate-run.sh @@ -339,8 +339,8 @@ lavf_container_fate() outdir="tests/data/lavf-fate" file=${outdir}/lavf.$t input="${target_samples}/$1" - do_avconv $file -auto_conversion_filters $DEC_OPTS $2 -i "$input" "$ENC_OPTS -metadata title=lavftest" -vcodec copy -acodec copy - do_avconv_crc $file -auto_conversion_filters $DEC_OPTS -i $target_path/$file $3 + do_avconv $file -auto_conversion_filters $DEC_OPTS $2 -i "$input" "$ENC_OPTS -metadata title=lavftest" -vcodec copy -acodec copy $3 + do_avconv_crc $file -auto_conversion_filters $DEC_OPTS -i $target_path/$file $4 } lavf_image(){ diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak index 4dfb77d250..57d16fba6f 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -110,7 +110,7 @@ fate-copy-trac4914-avi: CMD = transcode mpegts $(TARGET_SAMPLES)/mpeg2/xdcam8mp2 FATE_STREAMCOPY-$(call ALLYES, H264_DEMUXER AVI_MUXER) += fate-copy-trac2211-avi fate-copy-trac2211-avi: $(SAMPLES)/h264/bbc2.sample.h264 fate-copy-trac2211-avi: CMD = transcode "h264 -r 14" $(TARGET_SAMPLES)/h264/bbc2.sample.h264\ - avi "-c:a copy -c:v copy" + avi "-c:a copy -c:v copy -copyinkf" FATE_STREAMCOPY-$(call ENCDEC, APNG, APNG) += fate-copy-apng fate-copy-apng: fate-lavf-apng diff --git a/tests/fate/lavf-container.mak b/tests/fate/lavf-container.mak index 9e0eed4851..40250badc1 100644 --- a/tests/fate/lavf-container.mak +++ b/tests/fate/lavf-container.mak @@ -71,13 +71,13 @@ FATE_LAVF_CONTAINER_FATE = $(FATE_LAVF_CONTAINER_FATE-yes:%=fate-lavf-fate-%) $(FATE_LAVF_CONTAINER_FATE): REF = $(SRC_PATH)/tests/ref/lavf-fate/$(@:fate-lavf-fate-%=%) $(FATE_LAVF_CONTAINER_FATE): $(AREF) $(VREF) -fate-lavf-fate-av1.mp4: CMD = lavf_container_fate "av1-test-vectors/av1-1-b8-05-mv.ivf" "" "-c:v copy" -fate-lavf-fate-av1.mkv: CMD = lavf_container_fate "av1-test-vectors/av1-1-b8-05-mv.ivf" "" "-c:v copy" -fate-lavf-fate-h264.mp4: CMD = lavf_container_fate "h264/intra_refresh.h264" "" "-c:v copy" +fate-lavf-fate-av1.mp4: CMD = lavf_container_fate "av1-test-vectors/av1-1-b8-05-mv.ivf" "" "" "-c:v copy" +fate-lavf-fate-av1.mkv: CMD = lavf_container_fate "av1-test-vectors/av1-1-b8-05-mv.ivf" "" "" "-c:v copy" +fate-lavf-fate-h264.mp4: CMD = lavf_container_fate "h264/intra_refresh.h264" "" "-copyinkf" "-c:v copy -copyinkf" fate-lavf-fate-vp3.ogg: CMD = lavf_container_fate "vp3/coeff_level64.mkv" "-idct auto" -fate-lavf-fate-vp8.ogg: CMD = lavf_container_fate "vp8/RRSF49-short.webm" "" "-acodec copy" -fate-lavf-fate-latm: CMD = lavf_container_fate "aac/al04_44.mp4" "" "-acodec copy" -fate-lavf-fate-mp3: CMD = lavf_container_fate "mp3-conformance/he_32khz.bit" "" "-acodec copy" +fate-lavf-fate-vp8.ogg: CMD = lavf_container_fate "vp8/RRSF49-short.webm" "" "" "-acodec copy" +fate-lavf-fate-latm: CMD = lavf_container_fate "aac/al04_44.mp4" "" "" "-acodec copy" +fate-lavf-fate-mp3: CMD = lavf_container_fate "mp3-conformance/he_32khz.bit" "" "" "-acodec copy" fate-lavf-fate-qtrle_mace6.mov: CMD = lavf_container_fate "qtrle/Animation-16Greys.mov" "-idct auto" fate-lavf-fate-cram.avi: CMD = lavf_container_fate "cram/toon.avi" "-idct auto" diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index ca7193a055..545a0d1d50 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -105,7 +105,7 @@ FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MPEGTS_DEMUXER \ MATROSKA_DEMUXER H264_DECODER \ FRAMECRC_MUXER PIPE_PROTOCOL) \ += fate-matroska-h264-remux -fate-matroska-h264-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts matroska "-map 0:0 -map 0 -c:v copy -sar:0 3:4 -bsf:v:1 h264_metadata=aud=remove:delete_filler=1 -disposition:v +hearing_impaired -af aresample -c:a:0 pcm_s32le -c:a:1 pcm_s32be -disposition:a:0 original -metadata:s:a:0 title=swedish_silence -metadata:s:a:1 title=norwegian_silence -disposition:a:1 dub" "-map 0:v" "" "-show_entries stream=index,codec_name:stream_tags=title,language" +fate-matroska-h264-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts matroska "-map 0:0 -map 0 -c:v copy -copyinkf -sar:0 3:4 -bsf:v:1 h264_metadata=aud=remove:delete_filler=1 -disposition:v +hearing_impaired -af aresample -c:a:0 pcm_s32le -c:a:1 pcm_s32be -disposition:a:0 original -metadata:s:a:0 title=swedish_silence -metadata:s:a:1 title=norwegian_silence -disposition:a:1 dub" "-map 0:v" "" "-show_entries stream=index,codec_name:stream_tags=title,language" # Tests writing BlockAdditional and BlockGroups with ReferenceBlock elements; # it also tests setting a track as suitable for hearing impaired. diff --git a/tests/ref/fate/copy-trac2211-avi b/tests/ref/fate/copy-trac2211-avi index 06d81e537d..1f71ae65f2 100644 --- a/tests/ref/fate/copy-trac2211-avi +++ b/tests/ref/fate/copy-trac2211-avi @@ -1,4 +1,4 @@ -0920978f3f8196413c43f0033b55a5b6 *tests/data/fate/copy-trac2211-avi.avi +ee1e66eac40569ae3cf9552286900900 *tests/data/fate/copy-trac2211-avi.avi 1777956 tests/data/fate/copy-trac2211-avi.avi #tb 0: 1/14 #media_type 0: video diff --git a/tests/ref/fate/matroska-h264-remux b/tests/ref/fate/matroska-h264-remux index 14e6758fa0..7b852f8266 100644 --- a/tests/ref/fate/matroska-h264-remux +++ b/tests/ref/fate/matroska-h264-remux @@ -1,5 +1,5 @@ -ded6da7e46ce7df1232b116afb0b2f0a *tests/data/fate/matroska-h264-remux.matroska -2036083 tests/data/fate/matroska-h264-remux.matroska +d5fc08094380fc8aba485c09b596ceee *tests/data/fate/matroska-h264-remux.matroska +2371935 tests/data/fate/matroska-h264-remux.matroska #tb 0: 1/25 #media_type 0: video #codec_id 0: rawvideo diff --git a/tests/ref/fate/segment-mp4-to-ts b/tests/ref/fate/segment-mp4-to-ts index 8b0746fa92..5c456cd0bc 100644 --- a/tests/ref/fate/segment-mp4-to-ts +++ b/tests/ref/fate/segment-mp4-to-ts @@ -25,7 +25,7 @@ 0, 57600, 64800, 3600, 1182, 0xbe1a4847, F=0x0, S=1, 1 0, 61200, 61200, 3600, 809, 0x8d948a4e, F=0x0, S=1, 1 0, 64800, 68400, 3600, 656, 0x4fa03c2b, F=0x0, S=1, 1 -0, 68400, 86400, 3600, 26555, 0x5629b584, S=1, 1 +0, 68400, 86400, 3600, 26555, 0x5629b584, F=0x0, S=1, 1 0, 72000, 79200, 3600, 1141, 0x761b31e8, F=0x0, S=1, 1 0, 75600, 75600, 3600, 717, 0x57746351, F=0x0, S=1, 1 0, 79200, 82800, 3600, 693, 0x78b24263, F=0x0, S=1, 1 @@ -49,7 +49,7 @@ 0, 144000, 151200, 3600, 1271, 0x46006870, F=0x0, S=1, 1 0, 147600, 147600, 3600, 849, 0x94dc99c7, F=0x0, S=1, 1 0, 151200, 154800, 3600, 753, 0xf4236cab, F=0x0, S=1, 1 -0, 154800, 172800, 3600, 25825, 0xd5464dee, S=1, 1 +0, 154800, 172800, 3600, 25825, 0xd5464dee, F=0x0, S=1, 1 0, 158400, 165600, 3600, 1206, 0x8ce84344, F=0x0, S=1, 1 0, 162000, 162000, 3600, 867, 0x312fa07d, F=0x0, S=1, 1 0, 165600, 169200, 3600, 719, 0x810666d1, F=0x0, S=1, 1 @@ -73,7 +73,7 @@ 0, 230400, 237600, 3600, 1545, 0x0099fc98, F=0x0, S=1, 1 0, 234000, 234000, 3600, 929, 0xfd72d049, F=0x0, S=1, 1 0, 237600, 241200, 3600, 829, 0xcfda9e96, F=0x0, S=1, 1 -0, 241200, 259200, 3600, 24220, 0x5ca21d71, S=1, 1 +0, 241200, 259200, 3600, 24220, 0x5ca21d71, F=0x0, S=1, 1 0, 244800, 252000, 3600, 1422, 0xcde6cc34, F=0x0, S=1, 1 0, 248400, 248400, 3600, 883, 0xedacbe25, F=0x0, S=1, 1 0, 252000, 255600, 3600, 768, 0x89d774bc, F=0x0, S=1, 1 @@ -97,7 +97,7 @@ 0, 316800, 324000, 3600, 1501, 0xb3b8f001, F=0x0, S=1, 1 0, 320400, 320400, 3600, 941, 0x92b0cb18, F=0x0, S=1, 1 0, 324000, 327600, 3600, 823, 0x3d548355, F=0x0, S=1, 1 -0, 327600, 345600, 3600, 24042, 0x441e94fb, S=1, 1 +0, 327600, 345600, 3600, 24042, 0x441e94fb, F=0x0, S=1, 1 0, 331200, 338400, 3600, 1582, 0x4f5d1049, F=0x0, S=1, 1 0, 334800, 334800, 3600, 945, 0x4f3cc9e8, F=0x0, S=1, 1 0, 338400, 342000, 3600, 815, 0x0ca790a4, F=0x0, S=1, 1 @@ -121,7 +121,7 @@ 0, 403200, 410400, 3600, 359, 0x11bdae52, F=0x0, S=1, 1 0, 406800, 406800, 3600, 235, 0xbec26964, F=0x0, S=1, 1 0, 410400, 414000, 3600, 221, 0x8380682c, F=0x0, S=1, 1 -0, 414000, 432000, 3600, 22588, 0xf0ecf072, S=1, 1 +0, 414000, 432000, 3600, 22588, 0xf0ecf072, F=0x0, S=1, 1 0, 417600, 424800, 3600, 383, 0x4f3bb571, F=0x0, S=1, 1 0, 421200, 421200, 3600, 257, 0x22e87802, F=0x0, S=1, 1 0, 424800, 428400, 3600, 261, 0xdb988134, F=0x0, S=1, 1 diff --git a/tests/ref/lavf-fate/h264.mp4 b/tests/ref/lavf-fate/h264.mp4 index a9c3823c2c..54d8c407d2 100644 --- a/tests/ref/lavf-fate/h264.mp4 +++ b/tests/ref/lavf-fate/h264.mp4 @@ -1,3 +1,3 @@ -fe299ea5205b71a48281f917b1256a5d *tests/data/lavf-fate/lavf.h264.mp4 -547928 tests/data/lavf-fate/lavf.h264.mp4 +badb54efedaf0c7f725158b85339a8f4 *tests/data/lavf-fate/lavf.h264.mp4 +548177 tests/data/lavf-fate/lavf.h264.mp4 tests/data/lavf-fate/lavf.h264.mp4 CRC=0x9da2c999