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 ESMTP id BEF7942CF7 for ; Fri, 3 Jun 2022 17:11:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C32E568B5D8; Fri, 3 Jun 2022 20:11:01 +0300 (EEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065108.outbound.protection.outlook.com [40.92.65.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 69E1868B64A for ; Fri, 3 Jun 2022 20:10:55 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fKuwU6o/XqALJHprIZsGmu210G1Yqr8VQf4nGjXOUTP+PFXPu5BZNywYR0mk89ABnxfLqVrqCS3eZ8E9x6M8A0UiLDzKiAyG1Ro47M6gSR18gH5LB+K6/XNh4moQo3U6yXn6OQbHzarGhCEYlu3wxPJsd3faT1at3n58MhNFnHITNByZx1IEyTaGlA1soBcKPm7I6d+Uex2KpSmbvz8uEdhA+IEuF8Ogd9tFi/aW4EZjXWbZRJHmlgrvPfElNTYdijgY5lBbdnxtdNc7lzvLw/iRTvicdusPFggAuPzz4xdiFerHYmCSv7bA++h+JTustd5Jgh3IqeTx82yG8x6ctQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=U64HEcMn2Q975rmWmOzHn4rsR58SbS6rK4U7JtUwtLQ=; b=h+J4sqyV82ijlDooxo67Cl3rghdff5QvZEHc7BkWreCBVZod2gH6fo21GfQgwy6KC4UX3MId/AuZvrOEEWA32Y+IGD+M6yQtLr0Lkhs7L58zPHTJKjxeNWOZe5UcnJykTUSEEhY9AzLG3Frmvh0FC1pqS0TaLhsehAe2cSR7BLqBbzKUebzdik98VYtAJ2/oWRaDHCWdOecjzYETcwc57q2Wz3QLb9BvYwlgcS7zuy8mraIXhyCi5rccMnBOPmc3uLreeVRJR19/gWbcZWqfdk9bmCtKVSLHVUgtqJl0jD/h5/0f5BcE9m/76QF7FQ+EVpDHLucNdQE/kticDGCvVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U64HEcMn2Q975rmWmOzHn4rsR58SbS6rK4U7JtUwtLQ=; b=HaXaOkHRQW8W5xuyDR1a0NXZpoc9B/1gaVlqC1R2C/41ZO1uXLpy7yW8Qmg4cRuFW6vzXq6P6V1rkY9iSJ7pcN+VVsmAlptoC3hzn/IK/CgkChHLkZKKHQhBAXsKW6Mop9wS/8YzrtwtC/dhYscvaEmAWVu+ZF7Q83Q1NTiM+t9ThHozTKzfBVIaKDOv6KAwC5l0icL2S68Bh6qnZBgacdv464oWecEbr2sb4KpjmIDUpajOJe7frQeGRluYvgpLJ91Zz+Jg0K7U2ef8qlOMz0fKm0+LnBFtBbsC1kcpLJTaras4KO+ZlQ3fE2rUA4uxXt5SrG0MyqQ0jWgcEhkPSA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (10.168.51.27) by VE1PR01MB5901.eurprd01.prod.exchangelabs.com (10.255.158.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Fri, 3 Jun 2022 17:10:52 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5293.019; Fri, 3 Jun 2022 17:10:52 +0000 Message-ID: Date: Fri, 3 Jun 2022 19:10:50 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220603131156.1772629-1-mvanb1@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220603131156.1772629-1-mvanb1@gmail.com> X-TMN: [Z7hiUyO1r9m4+m32GN3OxEMSrNon7P/V] X-ClientProxiedBy: ZR0P278CA0048.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1d::17) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <892912dd-d148-e1b1-58f2-b9f169f06780@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 76e85dc8-91d2-45f6-e53d-08da4584030e X-MS-TrafficTypeDiagnostic: VE1PR01MB5901:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uLj/GWrFiBE/+Oyio8YOJrzubQsyWyaIQ0uC9NAGuVqXPMoOIQPj9vR548F9HffEngbo3g9sc5N0dc9iqLaBh8j9Lwz+Cvpet/50l+mdX94QzDCn8pZckmAIP0Lsnpuj1jgnc4tESaJXBO09BzbInEzSqcycAKNo+vO5FgpRpTjZOEBFld8hd+Xmvk6Q1xjB29Km0yPQi2J6b1sJMDKj2mPTlEmsJL1wjDj+Uup0QO6/A/15Y8Y7Q50ScwG67j/u3kkepFa0A3EVYgkIcOAIWkJKjOUU6e+2RYyWhJ3cgb2aTfaPCPRykwLvATwTZfXNp1B83dm/BBgyhMycQ/T33qBDyo6ny69/xZPQECP7i2BMiEY9e8DlCeQokcLd4e1dC6HYLytqPVpiszra5qaMdYo7Y7I+Ld/Jq2frrepSBISvBLqp/md92vW6KSmskUIjsh/arxLkgi4j3BUgjHDOc3/TMwhaXel2TB8znOZCdZAlr+y3xH8dt+sGt88hniTfgCs4co2fOpKA8wFE1nOzaYAEmz1KGgUi3Gs5YLjoNtM/knJmN6oEFaxFQ/9vCAN6s+2ZL3ZzMGhthVFUksPQ6mO3MLZutxujrFn6tY0tACvm+eVYQaSM7AFz5FKNJTLT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TDVQZEdNWFRFRUE4UWo4Q0dRcklXK0FMZkR6WWRVRVZmdkZHdnFrWXFNVURV?= =?utf-8?B?cnVZbXdwZW84anR0MDZtSUxzK1h6QWZORFVibHdZTDNNMTJQa0ZINEx4Y1ZF?= =?utf-8?B?VzUwWC9FUmpicmFqYzA1L2diOGU0MlJTUnRXTGE2aU5qdGhQMUdaYXJtT2dl?= =?utf-8?B?cW41TVl2UU9haWtrTStTN21MK255NUxtcllLMVJvcDBRMWJOTVk2MVZYWWFR?= =?utf-8?B?a2xzZ2FkSEpWUC9XWXZFM2FLMnRNWnlxck1iZDR3L1JycERKZkU3TDZFa1VE?= =?utf-8?B?RTBzRGtCWEJxMzRJUEN3RTFWRThROW0wRDFTTW1xWlNmV1dMT1BaVVZET1p0?= =?utf-8?B?ZmpYdlNDVm4xVE5LejdqTGxUdDNrZWROUVJpVWQ1NG0yUkR5YURGK2lrTDRu?= =?utf-8?B?TnpsU3dDV2tQbWN6Wlpxanl1WGpHM3FJcmxMOWh3QU9udlUreXlqWFZoRU5z?= =?utf-8?B?WDVHT2RkQldRa2xnNlhKRGM2TGN5ZUlyVDEyQTNzZjZzblE3RHd1VkRQSi9B?= =?utf-8?B?MThJQUo4cVRLdlJvdFBoTTEyU2kzY3JOQmpuWm14TUZTdWh0TWJpMlY4OXdB?= =?utf-8?B?ekthV25FazVUeFFhYU1yZ25wOFBTbkVJcmFLU3FxWEo0UjhEcGd1T0ZJNS9D?= =?utf-8?B?RlJwK2FkZ0hqbktPeVpvMFlYZWtkTitSZGYzcmc3RlFJMUk4QkRtRUc2NVp2?= =?utf-8?B?bDVReFZ6VDZjUUxqbVN0YkN5UFEwdUh2SjEyUUZDYWtqN0JlVVdrelpXUkJF?= =?utf-8?B?bzVGd3cxT3pybHNvQm9YT1Z0LzFuejgzR0ZQWERYNmpyT0pBWU1XUDV3NnE3?= =?utf-8?B?RFNKQnB1QmZRTzkrSDdpMlVhL2Ntdkc2dTVYK3I1cEsrbTlVck9OdERCZnR3?= =?utf-8?B?bmVyaGRlZEl2TlZUbk9JTHh4NWZxRWN1QlFLekdVa3lnUHk3WEZrOVJwYndP?= =?utf-8?B?cjFsaVJWZDlFbmVDNHpEK2daZFdtVFpQSXlHcEViaVkwUVBqNTVncHQ0Y2sx?= =?utf-8?B?SGhMRWp5MnRUOWpPVVRCYkpxVFdzMXlLcVo3NDlaVVdVYjF2Q0N0NzBYMEdI?= =?utf-8?B?MUIyenpMcFdsYUFSSkpIdTRBVXF5UjZDR1c1VHpWZE1RZkhWd2RFUW1YVUFJ?= =?utf-8?B?eTAvWXNXaFo4ZjZPczhTTi9RSDBPb3NwYWEwZjFVYXNWT09BZk1BbVZVc2tR?= =?utf-8?B?VGs2NGwyL2NRbENkRDdJZnpsNjFYaENhMFM2bzEramc4eThLK2phSE9XUzFm?= =?utf-8?B?VHNWM3l5bnNUNUsrVmdhR082bis4QjFYOXRhZlBLMGdtbUwvRFNpNE9VcXp2?= =?utf-8?B?amZheHprOGhyeHZLeG1wYTlnQ0dQZlhMVUlybUx0Mnd6TnM3VHd2MmIvT2NL?= =?utf-8?B?VENMZS9KNTZ5ejY2NVgrS1hIQWM4RjNiNlIvRjdnOEtueStkSENGdXRzcXZN?= =?utf-8?B?ZEJ4a2owOURkWk9NN3Vnci9sRnZsYktxN2RldHBraFVYaW1QV0lKZUVONFBI?= =?utf-8?B?cUdQQ2NzMURTQk94RjhBazcrUTk2bXRsQjJiKytkcVYxNzF1clJoaG45elU4?= =?utf-8?B?L05DU0lMOXU5RFJJSkZWTW9PaW1IczJ5Y2h6K1hkN0hiVWdUejd1dXFQUytB?= =?utf-8?B?MDRnMzExNW5DQjl6bFNORjJ2dkJyanRXUGg5WHRvN3VGUHNLWWpjdG1HT2FK?= =?utf-8?B?SSthZDZtRjFnd20xRDZyYS9iM3M5QTNUZUdjVThpblRTYktZeHBlMEtaLzg0?= =?utf-8?B?Um5lNnZhRTgxeUxCMDlPVkNtY3VzOEdld1o2bERZL3krbXF3elZnWmVwcm5y?= =?utf-8?B?cVFJTUVqbUNyNWUyOFRITDFvSSs0ekEzUEVrTk1ySzBFZWVGVWlDRnFFcjg2?= =?utf-8?B?OUp0bmJBN0xPZ2VDK0ZBRS93Wkd1M0pMVWRqbU5XcktSOVloOU9GTVVYNThv?= =?utf-8?B?bjZRQ3pIQ3E0NkpGZ1I1UTU0MGZKUTRralA4QndQanlZSVZjdHQzWkptQ0l3?= =?utf-8?B?UnlkV29jSWRBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76e85dc8-91d2-45f6-e53d-08da4584030e X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2022 17:10:51.9247 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR01MB5901 Subject: Re: [FFmpeg-devel] [PATCH] avformat/cafdec: Implement FLAC-in-CAF parsing 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 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: Martijn van Beurden: > The afconvert utility shipped with MacOS supports muxing of FLAC > in CAF, see afconvert help output on a recent Mac here: > https://hydrogenaud.io/index.php?topic=122509.0 A file created > with afconvert free of copyright (licensed CC0) can be found here: > http://www.audiograaf.nl/misc_stuff/afconvert-FLAC-in-CAF.caf > > This patch implements parsing of such a file > --- > libavformat/caf.c | 1 + > libavformat/cafdec.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/libavformat/caf.c b/libavformat/caf.c > index a700e4055b..a61c39fae5 100644 > --- a/libavformat/caf.c > +++ b/libavformat/caf.c > @@ -46,6 +46,7 @@ const AVCodecTag ff_codec_caf_tags[] = { > { AV_CODEC_ID_GSM, MKTAG('a','g','s','m') }, > { AV_CODEC_ID_GSM_MS, MKTAG('m','s', 0, '1') }, > { AV_CODEC_ID_ILBC, MKTAG('i','l','b','c') }, > + { AV_CODEC_ID_FLAC, MKTAG('f','l','a','c') }, > { AV_CODEC_ID_MACE3, MKTAG('M','A','C','3') }, > { AV_CODEC_ID_MACE6, MKTAG('M','A','C','6') }, > { AV_CODEC_ID_MP1, MKTAG('.','m','p','1') }, > diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c > index 168f69f20b..72a74ab297 100644 > --- a/libavformat/cafdec.c > +++ b/libavformat/cafdec.c > @@ -31,6 +31,7 @@ > #include "demux.h" > #include "internal.h" > #include "isom.h" > +#include "libavcodec/flac.h" > #include "mov_chan.h" > #include "libavutil/intreadwrite.h" > #include "libavutil/intfloat.h" > @@ -170,6 +171,46 @@ static int read_kuki_chunk(AVFormatContext *s, int64_t size) > } > avio_skip(pb, size - ALAC_NEW_KUKI); > } > + } else if (st->codecpar->codec_id == AV_CODEC_ID_FLAC) { > + int last, type, flac_metadata_size; > + uint8_t buf[4]; > + /* The magic cookie format for FLAC consists mostly of an mp4 dfLa atom. */ > + if (size < (16 + FLAC_STREAMINFO_SIZE)) { > + av_log(s, AV_LOG_ERROR, "invalid FLAC magic cookie\n"); > + return AVERROR_INVALIDDATA; > + } > + /* Check cookie version. */ > + if (avio_r8(pb) != 0) { > + av_log(s, AV_LOG_ERROR, "unknown FLAC magic cookie\n"); > + return AVERROR_INVALIDDATA; > + } > + avio_rb24(pb); /* Flags */ > + /* read dfLa fourcc */ > + if (avio_read(pb, buf, 4) != 4) { > + av_log(s, AV_LOG_ERROR, "failed to read FLAC magic cookie\n"); > + return AVERROR_INVALIDDATA; > + } > + if (memcmp(buf,"dfLa",4)) { > + av_log(s, AV_LOG_ERROR, "invalid FLAC magic cookie\n"); > + return AVERROR_INVALIDDATA; > + } > + /* Check dfLa version. */ > + if (avio_r8(pb) != 0) { > + av_log(s, AV_LOG_ERROR, "unknown dfLa version\n"); > + return AVERROR_INVALIDDATA; > + } > + avio_rb24(pb); /* Flags */ > + avio_read(pb, buf, sizeof(buf)); You are not checking this; this could lead to uninitialized values being used in flac_parse_block_header() below. > + flac_parse_block_header(buf, &last, &type, &flac_metadata_size); > + if (type != FLAC_METADATA_TYPE_STREAMINFO || flac_metadata_size != FLAC_STREAMINFO_SIZE) { > + av_log(s, AV_LOG_ERROR, "STREAMINFO must be first FLACMetadataBlock\n"); > + return AVERROR_INVALIDDATA; > + } > + ret = ff_get_extradata(s, st->codecpar, pb, FLAC_STREAMINFO_SIZE); > + if (ret < 0) > + return ret; > + if (!last) > + av_log(s, AV_LOG_WARNING, "non-STREAMINFO FLACMetadataBlock(s) ignored\n"); > } else if (st->codecpar->codec_id == AV_CODEC_ID_OPUS) { > // The data layout for Opus is currently unknown, so we do not export > // extradata at all. Multichannel streams are not supported. Is there an official spec for this? - Andreas _______________________________________________ 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".