From patchwork Tue Apr 14 02:23:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18937 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 1D01044AE80 for ; Tue, 14 Apr 2020 05:24:06 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E9EA568B844; Tue, 14 Apr 2020 05:24:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9436868B6F3 for ; Tue, 14 Apr 2020 05:23:59 +0300 (EEST) Received: by mail-wm1-f68.google.com with SMTP id a81so12217176wmf.5 for ; Mon, 13 Apr 2020 19:23:59 -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=RoyFRDkQ1JadkzjzCnTYM695ul00lwn0KzJoTbc8HBM=; b=BnklFD8digcUK8H33GA1PZyguWMu3/XaWDy7pds8Vrcx63iCBlMw3yKW9f8pflB4MM bsIVS8NePtiBQ3bjzsJiEjEm0TospCOs1G1N9MDolIy2TROp7Bbh4MMCMxCjWRHCBJnl HMPcOshTm10x1+kkBeOclpdFQz44bZGwXYW/b/PsE1L9qkYkR8bfQV04sl3yO+qWbpaX RBd/qJyQ8H4hKx1hsk5z+NnZcQ2BJlbrhQpaDnqPGCvbJykEIbfkZ/rAHw64MDt6UO42 aYpa3jyx7kI0Y4+EVWtfKnbEMDEUHOl5MhC68+355u+Q7ST5V60Dq9c9rQxphgBaKrKD +Uow== 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=RoyFRDkQ1JadkzjzCnTYM695ul00lwn0KzJoTbc8HBM=; b=eCzDbBiSq4wVvUud36d7m2jch6UeBwtUpz+mCsLkCXdXmpo5D/3IDnMAYuNTdT9VKB oN3G3d5J8bEGQdjyfv5a86m7oGPZg/psccy6ymRnJ55G7MnRZP3nvTljQwXkO2fFTBw3 akN4e1ThcagNBlVzIAHSHPuO+Znd6N1IhHsRU9Xcm48JRr+Z9lruFGsSycnVWPftLg12 luu//bZ/i7yexAiUxE8uKet80fpk7eC1loTVFZ49TZrWRHysqwEfs2BRcVByB4FvkfQw DnnMo362cUfrgKyZZXVhgutQLclOTnU22qIO10lLGsTebbhg4T2pIjkOlWxBA53yew1A wDlA== X-Gm-Message-State: AGi0PuZX4o2tfUNvr/F2YLdzGsT4LB2jB04msdC22aFY22VCf03d2jqW lUUBPut4F7zOCUDrRG/FuGi4SS4t X-Google-Smtp-Source: APiQypJ/kvZylOjpYheJKIzk/PfF55ptC5LMc+z353K52ofPJu7WPFvkNEG6B5LsymHA4o7KmKkDYQ== X-Received: by 2002:a1c:7215:: with SMTP id n21mr22137061wmc.145.1586831038143; Mon, 13 Apr 2020 19:23:58 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id h2sm17238554wmf.34.2020.04.13.19.23.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2020 19:23:57 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Apr 2020 04:23:51 +0200 Message-Id: <20200414022351.8573-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200405155928.9323-21-andreas.rheinhardt@gmail.com> References: <20200405155928.9323-21-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 20/20] avformat/matroskaenc: Cosmetics 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" Reindentation, removal of { } if they contain only one statement and moving the return statement to a line of its own in situations like "if (ret < 0) return ret;". Moreover, several overlong lines were made shorter and a camelCase variable received a name in line with our naming conventions. Signed-off-by: Andreas Rheinhardt --- I have removed the removal of unnecessary parentheses. Furthermore f0d712d0f95ba757943cc6d49a8caa2e1adfb6e7 resulted in a little merge conflict, so I am resending this here. libavformat/matroskaenc.c | 127 +++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 65 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 991c133414..4be9f6e154 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -259,7 +259,8 @@ static void put_ebml_sint(AVIOContext *pb, uint32_t elementid, int64_t val) int i, bytes = 1; uint64_t tmp = 2*(val < 0 ? val^-1 : val); - while (tmp>>=8) bytes++; + while (tmp >>= 8) + bytes++; put_ebml_id(pb, elementid); put_ebml_num(pb, bytes, 0); @@ -591,8 +592,8 @@ static int put_wv_codecpriv(AVIOContext *pb, const AVCodecParameters *par) return 0; } -static int put_flac_codecpriv(AVFormatContext *s, - AVIOContext *pb, const AVCodecParameters *par) +static int put_flac_codecpriv(AVFormatContext *s, AVIOContext *pb, + const AVCodecParameters *par) { int write_comment = (par->channel_layout && !(par->channel_layout & ~0x3ffffULL) && @@ -614,7 +615,7 @@ static int put_flac_codecpriv(AVFormatContext *s, av_dict_set(&dict, "WAVEFORMATEXTENSIBLE_CHANNEL_MASK", buf, 0); len = ff_vorbiscomment_length(dict, vendor, NULL, 0); - if (len >= ((1<<24) - 4)) { + if (len >= (1 << 24) - 4) { av_dict_free(&dict); return AVERROR(EINVAL); } @@ -1107,9 +1108,8 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, int j, ret; const AVDictionaryEntry *tag; - if (par->codec_type == AVMEDIA_TYPE_ATTACHMENT) { + if (par->codec_type == AVMEDIA_TYPE_ATTACHMENT) return 0; - } if (par->codec_id == AV_CODEC_ID_AAC) { ret = get_aac_sample_rates(s, par->extradata, par->extradata_size, &sample_rate, @@ -1121,7 +1121,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, 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) + put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGLACING, 0); // no lacing (yet) if ((tag = av_dict_get(st->metadata, "title", NULL, 0))) put_ebml_string(pb, MATROSKA_ID_TRACKNAME, tag->value); @@ -1437,12 +1437,13 @@ static int mkv_write_chapters(AVFormatContext *s) mkv_add_seekhead_entry(mkv, MATROSKA_ID_CHAPTERS, avio_tell(pb)); ret = start_ebml_master_crc32(&dyn_cp, mkv); - if (ret < 0) return ret; + if (ret < 0) + return ret; editionentry = start_ebml_master(dyn_cp, MATROSKA_ID_EDITIONENTRY, 0); - if (mkv->mode != MODE_WEBM) { + if (mkv->mode != MODE_WEBM) put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGDEFAULT, 1); - } + for (i = 0; i < s->nb_chapters; i++) { ebml_master chapteratom, chapterdisplay; const AVChapter *c = s->chapters[i]; @@ -1549,8 +1550,8 @@ static int mkv_check_tag_name(const char *name, uint32_t elementid) av_strcasecmp(name, "mimetype"))); } -static int mkv_write_tag(AVFormatContext *s, const AVDictionary *m, uint32_t elementid, - uint64_t uid, ebml_master *tag) +static int mkv_write_tag(AVFormatContext *s, const AVDictionary *m, + uint32_t elementid, uint64_t uid, ebml_master *tag) { MatroskaMuxContext *mkv = s->priv_data; const AVDictionaryEntry *t = NULL; @@ -1596,7 +1597,8 @@ static int mkv_write_tags(AVFormatContext *s) if (mkv_check_tag(s->metadata, 0)) { ret = mkv_write_tag(s, s->metadata, 0, 0, NULL); - if (ret < 0) return ret; + if (ret < 0) + return ret; } tagp = (s->pb->seekable & AVIO_SEEKABLE_NORMAL) && !mkv->is_live ? &tag : NULL; @@ -1612,7 +1614,8 @@ static int mkv_write_tags(AVFormatContext *s) ret = mkv_write_tag(s, st->metadata, MATROSKA_ID_TAGTARGETS_TRACKUID, track->uid, tagp); - if (ret < 0) return ret; + if (ret < 0) + return ret; if (tagp) { AVIOContext *pb = mkv->tags_bc; @@ -1621,7 +1624,7 @@ static int mkv_write_tags(AVFormatContext *s) simpletag = start_ebml_master(pb, MATROSKA_ID_SIMPLETAG, 2 + 1 + 8 + 23); put_ebml_string(pb, MATROSKA_ID_TAGNAME, "DURATION"); - mkv->tracks[i].duration_offset = avio_tell(pb); + track->duration_offset = avio_tell(pb); // Reserve space to write duration as a 20-byte string. // 2 (ebml id) + 1 (data size) + 20 (data) @@ -1686,7 +1689,8 @@ static int mkv_write_attachments(AVFormatContext *s) mkv_add_seekhead_entry(mkv, MATROSKA_ID_ATTACHMENTS, avio_tell(pb)); ret = start_ebml_master_crc32(&dyn_cp, mkv); - if (ret < 0) return ret; + if (ret < 0) + return ret; for (i = 0; i < s->nb_streams; i++) { const AVStream *st = s->streams[i]; @@ -1740,19 +1744,19 @@ static int mkv_write_attachments(AVFormatContext *s) static int64_t get_metadata_duration(AVFormatContext *s) { - int i = 0; + const AVDictionaryEntry *duration = av_dict_get(s->metadata, "DURATION", + NULL, 0); int64_t max = 0; int64_t us; - const AVDictionaryEntry *explicitDuration = av_dict_get(s->metadata, "DURATION", NULL, 0); - if (explicitDuration && (av_parse_time(&us, explicitDuration->value, 1) == 0) && us > 0) { + if (duration && (av_parse_time(&us, duration->value, 1) == 0) && us > 0) { av_log(s, AV_LOG_DEBUG, "get_metadata_duration found duration in context metadata: %" PRId64 "\n", us); return us; } - for (i = 0; i < s->nb_streams; i++) { + for (unsigned i = 0; i < s->nb_streams; i++) { int64_t us; - const AVDictionaryEntry *duration = av_dict_get(s->streams[i]->metadata, "DURATION", NULL, 0); + duration = av_dict_get(s->streams[i]->metadata, "DURATION", NULL, 0); if (duration && (av_parse_time(&us, duration->value, 1) == 0)) max = FFMAX(max, us); @@ -1817,9 +1821,8 @@ static int mkv_write_header(AVFormatContext *s) else put_ebml_string(pb, MATROSKA_ID_WRITINGAPP, LIBAVFORMAT_IDENT); - if (mkv->mode != MODE_WEBM) { + if (mkv->mode != MODE_WEBM) put_ebml_binary(pb, MATROSKA_ID_SEGMENTUID, mkv->segment_uid, 16); - } } else { const char *ident = "Lavf"; put_ebml_string(pb, MATROSKA_ID_MUXINGAPP , ident); @@ -2074,14 +2077,12 @@ static int mkv_write_block(AVFormatContext *s, AVIOContext *pb, if (data != pkt->data) av_free(data); - if (blockid == MATROSKA_ID_BLOCK && !keyframe) { + if (blockid == MATROSKA_ID_BLOCK && !keyframe) put_ebml_sint(pb, MATROSKA_ID_BLOCKREFERENCE, track->last_timestamp - ts); - } track->last_timestamp = ts; - if (discard_padding) { + if (discard_padding) put_ebml_sint(pb, MATROSKA_ID_DISCARDPADDING, discard_padding); - } if (side_data_size) { block_additions = start_ebml_master(pb, MATROSKA_ID_BLOCKADDITIONS, 0); @@ -2094,9 +2095,8 @@ static int mkv_write_block(AVFormatContext *s, AVIOContext *pb, end_ebml_master(pb, block_more); end_ebml_master(pb, block_additions); } - if (side_data_size || discard_padding) { + if (side_data_size || discard_padding) end_ebml_master(pb, block_group); - } return 0; } @@ -2108,7 +2108,7 @@ static int mkv_write_vtt_blocks(AVFormatContext *s, AVIOContext *pb, const AVPac ebml_master blockgroup; int id_size, settings_size, size; uint8_t *id, *settings; - int64_t ts = mkv->tracks[pkt->stream_index].write_dts ? pkt->dts : pkt->pts; + int64_t ts = track->write_dts ? pkt->dts : pkt->pts; const int flags = 0; id_size = 0; @@ -2298,7 +2298,8 @@ static int mkv_write_packet_internal(AVFormatContext *s, const AVPacket *pkt) (par->codec_type == AVMEDIA_TYPE_VIDEO || !mkv->have_video && !track->has_cue)) { ret = mkv_add_cuepoint(mkv, pkt->stream_index, ts, mkv->cluster_pos, relative_packet_pos, -1); - if (ret < 0) return ret; + if (ret < 0) + return ret; track->has_cue = 1; } } else { @@ -2351,36 +2352,34 @@ static int mkv_write_packet(AVFormatContext *s, const AVPacket *pkt) return ret; if (mkv->cluster_pos != -1) { - if (mkv->tracks[pkt->stream_index].write_dts) - cluster_time = pkt->dts - mkv->cluster_pts; - else - cluster_time = pkt->pts - mkv->cluster_pts; - cluster_time += mkv->tracks[pkt->stream_index].ts_offset; - - cluster_size = avio_tell(mkv->cluster_bc); - - if (mkv->is_dash && codec_type == AVMEDIA_TYPE_VIDEO) { - // WebM DASH specification states that the first block of every cluster - // has to be a key frame. So for DASH video, we only create a cluster - // on seeing key frames. - start_new_cluster = keyframe; - } else if (mkv->is_dash && codec_type == AVMEDIA_TYPE_AUDIO && - cluster_time > mkv->cluster_time_limit) { - // For DASH audio, we create a Cluster based on cluster_time_limit - start_new_cluster = 1; - } else if (!mkv->is_dash && - (cluster_size > mkv->cluster_size_limit || - cluster_time > mkv->cluster_time_limit || - (codec_type == AVMEDIA_TYPE_VIDEO && keyframe && - cluster_size > 4 * 1024))) { - start_new_cluster = 1; - } else { - start_new_cluster = 0; - } + if (mkv->tracks[pkt->stream_index].write_dts) + cluster_time = pkt->dts - mkv->cluster_pts; + else + cluster_time = pkt->pts - mkv->cluster_pts; + cluster_time += mkv->tracks[pkt->stream_index].ts_offset; + + cluster_size = avio_tell(mkv->cluster_bc); + + if (mkv->is_dash && codec_type == AVMEDIA_TYPE_VIDEO) { + // WebM DASH specification states that the first block of + // every Cluster has to be a key frame. So for DASH video, + // we only create a Cluster on seeing key frames. + start_new_cluster = keyframe; + } else if (mkv->is_dash && codec_type == AVMEDIA_TYPE_AUDIO && + cluster_time > mkv->cluster_time_limit) { + // For DASH audio, we create a Cluster based on cluster_time_limit. + start_new_cluster = 1; + } else if (!mkv->is_dash && + (cluster_size > mkv->cluster_size_limit || + cluster_time > mkv->cluster_time_limit || + (codec_type == AVMEDIA_TYPE_VIDEO && keyframe && + cluster_size > 4 * 1024))) { + start_new_cluster = 1; + } else + start_new_cluster = 0; - if (start_new_cluster) { - mkv_end_cluster(s); - } + if (start_new_cluster) + mkv_end_cluster(s); } if (!mkv->cluster_pos) @@ -2561,9 +2560,8 @@ static int mkv_write_trailer(AVFormatContext *s) avio_seek(pb, endpos, SEEK_SET); } - if (!mkv->is_live) { + if (!mkv->is_live) end_ebml_master(pb, mkv->segment); - } return mkv->reserve_cues_space < 0 ? AVERROR(EINVAL) : 0; } @@ -2646,9 +2644,8 @@ static int mkv_init(struct AVFormatContext *s) mkv->mode = MODE_MATROSKAv2; mkv->tracks = av_mallocz_array(s->nb_streams, sizeof(*mkv->tracks)); - if (!mkv->tracks) { + if (!mkv->tracks) return AVERROR(ENOMEM); - } if (!(s->flags & AVFMT_FLAG_BITEXACT)) { av_lfg_init(&c, av_get_random_seed()); @@ -2669,7 +2666,7 @@ static int mkv_init(struct AVFormatContext *s) } // ms precision is the de-facto standard timescale for mkv files - avpriv_set_pts_info(s->streams[i], 64, 1, 1000); + avpriv_set_pts_info(st, 64, 1, 1000); if (st->codecpar->codec_type == AVMEDIA_TYPE_ATTACHMENT) { if (mkv->mode == MODE_WEBM) {