From patchwork Sun May 31 16:38:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20048 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 401D144A817 for ; Sun, 31 May 2020 19:39:42 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 24E7F689259; Sun, 31 May 2020 19:39:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 24EE6680D37 for ; Sun, 31 May 2020 19:39:35 +0300 (EEST) Received: by mail-qk1-f193.google.com with SMTP id 205so6962436qkg.3 for ; Sun, 31 May 2020 09:39:35 -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=5BZUfqWr5UzPi3XshEYLh0Jd4OovZTg1mAA9srrEq48=; b=WBcKXA2zugauUg5kPFmstWexdXaOJelfJRhcFtuyVGDfs6wpqBbGjWJBaQdvyhx9SX 1Gq3z1KVYkc85yTrOJDjMeZu+gi5ZTqKIHQZVM9fMdkODoBcbCcJXBH4BGaxQP6WHZgC r2EXY3lUqbDSv8itlAhXzzHlcVNAEoWR8M8jvRtb9GfO9esg6yhx04siW8tBu54UxR7F /XcCzZ0uXKDPkXSHU3Dsg3mlmpBTJN6fmRhhjuZ8Zndo/c0UOjT+kj+Ahe9y+W7+1IzW I2KHSjqpCMjAJg+klKmZoMFLWGzFmAeVwunwEKRiOgClv6hkQLCcMGr+kdi9YKkw2opX VgOQ== 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=5BZUfqWr5UzPi3XshEYLh0Jd4OovZTg1mAA9srrEq48=; b=G4x/pGA5R64kNZ/QxAot9Gu+lzbDGV9a0N4V3Xel+wLnkdyRHyg0HDEmumF8d8BHwP ByukszmWg7PSvu5gwJCCxgPRK2Qk7lYSm4hWSTxnK+AYQc407D/HvAu7fXXfEppPBgZz PZCuzhS7CkdQzs7haFA9n3m60T70lYXfAA5VVXr/4UcODw7GX+q2Gvn8asy4/dI7vCf0 x1f+IEwlwAUVwruhjbrS4gG4BH1Y6KqEFUbvRJ46TVSXZI9dTGmIyyiAGgwAIc89Vz35 weYqEG5VWYUmmmXQ5twjEzbrJ4vjmGUusQkfDEGkkqyBnA5EMfbbnnPlsvebfX2nORuZ WyBA== X-Gm-Message-State: AOAM533tevc/vznEj1ReRkgQeXcRV2xtVKRKYlr8GBfdTdjTCeVyptdB S4Hgc4F9BvIuB39x3N8QGRuNVuUQ X-Google-Smtp-Source: ABdhPJwoEpWWdGqmwn99ooLdUMW3kbFuxjqcG1cRFGzvnWzHFrk8zKjYvkI/cPFTG5Hv5DYlw1FBFA== X-Received: by 2002:a37:5d83:: with SMTP id r125mr16027436qkb.50.1590943173568; Sun, 31 May 2020 09:39:33 -0700 (PDT) Received: from localhost.localdomain ([181.23.72.208]) by smtp.gmail.com with ESMTPSA id a62sm12125344qkg.71.2020.05.31.09.39.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 May 2020 09:39:33 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 May 2020 13:38:39 -0300 Message-Id: <20200531163839.561-3-jamrial@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200531163839.561-1-jamrial@gmail.com> References: <20200531163839.561-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/packet: change public function and struct size parameter types to size_t 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- doc/APIchanges | 4 ++-- libavcodec/avpacket.c | 49 +++++++++++++++++++++++++++++++++++++++++++ libavcodec/packet.h | 45 +++++++++++++++++++++++++++++++++++++++ libavutil/frame.h | 4 ++++ 4 files changed, 100 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 8d353fdcef..7f15090031 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -16,8 +16,8 @@ libavutil: 2017-10-21 API changes, most recent first: 2020-06-xx - xxxxxxxxxx - Change AVBufferRef and relevant AVFrame function and struct size - parameter and fields type to size_t at next major bump. + Change AVBufferRef and relevant AVFrame and AVPacket function and + struct size parameter and fields type to size_t at next major bump. 2020-xx-xx - xxxxxxxxxx - lavc 58.88.100 - avcodec.h codec.h Move AVCodec-related public API to new header codec.h. diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 033f2d8f26..e43c584576 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -69,7 +69,11 @@ void av_packet_free(AVPacket **pkt) av_freep(pkt); } +#if FF_API_BUFFER_SIZE_T static int packet_alloc(AVBufferRef **buf, int size) +#else +static int packet_alloc(AVBufferRef **buf, size_t size) +#endif { int ret; if (size < 0 || size >= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) @@ -84,7 +88,11 @@ static int packet_alloc(AVBufferRef **buf, int size) return 0; } +#if FF_API_BUFFER_SIZE_T int av_new_packet(AVPacket *pkt, int size) +#else +int av_new_packet(AVPacket *pkt, size_t size) +#endif { AVBufferRef *buf = NULL; int ret = packet_alloc(&buf, size); @@ -99,7 +107,11 @@ int av_new_packet(AVPacket *pkt, int size) return 0; } +#if FF_API_BUFFER_SIZE_T void av_shrink_packet(AVPacket *pkt, int size) +#else +void av_shrink_packet(AVPacket *pkt, size_t size) +#endif { if (pkt->size <= size) return; @@ -107,12 +119,21 @@ void av_shrink_packet(AVPacket *pkt, int size) memset(pkt->data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE); } +#if FF_API_BUFFER_SIZE_T int av_grow_packet(AVPacket *pkt, int grow_by) { int new_size; av_assert0((unsigned)pkt->size <= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE); if ((unsigned)grow_by > INT_MAX - (pkt->size + AV_INPUT_BUFFER_PADDING_SIZE)) +#else +int av_grow_packet(AVPacket *pkt, size_t grow_by) +{ + size_t new_size; + av_assert0(pkt->size <= SIZE_MAX - AV_INPUT_BUFFER_PADDING_SIZE); + if (grow_by > + SIZE_MAX - (pkt->size + AV_INPUT_BUFFER_PADDING_SIZE)) +#endif return AVERROR(ENOMEM); new_size = pkt->size + grow_by + AV_INPUT_BUFFER_PADDING_SIZE; @@ -124,7 +145,11 @@ int av_grow_packet(AVPacket *pkt, int grow_by) pkt->data = pkt->buf->data; } else { data_offset = pkt->data - pkt->buf->data; +#if FF_API_BUFFER_SIZE_T if (data_offset > INT_MAX - new_size) +#else + if (data_offset > SIZE_MAX - new_size) +#endif return AVERROR(ENOMEM); } @@ -151,7 +176,11 @@ int av_grow_packet(AVPacket *pkt, int grow_by) return 0; } +#if FF_API_BUFFER_SIZE_T int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size) +#else +int av_packet_from_data(AVPacket *pkt, uint8_t *data, size_t size) +#endif { if (size >= INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) return AVERROR(EINVAL); @@ -329,7 +358,11 @@ int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, uint8_t *av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, +#if FF_API_BUFFER_SIZE_T int size) +#else + size_t size) +#endif { int ret; uint8_t *data; @@ -350,7 +383,11 @@ uint8_t *av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, } uint8_t *av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, +#if FF_API_BUFFER_SIZE_T int *size) +#else + size_t *size) +#endif { int i; @@ -490,7 +527,11 @@ int av_packet_split_side_data(AVPacket *pkt){ } #endif +#if FF_API_BUFFER_SIZE_T uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size) +#else +uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size) +#endif { AVDictionaryEntry *t = NULL; uint8_t *data = NULL; @@ -525,7 +566,11 @@ fail: return NULL; } +#if FF_API_BUFFER_SIZE_T int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict) +#else +int av_packet_unpack_dictionary(const uint8_t *data, size_t size, AVDictionary **dict) +#endif { const uint8_t *end; int ret; @@ -552,7 +597,11 @@ int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **di } int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, +#if FF_API_BUFFER_SIZE_T int size) +#else + size_t size) +#endif { int i; diff --git a/libavcodec/packet.h b/libavcodec/packet.h index 41485f4527..0fd7b3486a 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -297,7 +297,11 @@ enum AVPacketSideDataType { typedef struct AVPacketSideData { uint8_t *data; +#if FF_API_BUFFER_SIZE_T int size; +#else + size_t size; +#endif enum AVPacketSideDataType type; } AVPacketSideData; @@ -353,7 +357,11 @@ typedef struct AVPacket { */ int64_t dts; uint8_t *data; +#if FF_API_BUFFER_SIZE_T int size; +#else + size_t size; +#endif int stream_index; /** * A combination of AV_PKT_FLAG values @@ -465,7 +473,11 @@ void av_init_packet(AVPacket *pkt); * @param size wanted payload size * @return 0 if OK, AVERROR_xxx otherwise */ +#if FF_API_BUFFER_SIZE_T int av_new_packet(AVPacket *pkt, int size); +#else +int av_new_packet(AVPacket *pkt, size_t size); +#endif /** * Reduce packet size, correctly zeroing padding @@ -473,7 +485,11 @@ int av_new_packet(AVPacket *pkt, int size); * @param pkt packet * @param size new size */ +#if FF_API_BUFFER_SIZE_T void av_shrink_packet(AVPacket *pkt, int size); +#else +void av_shrink_packet(AVPacket *pkt, size_t size); +#endif /** * Increase packet size, correctly zeroing padding @@ -481,7 +497,11 @@ void av_shrink_packet(AVPacket *pkt, int size); * @param pkt packet * @param grow_by number of bytes by which to increase the size of the packet */ +#if FF_API_BUFFER_SIZE_T int av_grow_packet(AVPacket *pkt, int grow_by); +#else +int av_grow_packet(AVPacket *pkt, size_t grow_by); +#endif /** * Initialize a reference-counted packet from av_malloc()ed data. @@ -496,7 +516,11 @@ int av_grow_packet(AVPacket *pkt, int grow_by); * * @return 0 on success, a negative AVERROR on error */ +#if FF_API_BUFFER_SIZE_T int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size); +#else +int av_packet_from_data(AVPacket *pkt, uint8_t *data, size_t size); +#endif #if FF_API_AVPACKET_OLD_API /** @@ -546,7 +570,11 @@ void av_free_packet(AVPacket *pkt); * @return pointer to fresh allocated data or NULL otherwise */ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, +#if FF_API_BUFFER_SIZE_T int size); +#else + size_t size); +#endif /** * Wrap an existing array as a packet side data. @@ -573,7 +601,11 @@ int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, * @return 0 on success, < 0 on failure */ int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, +#if FF_API_BUFFER_SIZE_T int size); +#else + size_t size); +#endif /** * Get side information from packet. @@ -584,7 +616,11 @@ int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, * @return pointer to data if present or NULL otherwise */ uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, +#if FF_API_BUFFER_SIZE_T int *size); +#else + size_t *size); +#endif #if FF_API_MERGE_SD_API attribute_deprecated @@ -603,7 +639,12 @@ const char *av_packet_side_data_name(enum AVPacketSideDataType type); * @param size pointer to store the size of the returned data * @return pointer to data if successful, NULL otherwise */ +#if FF_API_BUFFER_SIZE_T uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size); +#else +uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size); +#endif + /** * Unpack a dictionary from side_data. * @@ -612,7 +653,11 @@ uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size); * @param dict the metadata storage dictionary * @return 0 on success, < 0 on failure */ +#if FF_API_BUFFER_SIZE_T int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict); +#else +int av_packet_unpack_dictionary(const uint8_t *data, size_t size, AVDictionary **dict); +#endif /** diff --git a/libavutil/frame.h b/libavutil/frame.h index fa4931edb8..20b093ec9d 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -616,7 +616,11 @@ typedef struct AVFrame { * - encoding: unused * - decoding: set by libavcodec, read by user. */ +#if FF_API_BUFFER_SIZE_T int pkt_size; +#else + size_t pkt_size; +#endif #if FF_API_FRAME_QP /**