From patchwork Mon Apr 19 14:09:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 27071 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:5014:0:0:0:0:0 with SMTP id e20csp568373iob; Mon, 19 Apr 2021 07:26:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynBjd+eDsOGwHchiqPLhqvu2rT3KnncTxykCRoPdi+2jS4FIerUWzR05ay7DVekDdx+6Sb X-Received: by 2002:a05:6402:1393:: with SMTP id b19mr25707745edv.333.1618842397741; Mon, 19 Apr 2021 07:26:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618842397; cv=none; d=google.com; s=arc-20160816; b=cNT6JVJWODVMIlgIEpALD/u5yZFDkeVcnqpfmEvHZOI5803tROnObjAYltDWCsrnti BdQmfSEIT6AdIMHi0ukp+Zrf+WjmBsNMBgpTMjYSXE7duLkJpk5o/WUYljyk1tr4f39M M4W/Cb+2B267Papf3BBrfQlfjfoHVgGaQynohSA4SSlVZoW4ak5Qrr+gcMe4D4NAoVgP Ld/iLPMx3pm4I+/aL2kC24jnEIhzg0hovn80TcUnvCuYsuA/m2NDZ21oCPF7+sMx1Uj9 4COUhD4xrBCSfLx3uLdKDE7WfmVJQZWB95OmXmzVlM0hfdd5LTh16ZC71ENOm+mkrCDM JBFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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:dkim-signature:delivered-to; bh=RvsWH3ZFnltENLvTBUDiSqbB3cKyk+sM6P+W1Ot1t9M=; b=B4Fxmq0CFEViDlWhz9t1EWSzsNT0Pt4ii9q+c5PFaMsii/jAf39xf0EcesDcoHO5cN XaWpg5K3k/sVh4Mm0FP6NhDXXJT2ZJh0XsJgKjyHhFxOE5doax8T8Af3D6AnDXA/Sm+1 lZXriI21RCWLjgs5cijh7pr/rF9yN3Q1PsQeFCudsbHaZ+MTFnLXlGd3rk/YcmMUoVdo AB1yFVIS8jnUS+Ylc8gD/O3B4iVn3wTxC86oJ3tEFR3p2NuJu0wlobP95URjq14g41Ib 2z4bmmzOtvbcyKQRWXCryBSvHYb0lcWnBSYrnTVLGSxt6XgA2GWIijaOF9K1RvpQdb/V m78A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=GA22oAoX; 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 y11si12351213edd.539.2021.04.19.07.26.37; Mon, 19 Apr 2021 07:26:37 -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=20161025 header.b=GA22oAoX; 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 417D968A148; Mon, 19 Apr 2021 17:17:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AFE3F68A12B for ; Mon, 19 Apr 2021 17:17:04 +0300 (EEST) Received: by mail-qt1-f180.google.com with SMTP id 18so12731666qtz.6 for ; Mon, 19 Apr 2021 07:17:04 -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:mime-version :content-transfer-encoding; bh=QlPqmVoo+gP5vxIbjosIUY8yTiO0ZnmWrBbDjsbOOV8=; b=GA22oAoXsBbgomsxNlnmfAAygrR+C9L4oWq2STb1ohAJq02mubgCccKiyAWn8WriqX nmwNfrqtMaaDI52l+5YqFK+QV+LFxf+Kw+tOAiW2T9Ren2/tQwvkFTB63bM235YuJXrv Mzqe5ul3ldyoKXUKM/nY3+Gq4ZWJqO2Q0EHh7TEqwXTxKQFx9jcQqyEOGQG2B0RjMe+h qy0BQhsHeXbLvc3MDUKyd39sFsyDmF25TrKQX2CKHxgyXdKw5M5Xfy94m5/rFn48OPgi YOPJWsJ3zKsPL/xzv4vQSTze1yWHA6eBjRO3cQi44Pbnveb7iKE+gGltQLV5elQ6CRPO xTzQ== 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:mime-version:content-transfer-encoding; bh=QlPqmVoo+gP5vxIbjosIUY8yTiO0ZnmWrBbDjsbOOV8=; b=bmIkLQFJbgsJfGv4qiXr0IhaqHDJJnJpOJoXIjvNLPShIK26Gm4/Bpk1uNzVTMk3on IHdWOOlF6nKr0qhBWGk4DlnIdepeCS8qaQ5hWmI3UYcjctfSNk9rwd2HRQcntAMy/GMH riPp9b/kdEMqIcdKdwVz21uvtbWK+WMwkA5RjHYwwv26Sb8s70fcU05SbQLTSOS+Fv+w 6aUD326AktM9a8rI3vSrbKoLttK621Cxwge3ckp5o1Jdl+CCmd/w0oy2LzDgNjShFx6I i6UPp9+d3HAJSy5SonxQRvjjnnq5kts5spHXJgz1N6KpVTN5KGxlPBB6bgEpo6yuXFjO 820Q== X-Gm-Message-State: AOAM5315+xz0luDZRozBATuR41t0m5/uKEpDA0W+tu5DN8AiycV9/7S8 4c+LBK9HtT/WmbnEzNhQSR4HMUVtkgg= X-Received: by 2002:a37:a98e:: with SMTP id s136mr3478209qke.16.1618841466461; Mon, 19 Apr 2021 07:11:06 -0700 (PDT) Received: from localhost.localdomain ([191.83.209.133]) by smtp.gmail.com with ESMTPSA id f7sm2049494qtv.53.2021.04.19.07.11.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Apr 2021 07:11:05 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Apr 2021 11:09:00 -0300 Message-Id: <20210419141024.8174-4-jamrial@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210419141024.8174-1-jamrial@gmail.com> References: <20210419141024.8174-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/87] avcodec, avformat: Remove old BSF API 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: yCE44GTcVd4L From: Andreas Rheinhardt Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 1 - libavcodec/avcodec.h | 52 ---------- libavcodec/bitstream_filter.c | 185 ---------------------------------- libavcodec/version.h | 3 - libavformat/avformat.h | 17 ---- libavformat/utils.c | 58 ----------- 6 files changed, 316 deletions(-) delete mode 100644 libavcodec/bitstream_filter.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 4a597f727a..5b41450b86 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -34,7 +34,6 @@ OBJS = ac3_parser.o \ avpacket.o \ avpicture.o \ bitstream.o \ - bitstream_filter.o \ bitstream_filters.o \ bsf.o \ codec_desc.o \ diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 483ab9a358..5e6967df0d 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3978,58 +3978,6 @@ int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); */ int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes); -#if FF_API_OLD_BSF -typedef struct AVBitStreamFilterContext { - void *priv_data; - const struct AVBitStreamFilter *filter; - AVCodecParserContext *parser; - struct AVBitStreamFilterContext *next; - /** - * Internal default arguments, used if NULL is passed to av_bitstream_filter_filter(). - * Not for access by library users. - */ - char *args; -} AVBitStreamFilterContext; - -/** - * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext) - * is deprecated. Use the new bitstream filtering API (using AVBSFContext). - */ -attribute_deprecated -void av_register_bitstream_filter(AVBitStreamFilter *bsf); -/** - * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext) - * is deprecated. Use av_bsf_get_by_name(), av_bsf_alloc(), and av_bsf_init() - * from the new bitstream filtering API (using AVBSFContext). - */ -attribute_deprecated -AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); -/** - * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext) - * is deprecated. Use av_bsf_send_packet() and av_bsf_receive_packet() from the - * new bitstream filtering API (using AVBSFContext). - */ -attribute_deprecated -int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); -/** - * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext) - * is deprecated. Use av_bsf_free() from the new bitstream filtering API (using - * AVBSFContext). - */ -attribute_deprecated -void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); -/** - * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext) - * is deprecated. Use av_bsf_iterate() from the new bitstream filtering API (using - * AVBSFContext). - */ -attribute_deprecated -const AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f); -#endif - /* memory */ /** diff --git a/libavcodec/bitstream_filter.c b/libavcodec/bitstream_filter.c deleted file mode 100644 index ca11ed371e..0000000000 --- a/libavcodec/bitstream_filter.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * 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 - */ - -#include - -#include "avcodec.h" -#include "libavutil/internal.h" -#include "libavutil/mem.h" -#include "libavutil/opt.h" - -#if FF_API_OLD_BSF -FF_DISABLE_DEPRECATION_WARNINGS - -const AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f) -{ - const AVBitStreamFilter *filter = NULL; - void *opaque = NULL; - - while (filter != f) - filter = av_bsf_iterate(&opaque); - - return av_bsf_iterate(&opaque); -} - -void av_register_bitstream_filter(AVBitStreamFilter *bsf) -{ -} - -typedef struct BSFCompatContext { - AVBSFContext *ctx; - int extradata_updated; -} BSFCompatContext; - -AVBitStreamFilterContext *av_bitstream_filter_init(const char *name) -{ - AVBitStreamFilterContext *ctx = NULL; - BSFCompatContext *priv = NULL; - const AVBitStreamFilter *bsf; - - bsf = av_bsf_get_by_name(name); - if (!bsf) - return NULL; - - ctx = av_mallocz(sizeof(*ctx)); - if (!ctx) - return NULL; - - priv = av_mallocz(sizeof(*priv)); - if (!priv) - goto fail; - - - ctx->filter = bsf; - ctx->priv_data = priv; - - return ctx; - -fail: - if (priv) - av_bsf_free(&priv->ctx); - av_freep(&priv); - av_freep(&ctx); - return NULL; -} - -void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc) -{ - BSFCompatContext *priv; - - if (!bsfc) - return; - - priv = bsfc->priv_data; - - av_bsf_free(&priv->ctx); - av_freep(&bsfc->priv_data); - av_free(bsfc); -} - -int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe) -{ - BSFCompatContext *priv = bsfc->priv_data; - AVPacket pkt = { 0 }; - int ret; - - if (!priv->ctx) { - ret = av_bsf_alloc(bsfc->filter, &priv->ctx); - if (ret < 0) - return ret; - - ret = avcodec_parameters_from_context(priv->ctx->par_in, avctx); - if (ret < 0) - return ret; - - priv->ctx->time_base_in = avctx->time_base; - - if (bsfc->args && bsfc->filter->priv_class) { - const AVOption *opt = av_opt_next(priv->ctx->priv_data, NULL); - const char * shorthand[2] = {NULL}; - - if (opt) - shorthand[0] = opt->name; - - ret = av_opt_set_from_string(priv->ctx->priv_data, bsfc->args, shorthand, "=", ":"); - if (ret < 0) - return ret; - } - - ret = av_bsf_init(priv->ctx); - if (ret < 0) - return ret; - } - - pkt.data = (uint8_t *)buf; - pkt.size = buf_size; - - ret = av_bsf_send_packet(priv->ctx, &pkt); - if (ret < 0) - return ret; - - *poutbuf = NULL; - *poutbuf_size = 0; - - ret = av_bsf_receive_packet(priv->ctx, &pkt); - if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) - return 0; - else if (ret < 0) - return ret; - - *poutbuf = av_malloc(pkt.size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!*poutbuf) { - av_packet_unref(&pkt); - return AVERROR(ENOMEM); - } - - *poutbuf_size = pkt.size; - memcpy(*poutbuf, pkt.data, pkt.size); - - av_packet_unref(&pkt); - - /* drain all the remaining packets we cannot return */ - while (ret >= 0) { - ret = av_bsf_receive_packet(priv->ctx, &pkt); - av_packet_unref(&pkt); - } - - if (!priv->extradata_updated) { - /* update extradata in avctx from the output codec parameters */ - if (priv->ctx->par_out->extradata_size && (!args || !strstr(args, "private_spspps_buf"))) { - av_freep(&avctx->extradata); - avctx->extradata_size = 0; - avctx->extradata = av_mallocz(priv->ctx->par_out->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!avctx->extradata) - return AVERROR(ENOMEM); - memcpy(avctx->extradata, priv->ctx->par_out->extradata, priv->ctx->par_out->extradata_size); - avctx->extradata_size = priv->ctx->par_out->extradata_size; - } - - priv->extradata_updated = 1; - } - - return 1; -} -FF_ENABLE_DEPRECATION_WARNINGS -#endif diff --git a/libavcodec/version.h b/libavcodec/version.h index 20641c2d2b..1068716eb9 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -87,9 +87,6 @@ #ifndef FF_API_ASS_TIMING #define FF_API_ASS_TIMING (LIBAVCODEC_VERSION_MAJOR < 59) #endif -#ifndef FF_API_OLD_BSF -#define FF_API_OLD_BSF (LIBAVCODEC_VERSION_MAJOR < 59) -#endif #ifndef FF_API_COPY_CONTEXT #define FF_API_COPY_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59) #endif diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 6c97aff423..17b54c0997 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -2953,23 +2953,6 @@ int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, int avformat_queue_attached_pictures(AVFormatContext *s); -#if FF_API_OLD_BSF -/** - * Apply a list of bitstream filters to a packet. - * - * @param codec AVCodecContext, usually from an AVStream - * @param pkt the packet to apply filters to. If, on success, the returned - * packet has size == 0 and side_data_elems == 0, it indicates that - * the packet should be dropped - * @param bsfc a NULL-terminated list of filters to apply - * @return >=0 on success; - * AVERROR code on failure - */ -attribute_deprecated -int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt, - AVBitStreamFilterContext *bsfc); -#endif - enum AVTimebaseSource { AVFMT_TBCF_AUTO = -1, AVFMT_TBCF_DECODER, diff --git a/libavformat/utils.c b/libavformat/utils.c index d4ec3d0190..02768aca1f 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -5669,64 +5669,6 @@ int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *a return 1; } -#if FF_API_OLD_BSF -FF_DISABLE_DEPRECATION_WARNINGS -int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt, - AVBitStreamFilterContext *bsfc) -{ - int ret = 0; - while (bsfc) { - AVPacket new_pkt = *pkt; - int a = av_bitstream_filter_filter(bsfc, codec, NULL, - &new_pkt.data, &new_pkt.size, - pkt->data, pkt->size, - pkt->flags & AV_PKT_FLAG_KEY); - if (a == 0 && new_pkt.size == 0 && new_pkt.side_data_elems == 0) { - av_packet_unref(pkt); - memset(pkt, 0, sizeof(*pkt)); - return 0; - } - if(a == 0 && new_pkt.data != pkt->data) { - uint8_t *t = av_malloc(new_pkt.size + AV_INPUT_BUFFER_PADDING_SIZE); //the new should be a subset of the old so cannot overflow - if (t) { - memcpy(t, new_pkt.data, new_pkt.size); - memset(t + new_pkt.size, 0, AV_INPUT_BUFFER_PADDING_SIZE); - new_pkt.data = t; - new_pkt.buf = NULL; - a = 1; - } else { - a = AVERROR(ENOMEM); - } - } - if (a > 0) { - new_pkt.buf = av_buffer_create(new_pkt.data, new_pkt.size, - av_buffer_default_free, NULL, 0); - if (new_pkt.buf) { - pkt->side_data = NULL; - pkt->side_data_elems = 0; - av_packet_unref(pkt); - } else { - av_freep(&new_pkt.data); - a = AVERROR(ENOMEM); - } - } - if (a < 0) { - av_log(codec, AV_LOG_ERROR, - "Failed to open bitstream filter %s for stream %d with codec %s", - bsfc->filter->name, pkt->stream_index, - codec->codec ? codec->codec->name : "copy"); - ret = a; - break; - } - *pkt = new_pkt; - - bsfc = bsfc->next; - } - return ret; -} -FF_ENABLE_DEPRECATION_WARNINGS -#endif - int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options) { if (!s->oformat)