From patchwork Fri Apr 19 23:41:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 12832 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 68E374494CF for ; Sat, 20 Apr 2019 02:50:29 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4CFE868AB00; Sat, 20 Apr 2019 02:50:29 +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 E12B568AAD3 for ; Sat, 20 Apr 2019 02:50:20 +0300 (EEST) Received: by mail-wm1-f65.google.com with SMTP id o25so7615783wmf.5 for ; Fri, 19 Apr 2019 16:50:20 -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=MbjxVXY6Vy5E8JGVwWc8/lh9MG/t7qQiinzmkCaioak=; b=IdIKL3np8ngQQOa3/D5Mtfv0KSO7lo15wfBU9WeGbn2p+RBzKWE3EzdmsIhp/P71jf V9sMUnEMC7wTbnj1dw5o0TLps2bn/d2n8+p+1dU71khd/ppZ0rC6biSLhLeA792h3wO9 nFGnBUxXB/wf4IBMJeJx0uiMRkqHTbs3ndjCw7Xd9SpB8+Kxk1YBmW27Jp2X+tbRx2+W rYnP6ktTXboEggEJeKtt1S7ZtE1R5rxFYj94rFAxnVLEhRGazqxjgTdP2mwL1z4b7HeM V3B7Mh3r98dUrndRs2+uc8SsnkQgcDDkMzyb3hHheqrqnx2rDIsRKuoaAXGkfLyvEuly TKCw== 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=MbjxVXY6Vy5E8JGVwWc8/lh9MG/t7qQiinzmkCaioak=; b=mpj91puUArh76V3Z251k+EsxaqELXz8vaNV9ExZVITm0On6fpNVPGOZKizzNek+dt0 3UdIDhvV7OfAfLjIcbmburzu/fUakuoHMWHagpaT9194vacDAuvKUDYJNlfMaxlN/xcp zfknO8jtSEKd6HxYVyyR/O3k7qnwQceJiZZlP/ADaBzBZHfkdrvuKGWSCPf59vPrRkXJ mnZbpnDiLCK86PaCMnffVjYk3wUdJez7cLzmV+ghqycHzDkQE+25GN91aLMliI053wUi KCK2PE5gcM0gQF6SVRfY+vzPENCyCYiBW30U9OqscEScKUnH8TqU+TVJBqd90rOwyNGO 49PA== X-Gm-Message-State: APjAAAX6F+I4PjTE1kN6e/yiI9fFt2iw8pM4xqbSbezGX63VDHLWggZ7 d+szVkV60ow3Mhe5KL8ErJi3jPDy X-Google-Smtp-Source: APXvYqxG+EK8Q+uTZNFa+W7jnUanSt38WEjF0ncGCxArlxJpQ2lTriVNIyIqu2EPvCXtRfIEw+UeeQ== X-Received: by 2002:a1c:9ec7:: with SMTP id h190mr4410367wme.105.1555717820184; Fri, 19 Apr 2019 16:50:20 -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.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Apr 2019 16:50:19 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 20 Apr 2019 01:41:00 +0200 Message-Id: <20190419234110.32980-5-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 05/15] avformat/matroskaenc: Remove traces of secondary seek head 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" Up until e7ddafd515dc9826915b739d0b977a63c21e96af the Matroska muxer wrote a secondary seek head referencing all the clusters. When this was changed, a (now completely wrong) comment remained and the unique remaining seek head was still called main_seekhead. This has been changed. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 5e2127de7e..75863659bc 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -134,7 +134,7 @@ typedef struct MatroskaMuxContext { int64_t cluster_pts; int64_t duration_offset; int64_t duration; - mkv_seekhead *main_seekhead; + mkv_seekhead *seekhead; mkv_cues *cues; mkv_track *tracks; mkv_attachments *attachments; @@ -416,9 +416,9 @@ static void mkv_free(MatroskaMuxContext *mkv) { avio_close_dyn_buf(mkv->tags_bc, &buf); av_free(buf); } - if (mkv->main_seekhead) { - av_freep(&mkv->main_seekhead->entries); - av_freep(&mkv->main_seekhead); + if (mkv->seekhead) { + av_freep(&mkv->seekhead->entries); + av_freep(&mkv->seekhead); } if (mkv->cues) { av_freep(&mkv->cues->entries); @@ -496,7 +496,7 @@ static int mkv_add_seekhead_entry(mkv_seekhead *seekhead, unsigned int elementid static int64_t mkv_write_seekhead(AVIOContext *pb, MatroskaMuxContext *mkv) { AVIOContext *dyn_cp; - mkv_seekhead *seekhead = mkv->main_seekhead; + mkv_seekhead *seekhead = mkv->seekhead; ebml_master metaseek, seekentry; int64_t currentpos; int i; @@ -538,8 +538,8 @@ static int64_t mkv_write_seekhead(AVIOContext *pb, MatroskaMuxContext *mkv) currentpos = seekhead->filepos; } fail: - av_freep(&mkv->main_seekhead->entries); - av_freep(&mkv->main_seekhead); + av_freep(&mkv->seekhead->entries); + av_freep(&mkv->seekhead); return currentpos; } @@ -1458,7 +1458,7 @@ static int mkv_write_tracks(AVFormatContext *s) AVIOContext *pb = s->pb; int i, ret, default_stream_exists = 0; - ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_TRACKS, avio_tell(pb)); + ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_TRACKS, avio_tell(pb)); if (ret < 0) return ret; @@ -1495,7 +1495,7 @@ static int mkv_write_chapters(AVFormatContext *s) if (!s->nb_chapters || mkv->wrote_chapters) return 0; - ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_CHAPTERS, avio_tell(pb)); + ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_CHAPTERS, avio_tell(pb)); if (ret < 0) return ret; ret = start_ebml_master_crc32(pb, &dyn_cp, mkv, &chapters, MATROSKA_ID_CHAPTERS, 0); @@ -1586,7 +1586,7 @@ static int mkv_write_tag_targets(AVFormatContext *s, int ret; if (!tags->pos) { - ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_TAGS, avio_tell(s->pb)); + ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_TAGS, avio_tell(s->pb)); if (ret < 0) return ret; start_ebml_master_crc32(s->pb, &mkv->tags_bc, mkv, tags, MATROSKA_ID_TAGS, 0); @@ -1753,7 +1753,7 @@ static int mkv_write_attachments(AVFormatContext *s) av_lfg_init(&c, av_get_random_seed()); - ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_ATTACHMENTS, avio_tell(pb)); + ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_ATTACHMENTS, avio_tell(pb)); if (ret < 0) return ret; ret = start_ebml_master_crc32(pb, &dyn_cp, mkv, &attachments, MATROSKA_ID_ATTACHMENTS, 0); @@ -1902,18 +1902,16 @@ static int mkv_write_header(AVFormatContext *s) mkv->segment = start_ebml_master(pb, MATROSKA_ID_SEGMENT, 0); mkv->segment_offset = avio_tell(pb); - // we write 2 seek heads - one at the end of the file to point to each - // cluster, and one at the beginning to point to all other level one - // elements (including the seek head at the end of the file), which - // isn't more than 10 elements if we only write one of each other - // currently defined level 1 element - mkv->main_seekhead = mkv_start_seekhead(pb, mkv->segment_offset, 10); - if (!mkv->main_seekhead) { + // we write a seek head at the beginning to point to all other level + // one elements, which aren't more than 10 elements as we write only one + // of every other currently defined level 1 element + mkv->seekhead = mkv_start_seekhead(pb, mkv->segment_offset, 10); + if (!mkv->seekhead) { ret = AVERROR(ENOMEM); goto fail; } - ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_INFO, avio_tell(pb)); + ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_INFO, avio_tell(pb)); if (ret < 0) goto fail; ret = start_ebml_master_crc32(pb, &mkv->info_bc, mkv, &mkv->info, MATROSKA_ID_INFO, 0); @@ -2619,7 +2617,7 @@ static int mkv_write_trailer(AVFormatContext *s) cuespos = mkv_write_cues(s, mkv->cues, mkv->tracks, s->nb_streams); } - ret = mkv_add_seekhead_entry(mkv->main_seekhead, MATROSKA_ID_CUES, + ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_CUES, cuespos); if (ret < 0) return ret;