From patchwork Sun Feb 18 01:35:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46325 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dda5:b0:19e:cdac:8cce with SMTP id kw37csp549347pzb; Sat, 17 Feb 2024 17:33:59 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUihuJJbGLQSo1Dcl0ODm0sYmJkQ6xvtljPpnc3BzbTmJ11g8qRGDKT6cKH6rxiP60tbevSlp1mHG455Uf9mbVab+OLRo5bw7vhvw== X-Google-Smtp-Source: AGHT+IGJ5W0R82fReR82IAH4PmZj75ceuDR5SrMa2I5lsSoSIJcb7mR9YSNm+GFuiflx3jbGSwZX X-Received: by 2002:a17:906:1249:b0:a3b:e8f3:25d with SMTP id u9-20020a170906124900b00a3be8f3025dmr5569070eja.75.1708220039125; Sat, 17 Feb 2024 17:33:59 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id sh42-20020a1709076eaa00b00a3e400be863si626911ejc.423.2024.02.17.17.33.58; Sat, 17 Feb 2024 17:33:59 -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; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=YNbtU+Qx; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 78CC368D302; Sun, 18 Feb 2024 03:33:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2057.outbound.protection.outlook.com [40.92.73.57]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3976868D2B0 for ; Sun, 18 Feb 2024 03:33:48 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rc8zur6VjkfgprFtAGputnHiDkN2dstjM9yc+Ud/GHpmdJtR/W5Kj2GGq8ZHGEwQTGPfJK57CzKwP/GBMLPgfqmtBsR+vivmAswDtHekFoNHtet67eDtJcCExMoDdlN3CRc6kLkpeXkT1LRYtSoWw9BhnWRoiDwvKhULpwGklp3yT+vMJVzfk6Uble0XGvaSV0xcoNlEg85Vc2cdGs1ZcFfrX48KY4SuAduIQLCprRNdmfHT+9C8cQWs36uBMFzCoYuqU+A5QACiInwj44ezonfHcWbRq3v4qPiGBNFYE4utUZ9LypKFwPPpuOBPFgKQroe9z51ncbJiUBQ7GItu0g== 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=Gpgw8BYa+6azL2Vu/PiO8rtlP9XKimVYCAwkJ7jqU+g=; b=fVvEUMqTJkgnr6g+4CWxjXTH/p13Yzb2OHGlhS5zpoVOAxoxfzfM8AfQNhaVui/Rvm59Ii/jCI29kxQD8wJncZhVcKO0gmHIJIZJ8lfhOfrwD6bSgcspxipap/QcW7e9HsHgD1nbyhiM6GgEXg8exqWSJIsBd/S/ad/9SAYTbnkbDcZHl85fmmJCE3VrKUhhTiHxL/gpkpGetFyddU9NYmoTuEMp76h3HoA74R4tRDLojiCFu1EpOM+ioCzdnl4q5XT7EjhsSsf3H0nqby1G7l/1RTTSMMTBuZp7XFQkNMYrLpXNOwPKF73jsb0rPBU5gAsAQ/P4k+/EMT3y/Fq9TQ== 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=Gpgw8BYa+6azL2Vu/PiO8rtlP9XKimVYCAwkJ7jqU+g=; b=YNbtU+QxyUpk0MBNXZ1Qapyv7SbYsGNdystYh3r01uFjj+ocm3g6vIGQ4pBLKnQ/yeWP37tE6Q/Vsm+NCLiTZjfYsfs+o10SvRoLEy4woRrds+Jtv5F7EXZB5h2Nzd3+HVSH71FMdNKGzeD+iLcx68gqn8DR5wdVNsPt0j1515UXy2xFSCp6eEXtbFUMdTH4G9ynN4ORq1hJ6k9mh4ITU4ZBB+2R820Jcw5ofz+HOo6XbrStFw39eSGlOlimUyuruzii9VdwFmZAcsintUnNnofQmeChqgo+jFWozF2aKVpn8VG/rUgoRsMixS7Jx1wJnnFh+glPtcUdquY9Hm1NLw== Received: from GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::7) by DU2P250MB0317.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.34; Sun, 18 Feb 2024 01:33:45 +0000 Received: from GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM ([fe80::ffe3:46c:6214:2504]) by GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM ([fe80::ffe3:46c:6214:2504%6]) with mapi id 15.20.7292.026; Sun, 18 Feb 2024 01:33:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 18 Feb 2024 02:35:35 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [9K+Tzmp8WkDOoZ2rmp1q0fdaDcm5sxFTpVxOxkrGmW8=] X-ClientProxiedBy: FR5P281CA0044.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f3::16) To GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::7) X-Microsoft-Original-Message-ID: <20240218013535.2819048-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1SPRMB0063:EE_|DU2P250MB0317:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b1f4f31-ec0b-4386-bb2c-08dc3021a584 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1RuremU2rEz2t6MWGHBiEhXI/hOsnW79+WgB57SlVsIRD3PZB9CAxzScwegoA2IKWpNit2qxiIHx3RzQygvRW1uaEtAYFvDyJuQWtJJyTY5Cotua4lkeK5oikOTK9CUiDN8FOnahCSM9NRtbIliYQtVNty4Smb4E8QA8hACv5Hrh5lzY0mcNCZXo3TsM0KgaoblPzD0f216YR2QNHDlhAy9OwbS02w9PwWfXWTAJ9y3beSeHuxiBltruzUAQnpvBrHPo5umGBgGmDUwIYeUf2CfSMhyHUmR0vUWRO5FZgjkJcpL1I2R9XZY217iY7HucllWgiBpD6n3vNDgKFjD4VlNf+C3bIOmsEPnpTeLb01VZTZb9aDa3l20EWKb17/rrPb9bjCpy8SsYCJi8d8y4NKgCQsK9pXABN/kKtW6Kuwy6Ut9M1mwUKdm2wNOdmfJmO8emE4rCPZfZMn615qiRg4a5xk4iCyXk5UwIuN0dTvwaTu6mXjBCKruIWXFrphJM60NiiboIAmKHox1OYa7Q2vUF7J9Od6M6wiwNmg2OnhpQK1sM2+QGH7Y60nv7Ji5AYrB/Eny6OEQ1B9uTmrNgQvtz8THiiPkAeSma9Gn1U9kf+N25HM4BjPNPRWA1ctB/ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: K7mVzfJWiNtVwacBGhHadz3S8z6qBFrCAaoBP5diQWjZsuIceTHujCpxkK7OkD13aavVByRfdAGzVqb//FwQnuKeMDKgKnSIKT1ZjFM4f8Im0B06LCJ0DLhnw9qmjaC0XylXc21kHxdOgeA/N7nwHSg5XxBn44dqah2H+SKgtE2fmH5gBA+9nbYh2a0VRbp5hWLPZgF83Z+j7NX866RtQX7+GXyl44+jPmiR0q2rocEAJ9C5iLUsd2+vc6zaL1snSxrdjTaZ41dg3BW/VhsporFhlMf6c7R1DcSMfIdDeGUyB7Ug90XKzbs3iBsd6XPG9fD+ZoUTTcpgfPoWag7ZRcwCAUgvtoilLaWAYKMI46NXzQlEXe0t7ACqSRkkFdfVerDAkyLMvVORbLugouyb/jjBMubfXJFmobrxw7pAea+eNdQDApQpe5ch05HQ78dM/GEVvnvMQeo7SitKgP9Md6nft6e5WDhgVB9azVen46N3xgtgqUazI7B/gqB0/2axbhHxnNcyqMjDk9aF55qBuvXwg918/UomzttNQLSSH01W/dwdYbPnvmLpWyB/Anik6pTVq5nqQ3PcO9TWZ7w8oP3gZGtw18JhJBWDaXbsP3cQ2PvzyMC3EHiEtcimAMdSCo/SCIadbv65MsrROSuw1PAh4Sz+2ta5sz02cdDZZJgV2/O5Sxpv42AQ5rrVxLcg1rTJclWS0pgjFPplTefpYt819idIvoj83usQrOGHq9JHENH8XDZ+/tG+xWO0uGhe/qfHdpNHFa+BZPuC7wqHaca6QJIt3o372VQ8PZBEDJ5IjT7EnTC2zKkwPLJhy9awzE0JZDwl4DTyP6jclTUPNsOYK0zk8zEjU1oz3CleiSKuUyRzRSIIltxVHWug0Fadxyq65dt8gezXlDlj0wXVb1gvfcCjQW/+Bac5jQjan0EdpmUrwGTrZu+LjOU4ifH78rXhGCf/SvWgUtVhxKbr6Qo+E+AwbcQNShYS8Kmyu5AFMao1Mo0ArCSajBqwcpXRCQFmb9erTQXWO8B9iV5qgYvxRaLH9reFKWmU3gWV0g8ebK7pn+1yZjAvxBlyyL3c38yt6pnThIAcnZizM4XyaaPMXPkHALYyUn8IOty9OdZc3+Gy8GlmJuPqSZFwHzrYGt5NzgUbxPso0+kSVqY2TgwTGBi7mgR9jxR6kd44P8LamYkyDe/c4cxMwVIapK6PNtGLDemsBQ57p/QN8TvMMxb0OaHKmLxgduenKXHJ9g7aUrP3O/TFpTUN6fqMSdpZFGNz+rNisK/3p6hxL7IHeA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b1f4f31-ec0b-4386-bb2c-08dc3021a584 X-MS-Exchange-CrossTenant-AuthSource: GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2024 01:33:45.0168 (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: DU2P250MB0317 Subject: [FFmpeg-devel] [PATCH] avcodec/avcodec: Deprecate AV_INPUT_BUFFER_MIN_SIZE 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: nUJVoueJ63QZ It used to be used with preallocated packet buffers with the old encode API, but said API is no more and therefore there is no reason for this to be public any more. So deprecate it and use an internal replacement for the encoders using it as an upper bound for the size of their headers. Signed-off-by: Andreas Rheinhardt --- doc/APIchanges | 3 +++ libavcodec/asvenc.c | 2 +- libavcodec/avcodec.h | 4 ++++ libavcodec/encode.h | 6 ++++++ libavcodec/ffv1enc.c | 4 ++-- libavcodec/flashsv2enc.c | 2 +- libavcodec/gif.c | 2 +- libavcodec/huffyuvenc.c | 2 +- libavcodec/j2kenc.c | 2 +- libavcodec/jpeglsenc.c | 2 +- libavcodec/libxvid.c | 2 +- libavcodec/ljpegenc.c | 2 +- libavcodec/msrleenc.c | 2 +- libavcodec/msvideo1enc.c | 2 +- libavcodec/pngenc.c | 6 +++--- libavcodec/proresenc_anatoliy.c | 4 ++-- libavcodec/proresenc_kostya.c | 2 +- libavcodec/snowenc.c | 2 +- libavcodec/svq1enc.c | 2 +- libavcodec/tiffenc.c | 2 +- libavcodec/version_major.h | 1 + 21 files changed, 35 insertions(+), 21 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 77b9740891..27030ee03e 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2023-02-09 API changes, most recent first: +2024-02-17 - xxxxxxxxxx - lavc 60.yy.100 - avcodec.h + Deprecate AV_INPUT_BUFFER_MIN_SIZE without replacement. + 2024-02-13 - xxxxxxxxxx - lavf 60.21.100 - avformat.h Add AVStreamGroup.disposition. diff --git a/libavcodec/asvenc.c b/libavcodec/asvenc.c index 50da46738c..6179b50583 100644 --- a/libavcodec/asvenc.c +++ b/libavcodec/asvenc.c @@ -272,7 +272,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } if ((ret = ff_alloc_packet(avctx, pkt, c->mb_height * c->mb_width * MAX_MB_SIZE + - AV_INPUT_BUFFER_MIN_SIZE)) < 0) + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; init_put_bits(&a->pb, pkt->data, pkt->size); diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 0018ccbb0c..43859251cc 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -187,12 +187,16 @@ struct AVCodecParameters; * @{ */ +#if FF_API_BUFFER_MIN_SIZE /** * @ingroup lavc_encoding * minimum encoding buffer size * Used to avoid some checks during header writing. + * @deprecated Unused: avcodec_receive_packet() does not work + * with preallocated packet buffers. */ #define AV_INPUT_BUFFER_MIN_SIZE 16384 +#endif /** * @ingroup lavc_encoding diff --git a/libavcodec/encode.h b/libavcodec/encode.h index e019cd7702..85331e04b7 100644 --- a/libavcodec/encode.h +++ b/libavcodec/encode.h @@ -26,6 +26,12 @@ #include "avcodec.h" #include "packet.h" +/** + * Used by some encoders as upper bound for the length of headers. + * TODO: Use proper codec-specific upper bounds. + */ +#define FF_INPUT_BUFFER_MIN_SIZE 16384 + /** * Called by encoders to get the next frame for encoding. * diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index 4f581fbf6b..e510abf6ff 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -1104,7 +1104,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, uint8_t keystate = 128; uint8_t *buf_p; int i, ret; - int64_t maxsize = AV_INPUT_BUFFER_MIN_SIZE + int64_t maxsize = FF_INPUT_BUFFER_MIN_SIZE + avctx->width*avctx->height*37LL*4; if(!pict) { @@ -1154,7 +1154,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } if (f->version > 3) - maxsize = AV_INPUT_BUFFER_MIN_SIZE + avctx->width*avctx->height*3LL*4; + maxsize = FF_INPUT_BUFFER_MIN_SIZE + avctx->width*avctx->height*3LL*4; if (maxsize > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE - 32) { av_log(avctx, AV_LOG_WARNING, "Cannot allocate worst case packet size, the encoding could fail\n"); diff --git a/libavcodec/flashsv2enc.c b/libavcodec/flashsv2enc.c index 75b48eb1fd..6dcb9102a8 100644 --- a/libavcodec/flashsv2enc.c +++ b/libavcodec/flashsv2enc.c @@ -857,7 +857,7 @@ static int flashsv2_encode_frame(AVCodecContext *avctx, AVPacket *pkt, int res; int keyframe = 0; - if ((res = ff_alloc_packet(avctx, pkt, s->frame_size + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((res = ff_alloc_packet(avctx, pkt, s->frame_size + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return res; /* First frame needs to be a keyframe */ diff --git a/libavcodec/gif.c b/libavcodec/gif.c index 7a32f8fc8b..49356236e7 100644 --- a/libavcodec/gif.c +++ b/libavcodec/gif.c @@ -477,7 +477,7 @@ static int gif_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const uint32_t *palette = NULL; int ret; - if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*7/5 + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*7/5 + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; outbuf_ptr = pkt->data; end = pkt->data + pkt->size; diff --git a/libavcodec/huffyuvenc.c b/libavcodec/huffyuvenc.c index d49566cb5b..494ca7e603 100644 --- a/libavcodec/huffyuvenc.c +++ b/libavcodec/huffyuvenc.c @@ -762,7 +762,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame * const p = pict; int i, j, size = 0, ret; - if ((ret = ff_alloc_packet(avctx, pkt, width * height * 3 * 4 + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, width * height * 3 * 4 + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; if (s->context) { diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index ebf21f6e7a..a80e74d4ec 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1534,7 +1534,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, uint8_t *chunkstart, *jp2cstart, *jp2hstart; const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); - if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*9 + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*9 + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; // init: diff --git a/libavcodec/jpeglsenc.c b/libavcodec/jpeglsenc.c index 4345ae44fa..3481c61ee3 100644 --- a/libavcodec/jpeglsenc.c +++ b/libavcodec/jpeglsenc.c @@ -432,7 +432,7 @@ static av_cold int encode_jpegls_init(AVCodecContext *avctx) ctx->comps = 1; else ctx->comps = 3; - size = AV_INPUT_BUFFER_MIN_SIZE; + size = FF_INPUT_BUFFER_MIN_SIZE; /* INT_MAX due to PutBit-API. */ if (avctx->width * (unsigned)avctx->height > (INT_MAX - size) / 4 / ctx->comps) return AVERROR(ERANGE); diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c index d5232d4ee6..b9ac39429d 100644 --- a/libavcodec/libxvid.c +++ b/libavcodec/libxvid.c @@ -739,7 +739,7 @@ static int xvid_encode_frame(AVCodecContext *avctx, AVPacket *pkt, xvid_enc_frame_t xvid_enc_frame = { 0 }; xvid_enc_stats_t xvid_enc_stats = { 0 }; - if ((ret = ff_alloc_packet(avctx, pkt, mb_width*(int64_t)mb_height*MAX_MB_BYTES + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, mb_width*(int64_t)mb_height*MAX_MB_BYTES + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; /* Start setting up the frame */ diff --git a/libavcodec/ljpegenc.c b/libavcodec/ljpegenc.c index 71457220dd..46546e2160 100644 --- a/libavcodec/ljpegenc.c +++ b/libavcodec/ljpegenc.c @@ -214,7 +214,7 @@ static int ljpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const int height = avctx->height; const int mb_width = (width + s->hsample[0] - 1) / s->hsample[0]; const int mb_height = (height + s->vsample[0] - 1) / s->vsample[0]; - size_t max_pkt_size = AV_INPUT_BUFFER_MIN_SIZE; + size_t max_pkt_size = FF_INPUT_BUFFER_MIN_SIZE; int ret, header_bits; if( avctx->pix_fmt == AV_PIX_FMT_BGR0 diff --git a/libavcodec/msrleenc.c b/libavcodec/msrleenc.c index 931e7af053..cc39aa308f 100644 --- a/libavcodec/msrleenc.c +++ b/libavcodec/msrleenc.c @@ -252,7 +252,7 @@ static int msrle_encode_frame(AVCodecContext *avctx, AVPacket *pkt, if ((ret = ff_alloc_packet(avctx, pkt, ( avctx->width*2 /* worst case = rle every pixel */ + 2 /*end of line */ - ) * avctx->height + 2 /* end of bitmap */ + AV_INPUT_BUFFER_MIN_SIZE))) + ) * avctx->height + 2 /* end of bitmap */ + FF_INPUT_BUFFER_MIN_SIZE))) return ret; if (pict->data[1]) { diff --git a/libavcodec/msvideo1enc.c b/libavcodec/msvideo1enc.c index 1fb8be8883..3bea3ed297 100644 --- a/libavcodec/msvideo1enc.c +++ b/libavcodec/msvideo1enc.c @@ -78,7 +78,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, int skips = 0; int quality = 24; - if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*9 + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*9 + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; dst= buf= pkt->data; diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index 7f7137b34d..28d645ea48 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -637,7 +637,7 @@ static int encode_png(AVCodecContext *avctx, AVPacket *pkt, enc_row_size = deflateBound(&s->zstream.zstream, (avctx->width * s->bits_per_pixel + 7) >> 3); max_packet_size = - AV_INPUT_BUFFER_MIN_SIZE + // headers + FF_INPUT_BUFFER_MIN_SIZE + // headers avctx->height * ( enc_row_size + 12 * (((int64_t)enc_row_size + IOBUF_SIZE - 1) / IOBUF_SIZE) // IDAT * ceil(enc_row_size / IOBUF_SIZE) @@ -968,7 +968,7 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt, enc_row_size = deflateBound(&s->zstream.zstream, (avctx->width * s->bits_per_pixel + 7) >> 3); max_packet_size = - AV_INPUT_BUFFER_MIN_SIZE + // headers + FF_INPUT_BUFFER_MIN_SIZE + // headers avctx->height * ( enc_row_size + (4 + 12) * (((int64_t)enc_row_size + IOBUF_SIZE - 1) / IOBUF_SIZE) // fdAT * ceil(enc_row_size / IOBUF_SIZE) @@ -982,7 +982,7 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt, if (!pict) return AVERROR(EINVAL); - s->bytestream = s->extra_data = av_malloc(AV_INPUT_BUFFER_MIN_SIZE); + s->bytestream = s->extra_data = av_malloc(FF_INPUT_BUFFER_MIN_SIZE); if (!s->extra_data) return AVERROR(ENOMEM); diff --git a/libavcodec/proresenc_anatoliy.c b/libavcodec/proresenc_anatoliy.c index 5c93ea6566..02ab07d28e 100644 --- a/libavcodec/proresenc_anatoliy.c +++ b/libavcodec/proresenc_anatoliy.c @@ -733,10 +733,10 @@ static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt, uint8_t *buf; int compress_frame_size, pic_size, ret, is_top_field_first = 0; uint8_t frame_flags; - int frame_size = FFALIGN(avctx->width, 16) * FFALIGN(avctx->height, 16)*16 + 500 + AV_INPUT_BUFFER_MIN_SIZE; //FIXME choose tighter limit + int frame_size = FFALIGN(avctx->width, 16) * FFALIGN(avctx->height, 16)*16 + 500 + FF_INPUT_BUFFER_MIN_SIZE; //FIXME choose tighter limit - if ((ret = ff_alloc_packet(avctx, pkt, frame_size + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, frame_size + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; buf = pkt->data; diff --git a/libavcodec/proresenc_kostya.c b/libavcodec/proresenc_kostya.c index 6720774e14..45385213ac 100644 --- a/libavcodec/proresenc_kostya.c +++ b/libavcodec/proresenc_kostya.c @@ -981,7 +981,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, ctx->pic = pic; pkt_size = ctx->frame_size_upper_bound; - if ((ret = ff_alloc_packet(avctx, pkt, pkt_size + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, pkt_size + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; orig_buf = pkt->data; diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index 6d79a90184..d81ff6f2aa 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -1761,7 +1761,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, uint8_t rc_header_bak[sizeof(s->header_state)]; uint8_t rc_block_bak[sizeof(s->block_state)]; - if ((ret = ff_alloc_packet(avctx, pkt, s->b_width*s->b_height*MB_SIZE*MB_SIZE*3 + AV_INPUT_BUFFER_MIN_SIZE)) < 0) + if ((ret = ff_alloc_packet(avctx, pkt, s->b_width*s->b_height*MB_SIZE*MB_SIZE*3 + FF_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; ff_init_range_encoder(c, pkt->data, pkt->size); diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index c4861010f1..5675ae5218 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -655,7 +655,7 @@ static int svq1_encode_frame(AVCodecContext *avctx, AVPacket *pkt, int i, ret; ret = ff_alloc_packet(avctx, pkt, s->y_block_width * s->y_block_height * - MAX_MB_BYTES * 3 + AV_INPUT_BUFFER_MIN_SIZE); + MAX_MB_BYTES * 3 + FF_INPUT_BUFFER_MIN_SIZE); if (ret < 0) return ret; diff --git a/libavcodec/tiffenc.c b/libavcodec/tiffenc.c index 61d7316c4b..dfe308ee17 100644 --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@ -334,7 +334,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, bytes_per_row = (((s->width - 1) / s->subsampling[0] + 1) * s->bpp * s->subsampling[0] * s->subsampling[1] + 7) >> 3; packet_size = avctx->height * bytes_per_row * 2 + - avctx->height * 4 + AV_INPUT_BUFFER_MIN_SIZE; + avctx->height * 4 + FF_INPUT_BUFFER_MIN_SIZE; if ((ret = ff_alloc_packet(avctx, pkt, packet_size)) < 0) return ret; diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h index 45209c0a4f..161442df95 100644 --- a/libavcodec/version_major.h +++ b/libavcodec/version_major.h @@ -53,6 +53,7 @@ #define FF_API_AVFFT (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_FF_PROFILE_LEVEL (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_AVCODEC_CLOSE (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_BUFFER_MIN_SIZE (LIBAVCODEC_VERSION_MAJOR < 62) // reminder to remove CrystalHD decoders on next major bump #define FF_CODEC_CRYSTAL_HD (LIBAVCODEC_VERSION_MAJOR < 61)