From patchwork Thu May 18 01:45:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 41703 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp119415pzb; Wed, 17 May 2023 18:45:29 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7KISIOCZUrPN/QatxZokyImhbo5CaK1UvRc1Ea6IGnPhYTjBl8u0ZNtbpIfGwj6JWhdJ8/ X-Received: by 2002:a17:907:94d0:b0:96a:26af:b67e with SMTP id dn16-20020a17090794d000b0096a26afb67emr28691017ejc.2.1684374329508; Wed, 17 May 2023 18:45:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684374329; cv=none; d=google.com; s=arc-20160816; b=pORO5PCb1KnOffwiM6bW3Okx0nUeMnlAlVV+VMIjZ5YiSaCEvtsdnepaiV4o2vHrM5 v6T01ZPHy9j+mBugD1qUxuzX+AF6Y/I9KtTqtRBjHBIGuHz//EWS0rknAJqQY6l6mYvk LJJcdW78toWYORY5b1jEaYVUn59sj+qyKeHzhr3RSX3jMXah+NQHGOrEpUDabN1fWlzk o46bJ+iPmZTzhsHNoDPzDTBPfFTvPfvkcTlKr7Vr4WKmpdu0u4V/2IL8Lvb7+VaMwcbA oqxiawcPlrqhbHJwPwA2aBZsIVgCJnupFbey3sSFrxrOwui2a4kdNpketMXGBnh9eG/g FO+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:message-id:date:to:from :dkim-signature:delivered-to; bh=0a+0UYUpQ4FKyHeZGwgC7tKJ6FjgXt2wpECHAelPWTE=; b=N5VsNRSGPmPe3hb22MAjSO17DlaU6mIabOTNMAXfR8oqNrkKv89AtVB81oQkeKcigY czQosVA8Pql6KSD/FmEG1tXAwaDGUIvwnzszA/cKBzsWPZ9Q2vi7NduSMKn0cwUry596 lRs6jFe0ixxvck07FTyzzEU1p0jb8syr9LMN2YqCGtPypjSzIQKXRWtnRLittxd30Ib5 XhoSck6zg6LnmHxo4ClrmxdEEhDx0F2jVf9El2MAEoTQRxBg2lpU1rkIjQKNOnQPwWRo LieX1ZTTjXKQylGmW6Fu+kDB7dQidM5flZOxrZWmHB5rcFq57kebIgW+jfPh1hOo8InY wzRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b="phZr3/8g"; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s7-20020a056402164700b0050bc5b95923si48654edx.497.2023.05.17.18.45.28; Wed, 17 May 2023 18:45:29 -0700 (PDT) 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=@gmail.com header.s=20221208 header.b="phZr3/8g"; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CE3BD68C14A; Thu, 18 May 2023 04:45:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com [209.85.210.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1A72168BA65 for ; Thu, 18 May 2023 04:45:17 +0300 (EEST) Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-6ab611e57c2so1171824a34.1 for ; Wed, 17 May 2023 18:45:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684374315; x=1686966315; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=dvVEUpMO2DxaWxPGW3SawaIinNVoataXi5GQXdid8k4=; b=phZr3/8gvj9DQKljxjl0u9Ml1J9Av1tYwKa8wF6o/0k/2jop4oxCNwwRJvf0Y04e5H fTLVYu2A7Bn/B8gEoXZDivEU35blU3315UZMXkYk/qrQmFIfMQ9m9GJW2zh9GSH6OChM kmdLLTUvNrxF+kw3sJ/90OaAgxXed9NcdN935zpmu+zXXeyALFY4OIgtIjv8tB4HQftV Na6wQdnXdrEtchZrSyGNAd9IYtMlq5+2yYDHrKMmKIw0FAHUAt6Mlm5kWcvkgIBRGlhg 1vOe1Kc6D3iH0hGdfYVo4i91hmJ0tkfKPwlq80ln8S7dzrSWznBLFJCJpcmKc5SeJPFX 2iQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684374315; x=1686966315; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dvVEUpMO2DxaWxPGW3SawaIinNVoataXi5GQXdid8k4=; b=NHshJiZ6DMZ4XqdKVtD5VbXJJAMS5o4u1KkB7On9+/jlwxvhupiScasQ5TvUv+UsVz b68g1H7RJCGY49DvOc4GYRsr2N9h8HUWa57ztauxXN8B839kB/SsejzgZpZVz45u3Hg2 LcZFkOlIUZmn/btnDXbehwVCuvcDQTuoac79GE7s+B2MzaO/HZYlMcENohacznc+KZxT 0QmQx1wSquewa5QLGDm9TjjowVn6PdhoI0ZNZ7Iyrzjbn9b63OAmXM+MeeHy0VN/XTNF dIE/19ADSdwff01Tmf1KP/s4jMxhgndoUrk1j4fr+eXaNfFGTq6i85cYMpybUCf1piO2 aVCw== X-Gm-Message-State: AC+VfDyknMZTHmcWncCNWUrirlV+9BHPjOxX7TX53YzgitGdsCEBkFdm bPeqVD8oo24CR+RwLRUSHSLJNVmwqtc= X-Received: by 2002:a05:6830:144:b0:6ac:9b94:108b with SMTP id j4-20020a056830014400b006ac9b94108bmr347308otp.38.1684374314385; Wed, 17 May 2023 18:45:14 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id v19-20020a9d69d3000000b006a5eb4e5a42sm201208oto.60.2023.05.17.18.45.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 May 2023 18:45:13 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 May 2023 22:45:09 -0300 Message-Id: <20230518014509.2982-1-jamrial@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avutil/frame: deprecate palette_has_changed 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: 0iT+zscDnbog Not only this is information that relies on the concept of a sequence of frames, which is completely out of place as a field in AVFrame, but its usefulness is also very limited. Signed-off-by: James Almer --- doc/APIchanges | 3 +++ libavcodec/8bps.c | 13 ++++++++----- libavcodec/ansi.c | 8 ++++++++ libavcodec/bethsoftvideo.c | 4 ++++ libavcodec/bfi.c | 8 ++++++++ libavcodec/bintext.c | 4 ++++ libavcodec/bmvvideo.c | 4 ++++ libavcodec/brenderpix.c | 8 ++++++++ libavcodec/c93.c | 4 ++++ libavcodec/cdgraphics.c | 4 ++++ libavcodec/cdtoons.c | 4 ++++ libavcodec/cinepak.c | 9 ++++++++- libavcodec/dds.c | 8 ++++++++ libavcodec/dfa.c | 4 ++++ libavcodec/dsicinvideo.c | 4 ++++ libavcodec/dxa.c | 4 ++++ libavcodec/flicvideo.c | 4 ++++ libavcodec/gemdec.c | 4 ++++ libavcodec/idcinvideo.c | 9 ++++++++- libavcodec/imx.c | 8 ++++++++ libavcodec/interplayvideo.c | 9 ++++++++- libavcodec/jvdec.c | 8 ++++++++ libavcodec/kmvc.c | 17 ++++++++++++++++- libavcodec/mscc.c | 4 ++++ libavcodec/msrle.c | 9 ++++++++- libavcodec/mss1.c | 4 ++++ libavcodec/msvideo1.c | 9 ++++++++- libavcodec/pafvideo.c | 4 ++++ libavcodec/pictordec.c | 4 ++++ libavcodec/psd.c | 4 ++++ libavcodec/qdrw.c | 4 ++++ libavcodec/qpeg.c | 9 ++++++++- libavcodec/qtrle.c | 9 ++++++++- libavcodec/rawdec.c | 8 ++++++++ libavcodec/rscc.c | 9 ++++++++- libavcodec/sga.c | 4 ++++ libavcodec/smacker.c | 4 ++++ libavcodec/smc.c | 9 ++++++++- libavcodec/targa.c | 4 ++++ libavcodec/tiertexseqv.c | 4 ++++ libavcodec/tmv.c | 4 ++++ libavcodec/tscc.c | 4 ++++ libavcodec/vb.c | 4 ++++ libavcodec/vqavideo.c | 4 ++++ libavcodec/yop.c | 4 ++++ libavutil/frame.c | 4 ++++ libavutil/frame.h | 3 +++ libavutil/version.h | 1 + 48 files changed, 267 insertions(+), 15 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index d2255867a8..770d6ffc5e 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: +2023-05-xx - xxxxxxxxxx - lavu 58 - frame.h + Deprecate AVFrame.palette_has_changed without replacement. + 2023-05-xx - xxxxxxxxxx - lavc 60 - avcodec.h Depreate AVCodecContext.ticks_per_frame in favor of AVCodecContext.framerate (encoding) and diff --git a/libavcodec/8bps.c b/libavcodec/8bps.c index 90d6c96fd1..af98f62fad 100644 --- a/libavcodec/8bps.c +++ b/libavcodec/8bps.c @@ -47,8 +47,6 @@ typedef struct EightBpsContext { unsigned char planes; unsigned char planemap[4]; - - uint32_t pal[256]; } EightBpsContext; static int decode_frame(AVCodecContext *avctx, AVFrame *frame, @@ -123,9 +121,14 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, } if (avctx->bits_per_coded_sample <= 8) { - frame->palette_has_changed = ff_copy_palette(c->pal, avpkt, avctx); - - memcpy (frame->data[1], c->pal, AVPALETTE_SIZE); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + frame->palette_has_changed = +#endif + ff_copy_palette(frame->data[1], avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif } *got_frame = 1; diff --git a/libavcodec/ansi.c b/libavcodec/ansi.c index c1e31266ec..49c3770c4c 100644 --- a/libavcodec/ansi.c +++ b/libavcodec/ansi.c @@ -262,7 +262,11 @@ static int execute_code(AVCodecContext * avctx, int c) AV_GET_BUFFER_FLAG_REF)) < 0) return ret; s->frame->pict_type = AV_PICTURE_TYPE_I; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS s->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif set_palette((uint32_t *)s->frame->data[1]); erase_screen(avctx); } else if (c == 'l') { @@ -371,7 +375,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe, } s->frame->pict_type = AV_PICTURE_TYPE_I; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS s->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif set_palette((uint32_t *)s->frame->data[1]); if (!s->first_frame) { erase_screen(avctx); diff --git a/libavcodec/bethsoftvideo.c b/libavcodec/bethsoftvideo.c index e095d04fa5..6de502822b 100644 --- a/libavcodec/bethsoftvideo.c +++ b/libavcodec/bethsoftvideo.c @@ -63,7 +63,11 @@ static int set_palette(BethsoftvidContext *ctx, GetByteContext *g) palette[a] = 0xFFU << 24 | bytestream2_get_be24u(g) * 4; palette[a] |= palette[a] >> 6 & 0x30303; } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS ctx->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif return 0; } diff --git a/libavcodec/bfi.c b/libavcodec/bfi.c index 55429d4b7c..901669a3a9 100644 --- a/libavcodec/bfi.c +++ b/libavcodec/bfi.c @@ -84,11 +84,19 @@ static int bfi_decode_frame(AVCodecContext *avctx, AVFrame *frame, pal++; } memcpy(bfi->pal, frame->data[1], sizeof(bfi->pal)); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } else { frame->pict_type = AV_PICTURE_TYPE_P; frame->flags &= ~AV_FRAME_FLAG_KEY; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(frame->data[1], bfi->pal, sizeof(bfi->pal)); } diff --git a/libavcodec/bintext.c b/libavcodec/bintext.c index ce814f7693..b20d6ce176 100644 --- a/libavcodec/bintext.c +++ b/libavcodec/bintext.c @@ -157,7 +157,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, if ((ret = ff_get_buffer(avctx, s->frame, 0)) < 0) return ret; s->frame->pict_type = AV_PICTURE_TYPE_I; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS s->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(s->frame->data[1], s->palette, 16 * 4); if (avctx->codec_id == AV_CODEC_ID_XBIN) { diff --git a/libavcodec/bmvvideo.c b/libavcodec/bmvvideo.c index 92ce41c836..20f07ca556 100644 --- a/libavcodec/bmvvideo.c +++ b/libavcodec/bmvvideo.c @@ -251,7 +251,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, } memcpy(frame->data[1], c->pal, AVPALETTE_SIZE); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = type & BMV_PALETTE; +FF_ENABLE_DEPRECATION_WARNINGS +#endif outptr = frame->data[0]; srcptr = c->frame; diff --git a/libavcodec/brenderpix.c b/libavcodec/brenderpix.c index 85eb55f50b..70a3e6be2a 100644 --- a/libavcodec/brenderpix.c +++ b/libavcodec/brenderpix.c @@ -245,7 +245,11 @@ static int pix_decode_frame(AVCodecContext *avctx, AVFrame *frame, *pal_out++ = (0xFFU << 24) | bytestream2_get_be32u(&gb); bytestream2_skip(&gb, 8); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif chunk_type = bytestream2_get_be32(&gb); } else if (avctx->pix_fmt == AV_PIX_FMT_PAL8) { @@ -257,7 +261,11 @@ static int pix_decode_frame(AVCodecContext *avctx, AVFrame *frame, "Using default palette, colors might be off.\n"); memcpy(pal_out, std_pal_table, sizeof(uint32_t) * 256); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } data_len = bytestream2_get_be32(&gb); diff --git a/libavcodec/c93.c b/libavcodec/c93.c index b872f95e9b..2a4fe45958 100644 --- a/libavcodec/c93.c +++ b/libavcodec/c93.c @@ -246,7 +246,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe, for (i = 0; i < 256; i++) { palette[i] = 0xFFU << 24 | bytestream2_get_be24(&gb); } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS newpic->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } else { if (oldpic->data[1]) memcpy(newpic->data[1], oldpic->data[1], 256 * 4); diff --git a/libavcodec/cdgraphics.c b/libavcodec/cdgraphics.c index 431e99cd76..0c5022a5d6 100644 --- a/libavcodec/cdgraphics.c +++ b/libavcodec/cdgraphics.c @@ -125,7 +125,11 @@ static void cdg_load_palette(CDGraphicsContext *cc, uint8_t *data, int low) b = ((color ) & 0x000F) * 17; palette[i + array_offset] = (uint32_t)cc->alpha[i + array_offset] << 24 | r << 16 | g << 8 | b; } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS cc->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } static int cdg_tile_block(CDGraphicsContext *cc, uint8_t *data, int b) diff --git a/libavcodec/cdtoons.c b/libavcodec/cdtoons.c index 3ebed2267c..94c49f0c81 100644 --- a/libavcodec/cdtoons.c +++ b/libavcodec/cdtoons.c @@ -384,7 +384,11 @@ static int cdtoons_decode_frame(AVCodecContext *avctx, AVFrame *rframe, } /* first palette entry indicates transparency */ c->pal[0] = 0; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS c->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } } diff --git a/libavcodec/cinepak.c b/libavcodec/cinepak.c index e91f2f1012..2ec0ce8882 100644 --- a/libavcodec/cinepak.c +++ b/libavcodec/cinepak.c @@ -476,7 +476,14 @@ static int cinepak_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return ret; if (s->palette_video) { - s->frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + s->frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif } if ((ret = cinepak_decode(s)) < 0) { diff --git a/libavcodec/dds.c b/libavcodec/dds.c index 670a42fbf9..31a327a579 100644 --- a/libavcodec/dds.c +++ b/libavcodec/dds.c @@ -651,7 +651,11 @@ static int dds_decode(AVCodecContext *avctx, AVFrame *frame, ((unsigned)frame->data[1][3+i*4]<<24) ); } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (bytestream2_get_bytes_left(gbc) < frame->height * frame->width / 2) { av_log(avctx, AV_LOG_ERROR, "Buffer is too small (%d < %d).\n", @@ -682,7 +686,11 @@ static int dds_decode(AVCodecContext *avctx, AVFrame *frame, ((unsigned)frame->data[1][3+i*4]<<24) ); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } if (bytestream2_get_bytes_left(gbc) < frame->height * linesize) { diff --git a/libavcodec/dfa.c b/libavcodec/dfa.c index 114c803f32..9114feb0b3 100644 --- a/libavcodec/dfa.c +++ b/libavcodec/dfa.c @@ -367,7 +367,11 @@ static int dfa_decode_frame(AVCodecContext *avctx, AVFrame *frame, s->pal[i] = bytestream2_get_be24(&gb) << 2; s->pal[i] |= 0xFFU << 24 | (s->pal[i] >> 6) & 0x30303; } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } else if (chunk_type <= 9) { if (decoder[chunk_type - 2](&gb, s->frame_buf, avctx->width, avctx->height)) { av_log(avctx, AV_LOG_ERROR, "Error decoding %s chunk\n", diff --git a/libavcodec/dsicinvideo.c b/libavcodec/dsicinvideo.c index 222044d125..000d79e169 100644 --- a/libavcodec/dsicinvideo.c +++ b/libavcodec/dsicinvideo.c @@ -293,7 +293,11 @@ static int cinvideo_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return res; memcpy(cin->frame->data[1], cin->palette, sizeof(cin->palette)); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS cin->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif for (y = 0; y < cin->avctx->height; ++y) memcpy(cin->frame->data[0] + (cin->avctx->height - 1 - y) * cin->frame->linesize[0], cin->bitmap_table[CIN_CUR_BMP] + y * cin->avctx->width, diff --git a/libavcodec/dxa.c b/libavcodec/dxa.c index ecb48c9d3f..d903b7ecd4 100644 --- a/libavcodec/dxa.c +++ b/libavcodec/dxa.c @@ -230,7 +230,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0) return ret; memcpy(frame->data[1], c->pal, AVPALETTE_SIZE); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = pc; +FF_ENABLE_DEPRECATION_WARNINGS +#endif outptr = frame->data[0]; srcptr = c->decomp_buf; diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c index 228f652775..e4b334e10f 100644 --- a/libavcodec/flicvideo.c +++ b/libavcodec/flicvideo.c @@ -473,7 +473,11 @@ static int flic_decode_frame_8BPP(AVCodecContext *avctx, /* make the palette available on the way out */ memcpy(s->frame->data[1], s->palette, AVPALETTE_SIZE); if (s->new_palette) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS s->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif s->new_palette = 0; } diff --git a/libavcodec/gemdec.c b/libavcodec/gemdec.c index 73e907c041..9e2a50c766 100644 --- a/libavcodec/gemdec.c +++ b/libavcodec/gemdec.c @@ -181,7 +181,11 @@ static int gem_decode_frame(AVCodecContext *avctx, AVFrame *p, p->pict_type = AV_PICTURE_TYPE_I; p->flags |= AV_FRAME_FLAG_KEY; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS p->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif palette = (uint32_t *)p->data[1]; if (tag == AV_RB32("STTT")) { diff --git a/libavcodec/idcinvideo.c b/libavcodec/idcinvideo.c index f6b8b3cd69..d9e4633548 100644 --- a/libavcodec/idcinvideo.c +++ b/libavcodec/idcinvideo.c @@ -224,7 +224,14 @@ static int idcin_decode_frame(AVCodecContext *avctx, AVFrame *frame, if (idcin_decode_vlcs(s, frame)) return AVERROR_INVALIDDATA; - frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif /* make the palette available on the way out */ memcpy(frame->data[1], s->pal, AVPALETTE_SIZE); diff --git a/libavcodec/imx.c b/libavcodec/imx.c index 4ae68eb93c..0d9d9b5bb9 100644 --- a/libavcodec/imx.c +++ b/libavcodec/imx.c @@ -58,11 +58,19 @@ static int imx_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return ret; if (ff_copy_palette(imx->pal, avpkt, avctx)) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif frame->flags |= AV_FRAME_FLAG_KEY; } else { frame->flags &= ~AV_FRAME_FLAG_KEY; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } bytestream2_init(&gb, avpkt->data, avpkt->size); diff --git a/libavcodec/interplayvideo.c b/libavcodec/interplayvideo.c index 1a3461bf10..1f0414bbaf 100644 --- a/libavcodec/interplayvideo.c +++ b/libavcodec/interplayvideo.c @@ -1315,7 +1315,14 @@ static int ipvideo_decode_frame(AVCodecContext *avctx, AVFrame *frame, return ret; if (!s->is_16bpp) { - frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif } switch (frame_format) { diff --git a/libavcodec/jvdec.c b/libavcodec/jvdec.c index f44b21af11..13ede9068a 100644 --- a/libavcodec/jvdec.c +++ b/libavcodec/jvdec.c @@ -37,7 +37,9 @@ typedef struct JvContext { BlockDSPContext bdsp; AVFrame *frame; uint32_t palette[AVPALETTE_COUNT]; +#if FF_API_PALETTE_HAS_CHANGED int palette_has_changed; +#endif } JvContext; static av_cold int decode_init(AVCodecContext *avctx) @@ -207,14 +209,20 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe, s->palette[i] = 0xFFU << 24 | pal << 2 | ((pal >> 4) & 0x30303); buf += 3; } +#if FF_API_PALETTE_HAS_CHANGED s->palette_has_changed = 1; +#endif } if (video_size) { s->frame->flags |= AV_FRAME_FLAG_KEY; s->frame->pict_type = AV_PICTURE_TYPE_I; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS s->frame->palette_has_changed = s->palette_has_changed; s->palette_has_changed = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(s->frame->data[1], s->palette, AVPALETTE_SIZE); if ((ret = av_frame_ref(rframe, s->frame)) < 0) diff --git a/libavcodec/kmvc.c b/libavcodec/kmvc.c index de01f6b75b..83aba4b252 100644 --- a/libavcodec/kmvc.c +++ b/libavcodec/kmvc.c @@ -273,7 +273,14 @@ static int decode_frame(AVCodecContext * avctx, AVFrame *frame, if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; - frame->palette_has_changed = ff_copy_palette(ctx->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + frame->palette_has_changed = +#endif + ff_copy_palette(ctx->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif header = bytestream2_get_byte(&ctx->g); @@ -296,7 +303,11 @@ static int decode_frame(AVCodecContext * avctx, AVFrame *frame, } if (header & KMVC_PALETTE) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif // palette starts from index 1 and has 127 entries for (i = 1; i <= ctx->palsize; i++) { ctx->pal[i] = 0xFFU << 24 | bytestream2_get_be24(&ctx->g); @@ -305,7 +316,11 @@ static int decode_frame(AVCodecContext * avctx, AVFrame *frame, if (ctx->setpal) { ctx->setpal = 0; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } /* make the palette available on the way out */ diff --git a/libavcodec/mscc.c b/libavcodec/mscc.c index 1844664477..d1d23e6751 100644 --- a/libavcodec/mscc.c +++ b/libavcodec/mscc.c @@ -150,7 +150,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &size); if (pal && size == AVPALETTE_SIZE) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif for (j = 0; j < 256; j++) s->pal[j] = 0xFF000000 | AV_RL32(pal + j * 4); } else if (pal) { diff --git a/libavcodec/msrle.c b/libavcodec/msrle.c index b6fa7f7abb..51e843e4a6 100644 --- a/libavcodec/msrle.c +++ b/libavcodec/msrle.c @@ -95,7 +95,14 @@ static int msrle_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return ret; if (avctx->bits_per_coded_sample > 1 && avctx->bits_per_coded_sample <= 8) { - s->frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + s->frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif /* make the palette available */ memcpy(s->frame->data[1], s->pal, AVPALETTE_SIZE); diff --git a/libavcodec/mss1.c b/libavcodec/mss1.c index dc06a9e236..fb5fc34ea1 100644 --- a/libavcodec/mss1.c +++ b/libavcodec/mss1.c @@ -178,7 +178,11 @@ static int mss1_decode_frame(AVCodecContext *avctx, AVFrame *rframe, if (c->corrupted) return AVERROR_INVALIDDATA; memcpy(ctx->pic->data[1], c->pal, AVPALETTE_SIZE); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS ctx->pic->palette_has_changed = pal_changed; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if ((ret = av_frame_ref(rframe, ctx->pic)) < 0) return ret; diff --git a/libavcodec/msvideo1.c b/libavcodec/msvideo1.c index 9903ff36a7..ca4583d841 100644 --- a/libavcodec/msvideo1.c +++ b/libavcodec/msvideo1.c @@ -312,7 +312,14 @@ static int msvideo1_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return ret; if (s->mode_8bit) { - s->frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + s->frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif } if (s->mode_8bit) diff --git a/libavcodec/pafvideo.c b/libavcodec/pafvideo.c index fa914ccbaa..14eb42435a 100644 --- a/libavcodec/pafvideo.c +++ b/libavcodec/pafvideo.c @@ -327,7 +327,11 @@ static int paf_video_decode(AVCodecContext *avctx, AVFrame *rframe, b = b << 2 | b >> 4; *out++ = (0xFFU << 24) | (r << 16) | (g << 8) | b; } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS c->pic->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } c->dirty[c->current_frame] = 1; diff --git a/libavcodec/pictordec.c b/libavcodec/pictordec.c index aef3d3de76..5aaa725bd3 100644 --- a/libavcodec/pictordec.c +++ b/libavcodec/pictordec.c @@ -191,7 +191,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, return ret; memset(frame->data[0], 0, s->height * frame->linesize[0]); frame->pict_type = AV_PICTURE_TYPE_I; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif pos_after_pal = bytestream2_tell(&s->g) + esize; palette = (uint32_t*)frame->data[1]; diff --git a/libavcodec/psd.c b/libavcodec/psd.c index ee96bd1237..d3456e6b3d 100644 --- a/libavcodec/psd.c +++ b/libavcodec/psd.c @@ -532,7 +532,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *picture, } if (s->color_mode == PSD_INDEXED) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS picture->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(picture->data[1], s->palette, AVPALETTE_SIZE); } diff --git a/libavcodec/qdrw.c b/libavcodec/qdrw.c index 65e7269e5d..21a53b8e72 100644 --- a/libavcodec/qdrw.c +++ b/libavcodec/qdrw.c @@ -384,7 +384,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *p, ret = parse_palette(avctx, &gbc, (uint32_t *)p->data[1], colors, flags & 0x8000); if (ret < 0) return ret; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS p->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif /* jump to image data */ bytestream2_skip(&gbc, 18); diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index 43a24fab08..1f76ebc5a1 100644 --- a/libavcodec/qpeg.c +++ b/libavcodec/qpeg.c @@ -297,7 +297,14 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *p, } /* make the palette available on the way out */ - p->palette_has_changed = ff_copy_palette(a->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + p->palette_has_changed = +#endif + ff_copy_palette(a->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(p->data[1], a->pal, AVPALETTE_SIZE); av_frame_unref(ref); diff --git a/libavcodec/qtrle.c b/libavcodec/qtrle.c index 5cb18c86c2..9b016d7e83 100644 --- a/libavcodec/qtrle.c +++ b/libavcodec/qtrle.c @@ -537,7 +537,14 @@ static int qtrle_decode_frame(AVCodecContext *avctx, AVFrame *rframe, } if(has_palette) { - s->frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + s->frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif /* make the palette available on the way out */ memcpy(s->frame->data[1], s->pal, AVPALETTE_SIZE); diff --git a/libavcodec/rawdec.c b/libavcodec/rawdec.c index baca16c743..8e9358f95d 100644 --- a/libavcodec/rawdec.c +++ b/libavcodec/rawdec.c @@ -373,7 +373,11 @@ static int raw_decode(AVCodecContext *avctx, AVFrame *frame, } if (ff_copy_palette(context->palette->data, avpkt, avctx)) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } else if (context->is_nut_pal8) { int vid_size = avctx->width * avctx->height; int pal_size = avpkt->size - vid_size; @@ -381,7 +385,11 @@ static int raw_decode(AVCodecContext *avctx, AVFrame *frame, if (avpkt->size > vid_size && pal_size <= AVPALETTE_SIZE) { const uint8_t *pal = avpkt->data + vid_size; memcpy(context->palette->data, pal, pal_size); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } } } diff --git a/libavcodec/rscc.c b/libavcodec/rscc.c index 2ae8899977..ace9aeeb40 100644 --- a/libavcodec/rscc.c +++ b/libavcodec/rscc.c @@ -346,7 +346,14 @@ static int rscc_decode_frame(AVCodecContext *avctx, AVFrame *frame, /* Palette handling */ if (avctx->pix_fmt == AV_PIX_FMT_PAL8) { - frame->palette_has_changed = ff_copy_palette(ctx->palette, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + frame->palette_has_changed = +#endif + ff_copy_palette(ctx->palette, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(frame->data[1], ctx->palette, AVPALETTE_SIZE); } // We only return a picture when enough of it is undamaged, this avoids copying nearly broken frames around diff --git a/libavcodec/sga.c b/libavcodec/sga.c index 16442b40be..eae691adad 100644 --- a/libavcodec/sga.c +++ b/libavcodec/sga.c @@ -497,7 +497,11 @@ static int sga_decode_frame(AVCodecContext *avctx, AVFrame *frame, } memcpy(frame->data[1], s->pal, AVPALETTE_SIZE); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif frame->pict_type = AV_PICTURE_TYPE_I; frame->flags |= AV_FRAME_FLAG_KEY; diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c index 08841f4cce..b98e7275f6 100644 --- a/libavcodec/smacker.c +++ b/libavcodec/smacker.c @@ -392,7 +392,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe, pal = (uint32_t*)smk->pic->data[1]; bytestream2_init(&gb2, avpkt->data, avpkt->size); flags = bytestream2_get_byteu(&gb2); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS smk->pic->palette_has_changed = flags & 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (flags & 2) { smk->pic->flags |= AV_FRAME_FLAG_KEY; smk->pic->pict_type = AV_PICTURE_TYPE_I; diff --git a/libavcodec/smc.c b/libavcodec/smc.c index 2b10e74386..3e8a89ced1 100644 --- a/libavcodec/smc.c +++ b/libavcodec/smc.c @@ -437,7 +437,14 @@ static int smc_decode_frame(AVCodecContext *avctx, AVFrame *rframe, if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0) return ret; - s->frame->palette_has_changed = ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + s->frame->palette_has_changed = +#endif + ff_copy_palette(s->pal, avpkt, avctx); +#if FF_API_PALETTE_HAS_CHANGED +FF_ENABLE_DEPRECATION_WARNINGS +#endif bytestream2_init(&gb, buf, buf_size); ret = smc_decode_stream(s, &gb); diff --git a/libavcodec/targa.c b/libavcodec/targa.c index 07005f2be6..59fdc428d9 100644 --- a/libavcodec/targa.c +++ b/libavcodec/targa.c @@ -249,7 +249,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *p, } break; } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS p->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } } diff --git a/libavcodec/tiertexseqv.c b/libavcodec/tiertexseqv.c index 19c0671bf6..cdc885558b 100644 --- a/libavcodec/tiertexseqv.c +++ b/libavcodec/tiertexseqv.c @@ -182,7 +182,11 @@ static int seqvideo_decode(SeqVideoContext *seq, const unsigned char *data, int c[j] = (*data << 2) | (*data >> 4); palette[i] = 0xFFU << 24 | AV_RB24(c); } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS seq->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } if (flags & 2) { diff --git a/libavcodec/tmv.c b/libavcodec/tmv.c index 582b6ddd02..2a7e1a105f 100644 --- a/libavcodec/tmv.c +++ b/libavcodec/tmv.c @@ -60,7 +60,11 @@ static int tmv_decode_frame(AVCodecContext *avctx, AVFrame *frame, frame->flags |= AV_FRAME_FLAG_KEY; dst = frame->data[0]; +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(frame->data[1], ff_cga_palette, 16 * 4); memset(frame->data[1] + 16 * 4, 0, AVPALETTE_SIZE - 16 * 4); diff --git a/libavcodec/tscc.c b/libavcodec/tscc.c index 0ebe641ab1..346d93e1f2 100644 --- a/libavcodec/tscc.c +++ b/libavcodec/tscc.c @@ -106,7 +106,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe, /* make the palette available on the way out */ if (c->avctx->pix_fmt == AV_PIX_FMT_PAL8) { +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = palette_has_changed; +FF_ENABLE_DEPRECATION_WARNINGS +#endif memcpy(frame->data[1], c->pal, AVPALETTE_SIZE); } diff --git a/libavcodec/vb.c b/libavcodec/vb.c index 8b0e216473..5744faa983 100644 --- a/libavcodec/vb.c +++ b/libavcodec/vb.c @@ -230,7 +230,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, } memcpy(frame->data[1], c->pal, AVPALETTE_SIZE); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = flags & VB_HAS_PALETTE; +FF_ENABLE_DEPRECATION_WARNINGS +#endif outptr = frame->data[0]; srcptr = c->frame; diff --git a/libavcodec/vqavideo.c b/libavcodec/vqavideo.c index 0573696d94..2977cf9a52 100644 --- a/libavcodec/vqavideo.c +++ b/libavcodec/vqavideo.c @@ -809,7 +809,11 @@ static int vqa_decode_frame(AVCodecContext *avctx, AVFrame *rframe, /* make the palette available on the way out */ memcpy(s->frame->data[1], s->palette, PALETTE_COUNT * 4); +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS s->frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } else if (avctx->pix_fmt == AV_PIX_FMT_RGB555LE) { if ((res = vqa_decode_frame_hicolor(s, s->frame)) < 0) return res; diff --git a/libavcodec/yop.c b/libavcodec/yop.c index 14244c942a..1294c5cc00 100644 --- a/libavcodec/yop.c +++ b/libavcodec/yop.c @@ -232,7 +232,11 @@ static int yop_decode_frame(AVCodecContext *avctx, AVFrame *rframe, (palette[i + firstcolor] >> 6) & 0x30303; } +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS frame->palette_has_changed = 1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif for (y = 0; y < avctx->height; y += 2) { for (x = 0; x < avctx->width; x += 2) { diff --git a/libavutil/frame.c b/libavutil/frame.c index 97d40208c8..b0d8eebdde 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -284,7 +284,11 @@ FF_DISABLE_DEPRECATION_WARNINGS dst->top_field_first = src->top_field_first; FF_ENABLE_DEPRECATION_WARNINGS #endif +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS dst->palette_has_changed = src->palette_has_changed; +FF_ENABLE_DEPRECATION_WARNINGS +#endif dst->sample_rate = src->sample_rate; dst->opaque = src->opaque; dst->pkt_dts = src->pkt_dts; diff --git a/libavutil/frame.h b/libavutil/frame.h index ed3f199ce1..bb634008ea 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -528,10 +528,13 @@ typedef struct AVFrame { int top_field_first; #endif +#if FF_API_PALETTE_HAS_CHANGED /** * Tell user application that palette has changed from previous frame. */ + attribute_deprecated int palette_has_changed; +#endif #if FF_API_REORDERED_OPAQUE /** diff --git a/libavutil/version.h b/libavutil/version.h index 341bcbf188..c41c6afeac 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -117,6 +117,7 @@ #define FF_API_FRAME_PKT (LIBAVUTIL_VERSION_MAJOR < 59) #define FF_API_INTERLACED_FRAME (LIBAVUTIL_VERSION_MAJOR < 59) #define FF_API_FRAME_KEY (LIBAVUTIL_VERSION_MAJOR < 59) +#define FF_API_PALETTE_HAS_CHANGED (LIBAVUTIL_VERSION_MAJOR < 59) /** * @}