From patchwork Sun Apr 5 15:59:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18670 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 DB04944BE3F for ; Sun, 5 Apr 2020 19:00:13 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BCF1D68B307; Sun, 5 Apr 2020 19:00:13 +0300 (EEST) 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 9B6DE68B255 for ; Sun, 5 Apr 2020 19:00:08 +0300 (EEST) Received: by mail-wr1-f66.google.com with SMTP id g3so12115036wrx.2 for ; Sun, 05 Apr 2020 09:00:08 -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=CB1shAZO5glOkTP52K2+AZ9gmb1lJAQ1Nj4v3gpjCuw=; b=Txk22b7Rljet+Ig8jrc0RhkxdVDnhplxIfO5ecisAP4WHRjjPgNh9I15AG6GwaddxX 95ObxzZwHWmxPL+yymRFSJIsArCUeUgohDnClGSY9PxcoER4eovb65I4QG5LEnaLGlEb ZJpwPRdvwWoCUIo4kwV6sSNlr5nk9MNcdWWXeqyUoCMjKGztoGoIMWnlrTXqn7FxVxQJ AFC2WMpKd1sI4qY4wEvzWzpWfd26klWnKXqnHp36U1KyW2++Wru3HT8kCu8o7i2eU1mC plOS8iNl8Uo9gQ0jEpXvQZtXw5Lr4sJ5grRlOQfbVIc7ONz23XlLpIMwSriopVggmH9C Cd0A== 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=CB1shAZO5glOkTP52K2+AZ9gmb1lJAQ1Nj4v3gpjCuw=; b=b8+Kw4j0qHmoCUTvUBTxlJ+ObnCzrLCYOia9/DW3BdkSsxMP16mSO2pHMCl3kkVIKc HxmqjAC7iaiIiFH+846/t1AdTx3NQW8ejo2qQqBJ9uDJqBWbyzmZ5aP1O0Ki+RhosB72 HyP+8T9uvC27eVzY9BUFt/DJbQuY3aD+xGaqf2sPuk7NClH3SDuLaCvYjhi3dgyY8TaS tMUIq85t3mYYt7jzN7W25bmbf+7OaPVRM6yp9TA4l+Fm+oyqtQ29Y/Hkhdd/crYJVMRe fBaDpi1We/B+qXqjV/cASByNX9FxKp5NZjM0L/crsNruKXA2Ps2kL6t3sp8WrQVkTy5b pvrQ== X-Gm-Message-State: AGi0Pua4SQaLQHfsNtPBGsaN85qpV2KX9nQ1hraXof7iXaZgtIhQ4LzV kq5N3CNK5E9a0Fo8xRW3c6TXZnW1 X-Google-Smtp-Source: APiQypLnQI/HJuZwacXkj4uUR6sCPX7PIhjOYw4VpOltP++uI7sC4ztS1b6QVx2l/A0PTLq89qlOGA== X-Received: by 2002:a05:6000:e:: with SMTP id h14mr7511711wrx.128.1586102407722; Sun, 05 Apr 2020 09:00:07 -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.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2020 09:00:07 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 Apr 2020 17:59:18 +0200 Message-Id: <20200405155928.9323-11-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 10/20] avformat/matroskaenc: Change signature of mkv_write_track() 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 now, mkv_write_track() received the index of the stream whose header data it is about to write as parameter; this index has until recently been explicitly used to generate both TrackNumber and TrackUID. But this is no longer so and as there is no reason why the function for writing a single TrackEntry should even know the index of the TrackEntry it is about to write, said index is replaced in the list of function parameters by the corresponding AVStream and mkv_track. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index f313b93e2a..27c419954b 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1083,11 +1083,11 @@ static int mkv_write_stereo_mode(AVFormatContext *s, AVIOContext *pb, } static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, - int i, AVIOContext *pb, int default_stream_exists) + AVStream *st, mkv_track *track, AVIOContext *pb, + int default_stream_exists) { - AVStream *st = s->streams[i]; AVCodecParameters *par = st->codecpar; - ebml_master subinfo, track; + ebml_master subinfo, track_master; int native_id = 0; int qt_id = 0; int bit_depth; @@ -1110,9 +1110,9 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, return ret; } - track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY, 0); - put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER, mkv->tracks[i].track_num); - put_ebml_uid (pb, MATROSKA_ID_TRACKUID, mkv->tracks[i].uid); + track_master = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY, 0); + put_ebml_uint(pb, MATROSKA_ID_TRACKNUMBER, track->track_num); + put_ebml_uid (pb, MATROSKA_ID_TRACKUID, track->uid); put_ebml_uint (pb, MATROSKA_ID_TRACKFLAGLACING , 0); // no lacing (yet) if ((tag = av_dict_get(st->metadata, "title", NULL, 0))) @@ -1209,7 +1209,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, else if (!native_id) { // if there is no mkv-specific codec ID, use VFW mode put_ebml_string(pb, MATROSKA_ID_CODECID, "V_MS/VFW/FOURCC"); - mkv->tracks[i].write_dts = 1; + track->write_dts = 1; s->internal->avoid_negative_ts_use_pts = 0; } @@ -1285,9 +1285,9 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, av_log(s, AV_LOG_ERROR, "Initial padding is invalid\n"); return AVERROR(EINVAL); } -// mkv->tracks[i].ts_offset = av_rescale_q(par->initial_padding, -// (AVRational){ 1, par->sample_rate }, -// st->time_base); +// track->ts_offset = av_rescale_q(par->initial_padding, +// (AVRational){ 1, par->sample_rate }, +// st->time_base); put_ebml_uint(pb, MATROSKA_ID_CODECDELAY, codecdelay); } @@ -1303,7 +1303,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKAUDIO, 0); put_ebml_uint (pb, MATROSKA_ID_AUDIOCHANNELS , par->channels); - mkv->tracks[i].sample_rate_offset = avio_tell(pb); + track->sample_rate_offset = avio_tell(pb); put_ebml_float (pb, MATROSKA_ID_AUDIOSAMPLINGFREQ, sample_rate); if (output_sample_rate) put_ebml_float(pb, MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, output_sample_rate); @@ -1339,13 +1339,13 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, } if (mkv->mode != MODE_WEBM || par->codec_id != AV_CODEC_ID_WEBVTT) { - mkv->tracks[i].codecpriv_offset = avio_tell(pb); + track->codecpriv_offset = avio_tell(pb); ret = mkv_write_codecprivate(s, pb, par, native_id, qt_id); if (ret < 0) return ret; } - end_ebml_master(pb, track); + end_ebml_master(pb, track_master); return 0; } @@ -1367,7 +1367,9 @@ static int mkv_write_tracks(AVFormatContext *s) default_stream_exists |= st->disposition & AV_DISPOSITION_DEFAULT; } for (i = 0; i < s->nb_streams; i++) { - ret = mkv_write_track(s, mkv, i, mkv->tracks_bc, default_stream_exists); + AVStream *st = s->streams[i]; + ret = mkv_write_track(s, mkv, st, &mkv->tracks[i], + mkv->tracks_bc, default_stream_exists); if (ret < 0) return ret; }