From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 585704CC72 for ; Sat, 25 Jan 2025 20:22:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EE24568B89A; Sat, 25 Jan 2025 22:22:12 +0200 (EET) Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A6EA968B81A for ; Sat, 25 Jan 2025 22:22:04 +0200 (EET) Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-21619108a6bso54222355ad.3 for ; Sat, 25 Jan 2025 12:22:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737836522; x=1738441322; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=g3aj6PAD2UNaXrT5P0J5YnNf+ISKXu0s3WIxSd+YepI=; b=RgkQLBjZ2zbYVcgY5k2m+2PUmMIBZHTexJwvOUQnPBq1QyDw0xJrqERWG6VW3vtu/c i/ZQ91Jd708QFbmXRNIpu04crjZA3YJbEDcbbMfk6rasA+3yj80XeyfOhw5MeqoKhzRG e2U9jtnklB+0krD52YLglb7rVGu+1i5fV8b6b9xjA56E8e9R42IBOHUtuUt8xXrHq5y2 jZXISVC5LRMXOa7asjo/3MlLv1KspGCjUAmxpNZFHQYV9aKSnUlCfG31n3mPgJ1hFm8h jqbP2XpaBBVSxuPDs8ra+YHSQ3rOfiJXHar0FKUoDnsQrv2SFO2UMih9GGyTEYhZj6Ir ZfMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737836522; x=1738441322; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g3aj6PAD2UNaXrT5P0J5YnNf+ISKXu0s3WIxSd+YepI=; b=Bt/ldNurZ0JPDJcleXzIFTUrD8vX7bUy+xe5j4JUkn6eyELXPje7kKczsDo4ijUueT onLj68dybpkUP0PwejEnJr+ty3HMwQW0/y/TwoVguV83jbSBWDjBxfcrjTL4MfcOaLni jeoQbERiuTV3MqRJhfD8vtAypX4bg4WNGqsSjYSQMMLXVWUPVE9G6Qd1ZfIxRItrQ+qH qAF/d77Gg2JZLZTg+1Lem35GxjV/jlJsYCUKc4KIJs832cqb+2eR/TKGLJC3uSwli72L M+agf+YwlbwXJLNyUy+1/PbUc6Wxqt3r+KfShJvLH/WTST7aapmMht7goiSXwZjl+A8m Bp2w== X-Gm-Message-State: AOJu0YxZp4hPt4siPy7wbeicYEjQOlgfA3/GxhZ/KX1C3417kaN6NSPs gZ1nFoalzEb5OB89DBaKg9lKmemnjVWCFDQSS4bnFHtb26sPqMROo9ytVg== X-Gm-Gg: ASbGncuH59y0wzElqh5MWUwDLrUQgI8aCwaOmyynyJuCQCQI9o1x055w976OhBRXFmD iYieYUKVhC6WPFV1zecX+5UsQFBKIJ4lRuMD8gl/p9zz0qRa62LzQ0G35rJuBd+AOwohSN3SCWo F72joXYUL+eICgxqIBczoEmiIrEcnMurOX+oOyzxNP8si42ABk7g5KduJHbCUL41LPraer79E41 Hqj5CHyF/eQralybbWqbrnybsFl2TWi9nKVNYr4zN7A3vW3Wh7oKas4eh/i5XIq1lPgbKQReoE3 9l4suAxviyY6noORBH7ezw== X-Google-Smtp-Source: AGHT+IEIQ9aZPYN39qzvk482TV+JgNjxHjAKf55VC3ioYxFnYECDxu6fiELvoKFBSX3Z5qu4XCSxfQ== X-Received: by 2002:a17:902:ecc5:b0:215:44fe:163e with SMTP id d9443c01a7336-21c352d60e5mr578783885ad.1.1737836522506; Sat, 25 Jan 2025 12:22:02 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:f188:b333:21cc:e83f]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21da3ea396asm36155335ad.91.2025.01.25.12.22.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Jan 2025 12:22:02 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 25 Jan 2025 17:21:32 -0300 Message-ID: <20250125202143.12126-4-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250125202143.12126-1-jamrial@gmail.com> References: <20250125202143.12126-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/14] avutil/frame: schedule making AVFrameSideData.buf internal 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: This is in preparation for a new type of backing for the side data that will be introduced in a following commit. The user only cares about the data pointer. Signed-off-by: James Almer --- libavutil/frame.h | 3 +++ libavutil/side_data.c | 48 +++++++++++++++++++++++++++++++++++++++++++ libavutil/version.h | 1 + 3 files changed, 52 insertions(+) diff --git a/libavutil/frame.h b/libavutil/frame.h index 628f2b5b3a..019adaac0e 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -267,7 +267,10 @@ typedef struct AVFrameSideData { uint8_t *data; size_t size; AVDictionary *metadata; +#if FF_API_SIDE_DATA_BUF + attribute_deprecated AVBufferRef *buf; +#endif } AVFrameSideData; enum AVSideDataProps { diff --git a/libavutil/side_data.c b/libavutil/side_data.c index eb6e001f94..7be1c346cd 100644 --- a/libavutil/side_data.c +++ b/libavutil/side_data.c @@ -26,6 +26,10 @@ typedef struct FFFrameSideData { AVFrameSideData p; + +#if FF_API_SIDE_DATA_BUF == 0 + AVBufferRef *buf; +#endif } FFFrameSideData; typedef struct FFSideDataDescriptor { @@ -65,6 +69,16 @@ static const FFSideDataDescriptor sd_props[] = { [AV_FRAME_DATA_VIDEO_HINT] = { .p = { "Encoding video hint", AV_SIDE_DATA_PROP_SIZE_DEPENDENT } }, }; +static FFFrameSideData *sdp_from_sd(AVFrameSideData *sd) +{ + return (FFFrameSideData *)sd; +} + +static const FFFrameSideData *csdp_from_sd(const AVFrameSideData *sd) +{ + return (const FFFrameSideData *)sd; +} + const AVSideDataDescriptor *av_frame_side_data_desc(enum AVFrameSideDataType type) { unsigned t = type; @@ -82,8 +96,15 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) static void free_side_data_entry(AVFrameSideData **ptr_sd) { AVFrameSideData *sd = *ptr_sd; + FFFrameSideData *sdp = sdp_from_sd(sd); +#if FF_API_SIDE_DATA_BUF +FF_DISABLE_DEPRECATION_WARNINGS av_buffer_unref(&sd->buf); +FF_ENABLE_DEPRECATION_WARNINGS +#else + av_buffer_unref(&sdp->buf); +#endif av_dict_free(&sd->metadata); av_freep(ptr_sd); } @@ -168,7 +189,13 @@ static AVFrameSideData *add_side_data_from_buf_ext(AVFrameSideData ***sd, return NULL; ret = &sdp->p; +#if FF_API_SIDE_DATA_BUF +FF_DISABLE_DEPRECATION_WARNINGS ret->buf = buf; +FF_ENABLE_DEPRECATION_WARNINGS +#else + sdp->buf = buf; +#endif ret->data = data; ret->size = size; ret->type = type; @@ -196,8 +223,15 @@ static AVFrameSideData *replace_side_data_from_buf(AVFrameSideData *dst, return NULL; av_dict_free(&dst->metadata); +#if FF_API_SIDE_DATA_BUF +FF_DISABLE_DEPRECATION_WARNINGS av_buffer_unref(&dst->buf); dst->buf = buf; +FF_ENABLE_DEPRECATION_WARNINGS +#else + av_buffer_unref(&sdp_from_sd(dst)->buf); + sdp_from_sd(dst)->buf = buf; +#endif dst->data = buf->data; dst->size = buf->size; return dst; @@ -257,6 +291,7 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, const AVFrameSideData *src, unsigned int flags) { const AVSideDataDescriptor *desc; + const FFFrameSideData *srcp = csdp_from_sd(src); AVBufferRef *buf = NULL; AVFrameSideData *sd_dst = NULL; int ret = AVERROR_BUG; @@ -269,6 +304,7 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, av_frame_side_data_remove(sd, nb_sd, src->type); if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && (sd_dst = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, src->type))) { + FFFrameSideData *dstp = sdp_from_sd(sd_dst); AVDictionary *dict = NULL; if (!(flags & AV_FRAME_SIDE_DATA_FLAG_REPLACE)) @@ -278,7 +314,13 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, if (ret < 0) return ret; +#if FF_API_SIDE_DATA_BUF +FF_DISABLE_DEPRECATION_WARNINGS ret = av_buffer_replace(&sd_dst->buf, src->buf); +FF_ENABLE_DEPRECATION_WARNINGS +#else + ret = av_buffer_replace(&dstp->buf, srcp->buf); +#endif if (ret < 0) { av_dict_free(&dict); return ret; @@ -291,7 +333,13 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, return 0; } +#if FF_API_SIDE_DATA_BUF +FF_DISABLE_DEPRECATION_WARNINGS buf = av_buffer_ref(src->buf); +FF_ENABLE_DEPRECATION_WARNINGS +#else + buf = av_buffer_ref(srcp->buf); +#endif if (!buf) return AVERROR(ENOMEM); diff --git a/libavutil/version.h b/libavutil/version.h index a6f344a4c3..e736484a1e 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -117,6 +117,7 @@ #define FF_API_VULKAN_FIXED_QUEUES (LIBAVUTIL_VERSION_MAJOR < 60) #define FF_API_OPT_INT_LIST (LIBAVUTIL_VERSION_MAJOR < 60) #define FF_API_OPT_PTR (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_SIDE_DATA_BUF (LIBAVUTIL_VERSION_MAJOR < 60) /** * @} -- 2.48.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".