From patchwork Mon Feb 13 18:09:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 40381 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3676586pzk; Mon, 13 Feb 2023 10:09:55 -0800 (PST) X-Google-Smtp-Source: AK7set9UoNtDIsnmlYnFh5fu5HNrDrrag6BkXGq/RrzkP1hfJRkte1sZvS++BT52nXrYBlSAngz0 X-Received: by 2002:a17:906:7f10:b0:881:d1ad:1640 with SMTP id d16-20020a1709067f1000b00881d1ad1640mr22561387ejr.57.1676311795567; Mon, 13 Feb 2023 10:09:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676311795; cv=none; d=google.com; s=arc-20160816; b=sT15h7JaKrGWBaSfCjSyYIMeMHonF0EdNgNP3+CRRAKKg/PgB+ho0RL5D5nvqtian1 nrOtgZIuKOZHFI6rRcqbjEJ1BfttB9cFilBNWZzx0uPUBxxUkNtRCBRRctiVWx1bMz2M CzlTPwee7SCkVIo8nK6EyddShqDl8VI0/JbvhicAnjV70KQ0GvlNJGsLJGK2iQK2l/C3 nTKrA7w0h8dgCvs2zIHqFmR5o7teojdzuXRf9IfqDLcVtgXsmCFWUlx3tJc4VDq96cQ1 fnaHnYSOmcJm1kwisSRkf6jga8JhEyWwpoBkAXDYIL/JXxMoVZVZXKcFGh1aftFmzD0x hhZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=GxwjqZ4cRUx8BiekgHTFmIwxCuZ6bfuFmfyTJEg1puY=; b=DSVU4l84b504S2Mrp7a4+RS39XI6oDH6SKZXhS+6POLahL5OWDLvlLxxJssecSHm34 fg4wK4ppWGaZqsEv61OML62R+4RerBK7B0fzkuJsaAfU313eei/rDTOcHV0uPiAu9N2X a0ATvypTeldEr4x49l8tDBgdx02FLL5Li50s4lOnwo6h2/bVSX/TA0LFZVi13+LvDXQO 6bqFuGFOm427ldGp417lkHGXWOR8XFeytErF94w9qhKnW85UscRlVUtTIZYrsxn2cUYM LGArZVn1P+PeqGuuEUpA4Y+uxJcUbdItaQQNGseGjtpHdXX0SNSnZhq9Q3gO6Gu8sloE 4eOA== 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 oh10-20020a17090784ca00b0088a6700e203si12679222ejc.128.2023.02.13.10.09.54; Mon, 13 Feb 2023 10:09:55 -0800 (PST) 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 2A6B968BE3B; Mon, 13 Feb 2023 20:09:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CBEFB68BD27 for ; Mon, 13 Feb 2023 20:09:44 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 2561442B55; Mon, 13 Feb 2023 18:09:44 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Feb 2023 19:09:31 +0100 Message-Id: <20230213180936.815-2-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230213180936.815-1-nicolas.gaullier@cji.paris> References: <20230213180936.815-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/6] avformat/s337m: Split read_packet/get_packet 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: wCzPv4zdJ1U1 Prepare use of s337m_get_packet from outside. --- libavformat/s337m.c | 24 ++++++++++++++++++++---- libavformat/s337m.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 libavformat/s337m.h diff --git a/libavformat/s337m.c b/libavformat/s337m.c index 6fecfeffae..582c8b3670 100644 --- a/libavformat/s337m.c +++ b/libavformat/s337m.c @@ -22,6 +22,7 @@ #include "avformat.h" #include "internal.h" #include "spdif.h" +#include "s337m.h" #define MARKER_16LE 0x72F81F4E #define MARKER_20LE 0x20876FF0E154 @@ -142,17 +143,20 @@ static void bswap_buf24(uint8_t *data, int size) FFSWAP(uint8_t, data[0], data[2]); } -static int s337m_read_packet(AVFormatContext *s, AVPacket *pkt) +int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID *codec, void *avc) { - AVIOContext *pb = s->pb; uint64_t state = 0; int ret, data_type, data_size, offset; - enum AVCodecID codec; + int64_t orig_pos = avio_tell(pb); while (!IS_LE_MARKER(state)) { state = (state << 8) | avio_r8(pb); if (avio_feof(pb)) return AVERROR_EOF; + if (avio_tell(pb) - orig_pos + 6 >= size) { + av_log(avc, AV_LOG_ERROR, "s337m : sync bytes not found at packet pos=0x%"PRIx64" size=%d\n", orig_pos, size); + return AVERROR_INVALIDDATA; + } } if (IS_16LE_MARKER(state)) { @@ -163,8 +167,9 @@ static int s337m_read_packet(AVFormatContext *s, AVPacket *pkt) data_size = avio_rl24(pb); } - if ((ret = s337m_get_offset_and_codec(s, state, data_type, data_size, &offset, &codec)) < 0) + if ((ret = s337m_get_offset_and_codec(avc, state, data_type, data_size, &offset, codec)) < 0) return ret; + offset = FFMIN(offset, size - (avio_tell(pb) - orig_pos)); if ((ret = av_get_packet(pb, pkt, offset)) != offset) return ret < 0 ? ret : AVERROR_EOF; @@ -174,6 +179,17 @@ static int s337m_read_packet(AVFormatContext *s, AVPacket *pkt) else bswap_buf24(pkt->data, pkt->size); + return 0; +} + +static int s337m_read_packet(AVFormatContext *s, AVPacket *pkt) +{ + enum AVCodecID codec; + int ret; + + if ((ret = ff_s337m_get_packet(s->pb, pkt, avio_size(s->pb), &codec, s)) < 0) + return ret; + if (!s->nb_streams) { AVStream *st = avformat_new_stream(s, NULL); if (!st) { diff --git a/libavformat/s337m.h b/libavformat/s337m.h new file mode 100644 index 0000000000..f7bd0c16f6 --- /dev/null +++ b/libavformat/s337m.h @@ -0,0 +1,37 @@ +/* + * SMPTE ST 337 common header + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_S337M_H +#define AVFORMAT_S337M_H + +/** + * Read s337m packets in a PCM_S16LE/S24LE stereo stream + * Returns the first inner packet found + * Note that it does not require a clean guard band + * @param pb Associated IO context + * @param pkt On success, returns a DOLBY E packet + * @param size Maximum IO read size available for reading at current position + * @param codec Returns AV_CODEC_ID_DOLBY_E + * @param avc For av_log + * @return = 0 on success (an error is raised if no s337m was found) + */ +int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID *codec, void *avc); + +#endif /* AVFORMAT_S337M_H */ From patchwork Mon Feb 13 18:09:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 40382 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3676858pzk; Mon, 13 Feb 2023 10:10:16 -0800 (PST) X-Google-Smtp-Source: AK7set9FvMpACNLjpunUDHVYS9W8XHZFfbyB9rj8aePW4q9iH5aDN/+0icuaSrKLpYmLrzAIHBYm X-Received: by 2002:a50:cc97:0:b0:4ab:16a8:bc61 with SMTP id q23-20020a50cc97000000b004ab16a8bc61mr18815946edi.23.1676311815912; Mon, 13 Feb 2023 10:10:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676311815; cv=none; d=google.com; s=arc-20160816; b=BzpHQyfOAt2ZkGa+1HeKy42QWc/P7esq7GRhGHJlsA0UaMgb00WxcYhUwp/XnnCj3j ObMZfp7y85KHgEzpCeS9in+WTyjJWMLoUNz9c9xBEoM98t2AUF1Uo2J6MisxdkpoKPIA f+TUOAgcAoecjOOOydOYB7ogKpRfqDgaRZ5z5nuo2daqfpsy6xZXQjuvKi4syK9P4Rr2 dGs0B/QNqa6djSqF0BI3lUk1HS7DurQaAu6M+BjkxdP+Rf6L/7Jd640PqlFnExRyC4yL Q9wPjKZFGoonpDZB6mDSgQCedu1X3tAV1uPbYxOAbrcAz5oiNa/62ekSzykHwGdvbDAy 5jOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=xxmGZ/JmJ18UE0nY9iqqXsVC5IlivLZ9Ww4hGV2Y3lQ=; b=ToWJ65ymH6/P1kZHxDam01grCi20iUuQwUaaMyOz/+hCGFksIKzII8qVSBNRFzKDxx /LOl5MqMqRvYH/UtFX4ZaKkI0KGxu59LpZeAtXDcZ3OeYebGr/KFFYEu+8CLSLR/ZGY9 Y8HpWxAkBk24rv6QJiow+6xRUdrTLkutyy8HGnyNz2+VST91XXMRg8xQ3byIhmQUINDe VB6JbHDlrXwA2R4Ax/ZadQctvQRNRUYJ5wFNqdM6AlEVuW5HjjQmhj96wFayXH6ZUQhW n+9mXyRdDm7ODgiH+b6+aGiFvhY6M1BzJ8+YzZz8p6cQC0XeBvMoV+uRwAlAuL5UTpjB HvJQ== 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 v21-20020a056402185500b004acd45d6a8fsi826189edy.323.2023.02.13.10.10.15; Mon, 13 Feb 2023 10:10:15 -0800 (PST) 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 4AEE268BE6E; Mon, 13 Feb 2023 20:09:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA7F468BD42 for ; Mon, 13 Feb 2023 20:09:44 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 557D242C46; Mon, 13 Feb 2023 18:09:44 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Feb 2023 19:09:32 +0100 Message-Id: <20230213180936.815-3-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230213180936.815-1-nicolas.gaullier@cji.paris> References: <20230213180936.815-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/6] avformat/s337m: Consider container bit resolution 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: OdlfY1J3NmPt Prepare the support of s337m in muxers other than raw (ex: wav). For example, this forbids reading 16 bits DolbyE stream from a 24 bit wav file. --- libavformat/s337m.c | 21 +++++++++++++++------ libavformat/s337m.h | 3 ++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/libavformat/s337m.c b/libavformat/s337m.c index 582c8b3670..2a566e3cba 100644 --- a/libavformat/s337m.c +++ b/libavformat/s337m.c @@ -35,7 +35,7 @@ static int s337m_get_offset_and_codec(void *avc, uint64_t state, - int data_type, int data_size, + int data_type, int data_size, int container_word_bits, int *offset, enum AVCodecID *codec) { int word_bits; @@ -56,6 +56,12 @@ static int s337m_get_offset_and_codec(void *avc, avpriv_report_missing_feature(avc, "Data type %#x in SMPTE 337M", data_type & 0x1F); return AVERROR_PATCHWELCOME; } + if (container_word_bits && + !(container_word_bits == 16 && word_bits == 16) && + !(container_word_bits == 24 && word_bits == 20) && + !(container_word_bits == 24 && word_bits == 24)) { + return AVERROR_INVALIDDATA; + } if (codec) *codec = AV_CODEC_ID_DOLBY_E; @@ -105,7 +111,7 @@ static int s337m_probe(const AVProbeData *p) data_size = AV_RL24(buf + 3); } - if (s337m_get_offset_and_codec(NULL, state, data_type, data_size, &offset, NULL)) + if (s337m_get_offset_and_codec(NULL, state, data_type, data_size, 0, &offset, NULL)) continue; i = IS_16LE_MARKER(state) ? 0 : IS_20LE_MARKER(state) ? 1 : 2; @@ -143,13 +149,16 @@ static void bswap_buf24(uint8_t *data, int size) FFSWAP(uint8_t, data[0], data[2]); } -int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID *codec, void *avc) +int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID *codec, void *avc, int container_word_bits) { uint64_t state = 0; int ret, data_type, data_size, offset; int64_t orig_pos = avio_tell(pb); - while (!IS_LE_MARKER(state)) { + if (container_word_bits && container_word_bits != 16 && container_word_bits != 24) + return AVERROR_INVALIDDATA; + while ((container_word_bits == 24 || !IS_16LE_MARKER(state)) + && (container_word_bits == 16 || !IS_20LE_MARKER(state) && !IS_24LE_MARKER(state))) { state = (state << 8) | avio_r8(pb); if (avio_feof(pb)) return AVERROR_EOF; @@ -167,7 +176,7 @@ int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID data_size = avio_rl24(pb); } - if ((ret = s337m_get_offset_and_codec(avc, state, data_type, data_size, &offset, codec)) < 0) + if ((ret = s337m_get_offset_and_codec(avc, state, data_type, data_size, container_word_bits, &offset, codec)) < 0) return ret; offset = FFMIN(offset, size - (avio_tell(pb) - orig_pos)); @@ -187,7 +196,7 @@ static int s337m_read_packet(AVFormatContext *s, AVPacket *pkt) enum AVCodecID codec; int ret; - if ((ret = ff_s337m_get_packet(s->pb, pkt, avio_size(s->pb), &codec, s)) < 0) + if ((ret = ff_s337m_get_packet(s->pb, pkt, avio_size(s->pb), &codec, s, 0)) < 0) return ret; if (!s->nb_streams) { diff --git a/libavformat/s337m.h b/libavformat/s337m.h index f7bd0c16f6..af2c4c85a3 100644 --- a/libavformat/s337m.h +++ b/libavformat/s337m.h @@ -30,8 +30,9 @@ * @param size Maximum IO read size available for reading at current position * @param codec Returns AV_CODEC_ID_DOLBY_E * @param avc For av_log + * @param container_word_bits 16,24, or 0 for autodetect * @return = 0 on success (an error is raised if no s337m was found) */ -int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID *codec, void *avc); +int ff_s337m_get_packet(AVIOContext *pb, AVPacket *pkt, int size, enum AVCodecID *codec, void *avc, int container_word_bits); #endif /* AVFORMAT_S337M_H */ From patchwork Mon Feb 13 18:09:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 40383 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3676960pzk; Mon, 13 Feb 2023 10:10:25 -0800 (PST) X-Google-Smtp-Source: AK7set9U+b2EF/9ibfV8MvI+WVXSyxA2CYdGRBi/Lfmel3n3VU1cWfaERuQw2xvUKoeIeu0ZBliC X-Received: by 2002:a17:907:8d17:b0:8af:346a:c186 with SMTP id tc23-20020a1709078d1700b008af346ac186mr18385637ejc.24.1676311824975; Mon, 13 Feb 2023 10:10:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676311824; cv=none; d=google.com; s=arc-20160816; b=Rg8+ThCFUqfzolCIoU+h1YGLtKFgL/CueCqOJIeYyYYqsSGJBmb+PQCqOwNLhQtvVR pKGMvndhg2eQXmal2IHjd0x3AmltzzT2taf3fp/rIdUYychkkSjo/EvJfe80MXxUANdC 6jd9thadjDPGzMbGFBR1K9lGW5QJ7K/HUcyA3jcnJnXiXjo5gsObXAwwxs9ZWRZqgh9i uUYWS+JgpfssnEPw5MEYaGRweAtPNFOjFSAXCKwtt4VTbdh74gWP9Qhk4y0kfv1iYEWT +VnmdbIkzsET0jcXnwU8UHCDATIXJs3scNwDXwMfvlZus4RXE19NGt6HQMTI3+YcxaRG L2EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=BlDFBsqecRX+Np7wnb0taiTsds54ywEMlZ312R+23Ek=; b=LExnoKK4eURIM18Nakv2YqnH/4EWOnznyDtA88kc3t/Rem2z9skzFXd0FPjS29BELl GSUXdQiIXSF/AVRmhH4KAPOyDxa1/Zku1F4kvfLKtX25V9raHnFxgBILPXh9x+SWIMR+ 0mQfyRsvgp5ijd+q70RlFcgLSbg7cvcHMG669Yc/Lr/AR4Xd7dvKRG5/Hv3O2idI6D1/ 92Bz0e7JLi2cGnEBWfmqpqt+2+XpSd9GAIsRnUbYVFZv1SqcE2u7bzZhAilFtr50kuMN 0u8cLiuqrT9On26cNd1+lpVEuZtJqSpNleJr1gWannUYBgtmNhwrag1Sv1UOr3yeWAyV GeoA== 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 vz7-20020a17090704c700b00888f1f1e13asi10868501ejb.346.2023.02.13.10.10.24; Mon, 13 Feb 2023 10:10:24 -0800 (PST) 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 3A55268BE77; Mon, 13 Feb 2023 20:09:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0B8DC68BD2E for ; Mon, 13 Feb 2023 20:09:45 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 8FBAC42D59; Mon, 13 Feb 2023 18:09:44 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Feb 2023 19:09:33 +0100 Message-Id: <20230213180936.815-4-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230213180936.815-1-nicolas.gaullier@cji.paris> References: <20230213180936.815-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/6] avformat/s337m: New ff_s337m_probe() 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: A0I1pJ7PAVfo Similar to ff_spdif_probe() with just an additional checking of the bit resolution of the container as it may be 16 or 24 for s337m. --- libavformat/s337m.c | 32 ++++++++++++++++++++++++++++++++ libavformat/s337m.h | 16 ++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/libavformat/s337m.c b/libavformat/s337m.c index 2a566e3cba..9d2ac265b6 100644 --- a/libavformat/s337m.c +++ b/libavformat/s337m.c @@ -135,6 +135,38 @@ static int s337m_probe(const AVProbeData *p) return 0; } +int ff_s337m_probe(const uint8_t *buf, int size, enum AVCodecID *codec, int container_word_bits) +{ + int pos = 0; + int consecutive_codes = 0; + + if ( size < S337M_MIN_OFFSET) + return 0; + size = FFMIN(3 * S337M_MAX_OFFSET, size); + if (container_word_bits != 16 && container_word_bits != 24) + return AVERROR_INVALIDDATA; + + do { + uint64_t state; + int data_type, data_size, offset; + while (pos < size - 12 && !buf[pos]) { + pos++; + } + if (pos >= size - 12 || pos < S337M_PROBE_GUARDBAND_MIN_BYTES || pos % (container_word_bits == 16 ? 4 : 6)) + return 0; + state = container_word_bits == 16 ? AV_RB32(buf + pos) : AV_RB48(buf + pos); + if (!IS_LE_MARKER(state)) + return 0; + data_type = container_word_bits == 16 ? AV_RL16(buf + pos + 4) : AV_RL24(buf + pos + 6); + data_size = container_word_bits == 16 ? AV_RL16(buf + pos + 6) : AV_RL24(buf + pos + 9); + if (s337m_get_offset_and_codec(NULL, state, data_type, data_size, container_word_bits, &offset, codec)) + return 0; + pos = ++consecutive_codes * (offset + 4*(container_word_bits == 16 ? 4 : 6)); + } while (consecutive_codes < 3); + + return AVPROBE_SCORE_MAX; +} + static int s337m_read_header(AVFormatContext *s) { s->ctx_flags |= AVFMTCTX_NOHEADER; diff --git a/libavformat/s337m.h b/libavformat/s337m.h index af2c4c85a3..94e79dce5d 100644 --- a/libavformat/s337m.h +++ b/libavformat/s337m.h @@ -21,6 +21,22 @@ #ifndef AVFORMAT_S337M_H #define AVFORMAT_S337M_H +#define S337M_MIN_OFFSET 1601*4 +#define S337M_MAX_OFFSET 2002*6 + +#define S337M_PROBE_GUARDBAND_MIN_BYTES 0 + +/** + * Detect s337m packets in a PCM_S16LE/S24LE stereo stream + * Requires 3 samples with enough (S337M_PROBE_GUARDBAND_MIN_BYTES) and clean (set to zero) guard band + * @param p_buf Buffer + * @param size Buffer size + * @param codec Returns AV_CODEC_ID_DOLBY_E upon successful probing + * @param container_word_bits 16 or 24 + * @return = AVPROBE_SCORE + */ +int ff_s337m_probe(const uint8_t *p_buf, int size, enum AVCodecID *codec, int container_word_bits); + /** * Read s337m packets in a PCM_S16LE/S24LE stereo stream * Returns the first inner packet found From patchwork Mon Feb 13 18:09:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 40384 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3677079pzk; Mon, 13 Feb 2023 10:10:34 -0800 (PST) X-Google-Smtp-Source: AK7set9JjXrUP2PM10bufAQQaR4Db94htMvsNfLEoXZrsujTANihC53/WMeCXgUlRMUtulq/wAY/ X-Received: by 2002:a17:907:7d90:b0:8b1:16b5:f7e2 with SMTP id oz16-20020a1709077d9000b008b116b5f7e2mr3524206ejc.52.1676311834214; Mon, 13 Feb 2023 10:10:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676311834; cv=none; d=google.com; s=arc-20160816; b=U1xR0jQTO9LCOY+iysrEicV9U+6EPTi7DhDIBT77yjoTaovymnPyE2DonC9sApfHea 1dHwtadi9+P4fdeWTkvo/NGYka/nEaHO2Ojf5EaHupXHTuWGzk9vhYxsZDz7iDAsqv4R P0hWOcAWcmHXdFrPkON84bJh7qwfkeEixlL3p4G2EjwwmsUiLHljBb8Y5N4JC+nbLo+7 jy9iaj6EngUybQLF1GL+t//vjzeDvg7jCDae5aGNuTzy3q+NxYLapLzAa48smJjmLn4K 1WqWdX8pOg+YMeW8mnh6r2y2lZJ8Ekebk/lt03a0EbILxeTLEoM1+5PvK6lq7IjQsfT5 DPsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=TGrTvhyfHcB1fosmo0/GywtdtNb0KtPlUNQ78bPnyWE=; b=jUSBMWoDByAk925D1xRRqVelX/yCQyDdHX612KmpOxlYGgaMUEijs3eOJTzKpmMA2Z UMh7FarlVea92wnZAPuVhwEyrU0UxS3eh9owvJCEx9Nfnh9RublmlVb5/FiQnw3Bup5h ynFXEOdYb2T7qeA//LOoGHeh56WZTVGWy51RD/C2JStq1Yr/DT3XLsSX8e+ehXGJlC/j wtDeto4dqbZA/21gP3PQMi5YiQRw/6Qh5ncEiTxwduj0qz6an93+FMguHwHFTcxZY2Gq t5IIQE9dYWIWL4j90WUwYJqob7jg/QdcUeIvZKj8nH0p4Yx76f0jtOpZ+ExAq+gwPPUz Nnaw== 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 18-20020a170906011200b0087bdb2961b5si17480620eje.886.2023.02.13.10.10.33; Mon, 13 Feb 2023 10:10:34 -0800 (PST) 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 42C3A68BE80; Mon, 13 Feb 2023 20:09:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F42C68BD2E for ; Mon, 13 Feb 2023 20:09:45 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id B903342D5D; Mon, 13 Feb 2023 18:09:44 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Feb 2023 19:09:34 +0100 Message-Id: <20230213180936.815-5-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230213180936.815-1-nicolas.gaullier@cji.paris> References: <20230213180936.815-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/6] avformat/wavdec: s337m support 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4ak5VEPfWxMJ Add s337m probing and demuxing similarly to spdif. Add 'non_pcm_mode' option to disable s337m demuxing (pass-through). --- libavformat/wavdec.c | 47 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index e3f790fcc9..fd9ca89880 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -45,6 +45,7 @@ #include "riff.h" #include "w64.h" #include "spdif.h" +#include "s337m.h" typedef struct WAVDemuxContext { const AVClass *class; @@ -61,9 +62,11 @@ typedef struct WAVDemuxContext { int ignore_length; int max_size; int spdif; + int s337m; int smv_given_first; int unaligned; // e.g. if an odd number of bytes ID3 tag was prepended int rifx; // RIFX: integer byte order for parameters is big endian + int non_pcm_mode; } WAVDemuxContext; #define OFFSET(x) offsetof(WAVDemuxContext, x) @@ -74,12 +77,18 @@ static const AVOption demux_options[] = { { "ignore_length", "Ignore length", OFFSET(ignore_length), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, DEC }, #endif { "max_size", "max size of single packet", OFFSET(max_size), AV_OPT_TYPE_INT, { .i64 = 4096 }, 1024, 1 << 22, DEC }, +#if CONFIG_S337M_DEMUXER + {"non_pcm_mode", "Chooses what to do with s337m", OFFSET(non_pcm_mode), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, DEC, "non_pcm_mode"}, + {"copy" , "Pass s337m through unchanged", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, 0, 1, DEC, "non_pcm_mode"}, + {"demux" , "Demux s337m" , 0, AV_OPT_TYPE_CONST, {.i64 = 1}, 0, 1, DEC, "non_pcm_mode"}, +#endif { NULL }, }; -static void set_spdif(AVFormatContext *s, WAVDemuxContext *wav) +static void set_spdif_s337m(AVFormatContext *s, WAVDemuxContext *wav) { - if (CONFIG_SPDIF_DEMUXER && s->streams[0]->codecpar->codec_tag == 1) { + AVCodecParameters *par = s->streams[0]->codecpar; + if ((CONFIG_SPDIF_DEMUXER || CONFIG_S337M_DEMUXER) && par->codec_tag == 1) { enum AVCodecID codec; int len = 1<<16; int ret = ffio_ensure_seekback(s->pb, len); @@ -92,10 +101,24 @@ static void set_spdif(AVFormatContext *s, WAVDemuxContext *wav) int64_t pos = avio_tell(s->pb); len = ret = avio_read(s->pb, buf, len); if (len >= 0) { - ret = ff_spdif_probe(buf, len, &codec); - if (ret > AVPROBE_SCORE_EXTENSION) { - s->streams[0]->codecpar->codec_id = codec; - wav->spdif = 1; + if (CONFIG_SPDIF_DEMUXER) { + ret = ff_spdif_probe(buf, len, &codec); + if (ret > AVPROBE_SCORE_EXTENSION) { + par->codec_id = codec; + wav->spdif = 1; + } + } + if (CONFIG_S337M_DEMUXER && !wav->spdif + && (par->codec_id == AV_CODEC_ID_PCM_S16LE || par->codec_id == AV_CODEC_ID_PCM_S24LE) && par->ch_layout.nb_channels == 2) { + ret = ff_s337m_probe(buf, len, &codec, par->bits_per_coded_sample); + if (ret > AVPROBE_SCORE_EXTENSION) { + if (wav->non_pcm_mode) { + par->codec_id = codec; + wav->s337m = 1; + } else { + av_log(s, AV_LOG_INFO, "Passing through S337M data: codec will not be reported\n"); + } + } } } avio_seek(s->pb, pos, SEEK_SET); @@ -104,7 +127,7 @@ static void set_spdif(AVFormatContext *s, WAVDemuxContext *wav) } if (ret < 0) - av_log(s, AV_LOG_WARNING, "Cannot check for SPDIF\n"); + av_log(s, AV_LOG_WARNING, "Cannot check for SPDIF/S337M\n"); } } @@ -668,7 +691,7 @@ break_loop: ff_metadata_conv_ctx(s, NULL, wav_metadata_conv); ff_metadata_conv_ctx(s, NULL, ff_riff_info_conv); - set_spdif(s, wav); + set_spdif_s337m(s, wav); return 0; } @@ -766,6 +789,10 @@ smv_out: wav->data_end = avio_tell(s->pb) + left; } + if (CONFIG_S337M_DEMUXER && wav->s337m == 1) { + size = FFMIN(S337M_MAX_OFFSET, left); + ret = ff_s337m_get_packet(s->pb, pkt, size, NULL, s, st->codecpar->bits_per_coded_sample); + } else { size = wav->max_size; if (st->codecpar->block_align > 1) { if (size < st->codecpar->block_align) @@ -774,6 +801,8 @@ smv_out: } size = FFMIN(size, left); ret = av_get_packet(s->pb, pkt, size); + } + if (ret < 0) return ret; pkt->stream_index = 0; @@ -960,7 +989,7 @@ static int w64_read_header(AVFormatContext *s) avio_seek(pb, data_ofs, SEEK_SET); - set_spdif(s, wav); + set_spdif_s337m(s, wav); return 0; } From patchwork Mon Feb 13 18:09:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 40385 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3677179pzk; Mon, 13 Feb 2023 10:10:43 -0800 (PST) X-Google-Smtp-Source: AK7set8Qk82sRj+DrIGvmBu01anJ8lMtuPFwjq/B1isxOZGLhH9BonPfGsqmYi76wkEH5PRJtETw X-Received: by 2002:a50:ce4d:0:b0:4ab:ed5:dd46 with SMTP id k13-20020a50ce4d000000b004ab0ed5dd46mr18608206edj.6.1676311843293; Mon, 13 Feb 2023 10:10:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676311843; cv=none; d=google.com; s=arc-20160816; b=OEU9IMjiDHIw/zWLn3lxOcGEj1DHoGnc01Ik1PubSrrA3UmD+UelJL6h3YtKojlIDw k0mxEk0YWebZpFdenmxDEmPRYGrvMBcMBID6MKfAFXKRwhm54522FMk5UeHkr+QWLDPt ACMLHANjACC7FXfRrGPOeT3J/D9sb8R/ZGj1bPA+wzZwz9YFEzLISiwX89LOatFeErq2 NXAlryBC9G4Hkt+Ft2GjLOKdIe2GuIYenoGlcLy+g04tJLpgTHUz9pJ0YxxA8PHD9M4y s6IvSXMbARAOSwX9HX4WyOyqZWNnpEAEeRH3b7qJhTdOoDrsRLoaKuMPrNkSEErTeXc1 liRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=lw6EAvrmJl4Dkd99hyYWVzewvrM4jsyShbLlToomrqY=; b=YnP5hCIpvVU65i3KvTXGaZUerN8+dmnC9KR1dMRuGuSZRy2H0LiBDNuvZ06YNLV6Hx 0hP70yy18/A3mPzM96FIwkUxW1GBY7oMa2QFHECHTR8VHeatl0KaZtH8bXa6P8Bstwo4 LYGoQsibXSEVpKFY86Q8uDtpCol6F/u6/hu01W+1KC50Wn7dDl+EG3+S5c24XP5jVKzF cLPmYu9/mlCg/pMkeI6cM2liv4x/v1pLxup/+t11Xya+jO0Is5mpK5d4ZYkwzJbQUdQy P4yritDkQruaX2ytFriLbSYmvQdsvmnuwXjbc+6ZuvXju9DFb7vjiYVqOoTSMjZ0sqLO KHHw== 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 d21-20020a50fb15000000b004ac4a74102bsi9517488edq.332.2023.02.13.10.10.42; Mon, 13 Feb 2023 10:10:43 -0800 (PST) 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 470A168BA04; Mon, 13 Feb 2023 20:09:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3AB9F68BE7E for ; Mon, 13 Feb 2023 20:09:50 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id EABC042D5F; Mon, 13 Feb 2023 18:09:44 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Feb 2023 19:09:35 +0100 Message-Id: <20230213180936.815-6-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230213180936.815-1-nicolas.gaullier@cji.paris> References: <20230213180936.815-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/6] avformat/wavdec.c: Reindent after last commit 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HAEnwvUhcqTp --- libavformat/wavdec.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index fd9ca89880..29192e48f0 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -793,14 +793,14 @@ smv_out: size = FFMIN(S337M_MAX_OFFSET, left); ret = ff_s337m_get_packet(s->pb, pkt, size, NULL, s, st->codecpar->bits_per_coded_sample); } else { - size = wav->max_size; - if (st->codecpar->block_align > 1) { - if (size < st->codecpar->block_align) - size = st->codecpar->block_align; - size = (size / st->codecpar->block_align) * st->codecpar->block_align; - } - size = FFMIN(size, left); - ret = av_get_packet(s->pb, pkt, size); + size = wav->max_size; + if (st->codecpar->block_align > 1) { + if (size < st->codecpar->block_align) + size = st->codecpar->block_align; + size = (size / st->codecpar->block_align) * st->codecpar->block_align; + } + size = FFMIN(size, left); + ret = av_get_packet(s->pb, pkt, size); } if (ret < 0) From patchwork Mon Feb 13 18:09:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 40386 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp3677298pzk; Mon, 13 Feb 2023 10:10:51 -0800 (PST) X-Google-Smtp-Source: AK7set/CM25Bkuu58/C8J7Vhy0rF+uRfzXFFpga/oDwQHpi/h2h6eQBd8rO9qB/fvDLO2mPsVp63 X-Received: by 2002:a17:906:2cd1:b0:888:6ae0:d12e with SMTP id r17-20020a1709062cd100b008886ae0d12emr27909808ejr.36.1676311851811; Mon, 13 Feb 2023 10:10:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676311851; cv=none; d=google.com; s=arc-20160816; b=vPq3byA1hqeiWSJpj/O13BcHCEA6Lf9JXQc0bGgM6cUIrbcgVOJYelBMGBolmEQ0Rv 8+lSvasmSOsCGyltbwxWPLx9dMb/OPQfiBI/wuH7Huje/8zKfkDV4c85aeeb+G7/d9K3 /b1i8vQjCcnpzdGUAVIy3tWymFEyh0meIjzRBlB2V63XylMTvCgImS72zOQbEEKehdPI fV1zIUCF4NeNuBV/11VECvwobdSrW7yHUnzESrT49McDWMPkSeWJltaG4w1fMPrsXRdd aHYR+VOTLYbbD+DmtWQ54ZOJAm/ii0yeJ2AKBiHr4yJzVQ1QJ6cY++yGkXf+XA03PLBd ITFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=FqzkcLAlhoa4aS6mdPrfX55ceiOOeRNT0GmADx4nQiI=; b=KNAyXJ1CKhviENk7ThVwuB9+VAXKn+xAEIq84KV5KoOdu0kREc1bRaMzJ4wPn0Dlto K3Y+XWA/KUurnWXVoGajsfRPBFNWZ+LnWEZhfbrssgj4nFbIZCxwhkT6qcVROrm60U5H 38HRoIs4uC761HzhcwWdJHpBLgo2t3vxRAlgISji1vfs5Oota9pOkJZufVzoezs5v5yl cOA7X8NvLTQYSh/9O+fZK12cm1Dv3MCs3HhNZ6nwz961Yy/Q74l2qscpslWnMFdt2c+u O/J5ZEKrEvQ07CmuiAS2YTL4K8HdXGNnHCHNhuvjMk1Vcx1EtLC1j/dxCI5k1TIDgqup 0Ziw== 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 vf2-20020a170907238200b0087cc469b195si13158080ejb.423.2023.02.13.10.10.51; Mon, 13 Feb 2023 10:10:51 -0800 (PST) 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 57C2968BE88; Mon, 13 Feb 2023 20:09:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3B1CC68BE7F for ; Mon, 13 Feb 2023 20:09:50 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 5441642D65; Mon, 13 Feb 2023 18:09:45 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Mon, 13 Feb 2023 19:09:36 +0100 Message-Id: <20230213180936.815-7-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230213180936.815-1-nicolas.gaullier@cji.paris> References: <20230213180936.815-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/6] avformat/wavdec: Test s337m 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ci1Xf8VIgE/x Test s337m probing in wav container. Test dolby_e demuxing for 20 bits with program config '5.1+2'. --- tests/Makefile | 1 + tests/fate/audio.mak | 3 +++ tests/ref/fate/s337m-wav | 10 ++++++++++ 3 files changed, 14 insertions(+) create mode 100644 tests/ref/fate/s337m-wav diff --git a/tests/Makefile b/tests/Makefile index 1d50e1d175..d78f78d1b8 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -99,6 +99,7 @@ REMUX = $(call ALLYES, $(firstword $(1))_MUXER $(lastword $(1))_DEMUXER \ $(2) FILE_PROTOCOL PIPE_PROTOCOL FRAMECRC_MUXER) DEMDEC = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER) $(3) FILE_PROTOCOL) +DEMDEMDEC = $(call ALLYES, $(1)_DEMUXER $(2)_DEMUXER $(3:%=%_DECODER)) ENCMUX = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER $(3)) FRAMEMD5 = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER) $(3) \ diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak index 65317c8d45..1d1c75b0b3 100644 --- a/tests/fate/audio.mak +++ b/tests/fate/audio.mak @@ -31,6 +31,9 @@ fate-dolby-e: CMD = pcm -i $(TARGET_SAMPLES)/dolby_e/16-11 fate-dolby-e: CMP = oneoff fate-dolby-e: REF = $(SAMPLES)/dolby_e/16-11.pcm +FATE_SAMPLES_AUDIO-$(call DEMDEMDEC, WAV, S337M, DOLBY_E) += fate-s337m-wav +fate-s337m-wav: CMD = framecrc -i $(TARGET_SAMPLES)/dolby_e/512.wav -vn -c:a copy + FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP) += fate-dss-lp fate-dss-sp fate-dss-lp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/lp.dss -frames 30 -af aresample fate-dss-sp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/sp.dss -frames 30 diff --git a/tests/ref/fate/s337m-wav b/tests/ref/fate/s337m-wav new file mode 100644 index 0000000000..768a6f0161 --- /dev/null +++ b/tests/ref/fate/s337m-wav @@ -0,0 +1,10 @@ +#tb 0: 1/48000 +#media_type 0: audio +#codec_id 0: dolby_e +#sample_rate 0: 44800 +#channel_layout_name 0: 7.1 +0, 0, 0, 1920, 11496, 0x05a9c147 +0, 1920, 1920, 1920, 11496, 0x1d44d2b4 +0, 3840, 3840, 1920, 11496, 0x4e078953 +0, 5760, 5760, 1920, 11496, 0x1c73b1a1 +0, 7680, 7680, 1920, 11262, 0xfa179fc8