From patchwork Tue Sep 26 06:49:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukas Stabe X-Patchwork-Id: 5297 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp4211596jaa; Tue, 26 Sep 2017 12:48:10 -0700 (PDT) X-Received: by 10.28.109.151 with SMTP id b23mr3877026wmi.32.1506455290877; Tue, 26 Sep 2017 12:48:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506455290; cv=none; d=google.com; s=arc-20160816; b=Jxx8YmgSVzoUUhLQeNZ4PNH1i/sxvD2MQk1VlWKI3WfEb34VReTvCglQL758yRoUwu yQn3UNeLQ6q6/9xJ0nJ+EpFwo+jSZ5zAaHeNqtUaNn5ZgumSJM8IWIIYX2+KICgfeavm NwIIC9/+YPdDsa95jl05jye7YQOAQdL7PhcPvu9W4BnmPxqZoQjlrQcjyD/Tn4UMEkOq dpeswW0pbKIwOO/nhmtSWkBI/3E+0ZKMKqw4GCzS/ubFX6JIt2bkcv+Ib9WPVnLcsOSR G0pbDCnjFSa6fjERj+WUan23kPEDmkhxUpxHyRAJjckoUcbHHMAKk3B0EyF+nqz8/yvV Yp7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=42iPAewR3qRtFNDOQKx1TBZvYEkTYPiFECoCwzNseHI=; b=LIcWLtUpBGXRLkytpObeoWk78ul536EnXtJr75MBeB+7UgG8w7z6cZTaRRZX3XjUrx Lkv5+Yhh5YSSUNp3Dw8UeGj6j2f+cO3Y88fYX5ejWJ/rBs2e1Uov9rHVdHtgJS85d2BR TXIc9ahJmFYfpt++aEw83EyzavMrghrHwfpMTBiAwz4XZ7i0i7SKYmUeJ5weO5UReUOb 4GKTtOiPmQkuDiqe5E45sCwSjdCuH9jqYlk0uZwtxoyFK4ahobDy6fKaNlWr5XoCL8Fc tBRBP9DR8Jk21uUDVeFKLgwD1cPYb99W7TqYo+LyMJ669hb5tOS5wBeNn6qBBmbXiJ/4 YgYQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r186si2019483wme.182.2017.09.26.12.48.09; Tue, 26 Sep 2017 12:48:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B7A08688366; Tue, 26 Sep 2017 22:47:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4B043680474 for ; Tue, 26 Sep 2017 09:56:03 +0300 (EEST) Received: by mail-wm0-f66.google.com with SMTP id r136so8529566wmf.3 for ; Mon, 25 Sep 2017 23:56:15 -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; bh=uEQi7K0Jp4aprQWgVrmmHMoh1gZtNykET46uxoetxIA=; b=LpGxZV4E0CmNIRNe/JE4Vct/Ckq4AHOLB/GwsIEae1HQL2S8JGOnNJIO4wubfoxIkQ SWF9ZVARgnxKpbGmOj1LqYcN8CYJX957rowXMgXd7Ij5nTb5sNidLOuvk9M8KWz7fwxd kpcWe2Dvr+E2LK4iRVRfGYA39a/4UiKhQFjxqL3nmyx7+4RCH1j3NYOSSdmOoDjghKcq tziSrbNEJZYCWm7tdwTOYmNBClUaiWnCbCvsNdj56GaM7qHwaJecrxI61ziLmhH6xmS+ iNf//sEe1i1GFcrNSPC0ZwmXSdRmj3WuEP39pIgn6uKnQhJWq7b/ktvsLF7us0/yGOKT Fbng== X-Gm-Message-State: AHPjjUiyHgmuoReO4yT/rM/VVjKgbiohlGxs7+Pzf5d0/ShLZAOKaNH/ +Cl7ZZUAirCWuUlSJJfrILFEmc42 X-Google-Smtp-Source: AOwi7QBXt/UB12TyLi3bSupTSLb2k6BXtNZEkDtlHMAQBWvfgqpOFqcjcMooPj0ZgIYgwkXKuRs00A== X-Received: by 10.28.6.149 with SMTP id 143mr2330122wmg.114.1506408590235; Mon, 25 Sep 2017 23:49:50 -0700 (PDT) Received: from Lukass-MBP.speedport.ip (p5DFE5871.dip0.t-ipconnect.de. [93.254.88.113]) by smtp.gmail.com with ESMTPSA id b89sm15620048wrd.42.2017.09.25.23.49.48 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 25 Sep 2017 23:49:49 -0700 (PDT) From: Lukas Stabe To: ffmpeg-devel@ffmpeg.org Date: Tue, 26 Sep 2017 08:49:44 +0200 Message-Id: <20170926064944.99165-1-lukas@stabe.de> X-Mailer: git-send-email 2.14.1 X-Mailman-Approved-At: Tue, 26 Sep 2017 22:47:55 +0300 Subject: [FFmpeg-devel] [PATCH] libavformat: Add format context parameter to ff_id3v2_read_dict 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: Lukas Stabe MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The format context (when not NULL) is used to store chapter information, which was not previously supported by ff_id3v2_read_dict. This fixes https://trac.ffmpeg.org/ticket/6558 --- libavformat/hls.c | 2 +- libavformat/id3v2.c | 4 ++-- libavformat/id3v2.h | 6 ++++-- libavformat/utils.c | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 0995345bbf..f37bfa4e4f 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -909,7 +909,7 @@ static void parse_id3(AVFormatContext *s, AVIOContext *pb, static const char id3_priv_owner_ts[] = "com.apple.streaming.transportStreamTimestamp"; ID3v2ExtraMeta *meta; - ff_id3v2_read_dict(pb, metadata, ID3v2_DEFAULT_MAGIC, extra_meta); + ff_id3v2_read_dict(NULL, pb, metadata, ID3v2_DEFAULT_MAGIC, extra_meta); for (meta = *extra_meta; meta; meta = meta->next) { if (!strcmp(meta->tag, "PRIV")) { ID3v2ExtraMetaPRIV *priv = meta->data; diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index 05346350ad..2327d93379 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -1097,10 +1097,10 @@ static void id3v2_read_internal(AVIOContext *pb, AVDictionary **metadata, merge_date(metadata); } -void ff_id3v2_read_dict(AVIOContext *pb, AVDictionary **metadata, +void ff_id3v2_read_dict(AVFormatContext *s, AVIOContext *pb, AVDictionary **metadata, const char *magic, ID3v2ExtraMeta **extra_meta) { - id3v2_read_internal(pb, metadata, NULL, magic, extra_meta, 0); + id3v2_read_internal(pb, metadata, s, magic, extra_meta, 0); } void ff_id3v2_read(AVFormatContext *s, const char *magic, diff --git a/libavformat/id3v2.h b/libavformat/id3v2.h index 9d7bf1c03c..d8768e955a 100644 --- a/libavformat/id3v2.h +++ b/libavformat/id3v2.h @@ -97,13 +97,15 @@ int ff_id3v2_tag_len(const uint8_t *buf); /** * Read an ID3v2 tag into specified dictionary and retrieve supported extra metadata. * - * Chapters are not currently read by this variant. + * Chapters are not currently only read by this variant when s is not NULL. * * @param metadata Parsed metadata is stored here * @param extra_meta If not NULL, extra metadata is parsed into a list of * ID3v2ExtraMeta structs and *extra_meta points to the head of the list + * @param s If not NULL, chapter information is stored in the provided context */ -void ff_id3v2_read_dict(AVIOContext *pb, AVDictionary **metadata, const char *magic, ID3v2ExtraMeta **extra_meta); +void ff_id3v2_read_dict(AVFormatContext *s, AVIOContext *pb, AVDictionary **metadata, + const char *magic, ID3v2ExtraMeta **extra_meta); /** * Read an ID3v2 tag, including supported extra metadata and chapters. diff --git a/libavformat/utils.c b/libavformat/utils.c index 7abca632b5..079a8211d2 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -588,7 +588,7 @@ int avformat_open_input(AVFormatContext **ps, const char *filename, /* e.g. AVFMT_NOFILE formats will not have a AVIOContext */ if (s->pb) - ff_id3v2_read_dict(s->pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); + ff_id3v2_read_dict(s, s->pb, &s->internal->id3v2_meta, ID3v2_DEFAULT_MAGIC, &id3v2_extra_meta); if (!(s->flags&AVFMT_FLAG_PRIV_OPT) && s->iformat->read_header)