From patchwork Sun Apr 5 15:59:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18675 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 4079044BE3F for ; Sun, 5 Apr 2020 19:00:19 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 287B268B4C0; Sun, 5 Apr 2020 19:00:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 83A7368B27C for ; Sun, 5 Apr 2020 19:00:06 +0300 (EEST) Received: by mail-wr1-f68.google.com with SMTP id s8so12282693wrt.7 for ; Sun, 05 Apr 2020 09:00:06 -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=MIImAE0D9faHPoJsp4bz0q9LhDqGmbn4bS1S5YnauRU=; b=agK689IPLmGloDcssz0b/2G/w83HQSqC5DYC8dfW3hDYHYJtbHAHxxl8iOrdPqDtl2 m1Lyh2oPSRAQPOuiWoyrQBfm5Abi6d3fyyrt5ej1+RYBMflI2SDu3bR1wvdVuP7aaQOb w4Baxbu9TSfxPK5uKSwspQyQs7VVft0Vsfqkkndj/FZ2u/mA+5nwfxhQ9y8BPYLYkB3S 6+Cknsuwn0mNLfCW+L9cNdurHyyBJ/+enCNCqtrrC/9moxCJ91U/qmt2mUynKTRq4lP5 Hr5q9/KswLvfWsaePzetu5bCxL011MGaLhqL7Mx7yZ+iOsoUhRDsyi2W6dLaabLVx4gA hJDg== 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=MIImAE0D9faHPoJsp4bz0q9LhDqGmbn4bS1S5YnauRU=; b=O01ke87KHra4KDlm4x9OwcogNP81goHeif72NH2YVwyNYBcqZ07p0J5wbMuykiCGlS LkAaEYN9bYeadSuvM4QkSab61j5FEh3Py8NdE5x5WTS4LepNXGB92MdYc8ywNiTEYDa7 bFhh60gHswd2uzRRmtGV07ZMCtaqdpEQx4vchgQvYn0EFHxRN2q3OmA6Iif+nZbyiuAN By5oGpqdvHnYw7KMvxMba+4hjCVku0PPviPjNX4X+ZoW6Q/VEUYths3pvkpn+m9w1YuV 4RFuQKul/Jzs+aqXoCeDkK6bTkkwo3K5QFC6/e7kYtqSn9Y1aLikphrFTq0Bj3kyMBvF rZDA== X-Gm-Message-State: AGi0PuYJt7Rl8ZUbC3xc3uvNTg5jF4f2rTLMBksns5Og/TAhn4Cgp+vw xklKEqqVq42Ne8s2SdN3Sugsx2mR X-Google-Smtp-Source: APiQypILaghvis0S2V3nYpM9g1EA3pTHXSpCVEtEqQ9Ig4vQsMXbRn3yK+SdAipzfilbdrnkKQG82A== X-Received: by 2002:adf:f78a:: with SMTP id q10mr1936941wrp.132.1586102405636; Sun, 05 Apr 2020 09:00:05 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id v21sm20014567wmh.26.2020.04.05.09.00.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2020 09:00:04 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 Apr 2020 17:59:16 +0200 Message-Id: <20200405155928.9323-9-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200405155928.9323-1-andreas.rheinhardt@gmail.com> References: <20200405155928.9323-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/20] avformat/matroskaenc: Automatically use right TrackNumber in Cues 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" mkv_cuepoint (the structure used to store the index entries in the Matroska muxer) currently contains fields for both the index of the packet's stream in the AVFormatContext.streams array and for the Matroska TrackNumber; correspondingly, mkv_add_cuepoint() has arguments for both. But these two numbers can't be chosen independently, so get rid of the TrackNumber. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 4607ddd6ad..ab1c28ae02 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -80,7 +80,6 @@ typedef struct mkv_seekhead { typedef struct mkv_cuepoint { uint64_t pts; int stream_idx; - int tracknum; int64_t cluster_pos; ///< offset of the cluster containing the block relative to the segment int64_t relative_pos; ///< relative offset from the position of the cluster containing the block int64_t duration; ///< duration of the block according to time base @@ -479,7 +478,7 @@ static int mkv_write_seekhead(AVIOContext *pb, MatroskaMuxContext *mkv, return 0; } -static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int tracknum, int64_t ts, +static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int64_t ts, int64_t cluster_pos, int64_t relative_pos, int64_t duration) { mkv_cues *cues = &mkv->cues; @@ -495,7 +494,6 @@ static int mkv_add_cuepoint(MatroskaMuxContext *mkv, int stream, int tracknum, i cues->entries[cues->num_entries].pts = ts; cues->entries[cues->num_entries].stream_idx = stream; - cues->entries[cues->num_entries].tracknum = tracknum; cues->entries[cues->num_entries].cluster_pos = cluster_pos - mkv->segment_offset; cues->entries[cues->num_entries].relative_pos = relative_pos; cues->entries[cues->num_entries++].duration = duration; @@ -534,7 +532,7 @@ static int mkv_assemble_cues(AVStream **streams, AVIOContext *dyn_cp, continue; tracks[idx].has_cue = 1; track_positions = start_ebml_master(cuepoint, MATROSKA_ID_CUETRACKPOSITION, MAX_CUETRACKPOS_SIZE); - put_ebml_uint(cuepoint, MATROSKA_ID_CUETRACK , entry->tracknum ); + put_ebml_uint(cuepoint, MATROSKA_ID_CUETRACK , tracks[idx].track_num); put_ebml_uint(cuepoint, MATROSKA_ID_CUECLUSTERPOSITION , entry->cluster_pos); put_ebml_uint(cuepoint, MATROSKA_ID_CUERELATIVEPOSITION, entry->relative_pos); if (entry->duration != -1) @@ -2233,7 +2231,6 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_ int ret; int64_t ts = track->write_dts ? pkt->dts : pkt->pts; int64_t relative_packet_pos; - unsigned tracknum = track->track_num; if (ts == AV_NOPTS_VALUE) { av_log(s, AV_LOG_ERROR, "Can't write packet with unknown timestamp\n"); @@ -2270,7 +2267,7 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_ if (ret < 0) return ret; if ((s->pb->seekable & AVIO_SEEKABLE_NORMAL) && (par->codec_type == AVMEDIA_TYPE_VIDEO && keyframe || add_cue)) { - ret = mkv_add_cuepoint(mkv, pkt->stream_index, tracknum, ts, + ret = mkv_add_cuepoint(mkv, pkt->stream_index, ts, mkv->cluster_pos, relative_packet_pos, -1); if (ret < 0) return ret; } @@ -2296,7 +2293,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } if (s->pb->seekable & AVIO_SEEKABLE_NORMAL) { - ret = mkv_add_cuepoint(mkv, pkt->stream_index, tracknum, ts, + ret = mkv_add_cuepoint(mkv, pkt->stream_index, ts, mkv->cluster_pos, relative_packet_pos, duration); if (ret < 0) return ret;