From patchwork Tue Jan 31 11:39:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40192 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3ca3:b0:b9:1511:ac2c with SMTP id b35csp4166929pzj; Tue, 31 Jan 2023 03:39:55 -0800 (PST) X-Google-Smtp-Source: AK7set9KPGmNJoA/n88TeW4JALtq/lnWzLPWf8lrfSs3T6TenMEOWOgJmLfS7jDYqUQLXpqNmTfo X-Received: by 2002:a05:6402:401a:b0:499:bffb:7e58 with SMTP id d26-20020a056402401a00b00499bffb7e58mr3100962eda.20.1675165194929; Tue, 31 Jan 2023 03:39:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675165194; cv=none; d=google.com; s=arc-20160816; b=IxVlE81g5f7z6Nt5C2dLFj6RPzRfU1qsQC6fJGkujDk9vnivdk7KgUIM2thK8bh/X1 0YSeHcCVeRXFMKC7PbNGw2YC1zMUWcVultMzDX58ew/BUfn3f+STLYQyyYJDZnHm9JVB S+xxrI63i9gjzDNkx6Yk5oEPgMvff5H3limwBPNCWY4gAkuWXam1cOvL943qdB9cBig4 hp7obCk/uD4HzqxzQX61tCtFR/2OzmSZaO7YjbuHLGUYrc6Q6RiBWsY1qH2qB8bHN4N+ wqXYB1RxrpQ9TzXEmiem0n/y/ik5TbN0JZTS547qFl8brA1Vlg02EW4ggNyP61cOIHn9 RT+w== 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:delivered-to; bh=ETCsPRL2GELxRolHGKGorPeiSXjiK3uo9kInqqYtxUU=; b=pE0MBSuD2uzm4DHQgmi5iN7eJgwAAyDkXPJSqbkx4Ia9+BiA1vo2eoY5Si2htQv47p 4ekTJBe9J3fOluZZVR9t+tFrOFUkg/mL/39GdzFHaMmi/iI9nYf7bGTMktXWsRnUZ9Sm mepQm7ZCusUWDW/ATNCH+7eYl8PUz1FwAZLw+UvMb/vsLNGLoeNT3coLZXMg7Jhw6YFU TPu0se7mWnEiY6Ewj2duArTXqFrGOE/QR+Tbuuv+YpD+9ft1EFGOqiSXtamsA5jcL9Oh NMGL55SLBC/6mjaoDD4HXzYSq/WB05Ltpk9v/3VRdBFPyLpazGpw90dqVpQZ//dQA7MR BKrA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i11-20020a05640242cb00b004a0debe80e4si23307151edc.629.2023.01.31.03.39.32; Tue, 31 Jan 2023 03:39:54 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7223E68BD98; Tue, 31 Jan 2023 13:39:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 548B168BBF4 for ; Tue, 31 Jan 2023 13:39:14 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 160362404EC for ; Tue, 31 Jan 2023 12:39:14 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id Njm0pN79kybd for ; Tue, 31 Jan 2023 12:39:12 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id DC55F240178 for ; Tue, 31 Jan 2023 12:39:12 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 9744F3A0344 for ; Tue, 31 Jan 2023 12:39:06 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 31 Jan 2023 12:39:00 +0100 Message-Id: <20230131113900.5266-2-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20230131113900.5266-1-anton@khirnov.net> References: <20230131113900.5266-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavu/frame: deprecate reordered_opaque 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: MdoN1WkYulWQ It is only used in libavcodec, where it's been superseded by AV_CODEC_CAP_COPY_OPAQUE. --- libavcodec/avcodec.h | 5 +++++ libavcodec/codec.h | 6 +++--- libavcodec/decode.c | 4 ++++ libavcodec/encode.c | 4 ++++ libavcodec/libdav1d.c | 15 ++++++++++++++- libavcodec/librav1e.c | 10 ++++++++++ libavcodec/libwebpenc_animencoder.c | 10 ++++++++++ libavcodec/libx264.c | 14 ++++++++++++++ libavcodec/libx265.c | 17 ++++++++++++++++- libavcodec/nvenc.c | 10 ++++++++++ libavcodec/options.c | 4 ++++ libavcodec/pthread_frame.c | 4 ++++ libavutil/frame.c | 4 ++++ libavutil/frame.h | 5 +++++ libavutil/version.h | 1 + 15 files changed, 108 insertions(+), 5 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index eba9ea73d7..755e543fac 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1392,6 +1392,7 @@ typedef struct AVCodecContext { */ int err_recognition; +#if FF_API_REORDERED_OPAQUE /** * opaque 64-bit number (generally a PTS) that will be reordered and * output in AVFrame.reordered_opaque @@ -1400,8 +1401,12 @@ typedef struct AVCodecContext { * supported by encoders with the * AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability. * - decoding: Set by user. + * + * @deprecated Use AV_CODEC_FLAG_COPY_OPAQUE instead */ + attribute_deprecated int64_t reordered_opaque; +#endif /** * Hardware accelerator in use diff --git a/libavcodec/codec.h b/libavcodec/codec.h index 77a1a3f5a2..67f9120b44 100644 --- a/libavcodec/codec.h +++ b/libavcodec/codec.h @@ -169,9 +169,9 @@ #define AV_CODEC_CAP_HYBRID (1 << 19) /** - * This codec takes the reordered_opaque field from input AVFrames - * and returns it in the corresponding field in AVCodecContext after - * encoding. + * This encoder can reorder user opaque values from input AVFrames and return + * them with corresponding output packets. + * @see AV_CODEC_FLAG_COPY_OPAQUE */ #define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE (1 << 20) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 17b398e933..03ae27ecdf 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1357,7 +1357,11 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) return ret; frame->pkt_size = (int)(intptr_t)pkt->opaque; } +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS frame->reordered_opaque = avctx->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (frame->color_primaries == AVCOL_PRI_UNSPECIFIED) frame->color_primaries = avctx->color_primaries; diff --git a/libavcodec/encode.c b/libavcodec/encode.c index c92beaf8e1..b0a9625ca9 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -193,7 +193,11 @@ int ff_encode_get_frame(AVCodecContext *avctx, AVFrame *frame) int ff_encode_reordered_opaque(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame) { +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS avctx->reordered_opaque = frame->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { int ret = av_buffer_replace(&pkt->opaque_ref, frame->opaque_ref); diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index f7d75f9439..2488a709c7 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -290,7 +290,9 @@ static void libdav1d_flush(AVCodecContext *c) typedef struct OpaqueData { void *pkt_orig_opaque; +#if FF_API_REORDERED_OPAQUE int64_t reordered_opaque; +#endif } OpaqueData; static void libdav1d_data_free(const uint8_t *data, void *opaque) { @@ -340,7 +342,11 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) pkt->buf = NULL; - if (c->reordered_opaque != AV_NOPTS_VALUE || +FF_DISABLE_DEPRECATION_WARNINGS + if ( +#if FF_API_REORDERED_OPAQUE + c->reordered_opaque != AV_NOPTS_VALUE || +#endif (pkt->opaque && (c->flags & AV_CODEC_FLAG_COPY_OPAQUE))) { od = av_mallocz(sizeof(*od)); if (!od) { @@ -349,7 +355,10 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) return AVERROR(ENOMEM); } od->pkt_orig_opaque = pkt->opaque; +#if FF_API_REORDERED_OPAQUE od->reordered_opaque = c->reordered_opaque; +#endif +FF_ENABLE_DEPRECATION_WARNINGS } pkt->opaque = od; @@ -432,10 +441,14 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) pkt = (AVPacket *)p->m.user_data.data; od = pkt->opaque; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS if (od && od->reordered_opaque != AV_NOPTS_VALUE) frame->reordered_opaque = od->reordered_opaque; else frame->reordered_opaque = AV_NOPTS_VALUE; +FF_ENABLE_DEPRECATION_WARNINGS +#endif // restore the original user opaque value for // ff_decode_frame_props_from_pkt() diff --git a/libavcodec/librav1e.c b/libavcodec/librav1e.c index 00d69328fb..08affabe3e 100644 --- a/libavcodec/librav1e.c +++ b/libavcodec/librav1e.c @@ -57,7 +57,9 @@ typedef struct librav1eContext { typedef struct FrameData { int64_t pts; int64_t duration; +#if FF_API_REORDERED_OPAQUE int64_t reordered_opaque; +#endif void *frame_opaque; AVBufferRef *frame_opaque_ref; @@ -465,7 +467,11 @@ static int librav1e_receive_packet(AVCodecContext *avctx, AVPacket *pkt) } fd->pts = frame->pts; fd->duration = frame->duration; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS fd->reordered_opaque = frame->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { fd->frame_opaque = frame->opaque; @@ -572,7 +578,11 @@ retry: fd = rpkt->opaque; pkt->pts = pkt->dts = fd->pts; pkt->duration = fd->duration; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS avctx->reordered_opaque = fd->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { pkt->opaque = fd->frame_opaque; diff --git a/libavcodec/libwebpenc_animencoder.c b/libavcodec/libwebpenc_animencoder.c index 440cae1de5..72d704f490 100644 --- a/libavcodec/libwebpenc_animencoder.c +++ b/libavcodec/libwebpenc_animencoder.c @@ -39,7 +39,9 @@ typedef struct LibWebPAnimContext { int64_t first_frame_pts; // pts of the first encoded frame. int64_t end_pts; // pts + duration of the last frame +#if FF_API_REORDERED_OPAQUE int64_t reordered_opaque; +#endif void *first_frame_opaque; AVBufferRef *first_frame_opaque_ref; @@ -90,7 +92,11 @@ static int libwebp_anim_encode_frame(AVCodecContext *avctx, AVPacket *pkt, if (pkt->pts != AV_NOPTS_VALUE && s->end_pts > pkt->pts) pkt->duration = s->end_pts - pkt->pts; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS avctx->reordered_opaque = s->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { pkt->opaque = s->first_frame_opaque; pkt->opaque_ref = s->first_frame_opaque_ref; @@ -128,7 +134,11 @@ static int libwebp_anim_encode_frame(AVCodecContext *avctx, AVPacket *pkt, if (!avctx->frame_number) { s->first_frame_pts = frame->pts; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS s->reordered_opaque = frame->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { s->first_frame_opaque = frame->opaque; diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 2742fb11a0..f65ac5dacc 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -50,7 +50,9 @@ #define MB_SIZE 16 typedef struct X264Opaque { +#if FF_API_REORDERED_OPAQUE int64_t reordered_opaque; +#endif int64_t wallclock; int64_t duration; @@ -459,7 +461,11 @@ static int setup_frame(AVCodecContext *ctx, const AVFrame *frame, goto fail; } +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS opaque->reordered_opaque = frame->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif opaque->duration = frame->duration; opaque->wallclock = wallclock; if (ctx->export_side_data & AV_CODEC_EXPORT_DATA_PRFT) @@ -612,7 +618,11 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, out_opaque = pic_out.opaque; if (out_opaque >= x4->reordered_opaque && out_opaque < &x4->reordered_opaque[x4->nb_reordered_opaque]) { +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS ctx->reordered_opaque = out_opaque->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif wallclock = out_opaque->wallclock; pkt->duration = out_opaque->duration; @@ -627,7 +637,11 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, // Unexpected opaque pointer on picture output av_log(ctx, AV_LOG_ERROR, "Unexpected opaque pointer; " "this is a bug, please report it.\n"); +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS ctx->reordered_opaque = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } switch (pic_out.i_type) { diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 6fc189f1b5..6a2600c5e7 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -42,7 +42,9 @@ #include "sei.h" typedef struct ReorderedData { +#if FF_API_REORDERED_OPAQUE int64_t reordered_opaque; +#endif int64_t duration; void *frame_opaque; @@ -618,7 +620,11 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, rd = &ctx->rd[rd_idx]; rd->duration = pic->duration; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS rd->reordered_opaque = pic->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { rd->frame_opaque = pic->opaque; ret = av_buffer_replace(&rd->frame_opaque_ref, pic->opaque_ref); @@ -756,7 +762,11 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, int idx = (int)(intptr_t)x265pic_out.userData - 1; ReorderedData *rd = &ctx->rd[idx]; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS avctx->reordered_opaque = rd->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif pkt->duration = rd->duration; if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { @@ -766,8 +776,13 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt, } rd_release(ctx, idx); - } else + } +#if FF_API_REORDERED_OPAQUE + else +FF_DISABLE_DEPRECATION_WARNINGS avctx->reordered_opaque = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif *got_packet = 1; return 0; diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index ab42dc9690..8a28454042 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -166,7 +166,9 @@ static int nvenc_print_error(AVCodecContext *avctx, NVENCSTATUS err, typedef struct FrameData { int64_t pts; int64_t duration; +#if FF_API_REORDERED_OPAQUE int64_t reordered_opaque; +#endif void *frame_opaque; AVBufferRef *frame_opaque_ref; @@ -2203,7 +2205,11 @@ static void reorder_queue_enqueue(AVFifo *queue, const AVCodecContext *avctx, fd.pts = frame->pts; fd.duration = frame->duration; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS fd.reordered_opaque = frame->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif fd.frame_opaque = frame->opaque; fd.frame_opaque_ref = *opaque_ref; @@ -2222,7 +2228,11 @@ static int64_t reorder_queue_dequeue(AVFifo *queue, AVCodecContext *avctx, return AV_NOPTS_VALUE; if (pkt) { +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS avctx->reordered_opaque = fd.reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif pkt->duration = fd.duration; if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { diff --git a/libavcodec/options.c b/libavcodec/options.c index 2e05d29e1e..9090c94e9c 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -124,7 +124,11 @@ static int init_context_defaults(AVCodecContext *s, const AVCodec *codec) s->sw_pix_fmt = AV_PIX_FMT_NONE; s->sample_fmt = AV_SAMPLE_FMT_NONE; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS s->reordered_opaque = AV_NOPTS_VALUE; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if(codec && codec2->priv_data_size){ s->priv_data = av_mallocz(codec2->priv_data_size); if (!s->priv_data) diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index 62a0b18a8a..ae8d051acd 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -390,7 +390,11 @@ static int update_context_from_user(AVCodecContext *dst, AVCodecContext *src) dst->skip_frame = src->skip_frame; dst->frame_number = src->frame_number; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS dst->reordered_opaque = src->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif #if FF_API_THREAD_SAFE_CALLBACKS FF_DISABLE_DEPRECATION_WARNINGS dst->thread_safe_callbacks = src->thread_safe_callbacks; diff --git a/libavutil/frame.c b/libavutil/frame.c index fa9b11aa54..2d81de8b0d 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -304,7 +304,11 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif dst->time_base = src->time_base; +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS dst->reordered_opaque = src->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif dst->quality = src->quality; dst->best_effort_timestamp = src->best_effort_timestamp; dst->coded_picture_number = src->coded_picture_number; diff --git a/libavutil/frame.h b/libavutil/frame.h index bbe909ee2d..911af515f4 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -491,6 +491,7 @@ typedef struct AVFrame { */ int palette_has_changed; +#if FF_API_REORDERED_OPAQUE /** * reordered opaque 64 bits (generally an integer or a double precision float * PTS but can be anything). @@ -498,8 +499,12 @@ typedef struct AVFrame { * that time, * the decoder reorders values as needed and sets AVFrame.reordered_opaque * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque + * + * @deprecated Use AV_CODEC_FLAG_COPY_OPAQUE instead */ + attribute_deprecated int64_t reordered_opaque; +#endif /** * Sample rate of the audio data. diff --git a/libavutil/version.h b/libavutil/version.h index 60f96af5df..43daf8cd5a 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -115,6 +115,7 @@ #define FF_API_OLD_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_MAJOR < 58) #define FF_API_AV_FOPEN_UTF8 (LIBAVUTIL_VERSION_MAJOR < 58) #define FF_API_PKT_DURATION (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_REORDERED_OPAQUE (LIBAVUTIL_VERSION_MAJOR < 59) /** * @}