From patchwork Tue Apr 2 13:32:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Diego Felix de Souza via ffmpeg-devel X-Patchwork-Id: 12578 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 53B51447FF3 for ; Tue, 2 Apr 2019 16:35:20 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3FC3368ACCC; Tue, 2 Apr 2019 16:35:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 29B7768ACC0 for ; Tue, 2 Apr 2019 16:35:12 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id s15so16675841wra.12 for ; Tue, 02 Apr 2019 06:35:12 -0700 (PDT) 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=vZMQcc7ywUMfGjzYNb/QRIwkMNLT0GbAruCu+2Neaqo=; b=V41ftBKLJREIsBNYoRwf/xIWF35AJORfhXn0LYWlZ+rG0vSaqG1+1GzTnYuF0bDYM0 ERcraa7I9e75XheM6ES3P8pdURVJRSWVmGjyKa4A8b60ayztJz3OGiQS2fmVAyYUAmXx 5mk2T5y9Kd/eYikJyQGwhbRHgci4LBg7Miz9jK6mhGenAnuMy7SvVh2amzCIqX1b5uAW U1tXRpV7BD4Wtb3u4+Cqe4cRFCRzl331Mw6rWiyyQiL5JLCOPdzXNj0fpX0Bx0VaXFlb zrYuBBJBTV8ahZaSRymyS0tn4yyjEXR10F7161uObVxFuVykIEQkjLofDeJbW4cddAO6 0gnw== X-Gm-Message-State: APjAAAVrub/AwM5WGiwaOxiA/Efxz48puU4+AglpZPUmCHscTp9I/wJH gYKile33lvkKtagbYtD3qQMiaGHtOY8= X-Google-Smtp-Source: APXvYqzPj58wOxXhV3GXyUO3YK1iZN3FuCp6KSDn/X2Gz8pVBha6Ca3qmQwMFLdOPbEcNZEI4kC7aA== X-Received: by 2002:adf:b6a4:: with SMTP id j36mr23817095wre.55.1554212111468; Tue, 02 Apr 2019 06:35:11 -0700 (PDT) Received: from localhost.localdomain (ipbcc08c44.dynamic.kabel-deutschland.de. [188.192.140.68]) by smtp.googlemail.com with ESMTPSA id t24sm15566886wmi.10.2019.04.02.06.35.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Apr 2019 06:35:10 -0700 (PDT) To: ffmpeg-devel@ffmpeg.org Date: Tue, 2 Apr 2019 15:32:55 +0200 Message-Id: <20190402133305.3328-6-andreas.rheinhardt@googlemail.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20190402133305.3328-1-andreas.rheinhardt@googlemail.com> References: <20190402133305.3328-1-andreas.rheinhardt@googlemail.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: , X-Patchwork-Original-From: Andreas Rheinhardt via ffmpeg-devel From: Diego Felix de Souza via ffmpeg-devel 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 9486327dab..7e2ded89bb 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; } @@ -1456,7 +1456,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; @@ -1493,7 +1493,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); @@ -1584,7 +1584,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); @@ -1751,7 +1751,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); @@ -1900,18 +1900,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); @@ -2616,7 +2614,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;