From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id A53A14AADF for ; Wed, 29 Jan 2025 14:41:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 39C0A68BB0D; Wed, 29 Jan 2025 16:41:18 +0200 (EET) Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8C93268B443 for ; Wed, 29 Jan 2025 16:41:12 +0200 (EET) Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-43690d4605dso47141985e9.0 for ; Wed, 29 Jan 2025 06:41:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738161671; x=1738766471; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=CGpa3JfTBWiZgHZvKNu9z4WXpNAGqOMyDL4/ExoYxtk=; b=lZ/0HbzG2gWJFgaqyUBQf1wTPDM7fp5mQQeWhvJLmIZmN3ASzVgF8YrVgGGOTyEztE wBnZ9KZPsNCQlm6Db6hh5eoosktcsqo/jz7y4rVCmrE2UKLHA8xw/44kh1ejpAizoY46 YpOgxJTX/Ylo9a5TURG7y7P8y/uNBqbM82n95Oub2m3noTgTJOGZx3g8g6/1yhX22bUz mbna5OEySryEluwMcGgxENmMpQrND9ftZPRqwfiBRSpE5kTxY4eMIYTy5+qHE4+FhzYd Cd5kUZqxxq0E1WxpdFzYBAnXyBJTy26gdlmBZE3j/D4yAdl49yEeQ9g1wgMl4y3AHt20 vMMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738161671; x=1738766471; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CGpa3JfTBWiZgHZvKNu9z4WXpNAGqOMyDL4/ExoYxtk=; b=ZHGEru9CIlzCzw58qkmlW1t9aEPzbl3/DgE0GwM09gwfOoHoIZIAdCv2iVT0obNixl SNNG5ptyzEz6QCU6IsarXgl9tfrijX6V2M/xJHy0eOfWmaqdY2HrOKvzayI1eEn1DV8F lOihgXZdMD3YNb39MrZCH7P0/hoy1hs1IzbDwiXr0z1yeEPEXcTMOzd8opPFqL/BrYRp yK8CLOKK+ECxTRJSdxM/lCUSPGg3l/72v033om8PV2laUaotqAwyYimec025NB/cLTNq zi8qQhpJzs0xWjB74Ry18prSd45QzvPic0TgVfTNyHY0KndhnVV3OZ/cIjw6X0MTRnHW 1bqA== X-Gm-Message-State: AOJu0YymP5u2dJ7gCTmW+gZmHskrC2wVbsmR5kw3TfZ4rKR2qe/Cz2uV qFW267ZIj4STqO9KkD9ZLIh8mWDbUqashUeha02zuPo25j3Y6L/4zv+yfHf00yU= X-Gm-Gg: ASbGncvf0PKi0KyVoZz2u7CYkDrKgRYQXz2htgI0myLE8ND7kK4zmBnM6Ic6/6Ygxx3 HoSlmK+1DXXuh6BU2tcUppzjUbE9HiPKIJoIKrl14rFASaDVo3dCwSScxVRuHHy95S22mRKYqPN 3cH2qC65khGlv3zIpKZwCaZfbBQzfyz/WfSwUYHoOHr3ysJQFFvbcRll7NCSLIwwsvr3Fbylg9a 7LT0K+LL6A8NcTvA2R0fTNqIQNPjdv75UDdgZ6psl2KkBOBuquoWXk0/vevrrw2HWdS3EeCCj+2 67z465AEdrF2Ys2iSRzlE1IG5f2X69GI00uWGRNHdRxJOFgtSS1CNp0tlDs4HXB/7+ivHFig1Jp aeymkp8x6Q+NvzD2E2sWHl7Wv X-Google-Smtp-Source: AGHT+IE5TARWMC5PROpogN4E7lZFvSvoVynXsL6TgmLCTIkL4N7s921oB6rFJwqyE8UhB2Mj4IibFQ== X-Received: by 2002:a05:600c:348e:b0:434:a734:d268 with SMTP id 5b1f17b1804b1-438dc3cbb7cmr31864895e9.14.1738161671155; Wed, 29 Jan 2025 06:41:11 -0800 (PST) Received: from mac.home (2a01cb0013c69e0054b75c70b01aef22.ipv6.abo.wanadoo.fr. [2a01:cb00:13c6:9e00:54b7:5c70:b01a:ef22]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438dcc23e91sm25205795e9.12.2025.01.29.06.41.10 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 29 Jan 2025 06:41:10 -0800 (PST) From: Romain Beauxis To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jan 2025 15:40:00 +0100 Message-Id: <20250129144000.53579-1-romain.beauxis@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/2] Parse ogg/flac header again after processing a new chained ogg bitstream. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Romain Beauxis Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This patch makes sure that ogg/flac headers are parsed again when encountering a new logic stream inside a chained ogg bistream[1]. This patches makes it possible to retrieve metadata in chained ogg/flac bitstreams. It is particularly important because ogg/flac is one of the only (if not the only one) lossless container supported over HTTP/icecast. The patch has been tested with various ogg/flac encoders and appears to work fine with ffmpeg. Changes since last version: * Make sure to clear the stream's metadata before parsing again. 1: https://xiph.org/ogg/doc/oggstream.html --- libavformat/oggdec.c | 7 +++++-- libavformat/oggparseflac.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index 5339fdd32c..d986e19817 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -239,8 +239,11 @@ static int ogg_replace_stream(AVFormatContext *s, uint32_t serial, char *magic, os->start_trimming = 0; os->end_trimming = 0; - /* Chained files have extradata as a new packet */ - if (codec == &ff_opus_codec) + /* Parse opus and flac header on new chained bitstream. + * For opus, header contains required extradata as new packet + * For both formats, this makes it possible to read chained metadata. */ + if (codec == &ff_opus_codec || + codec == &ff_flac_codec) os->header = -1; return i; diff --git a/libavformat/oggparseflac.c b/libavformat/oggparseflac.c index f25ed9cc15..932907fa1a 100644 --- a/libavformat/oggparseflac.c +++ b/libavformat/oggparseflac.c @@ -72,6 +72,8 @@ flac_header (AVFormatContext * s, int idx) avpriv_set_pts_info(st, 64, 1, samplerate); } else if (mdt == FLAC_METADATA_TYPE_VORBIS_COMMENT) { + /* New metadata packet; release old data. */ + av_dict_free(&st->metadata); ff_vorbis_stream_comment(s, st, os->buf + os->pstart + 4, os->psize - 4); } -- 2.39.5 (Apple Git-154) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".