From patchwork Thu Apr 27 22:17:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ammon Riley X-Patchwork-Id: 41391 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dca6:b0:f3:34fa:f187 with SMTP id ky38csp860860pzb; Thu, 27 Apr 2023 15:18:12 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4GeCy64XW6fdmMes4ws5YDWXofNRuqCA9dEoBIReqbmX6kBkcnwX7WDv3AgA+ix1mibQAZ X-Received: by 2002:a17:907:805:b0:94f:4d4d:23 with SMTP id wv5-20020a170907080500b0094f4d4d0023mr3296597ejb.68.1682633891820; Thu, 27 Apr 2023 15:18:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682633891; cv=none; d=google.com; s=arc-20160816; b=VYE+K4hmy8s7QRtn73+rUx7gpRg/uDvYGUkgBa3RcUXPWG+O/WL3XA8/Y3FDlR7C7O nTwt2ZiWXG62+JQmHscxmWajc5SiPUcPKMM6NfnSdVQdatyeBlMehi8J6zR2WBP/6jhN jP5lwjl0oZOdBj0Mc0TdhcByjtgBizgaceJy872hCGZye44Ae8zH3VZxTobnYyw0/GGt sS/cSvlexXpMKwZqYxDeyKogeng2j+30NPJnj+KvaXAjKZ921bKFhPbc4hKXF+y8TIfM kYEduIN+OYZ5Vzda14/poEl5aM8Ga9vq1y879FOKtV+vrUiRm8HKKekznaFQIW4we+Tb YJBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=dHbqYvgoG0DYdGnr49wCrxtja1YD3upBeHEPeLvF3PE=; b=FQUP6zykreV7n4i+W2PBzN4akOdgnRiJUXiXqVM4Xb3jXJXKPguWXn8+M65LMBnP72 6utFwSsOTZ9vQL9VcHhEq0eEPeO5wX4c8hy2MvuSE0P1CwLNinIJNV5pXnEMi8rhZrHp 9iQzQg7mdAl5ItODU9BRWQ02U8fiNeDpPnHE7Nbl+3/BCTFvuHKzey7KlNX6PVBGy7YQ eDdb4jRKzEsxDlAlnuvvM9jlFaRgTfcQLWkUrmk6BnZt8huasJxQdnTOyf2zz+YbiWx2 AlfPplRnLbZ58ALB5QUscreXmCHd5S/ap37cWYCceblE0RhlUIQrEygB3/6dTEu5/qkd mVFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=XbkBo6Vu; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ne40-20020a1709077ba800b009537a538322si17634511ejc.836.2023.04.27.15.18.11; Thu, 27 Apr 2023 15:18:11 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=XbkBo6Vu; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A7B268BF5C; Fri, 28 Apr 2023 01:18:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FBD568B75F for ; Fri, 28 Apr 2023 01:18:01 +0300 (EEST) Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-4eff4ea8e39so5756361e87.1 for ; Thu, 27 Apr 2023 15:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682633880; x=1685225880; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=uptHh0RQLs/0ypLhzpzQ1FAsAKYGvG8/JTFJ53w46x8=; b=XbkBo6VuTJ6zwzVucOe1ye6uECZsse5J+LiBGn+Mf0ssuRrbPM9n66gjNZvNXDfov4 yoSue3IYn+Ia7rGRTHTgtxwIHJGmLqG/QihbgqDBflNxESHPha3kcqybJHyv/72RDgGZ yiA3mgqoms1eAvMrAKd47mHPkaAtpO7QPwDTi9qPY8HtRr/GYDe9x2yNIZ8qEs2oAkjE 1wmTOlhnyyp4xOx45FUUxzWykrMyjEFFDv63kci34zrz4Kn8/e2UvTCIecivvMLbR1c3 ntKW7K1Dng9U5g+/MMPt5k/20q3Dth+oE+AccXqNF6yJF6+KsXr3saNQCn5vMvBKUHFe 3XaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682633880; x=1685225880; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=uptHh0RQLs/0ypLhzpzQ1FAsAKYGvG8/JTFJ53w46x8=; b=gTBgw8LL7bFnd+NPUdSHtwUs28cBIJIvfYx0JGraQ/d9xSEUvW+ugUaMvFXrGrLclN VcJgyH5fNmCASNdM3+Z4qrv27tD+T2bH84udpZYNCfLCOsm7dFt6sUx+x+WWDxE1CT/G qe2lFCPTQ2eE5A3oTXdoUcsViWitnOjY7cnpMiRomTbSYHZUD/Bp8SB8Wd/PTdC6olYB 3ak068P5b7/YFwREJtSXwe8PuEe97XYe1t7/fBDgSBEr661Ofj5fULBRJfxBXCAAGhMr 3G2NBfHJgtSzeKNtOfuVEFeIsshe3KulKQK8lrPgAHTKIo02KCEHM7Sf/E1AIlphExmr PS0g== X-Gm-Message-State: AC+VfDxWe9Ov5SiEcsp2jJbdb5P4Lwm6sNlvtNNMPM8ilzCXVz7xSJ1W ViUMT7EHrnfSHRcNaM5+EnyxYCeE6ZyRbhx81Ga+uK9C X-Received: by 2002:a05:6512:94d:b0:4ec:8624:8fa8 with SMTP id u13-20020a056512094d00b004ec86248fa8mr876166lft.19.1682633879491; Thu, 27 Apr 2023 15:17:59 -0700 (PDT) MIME-Version: 1.0 From: Ammon Riley Date: Thu, 27 Apr 2023 15:17:48 -0700 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avcodec/mxfdec: Recognize AAC per SMPTE ST 381-4 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: w0KrXvXmBvHR This patch simply recognizes the AAC audio tracks during decode -- it does not add functionality to encode AAC in MXF. A sample file (st381-4-sample.mxf) has been uploaded to https://streams.videolan.org/upload/, and is also available at https://harmonicinc.box.com/v/st381-4-sample. Audio and video are both licensed as CC0. From 9765ec18f65b8ae147660e0d71bfa80293e57f56 Mon Sep 17 00:00:00 2001 From: Ammon Riley Date: Wed, 26 Apr 2023 18:26:35 -0700 Subject: [PATCH] avcodec/mxfdec: Recognize AAC per SMPTE ST 381-4 This patch simply recognizes the AAC audio track during decode -- it does not add functionality to encode AAC in MXF. Signed-off-by: Ammon Riley --- Changelog | 1 + libavformat/mxf.c | 1 + libavformat/mxfdec.c | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/Changelog b/Changelog index a40f32c23f..e68ee0f2c9 100644 --- a/Changelog +++ b/Changelog @@ -3,6 +3,7 @@ releases are sorted from youngest to oldest. version : - libaribcaption decoder +- recognize AAC in MXF (SMPTE ST 381-4) version 6.0: - Radiance HDR image support diff --git a/libavformat/mxf.c b/libavformat/mxf.c index 8ef928b8fc..deb6091003 100644 --- a/libavformat/mxf.c +++ b/libavformat/mxf.c @@ -78,6 +78,7 @@ const MXFCodecUL ff_mxf_codec_uls[] = { { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x02,0x03,0x02,0x01,0x00 }, 15, AV_CODEC_ID_AC3 }, { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x02,0x03,0x02,0x05,0x00 }, 15, AV_CODEC_ID_MP2 }, /* MP2 or MP3 */ //{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x04,0x02,0x02,0x02,0x03,0x02,0x1C,0x00 }, 15, AV_CODEC_ID_DOLBY_E }, /* Dolby-E */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0D,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00 }, 13, AV_CODEC_ID_AAC }, /* AAC SMPTE 381-4 */ { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 8a7008b298..c5960ecf0c 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1628,6 +1628,9 @@ static const MXFCodecUL mxf_sound_essence_container_uls[] = { { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x01,0x01 }, 14, AV_CODEC_ID_PCM_S16LE, NULL, 13 }, /* D-10 Mapping 50Mbps PAL Extended Template */ { { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4F }, 14, AV_CODEC_ID_PCM_S16LE }, /* 0001GL00.MXF.A1.mxf_opatom.mxf */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14, AV_CODEC_ID_AAC }, /* MPEG-2 AAC ADTS (legacy) */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x0d,0x01,0x03,0x01,0x02,0x16,0x00,0x00 }, 14, AV_CODEC_ID_AAC, "aac_adif_smpte_381_4", 14 }, /* AAC SMPTE 381-4 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x0d,0x01,0x03,0x01,0x02,0x17,0x00,0x00 }, 14, AV_CODEC_ID_AAC, "aac_adts_smpte_381_4", 14 }, /* AAC SMPTE 381-4 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0d,0x0d,0x01,0x03,0x01,0x02,0x18,0x00,0x00 }, 14, AV_CODEC_ID_AAC, "aac_latm_loas_smpte_381_4", 14 }, /* AAC SMPTE 381-4 */ { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; @@ -3029,6 +3032,8 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) st->codecpar->codec_id = AV_CODEC_ID_PCM_S32BE; } else if (st->codecpar->codec_id == AV_CODEC_ID_MP2) { sti->need_parsing = AVSTREAM_PARSE_FULL; + } else if (st->codecpar->codec_id == AV_CODEC_ID_AAC) { + sti->need_parsing = AVSTREAM_PARSE_FULL; } st->codecpar->bits_per_coded_sample = av_get_bits_per_sample(st->codecpar->codec_id); -- 2.29.2