From patchwork Fri Apr 19 23:41:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 12834 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1CCE44494CF for ; Sat, 20 Apr 2019 02:50:41 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0BF2068AACC; Sat, 20 Apr 2019 02:50:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3FB7868AA9A for ; Sat, 20 Apr 2019 02:50:38 +0300 (EEST) Received: by mail-wm1-f65.google.com with SMTP id h18so7770032wml.1 for ; Fri, 19 Apr 2019 16:50:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sOONz2YpX6WoxniWXfBN2XUooisIZSfYujeHkTXM+GY=; b=Ok84GYUiMLODqcD3hM641M5eD2YIk58s8U1TKADElpDTe4UJUDU2SJITuWXE98IgU6 eqN703KcV8Ku/90Fj0zZEDfgOfT2qq7mdfsOcqNN75l11Y4KfMhqi4XNz2osaUnhoVEr ACsU6Ar3mfiAVPsWAZj0WVmzi7hUFfAYPMvibr4VnTrNIXgJX7QgR5+5RWoVbOhl+1Rr gJsPxZLwcgSp5r86/pprwtqs4jITEGE12noAYxzJa+XuUFLbXBuwRx42azaO96Q9DVDA I/ZAdVglcJzLWuLqgwKiFeMc+Q5C2T5Zb7rGx+XGLIsneBoGZlyXgwN+eVwyHtSEtO2p 2b5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sOONz2YpX6WoxniWXfBN2XUooisIZSfYujeHkTXM+GY=; b=LBsPpfqhOio7aCa5iS1SGRhxyF/DV/3zjbo6iPIwRUAdO65eLmfwZEFXmPRb4bE/N4 3tfdtMTbuxIeeO2+kA3m629v6VPMx+O5Be0OBx8ONhiC3yd/DqWeQRa1c2F2cP8lfFBQ Kn3+VxinvvLOsBurIAewGJihvzyZOVfOGoCuQjWiu6tuUOKurrcuJmAV4NLeYmsAsWLt LbvN5ooD8qLYBPD3C0cU3cqFgpCm/cgPk45UbiE7WYlEr3E3jNZmxIz8Axyx6wg9HBfM rWzrAgtn1TXto85k8C0Qw+ibLA7JnNsReAEdjX6nb/08pwY4NXTkEp4yV1x+u0XSIAQS 4FqA== X-Gm-Message-State: APjAAAVGTYNynkyORQeC4jEyeCFlnqwshqNKaOCv1x/bG74/C6cjGPOg fMSOsjDe2TcIgumAcNk4DZ7E/oMS X-Google-Smtp-Source: APXvYqxvD8GC8LdFj43+fqj18qADluNalmRXl7FfEwLo7YOAd7wHYoswNDnO2/cCdb5qfKa1ISiJNg== X-Received: by 2002:a1c:dc43:: with SMTP id t64mr4036272wmg.19.1555717837706; Fri, 19 Apr 2019 16:50:37 -0700 (PDT) Received: from localhost.localdomain (ipbcc08c44.dynamic.kabel-deutschland.de. [188.192.140.68]) by smtp.gmail.com with ESMTPSA id t14sm6002395wmi.16.2019.04.19.16.50.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Apr 2019 16:50:37 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Apr 2019 01:41:06 +0200 Message-Id: <20190419234110.32980-11-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190419234110.32980-1-andreas.rheinhardt@gmail.com> References: <20190402133305.3328-1-andreas.rheinhardt@googlemail.com> <20190419234110.32980-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/15] avformat/matroskaenc: Write CRC-32 in non-seekable mode 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Given that in both the seekable as well as the non-seekable mode dynamic buffers are used to write level 1 elements and that now no seeks are used in the seekable case any more, the two modes can be combined; as a consequence, the non-seekable mode automatically inherits the ability to write CRC-32 elements. There are no differences in case the output is seekable; when it is not and writing CRC-32 elements is disabled, there can still be minor differences because before this commit, the EBML ID and length field were counted towards the cluster size limit; now they no longer are. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 14 ++------------ tests/fate/matroska.mak | 2 +- tests/fate/wavpack.mak | 4 ++-- tests/ref/fate/binsub-mksenc | 2 +- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 2875552469..d9a7ca9ad1 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -336,20 +336,15 @@ static void end_ebml_master(AVIOContext *pb, ebml_master master) static int start_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, MatroskaMuxContext *mkv, ebml_master *master, uint32_t elementid, uint64_t expectedsize) { - int ret; + int ret, bytes = expectedsize ? ebml_num_size(expectedsize) : 8; if ((ret = avio_open_dyn_buf(dyn_cp)) < 0) return ret; - if (pb->seekable & AVIO_SEEKABLE_NORMAL) { - int bytes = expectedsize ? ebml_num_size(expectedsize) : 8; - put_ebml_id(pb, elementid); *master = (ebml_master) { avio_tell(pb), bytes }; if (mkv->write_crc) put_ebml_void(*dyn_cp, 6); /* Reserve space for CRC32 so position/size calculations using avio_tell() take it into account */ - } else - *master = start_ebml_master(*dyn_cp, elementid, expectedsize); return 0; } @@ -360,7 +355,6 @@ static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, Matrosk uint8_t *buf, crc[4]; int size, skip = 0; - if (pb->seekable & AVIO_SEEKABLE_NORMAL) { size = avio_close_dyn_buf(*dyn_cp, &buf); put_ebml_num(pb, size, master.sizebytes); if (mkv->write_crc) { @@ -369,11 +363,7 @@ static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, Matrosk put_ebml_binary(pb, EBML_ID_CRC32, crc, sizeof(crc)); } avio_write(pb, buf + skip, size - skip); - } else { - end_ebml_master(*dyn_cp, master); - size = avio_close_dyn_buf(*dyn_cp, &buf); - avio_write(pb, buf, size); - } + av_free(buf); *dyn_cp = NULL; } diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index 6bcd2b08d6..d1500a1aae 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -4,7 +4,7 @@ FATE_MATROSKA-$(call DEMMUX, MATROSKA, MATROSKA) += fate-matroska-remux fate-matroska-remux: CMD = md5pipe -i $(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-2pass-akiyo.webm -color_trc 4 -c:v copy -fflags +bitexact -strict -2 -f matroska fate-matroska-remux: CMP = oneline -fate-matroska-remux: REF = 768af2b49132a0de5e0502926ab9ca4f +fate-matroska-remux: REF = 82a5beaf7a0fb5bb2970d9bba9028086 FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER) += fate-matroska-spherical-mono fate-matroska-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mkv/spherical.mkv diff --git a/tests/fate/wavpack.mak b/tests/fate/wavpack.mak index a4095a9771..7358d50d82 100644 --- a/tests/fate/wavpack.mak +++ b/tests/fate/wavpack.mak @@ -91,12 +91,12 @@ fate-wavpack-matroskamode: CMD = md5 -i $(TARGET_SAMPLES)/wavpack/special/matros FATE_WAVPACK-$(call DEMMUX, WV, MATROSKA) += fate-wavpack-matroska_mux-mono fate-wavpack-matroska_mux-mono: CMD = md5pipe -i $(TARGET_SAMPLES)/wavpack/num_channels/mono_16bit_int.wv -c copy -fflags +bitexact -f matroska fate-wavpack-matroska_mux-mono: CMP = oneline -fate-wavpack-matroska_mux-mono: REF = 646c726a80857b74a55ba16a6d83aeed +fate-wavpack-matroska_mux-mono: REF = 942af4e88c4045e822508400545c47fd FATE_WAVPACK-$(call DEMMUX, WV, MATROSKA) += fate-wavpack-matroska_mux-61 fate-wavpack-matroska_mux-61: CMD = md5pipe -i $(TARGET_SAMPLES)/wavpack/num_channels/eva_2.22_6.1_16bit-partial.wv -c copy -fflags +bitexact -f matroska fate-wavpack-matroska_mux-61: CMP = oneline -fate-wavpack-matroska_mux-61: REF = 35b033bc75a0e18bbaabbaef38914837 +fate-wavpack-matroska_mux-61: REF = c874587c6172feb74df52230197396de FATE_SAMPLES_AVCONV += $(FATE_WAVPACK-yes) fate-wavpack: $(FATE_WAVPACK-yes) diff --git a/tests/ref/fate/binsub-mksenc b/tests/ref/fate/binsub-mksenc index 2f7022442f..cd958a80bc 100644 --- a/tests/ref/fate/binsub-mksenc +++ b/tests/ref/fate/binsub-mksenc @@ -1 +1 @@ -5d6f6f595b38d33424c186484f1c39ee +1d0977e91873b77b4c78b61f4f3cdec5