From patchwork Wed Nov 6 02:49:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 16137 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 A7EE44496BF for ; Wed, 6 Nov 2019 04:59:08 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 930BA68B0B6; Wed, 6 Nov 2019 04:59:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7162A68B035 for ; Wed, 6 Nov 2019 04:59:02 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id j15so3271543wrw.5 for ; Tue, 05 Nov 2019 18:59:02 -0800 (PST) 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=xuhv0O0BiRttvkpOAhzMfr5ZxORBXMSdV7CqkBQtE7g=; b=Yyyo7UB5AnK3liYvzC4DA07jmXtObT8GQsYMxbNk+1Cl2mmsxFhGnge+gOyZFNXW3M iW+YnjBw6/jwlk9UeqYFjR8cOu4S/ftlNOUvNNNgs0647cmQs2L7KS1qDGBcRf9U+nsf rcWaKClmq0kjL1tLMIRdvq3pELERHyN9yyQw9tA3eu9oAyzyLZLHbSb3JtgR1FjvrVFJ qRLYWAe+ad7KY7T3t++g/hEs2Cy7C1y6blABTOh/PBVt0xCfvSvkylXgNRWHqHvzBzj7 bUT1pFeiNq4DABTUHzT4rwGOmYH+W4tzAhwiVdQS8wTHCE5hJTGUfA36fUGE9qpnVzf/ N2LQ== 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=xuhv0O0BiRttvkpOAhzMfr5ZxORBXMSdV7CqkBQtE7g=; b=FCB0G4GdI4Z6wqs6g1Nwtsk4QNdWJJinm+sec2UY1HAdP++3s7kQZdgquHHps+XJjN C3gwJDh+OvB6YYK7L4VRTK+ZzeEpJvEMcL9frhs8GBEGPVfZnXR2SKVP83Y/H27Evdtf 4NdrXYKE2Lq9LIJz3AQDKOs1D5Gz7hkUnTTiYbnrv7Vgyd8oenngZpZRdYt9mnRvvaET LaNjzbUMg+JgSZ3US8BAsUbSZHK4Sv3HnF4ZbRCmEscmax8wLn0JGhz9WFzQ3tCt11w/ 7CAXAmsc9uSNPYJnekV2y7Vom8LirLS3CWSlM5753M2Vb0u/grs2dNJVGja0qMaS7zJR nTNw== X-Gm-Message-State: APjAAAUF266orr24lj66jXdeAeOz7MVY8KyqbdV4OMlx8dynnHmaLB6x +3F/xWXeCPN7nEuyk8JMB3A795FW X-Google-Smtp-Source: APXvYqyxU38sSbUpUnHCm0+HEcrcJqe1tMGInWHVwWTPCCSb2W9PbfBLaxb89fykEKwufV7g+C9X1A== X-Received: by 2002:adf:e78c:: with SMTP id n12mr389028wrm.94.1573008647518; Tue, 05 Nov 2019 18:50:47 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08937.dynamic.kabel-deutschland.de. [188.192.137.55]) by smtp.gmail.com with ESMTPSA id l13sm1281710wmh.12.2019.11.05.18.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Nov 2019 18:50:47 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 6 Nov 2019 03:49:09 +0100 Message-Id: <20191106024922.19228-10-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191106024922.19228-1-andreas.rheinhardt@gmail.com> References: <20191106024922.19228-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/23] 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 our 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 --- One could make mkv_cuepoint smaller if one switched relative_pos to an int, but this is similar to the last rejected patch. libavformat/matroskaenc.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 0c3796f924..1377891e96 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 @@ -481,7 +480,7 @@ static mkv_cues *mkv_start_cues(int64_t segment_offset) return cues; } -static int mkv_add_cuepoint(mkv_cues *cues, int stream, int tracknum, int64_t ts, +static int mkv_add_cuepoint(mkv_cues *cues, int stream, int64_t ts, int64_t cluster_pos, int64_t relative_pos, int64_t duration) { mkv_cuepoint *entries = cues->entries; @@ -496,7 +495,6 @@ static int mkv_add_cuepoint(mkv_cues *cues, int stream, int tracknum, int64_t ts 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 - cues->segment_offset; cues->entries[cues->num_entries].relative_pos = relative_pos; cues->entries[cues->num_entries++].duration = duration; @@ -549,7 +547,7 @@ static int64_t mkv_write_cues(AVFormatContext *s, mkv_cues *cues, mkv_track *tra continue; tracks[idx].has_cue = 1; track_positions = start_ebml_master(dyn_cp, MATROSKA_ID_CUETRACKPOSITION, MAX_CUETRACKPOS_SIZE); - put_ebml_uint(dyn_cp, MATROSKA_ID_CUETRACK , entry[j].tracknum ); + put_ebml_uint(dyn_cp, MATROSKA_ID_CUETRACK , tracks[idx].track_num); put_ebml_uint(dyn_cp, MATROSKA_ID_CUECLUSTERPOSITION , entry[j].cluster_pos); put_ebml_uint(dyn_cp, MATROSKA_ID_CUERELATIVEPOSITION, entry[j].relative_pos); if (entry[j].duration != -1) @@ -2263,7 +2261,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; - int tracknum = track->track_num; if (ts == AV_NOPTS_VALUE) { av_log(s, AV_LOG_ERROR, "Can't write packet with unknown timestamp\n"); @@ -2298,7 +2295,8 @@ static int mkv_write_packet_internal(AVFormatContext *s, AVPacket *pkt, int add_ if (par->codec_type != AVMEDIA_TYPE_SUBTITLE) { mkv_write_block(s, pb, MATROSKA_ID_SIMPLEBLOCK, pkt, keyframe); if ((s->pb->seekable & AVIO_SEEKABLE_NORMAL) && (par->codec_type == AVMEDIA_TYPE_VIDEO && keyframe || add_cue)) { - ret = mkv_add_cuepoint(mkv->cues, pkt->stream_index, tracknum, ts, mkv->cluster_pos, relative_packet_pos, -1); + ret = mkv_add_cuepoint(mkv->cues, pkt->stream_index, ts, + mkv->cluster_pos, relative_packet_pos, -1); if (ret < 0) return ret; } } else { @@ -2323,7 +2321,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } if (s->pb->seekable & AVIO_SEEKABLE_NORMAL) { - ret = mkv_add_cuepoint(mkv->cues, pkt->stream_index, tracknum, ts, + ret = mkv_add_cuepoint(mkv->cues, pkt->stream_index, ts, mkv->cluster_pos, relative_packet_pos, duration); if (ret < 0) return ret;