From patchwork Sun May 31 16:38:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20046 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 4BB4544A817 for ; Sun, 31 May 2020 19:39:39 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1FC5C6880D6; Sun, 31 May 2020 19:39:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8537A680901 for ; Sun, 31 May 2020 19:39:32 +0300 (EEST) Received: by mail-qk1-f196.google.com with SMTP id v79so6914217qkb.10 for ; Sun, 31 May 2020 09:39:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=+g3CTjRp0HneOh81GUXNuKHzzYVW+7xzOHg1nTpEqd4=; b=VQOTLCL+Q1atozUjNMTa9hNc0zqOcOQ/Mu/WblWa8IIXZbMTtpQTUs3f47Lfl6IXxd bOGpF/lYkmzzYvGTy2sJNNe47g7LU2nCPI441LYx+Nd4KmDN/g8f9qGbfDME6vnRd0jo raJ+OlRtcuLdjETnLnM5SVK5hSbUdG7ZbM1gIYxelusPVRuNGhkH/LKydseEsBNefw02 JixGU+oZdtu7xxp1x71UCuw+QT0iP3QDN0gyGUeJiyQPWyjEiYz9kCW66azetE2qbEjs zwoQ582L/5BByxbyZmDv9y85HdDzxDYws8/fypAtuBSla9liqe3QdJxSb/5SAWEtEpf8 DHCA== 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:mime-version :content-transfer-encoding; bh=+g3CTjRp0HneOh81GUXNuKHzzYVW+7xzOHg1nTpEqd4=; b=qGiOj+l6TrKGk0h0s2tlvWDifT7z2RiVh8PAoR4cLvG8XNClimuW85pDuTvFWovlX7 zWgGv6E2DG6zb0H2ctjUWrDbeElEoWroiX5uLorLm0PQ5a+0/fmi6A/c1vD755wHeSJG hBydSQ/nSJkPbkgnOl95Xx3CK3GB9Ltep6NSjdS5gLe/eQv036GbFtTis9OccGAlcnjJ OnNIcrRFg6nDrtIOOt3vFThJuz8TXN7zDofNJApY57JjyzKUurzvPEEj5oi4E+cWjoiA 0uF6Qb3ojyThGPub+o2qGPjFC0gL50Td14F+P/doV05dEIZSdgb9JntjpaaqZggWDpwX yFsA== X-Gm-Message-State: AOAM531mpPPsv26oeMq+WiXd8eRWADZttDK30fNC8PHrEmgtnCk5G0qD vqhmmIo+3QGmsz3j4NAmQwEawXBr X-Google-Smtp-Source: ABdhPJxNlxOtkRywwdellDMtWdRl7cAr4idFVqV56y5gFE0jWxo6cfPIDs9CPiHtk2yzlerzua1MPg== X-Received: by 2002:a37:a18d:: with SMTP id k135mr16181982qke.155.1590943170558; Sun, 31 May 2020 09:39:30 -0700 (PDT) Received: from localhost.localdomain ([181.23.72.208]) by smtp.gmail.com with ESMTPSA id a62sm12125344qkg.71.2020.05.31.09.39.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 May 2020 09:39:29 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 May 2020 13:38:37 -0300 Message-Id: <20200531163839.561-1-jamrial@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avutil/buffer: 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 --- Aside from being more correct, it's also needed now that the video_enc_params API, which may allocate arrays > INT_MAX, is used as frame side data. doc/APIchanges | 4 ++++ libavutil/buffer.c | 25 +++++++++++++++++++++++++ libavutil/buffer.h | 31 +++++++++++++++++++++++++++++++ libavutil/buffer_internal.h | 13 +++++++++++++ libavutil/version.h | 3 +++ 5 files changed, 76 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index fb5534b5f5..9de23744c0 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,10 @@ libavutil: 2017-10-21 API changes, most recent first: +2020-06-xx - xxxxxxxxxx + Change AVBufferRef related 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/libavutil/buffer.c b/libavutil/buffer.c index 6d9cb7428e..0a29430381 100644 --- a/libavutil/buffer.c +++ b/libavutil/buffer.c @@ -26,7 +26,11 @@ #include "mem.h" #include "thread.h" +#if FF_API_BUFFER_SIZE_T AVBufferRef *av_buffer_create(uint8_t *data, int size, +#else +AVBufferRef *av_buffer_create(uint8_t *data, size_t size, +#endif void (*free)(void *opaque, uint8_t *data), void *opaque, int flags) { @@ -65,7 +69,11 @@ void av_buffer_default_free(void *opaque, uint8_t *data) av_free(data); } +#if FF_API_BUFFER_SIZE_T AVBufferRef *av_buffer_alloc(int size) +#else +AVBufferRef *av_buffer_alloc(size_t size) +#endif { AVBufferRef *ret = NULL; uint8_t *data = NULL; @@ -81,7 +89,11 @@ AVBufferRef *av_buffer_alloc(int size) return ret; } +#if FF_API_BUFFER_SIZE_T AVBufferRef *av_buffer_allocz(int size) +#else +AVBufferRef *av_buffer_allocz(size_t size) +#endif { AVBufferRef *ret = av_buffer_alloc(size); if (!ret) @@ -167,7 +179,11 @@ int av_buffer_make_writable(AVBufferRef **pbuf) return 0; } +#if FF_API_BUFFER_SIZE_T int av_buffer_realloc(AVBufferRef **pbuf, int size) +#else +int av_buffer_realloc(AVBufferRef **pbuf, size_t size) +#endif { AVBufferRef *buf = *pbuf; uint8_t *tmp; @@ -216,8 +232,13 @@ int av_buffer_realloc(AVBufferRef **pbuf, int size) return 0; } +#if FF_API_BUFFER_SIZE_T AVBufferPool *av_buffer_pool_init2(int size, void *opaque, AVBufferRef* (*alloc)(void *opaque, int size), +#else +AVBufferPool *av_buffer_pool_init2(size_t size, void *opaque, + AVBufferRef* (*alloc)(void *opaque, size_t size), +#endif void (*pool_free)(void *opaque)) { AVBufferPool *pool = av_mallocz(sizeof(*pool)); @@ -236,7 +257,11 @@ AVBufferPool *av_buffer_pool_init2(int size, void *opaque, return pool; } +#if FF_API_BUFFER_SIZE_T AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size)) +#else +AVBufferPool *av_buffer_pool_init(size_t size, AVBufferRef* (*alloc)(size_t size)) +#endif { AVBufferPool *pool = av_mallocz(sizeof(*pool)); if (!pool) diff --git a/libavutil/buffer.h b/libavutil/buffer.h index e0f94314f4..547c376439 100644 --- a/libavutil/buffer.h +++ b/libavutil/buffer.h @@ -27,6 +27,8 @@ #include +#include "version.h" + /** * @defgroup lavu_buffer AVBuffer * @ingroup lavu_data @@ -90,7 +92,11 @@ typedef struct AVBufferRef { /** * Size of data in bytes. */ +#if FF_API_BUFFER_SIZE_T int size; +#else + size_t size; +#endif } AVBufferRef; /** @@ -98,13 +104,21 @@ typedef struct AVBufferRef { * * @return an AVBufferRef of given size or NULL when out of memory */ +#if FF_API_BUFFER_SIZE_T AVBufferRef *av_buffer_alloc(int size); +#else +AVBufferRef *av_buffer_alloc(size_t size); +#endif /** * Same as av_buffer_alloc(), except the returned buffer will be initialized * to zero. */ +#if FF_API_BUFFER_SIZE_T AVBufferRef *av_buffer_allocz(int size); +#else +AVBufferRef *av_buffer_alloc(size_t size); +#endif /** * Always treat the buffer as read-only, even when it has only one @@ -127,7 +141,11 @@ AVBufferRef *av_buffer_allocz(int size); * * @return an AVBufferRef referring to data on success, NULL on failure. */ +#if FF_API_BUFFER_SIZE_T AVBufferRef *av_buffer_create(uint8_t *data, int size, +#else +AVBufferRef *av_buffer_create(uint8_t *data, size_t size, +#endif void (*free)(void *opaque, uint8_t *data), void *opaque, int flags); @@ -195,7 +213,11 @@ int av_buffer_make_writable(AVBufferRef **buf); * reference to it (i.e. the one passed to this function). In all other cases * a new buffer is allocated and the data is copied. */ +#if FF_API_BUFFER_SIZE_T int av_buffer_realloc(AVBufferRef **buf, int size); +#else +int av_buffer_realloc(AVBufferRef **buf, size_t size); +#endif /** * @} @@ -246,7 +268,11 @@ typedef struct AVBufferPool AVBufferPool; * (av_buffer_alloc()). * @return newly created buffer pool on success, NULL on error. */ +#if FF_API_BUFFER_SIZE_T AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size)); +#else +AVBufferPool *av_buffer_pool_init(size_t size, AVBufferRef* (*alloc)(size_t size)); +#endif /** * Allocate and initialize a buffer pool with a more complex allocator. @@ -262,8 +288,13 @@ AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size)); * data. * @return newly created buffer pool on success, NULL on error. */ +#if FF_API_BUFFER_SIZE_T AVBufferPool *av_buffer_pool_init2(int size, void *opaque, AVBufferRef* (*alloc)(void *opaque, int size), +#else +AVBufferPool *av_buffer_pool_init2(size_t size, void *opaque, + AVBufferRef* (*alloc)(void *opaque, size_t size), +#endif void (*pool_free)(void *opaque)); /** diff --git a/libavutil/buffer_internal.h b/libavutil/buffer_internal.h index 54b67047e5..c2f9342422 100644 --- a/libavutil/buffer_internal.h +++ b/libavutil/buffer_internal.h @@ -36,7 +36,11 @@ struct AVBuffer { uint8_t *data; /**< data described by this buffer */ +#if FF_API_BUFFER_SIZE_T int size; /**< size of data in bytes */ +#else + size_t size; /**< size of data in bytes */ +#endif /** * number of existing AVBufferRef instances referring to this buffer @@ -88,10 +92,19 @@ struct AVBufferPool { */ atomic_uint refcount; +#if FF_API_BUFFER_SIZE_T int size; +#else + size_t size; +#endif void *opaque; +#if FF_API_BUFFER_SIZE_T AVBufferRef* (*alloc)(int size); AVBufferRef* (*alloc2)(void *opaque, int size); +#else + AVBufferRef* (*alloc)(size_t size); + AVBufferRef* (*alloc2)(void *opaque, size_t size); +#endif void (*pool_free)(void *opaque); }; diff --git a/libavutil/version.h b/libavutil/version.h index 7acecf5a97..431eb1d571 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -129,6 +129,9 @@ #ifndef FF_API_PSEUDOPAL #define FF_API_PSEUDOPAL (LIBAVUTIL_VERSION_MAJOR < 57) #endif +#ifndef FF_API_BUFFER_SIZE_T +#define FF_API_BUFFER_SIZE_T (LIBAVUTIL_VERSION_MAJOR < 57) +#endif /** From patchwork Sun May 31 16:38:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 20047 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 41E7644A817 for ; Sun, 31 May 2020 19:39:41 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 26AA968826C; Sun, 31 May 2020 19:39:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A4E59687F88 for ; Sun, 31 May 2020 19:39:33 +0300 (EEST) Received: by mail-qk1-f171.google.com with SMTP id 205so6962380qkg.3 for ; Sun, 31 May 2020 09:39:33 -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=8egIDKvV/1+rc5wAxGYmV3Tadtt1dRNaHphXfbT7TBw=; b=DNmUtbZknHp4bMcaUX3B72BAyfTWfQR02JIdxmx91Z2w56K6YLK9VPx8X2JXr0BzH7 HW/5GViI4Qro/zgOjFcaRBKhFsE/m5uLnRZ7QEIhuDUPdop4unRtVRCEyS9gRB5auMIl 07dsAXxOJDjGn/4r4FIuG87KZQTSTbBkqWPfec4WOaCWJT+/y2cqLIyvF15QuANRzDN6 NNGG48nXkZqErQCfdzzXoIaqXgOg/7GpPQxZW+KOZppJ4E6BfC11ApJLc8GRVFDq28wd heSVuBdheAvHZDhYBWlBxUEjyQFwt+SMynf3IeBc5lSyeJJFw4IdahZoRIaNjQi2dsFb OcQA== 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=8egIDKvV/1+rc5wAxGYmV3Tadtt1dRNaHphXfbT7TBw=; b=EIuIM/+aXUKW5xF+75LE7gR9Psx91XTeIJuuGyoKh97BiaUJRfxCU1bWPyNLQSIOMY glTNT3nqOd2lBUYD4IonIzMNSG9SBKTustSrptxCVxyuo7E261kqnk96AowRGq/7YJCH xGxjYnjlLMtxl7Aik3E4fdjr0E1CnK1XwasgzJcSNBgXr1dkUN63D3EaP1cItmsFWxWG /tpzJZAK8bHm1nzPEKvf/JyO9cifY1cqy4DxYFaSw2YdlRF2ajVCeg2bwrQC05t58GYu GUYQoRBedHAEZAmhXrRmN+MS+lajc4QrYROOUTWajZYPya76yu3gwT7OFIzJsmGmNwbc riPQ== X-Gm-Message-State: AOAM530tNnB2JCtZonOiCUjQvEwU5AJyqVzIcDBP+VbjqQR+YNKi8ADG mYrvjYdZmpAb7s+3Gkbp+anWf3/U X-Google-Smtp-Source: ABdhPJyGW65wbdOo+RofI7+nS6tHhpSK5JfeOgQitH6pr8b5sgfffZNzaPGMAOI5n7OHdK4lwQ5T0Q== X-Received: by 2002:a37:486:: with SMTP id 128mr15342356qke.489.1590943172138; Sun, 31 May 2020 09:39:32 -0700 (PDT) Received: from localhost.localdomain ([181.23.72.208]) by smtp.gmail.com with ESMTPSA id a62sm12125344qkg.71.2020.05.31.09.39.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 31 May 2020 09:39:31 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 31 May 2020 13:38:38 -0300 Message-Id: <20200531163839.561-2-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 2/3] avutil/frame: change av_frame_new_side_data() size parameter type 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 ++-- libavutil/frame.c | 4 ++++ libavutil/frame.h | 8 ++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 9de23744c0..8d353fdcef 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 related function and struct size parameter and fields - type to size_t at next major bump. + Change AVBufferRef and relevant AVFrame 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/libavutil/frame.c b/libavutil/frame.c index 2e952edd29..489e46dd93 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -726,7 +726,11 @@ AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, AVFrameSideData *av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, +#if FF_API_BUFFER_SIZE_T int size) +#else + size_t size) +#endif { AVFrameSideData *ret; AVBufferRef *buf = av_buffer_alloc(size); diff --git a/libavutil/frame.h b/libavutil/frame.h index fc67db0f6c..fa4931edb8 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -206,7 +206,11 @@ enum AVActiveFormatDescription { typedef struct AVFrameSideData { enum AVFrameSideDataType type; uint8_t *data; +#if FF_API_BUFFER_SIZE_T int size; +#else + size_t size; +#endif AVDictionary *metadata; AVBufferRef *buf; } AVFrameSideData; @@ -899,7 +903,11 @@ AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane); */ AVFrameSideData *av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, +#if FF_API_BUFFER_SIZE_T int size); +#else + size_t size); +#endif /** * Add a new side data to a frame from an existing AVBufferRef 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 /**