From patchwork Wed Mar 14 06:24:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rodger Combs X-Patchwork-Id: 7986 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp1636614jad; Tue, 13 Mar 2018 23:26:11 -0700 (PDT) X-Google-Smtp-Source: AG47ELtJ+jPBX4/VLMSmcKqbGlUHVYXsYqIUseTC88AVRu1B+tjcQ2PPUW/QDG9nM++fUZpqV3xo X-Received: by 10.28.210.85 with SMTP id j82mr565672wmg.64.1521008771901; Tue, 13 Mar 2018 23:26:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521008771; cv=none; d=google.com; s=arc-20160816; b=iGSv0pgJ3Px8BBx18PpkV3iFumMbId9i6qGMq7KBfetj0YLx6+C1mb8ssXSA9bIrPK nH94VIRhPyBQQZvYoAYlr+BdQurImeKfcjcNUBm9dJwwMeLfpl3uquCFru4jmERUIcZA UWdZsweHFu1QIMHS5PBmTU0ITpKEL5kMFgDNpIUkg4fZdRr+lsjGsFLyvndGJnbpL9cQ Mq+ECVQjAX+y6ffSFEmF2auOVeHw6TdH9J2LonDhYRN+tJRYES6T0uiH0wjzzHgPLtbc 4rP/hmZp92ga6/iTU/Ivbo7ZOLiz3rB7HA5Xp2YkdKfEknYY1yBtqVUEwKXQs3Q01v7X 3evQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=WczTcnnx9FZjSleHgFrXiyAGhsCGFN0GHqHi59D9304=; b=Ddv36oucHVL5W0aEAvqL8kh777WufSLOesd7xM+KWCM3pZ5FvQN6Rz4i4KCtRfhhef sv+WlX4G7YCSUwnwah2Y3sXdYaUXc/q/JCoC9257ysfY45JLBNiGU6rN4ZfQz5W0k5VE hW6ufnCmxyR1sfMIDhFgmZ9PbG+Hc2+FmZFlR3JUesw+fa9j/dgaEQcD7sNRSMExoXL4 cDOZjeeDrozeAKNFnD0yBuSLxyWnKMFA5DKGPZqDSs7fb3fy7Q9ii7x2Pj3JI23nX0xS 1m+J+QctCEzluin3jVXMc+kamXy4vw2fQ23EDCAR/AH/5ik39C39gl3/GH14vJCCHpf+ LoNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=tSxSSYQG; 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 v4si1332773wrd.168.2018.03.13.23.26.11; Tue, 13 Mar 2018 23:26:11 -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=tSxSSYQG; 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 A211568A180; Wed, 14 Mar 2018 08:24:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f45.google.com (mail-it0-f45.google.com [209.85.214.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B7D7B689C67 for ; Wed, 14 Mar 2018 08:24:46 +0200 (EET) Received: by mail-it0-f45.google.com with SMTP id l187-v6so3246843ith.4 for ; Tue, 13 Mar 2018 23:24:58 -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; bh=NzMogn6+6xZOsS6ZQKgQcRaxouPlO/+jmAoWe8SL8O4=; b=tSxSSYQG28al/Fyh+Ij3EsvDERkL2kWZq/K05UL7rM09HYy3QRYeNSQkWwLKxtq1xk Xtb1g4gcGsyKeLBw8IAtsItW2tLB3Aj2pP0a4fOHVrP0WKZUoSLMEV1w4kViNGHfnw5D oHQkqM7qBbjuIUvap7DT5qhYbKyLGAKkB0H9fQ4DaMF4wIqBtZ0NLZEB4x33hE5BExTL LP/qRvXt4MadJWuDvzJQ7ARiKrkctZsnkkg+H8vqY+wraQeaBzPhMIVhKa+m0w1AFAQq GdQE0S4b6OO1L23IFCdTQmQbl9yGOZrYPcTGrTzvxm7j7l/45AjgwnI8agpzek03/Hjq WWdg== 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; bh=NzMogn6+6xZOsS6ZQKgQcRaxouPlO/+jmAoWe8SL8O4=; b=c7qxYnhkxXiFQdUqMgDu4fjPWzWqn1fIWVPY4EVODUj7IXdQcunvOd6eD5KCjr+r5x 4gDS68b2B6C3pKAWm5JL177sM+cXt5bFTawoFLaCvrouVbBr6CZhGXoOGZuCnmWKl8K/ lq9v8mwCOH56o/QCMiiuHiZfyzMkFyUV99QOp2m4T7bV5ByPsKFIcF3dFO8bSAOZerHn 0bfSgleHSRNQl22Hy3GH4+2ONOIFS8TEt+puFcrqrT3Zqaq+EJ45mKMXDdZnoGOAeXL6 YNCn5zmDdABU+7feDjmvgdwN0lXq2yM6FjzcBFbVyYWeTQxVCtJvrNd7dD/cFeDXkO/5 7y4w== X-Gm-Message-State: AElRT7HHprb+fN+tm4YIaph6Uw3nyONNLoywr6bNg3/etNlCoBMEkBue tuMPaead+nCzJ8KBApwQ1IkRrqZ/ X-Received: by 10.36.170.1 with SMTP id b1mr796782itf.52.1521008696801; Tue, 13 Mar 2018 23:24:56 -0700 (PDT) Received: from Rodgers-MBP.localdomain ([71.201.155.37]) by smtp.gmail.com with ESMTPSA id v134-v6sm394596ith.27.2018.03.13.23.24.55 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 13 Mar 2018 23:24:56 -0700 (PDT) From: Rodger Combs To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Mar 2018 01:24:44 -0500 Message-Id: <20180314062445.89909-9-rodger.combs@gmail.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180314062445.89909-1-rodger.combs@gmail.com> References: <20180314062445.89909-1-rodger.combs@gmail.com> Subject: [FFmpeg-devel] [PATCH 09/10] lavf/mux: propagate extradata changes before we call write_header to codecpar X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This includes extradata generated by an encoder post-init, or extradata generated by automatically-added bsfs. This fixes remuxing ADTS to non-seekable MKV, which had been broken in f63c3516577d605e51cf16358cbdfa0bc97565d8, so the tests modified there are restored. This moves extradata writing in aac-autobsf-adtstoasc to write_header, resulting in a smaller file since we don't write a padding void, so that test reference is also updated. --- libavformat/mux.c | 14 ++++++++++++++ tests/fate/avformat.mak | 4 ++-- tests/ref/fate/aac-autobsf-adtstoasc | 4 ++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/libavformat/mux.c b/libavformat/mux.c index 5fdc9275cc..611a3c0f15 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -892,6 +892,20 @@ static int do_packet_auto_bsf(AVFormatContext *s, AVPacket *pkt) { return 0; } } + + if (!s->internal->header_written) { + int side_size; + uint8_t *side = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); + if (side && side_size > 0 && (side_size != st->codecpar->extradata_size || + memcmp(side, st->codecpar->extradata, side_size))) { + av_freep(&st->codecpar->extradata); + if ((ret = ff_alloc_extradata(st->codecpar, side_size)) < 0) + return ret; + memcpy(st->codecpar->extradata, side, side_size); + st->codecpar->extradata_size = side_size; + } + } + return 1; } diff --git a/tests/fate/avformat.mak b/tests/fate/avformat.mak index 346a4b4509..35a75c68c0 100644 --- a/tests/fate/avformat.mak +++ b/tests/fate/avformat.mak @@ -95,14 +95,14 @@ tests/data/mp4-to-ts.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data tests/data/adts-to-mkv.m3u8: TAG = GEN tests/data/adts-to-mkv.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \ - -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a \ + -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts \ -f segment -segment_time 1 -map 0 -flags +bitexact -codec copy -segment_format_options live=1 \ -segment_list $(TARGET_PATH)/$@ -y $(TARGET_PATH)/tests/data/adts-to-mkv-%03d.mkv -nostdin 2>/dev/null tests/data/adts-to-mkv-header.mkv: TAG = GEN tests/data/adts-to-mkv-header.mkv: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \ - -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a \ + -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts \ -f segment -segment_time 1 -map 0 -flags +bitexact -codec copy -segment_format_options live=1 \ -segment_header_filename $(TARGET_PATH)/tests/data/adts-to-mkv-header.mkv \ -y $(TARGET_PATH)/tests/data/adts-to-mkv-header-%03d.mkv -nostdin 2>/dev/null diff --git a/tests/ref/fate/aac-autobsf-adtstoasc b/tests/ref/fate/aac-autobsf-adtstoasc index 9ca8e7ed9e..d5dfbabe5f 100644 --- a/tests/ref/fate/aac-autobsf-adtstoasc +++ b/tests/ref/fate/aac-autobsf-adtstoasc @@ -1,5 +1,5 @@ -b0375ba00bcbd55023a176255b8d4ba2 *tests/data/fate/aac-autobsf-adtstoasc.matroska -6728 tests/data/fate/aac-autobsf-adtstoasc.matroska +1bd4a110db26231cade5344de302254e *tests/data/fate/aac-autobsf-adtstoasc.matroska +6396 tests/data/fate/aac-autobsf-adtstoasc.matroska #extradata 0: 2, 0x0030001c #tb 0: 1/1000 #media_type 0: audio