From patchwork Thu May 25 16:31:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 3739 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.10.2 with SMTP id 2csp877440vsk; Thu, 25 May 2017 09:32:04 -0700 (PDT) X-Received: by 10.223.161.70 with SMTP id r6mr23412799wrr.65.1495729924670; Thu, 25 May 2017 09:32:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1495729924; cv=none; d=google.com; s=arc-20160816; b=A2LXkvWFZiymcX1n0tp0jWIhyD+BIsROlpeUuF4ExPofkHLOlaHszcmLY7N7T/yfE5 DmC7Zk98DDWY3naM/l/dkha15YwM2VPMdOysAU5U7BHoF1UQ8Q08zjoiop5IJhiskpq0 enR1I44UUQazLzIIjEFffO7txok2AdzUOV4k+5e03TdyCYSVm0T3P/TpuSwqNKWuNwAh aUthS1jfueKuVhlHXfXRSxIidFfXNQq4XN1ZYpSFxUmtjjjcAXBzko68qhFkb28DbDcj WXO1Twd/MjZCwQoPaoRck0cMT4IPftqEPhnyUr2zpRJG0rAdSHCsYX5TprIOL3ayjlOE ptxw== 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:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=rN3HFOub3I+qlhqhjM27PrR6dO768Mtqfnq5YlUCrn8=; b=olQHsbuG4SHGtN3qo45MBseCLk4QaYy11xtq3jMrcgvtCyaqEUy0szufq74yFwDIsk lSL/ox5Gak317KmSFp8C0UoWsirdyKjz2U0Oe71lCxzATJtdC76wgDKkxrBp3f83x2xe U+tEBQ8x5r9Bq3Im2E0g/P9CC390tnWeA77DiJHeeIOj/4Gr4DuudbqKOCgq7cnbf7dN Y+wKC1dPR5m48WD9ZS3URrEd8H/rHRP5cNL7oIkNLwHL9QfLR01+n7ikc4bV9AH1JDrM o9t6TU1qrHmA9UvegWJoGktL2+CVrNl7iDUVuK9E2kfWAl6a14OXN42FzX0AGx/iRqN+ QDsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.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; dmarc=fail (p=NONE sp=NONE 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 t4si9155491wma.26.2017.05.25.09.32.04; Thu, 25 May 2017 09:32:04 -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; 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=NONE 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 DF39E689C34; Thu, 25 May 2017 19:31:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7196689BF3 for ; Thu, 25 May 2017 19:31:52 +0300 (EEST) Received: by mail-qk0-f196.google.com with SMTP id y128so30774914qka.3 for ; Thu, 25 May 2017 09:31:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=bN8O+ENLEZcdXRzlhOPvvx/x55K1F9YGw0Bw9h2QhLs=; b=ByYCMOPBetv0oOtj9EumU7A2mp/LpYAkSyTy+fLtrFndCgVI+IuN2mUnPI8I7wE1FZ 65xJuCIm0cpw6lIKy44eaZ4uzLDerRDsTBZpdJAfQZ7ih+vJaenezbG3VCdeKkqkihOZ EK3jpIveI7EBzR3pbLn9GvI0HrcrrfJBE/YLB5a/EirsQLrab3CYZ5S/ZIEZDJ/jUijJ ajHIX+SgJcy9mfFK5asyVxF7v6FRBSQugoSqAd9QfwLdMgl6+UfLq+yXyh6Kd54rgYeF EcZnltbIOPv5KzlBLrIPjNN8oussh48JJcbjiKp29C/1oNT2d2rvmZnaNUq4VGQ4JspN V3/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=bN8O+ENLEZcdXRzlhOPvvx/x55K1F9YGw0Bw9h2QhLs=; b=n3mc28JCjrThc5WkUUNQrATIClE/u8RYmgf83f3ka+iY+by3115xEnd07WF5xALTFf aNFV/KJbxIqjAsHyy1O0lVK5OyY0sV/F2Odv8U/X4jmrFFGwekHjpYfDUtJeQVG8pgeE vvy8k1S6k28aZgt+5kAm1BP+i2bc0y2//4F0L9u5aqpQuKeK7EmCYZvz5WbvdZzoc7rr eHdYmVL3WvEdslDUCuhEPlUh3VPrH6RAnY9wUxE35w4BdpqCxG8mNCadRUFkc8qLnp/a ZBqTe4NLrEoSufrWCCq7WttjkikpG0flNzJSN764OdYEoJgsyBu1/d/cVTYzvdqaW1lP NfNg== X-Gm-Message-State: AODbwcAFe/bclt9hBDmGMd1JiRL2i5e3CUI3m9fds1l27ZLbcl4sdFr1 gQbqu6NDxQr3a3bK X-Received: by 10.55.23.84 with SMTP id i81mr37947432qkh.153.1495729914207; Thu, 25 May 2017 09:31:54 -0700 (PDT) Received: from localhost.localdomain ([181.231.116.134]) by smtp.gmail.com with ESMTPSA id a126sm5175397qkc.15.2017.05.25.09.31.53 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 25 May 2017 09:31:53 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 25 May 2017 13:31:05 -0300 Message-Id: <20170525163105.6628-1-jamrial@gmail.com> X-Mailer: git-send-email 2.12.1 In-Reply-To: <20170525141248.2204-1-jamrial@gmail.com> References: <20170525141248.2204-1-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/audiotoolboxdec: switch to the new generic filtering mechanism 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- Again, untested. libavcodec/audiotoolboxdec.c | 73 ++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 53 deletions(-) diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c index c30817778f..97514368bf 100644 --- a/libavcodec/audiotoolboxdec.c +++ b/libavcodec/audiotoolboxdec.c @@ -43,7 +43,6 @@ typedef struct ATDecodeContext { AudioStreamPacketDescription pkt_desc; AVPacket in_pkt; AVPacket new_in_pkt; - AVBSFContext *bsf; char *decoded_data; int channel_map[64]; @@ -478,42 +477,15 @@ static int ffat_decode(AVCodecContext *avctx, void *data, ATDecodeContext *at = avctx->priv_data; AVFrame *frame = data; int pkt_size = avpkt->size; - AVPacket filtered_packet = {0}; OSStatus ret; AudioBufferList out_buffers; - if (avctx->codec_id == AV_CODEC_ID_AAC && avpkt->size > 2 && - (AV_RB16(avpkt->data) & 0xfff0) == 0xfff0) { - AVPacket filter_pkt = {0}; - if (!at->bsf) { - const AVBitStreamFilter *bsf = av_bsf_get_by_name("aac_adtstoasc"); - if(!bsf) - return AVERROR_BSF_NOT_FOUND; - if ((ret = av_bsf_alloc(bsf, &at->bsf))) - return ret; - if (((ret = avcodec_parameters_from_context(at->bsf->par_in, avctx)) < 0) || - ((ret = av_bsf_init(at->bsf)) < 0)) { - av_bsf_free(&at->bsf); - return ret; - } - } - - if ((ret = av_packet_ref(&filter_pkt, avpkt)) < 0) - return ret; - - if ((ret = av_bsf_send_packet(at->bsf, &filter_pkt)) < 0) { - av_packet_unref(&filter_pkt); - return ret; - } - - if ((ret = av_bsf_receive_packet(at->bsf, &filtered_packet)) < 0) - return ret; - + if (avctx->codec_id == AV_CODEC_ID_AAC) { if (!at->extradata_size) { uint8_t *side_data; int side_data_size = 0; - side_data = av_packet_get_side_data(&filtered_packet, AV_PKT_DATA_NEW_EXTRADATA, + side_data = av_packet_get_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA, &side_data_size); if (side_data_size) { at->extradata = av_mallocz(side_data_size + AV_INPUT_BUFFER_PADDING_SIZE); @@ -523,13 +495,10 @@ static int ffat_decode(AVCodecContext *avctx, void *data, memcpy(at->extradata, side_data, side_data_size); } } - - avpkt = &filtered_packet; } if (!at->converter) { if ((ret = ffat_create_decoder(avctx, avpkt)) < 0) { - av_packet_unref(&filtered_packet); return ret; } } @@ -548,9 +517,7 @@ static int ffat_decode(AVCodecContext *avctx, void *data, av_packet_unref(&at->new_in_pkt); if (avpkt->size) { - if (filtered_packet.data) { - at->new_in_pkt = filtered_packet; - } else if ((ret = av_packet_ref(&at->new_in_pkt, avpkt)) < 0) { + if ((ret = av_packet_ref(&at->new_in_pkt, avpkt)) < 0) { return ret; } } else { @@ -601,7 +568,6 @@ static av_cold int ffat_close_decoder(AVCodecContext *avctx) ATDecodeContext *at = avctx->priv_data; if (at->converter) AudioConverterDispose(at->converter); - av_bsf_free(&at->bsf); av_packet_unref(&at->new_in_pkt); av_packet_unref(&at->in_pkt); av_free(at->decoded_data); @@ -615,7 +581,7 @@ static av_cold int ffat_close_decoder(AVCodecContext *avctx) .version = LIBAVUTIL_VERSION_INT, \ }; -#define FFAT_DEC(NAME, ID) \ +#define FFAT_DEC(NAME, ID, bsf_name) \ FFAT_DEC_CLASS(NAME) \ AVCodec ff_##NAME##_at_decoder = { \ .name = #NAME "_at", \ @@ -628,22 +594,23 @@ static av_cold int ffat_close_decoder(AVCodecContext *avctx) .decode = ffat_decode, \ .flush = ffat_decode_flush, \ .priv_class = &ffat_##NAME##_dec_class, \ + .bsfs = bsf_name, \ .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, \ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, \ }; -FFAT_DEC(aac, AV_CODEC_ID_AAC) -FFAT_DEC(ac3, AV_CODEC_ID_AC3) -FFAT_DEC(adpcm_ima_qt, AV_CODEC_ID_ADPCM_IMA_QT) -FFAT_DEC(alac, AV_CODEC_ID_ALAC) -FFAT_DEC(amr_nb, AV_CODEC_ID_AMR_NB) -FFAT_DEC(eac3, AV_CODEC_ID_EAC3) -FFAT_DEC(gsm_ms, AV_CODEC_ID_GSM_MS) -FFAT_DEC(ilbc, AV_CODEC_ID_ILBC) -FFAT_DEC(mp1, AV_CODEC_ID_MP1) -FFAT_DEC(mp2, AV_CODEC_ID_MP2) -FFAT_DEC(mp3, AV_CODEC_ID_MP3) -FFAT_DEC(pcm_alaw, AV_CODEC_ID_PCM_ALAW) -FFAT_DEC(pcm_mulaw, AV_CODEC_ID_PCM_MULAW) -FFAT_DEC(qdmc, AV_CODEC_ID_QDMC) -FFAT_DEC(qdm2, AV_CODEC_ID_QDM2) +FFAT_DEC(aac, AV_CODEC_ID_AAC, "aac_adtstoasc") +FFAT_DEC(ac3, AV_CODEC_ID_AC3, NULL) +FFAT_DEC(adpcm_ima_qt, AV_CODEC_ID_ADPCM_IMA_QT, NULL) +FFAT_DEC(alac, AV_CODEC_ID_ALAC, NULL) +FFAT_DEC(amr_nb, AV_CODEC_ID_AMR_NB, NULL) +FFAT_DEC(eac3, AV_CODEC_ID_EAC3, NULL) +FFAT_DEC(gsm_ms, AV_CODEC_ID_GSM_MS, NULL) +FFAT_DEC(ilbc, AV_CODEC_ID_ILBC, NULL) +FFAT_DEC(mp1, AV_CODEC_ID_MP1, NULL) +FFAT_DEC(mp2, AV_CODEC_ID_MP2, NULL) +FFAT_DEC(mp3, AV_CODEC_ID_MP3, NULL) +FFAT_DEC(pcm_alaw, AV_CODEC_ID_PCM_ALAW, NULL) +FFAT_DEC(pcm_mulaw, AV_CODEC_ID_PCM_MULAW, NULL) +FFAT_DEC(qdmc, AV_CODEC_ID_QDMC, NULL) +FFAT_DEC(qdm2, AV_CODEC_ID_QDM2, NULL)