From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 285414CFD8 for ; Tue, 4 Nov 2025 15:45:33 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'1Pnv5jnyCt/NGT0McxVK8Zh75uLW90qjnoMS3saS0Ac=', expected b'U7w1S5x9bUx/Vyu2UTs0Ar1w6ssMg0Xic2MnkhdqrtQ=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1762271121; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=1Pnv5jnyCt/NGT0McxVK8Zh75uLW90qjnoMS3saS0Ac=; b=iUOgehmCng40VevFoXBEC2qwBmCbuL2dp0A70rFkyBe9O4EsPTXzaDOVFf7iEfQwwavgd LUaG9xTdSrd6KroPDoKrf+dGxJ+LoyZECFmVL0CZwKHHJnUUDlEwEmbczQHfAJnCRVEbCyH 9K5HH5/vj+ghDtf19plLu/SlmS+uBLt9agu2E8wA39qAqxjBUCSyN0Ll++sYuImLaqunGM6 SzWbQKybwkJUkyHGD+VZG0z5JOg8MNWPb+66gSMxlUlGu5I7G02VuDy63YsjhKbII6WZPkm yxLZA9vS5TPU/c1eN646I7WBnDLjhEZJyWUQN/b5uH/FcZoU9I8AHZnDt1Mg== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 124BF68FB46; Tue, 4 Nov 2025 17:45:21 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1762271103; b=fQI76+X0CD10irWnFQFpVLH1FV3RAviKuU4q364yfRQ6zlFpj+lK3nZMOABfWtRZssvWj r0zygGyVSQc9vqR+M11LFpwOodlu6ieFRCaAJd2lONth4o2bFssR+ERPF4RjgbR5JG1U4Yv RAUaC43La4WePuSqsji2GKZ9GHvhovmzWYITKuudUIiqH5Hd61V0z+/N3LHbVBxabk05kL7 8X53SEuPPYpa8dRMBXJwYMy1UrBAVJ+OKRX52JyPq0uzARv+z9wYyvxZ8ZRd9hXSS+GLCu7 56fbHQwDneWj0OfLbnvMml4ILlYHysJJ+3rcWYTc34PgvDfA1B7/xPqx9C9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1762271103; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=fpRgbH577vDQRmlmgN6Cg+U3zwWknZZwr2GwSW4nxXw=; b=LXS14ebw2S/wtcc2W/gN0uEJnh/X/fGAZLqKR7xFprShHiCorD3lJ3VkdDEGEo50oF2dW PpWTI7iQkjr4ULAi3NiOMwGXyTPDRSKt5tlHyclqTxd63WhtLnEgRC9cs3ipy7DHcWfeLZq 7mHz2dgKgwa2X0K3w697PsuX1PMujK9bfYdqZb/GpbHiglNvo2iQG/NZgKfjs0aYLNfsETu E4dUBuy7mtWr0AzWi+0TJxLeg5ILCmjlnxWQrCA20p7Tm753E5Cx9IrUc2ioMBkLhSskjZs Nj3h7Bm12obiqCJQnWU9xqphFgGZmYCKf+sPqOBgWWIat9m7I0pYPLkHacFg== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1762099092; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=U7w1S5x9bUx/Vyu2UTs0Ar1w6ssMg0Xic2MnkhdqrtQ=; b=kCjecfMhsRxSLomCj9Kj1zi7lltaLsX1UPsZJqGJxP70AEOgj72ZDhoRJwPZifY3LTVpx reQCa63TbvB75PFADS9oUuy2jYliVZPXySzkLnQnwpNEoXsByPDSIj3q5HwRjRVEdwq3nSE Nkf7wgZlBpB4Fy8jWo0gUIVCWazS8pXXb6Tl35rHNuXcCScVYrYX2mAwA3eZ6vFBnqProU+ LKgI+h9JmesrGNWnyQ2I/UOQ0J/9cVaKNgg9o1TGjuvYE7XvdjvTUAaaAZq0/oHdXFRd5/u T4gwJgPDBehDl/9r8VOPsWJcUJDM3RGBlVa8kaXSeBo7RbRITHniKRR8NJjw== Received: from 02c22a36bd31 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 56F266802DB for ; Sun, 2 Nov 2025 17:58:12 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Sun, 02 Nov 2025 15:58:11 -0000 Message-ID: <176209909250.25.17714910563769434843@2cb04c0e5124> X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: administrivia X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header Message-ID-Hash: AU6RABRL6FQCW5WK3W4ZH2UUQGNS4CUL X-Message-ID-Hash: AU6RABRL6FQCW5WK3W4ZH2UUQGNS4CUL X-Mailman-Approved-At: Tue, 04 Nov 2025 15:44:57 +0000 X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] Optimize lcevc away if disabled (PR #20818) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: mkver via ffmpeg-devel Cc: mkver Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20818 opened by mkver URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20818 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20818.patch >>From abf819cff61d779f131fa7c23232952b46496928 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 2 Nov 2025 15:03:33 +0100 Subject: [PATCH 1/5] avcodec/pthread_frame: Call ff_decode_internal_sync() only during init It is not necessary to do it more than once, as none of the fields set change after init. Signed-off-by: Andreas Rheinhardt --- libavcodec/pthread_frame.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c index abf0d5a199..0b56af916d 100644 --- a/libavcodec/pthread_frame.c +++ b/libavcodec/pthread_frame.c @@ -401,7 +401,6 @@ FF_ENABLE_DEPRECATION_WARNINGS dst->hwaccel_flags = src->hwaccel_flags; av_refstruct_replace(&dst->internal->pool, src->internal->pool); - ff_decode_internal_sync(dst, src); } if (for_user) { -- 2.49.1 >>From 182b9c7a4a7117371d51caa917f26162db53cc56 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 2 Nov 2025 15:29:59 +0100 Subject: [PATCH 2/5] avcodec/decode: Don't allocate LCEVC context for non-video Signed-off-by: Andreas Rheinhardt --- libavcodec/decode.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index d8e523f327..df4e1b38c7 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -2080,9 +2080,11 @@ int ff_decode_preinit(AVCodecContext *avctx) return ret; if (!(avctx->export_side_data & AV_CODEC_EXPORT_DATA_ENHANCEMENTS)) { - ret = ff_lcevc_alloc(&dc->lcevc); - if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) - return ret; + if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { + ret = ff_lcevc_alloc(&dc->lcevc); + if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) + return ret; + } } return 0; -- 2.49.1 >>From 2786e5a9ad32920fccee9352161e81c8e733563b Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 2 Nov 2025 16:00:06 +0100 Subject: [PATCH 3/5] avcodec/decode: Put lcevc fields into structure of their own Makes it easier to see that width and height in DecodeContext is actually a lcevc field. Signed-off-by: Andreas Rheinhardt --- libavcodec/decode.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index df4e1b38c7..b7859d3e25 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -94,10 +94,12 @@ typedef struct DecodeContext { */ uint64_t side_data_pref_mask; - FFLCEVCContext *lcevc; - int lcevc_frame; - int width; - int height; + struct { + FFLCEVCContext *ctx; + int frame; + int width; + int height; + } lcevc; } DecodeContext; static DecodeContext *decode_ctx(AVCodecInternal *avci) @@ -1661,12 +1663,12 @@ static void update_frame_props(AVCodecContext *avctx, AVFrame *frame) AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); - dc->lcevc_frame = dc->lcevc && avctx->codec_type == AVMEDIA_TYPE_VIDEO && + dc->lcevc.frame = dc->lcevc.ctx && avctx->codec_type == AVMEDIA_TYPE_VIDEO && av_frame_get_side_data(frame, AV_FRAME_DATA_LCEVC); - if (dc->lcevc_frame) { - dc->width = frame->width; - dc->height = frame->height; + if (dc->lcevc.frame) { + dc->lcevc.width = frame->width; + dc->lcevc.height = frame->height; frame->width = frame->width * 2 / FFMAX(frame->sample_aspect_ratio.den, 1); frame->height = frame->height * 2 / FFMAX(frame->sample_aspect_ratio.num, 1); } @@ -1677,7 +1679,7 @@ static int attach_post_process_data(AVCodecContext *avctx, AVFrame *frame) AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); - if (dc->lcevc_frame) { + if (dc->lcevc.frame) { FrameDecodeData *fdd = frame->private_ref; FFLCEVCFrame *frame_ctx; int ret; @@ -1692,13 +1694,13 @@ static int attach_post_process_data(AVCodecContext *avctx, AVFrame *frame) return AVERROR(ENOMEM); } - frame_ctx->lcevc = av_refstruct_ref(dc->lcevc); + frame_ctx->lcevc = av_refstruct_ref(dc->lcevc.ctx); frame_ctx->frame->width = frame->width; frame_ctx->frame->height = frame->height; frame_ctx->frame->format = frame->format; - frame->width = dc->width; - frame->height = dc->height; + frame->width = dc->lcevc.width; + frame->height = dc->lcevc.height; ret = avctx->get_buffer2(avctx, frame_ctx->frame, 0); if (ret < 0) { @@ -1712,7 +1714,7 @@ static int attach_post_process_data(AVCodecContext *avctx, AVFrame *frame) fdd->post_process_opaque_free = ff_lcevc_unref; fdd->post_process = ff_lcevc_process; } - dc->lcevc_frame = 0; + dc->lcevc.frame = 0; return 0; } @@ -2081,7 +2083,7 @@ int ff_decode_preinit(AVCodecContext *avctx) if (!(avctx->export_side_data & AV_CODEC_EXPORT_DATA_ENHANCEMENTS)) { if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { - ret = ff_lcevc_alloc(&dc->lcevc); + ret = ff_lcevc_alloc(&dc->lcevc.ctx); if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) return ret; } @@ -2324,7 +2326,7 @@ void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src) dst_dc->initial_pict_type = src_dc->initial_pict_type; dst_dc->intra_only_flag = src_dc->intra_only_flag; - av_refstruct_replace(&dst_dc->lcevc, src_dc->lcevc); + av_refstruct_replace(&dst_dc->lcevc.ctx, src_dc->lcevc.ctx); } void ff_decode_internal_uninit(AVCodecContext *avctx) @@ -2332,7 +2334,7 @@ void ff_decode_internal_uninit(AVCodecContext *avctx) AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); - av_refstruct_unref(&dc->lcevc); + av_refstruct_unref(&dc->lcevc.ctx); } static int attach_displaymatrix(AVCodecContext *avctx, AVFrame *frame, int orientation) -- 2.49.1 >>From 63685709b96e28691f0876f4b405fefb547e76c5 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 2 Nov 2025 16:49:26 +0100 Subject: [PATCH 4/5] avcodec/decode: Mark init,close functions as av_cold Signed-off-by: Andreas Rheinhardt --- libavcodec/decode.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index b7859d3e25..e20569e170 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1962,7 +1962,7 @@ static av_cold void progress_frame_pool_free_entry_cb(AVRefStructOpaque opaque, av_frame_free(&progress->f); } -int ff_decode_preinit(AVCodecContext *avctx) +av_cold int ff_decode_preinit(AVCodecContext *avctx) { AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); @@ -2296,7 +2296,7 @@ int ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, void **hwaccel_picture_pr return 0; } -void ff_decode_flush_buffers(AVCodecContext *avctx) +av_cold void ff_decode_flush_buffers(AVCodecContext *avctx) { AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); @@ -2314,12 +2314,12 @@ void ff_decode_flush_buffers(AVCodecContext *avctx) dc->draining_started = 0; } -AVCodecInternal *ff_decode_internal_alloc(void) +av_cold AVCodecInternal *ff_decode_internal_alloc(void) { return av_mallocz(sizeof(DecodeContext)); } -void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src) +av_cold void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src) { const DecodeContext *src_dc = decode_ctx(src->internal); DecodeContext *dst_dc = decode_ctx(dst->internal); @@ -2329,7 +2329,7 @@ void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src) av_refstruct_replace(&dst_dc->lcevc.ctx, src_dc->lcevc.ctx); } -void ff_decode_internal_uninit(AVCodecContext *avctx) +av_cold void ff_decode_internal_uninit(AVCodecContext *avctx) { AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); -- 2.49.1 >>From 8e90f150ebccf3f30fe139245b7d22fd6f1ee4a9 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 2 Nov 2025 16:50:36 +0100 Subject: [PATCH 5/5] avcodec/decode: Optimize lcevc away if disabled Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 2 +- libavcodec/decode.c | 12 ++++++++++++ libavcodec/lcevcdec.c | 10 ---------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 972a17f060..49c284ef9e 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -47,7 +47,6 @@ OBJS = ac3_parser.o \ get_buffer.o \ imgconvert.o \ jni.o \ - lcevcdec.o \ mathtables.o \ mediacodec.o \ mpeg12framerate.o \ @@ -130,6 +129,7 @@ OBJS-$(CONFIG_IVIDSP) += ivi_dsp.o OBJS-$(CONFIG_JNI) += ffjni.o jni.o OBJS-$(CONFIG_JPEGTABLES) += jpegtables.o OBJS-$(CONFIG_LCMS2) += fflcms2.o +OBJS-$(CONFIG_LIBLCEVC_DEC) += lcevcdec.o OBJS-$(CONFIG_LLAUDDSP) += lossless_audiodsp.o OBJS-$(CONFIG_LLVIDDSP) += lossless_videodsp.o OBJS-$(CONFIG_LLVIDENCDSP) += lossless_videoencdsp.o diff --git a/libavcodec/decode.c b/libavcodec/decode.c index e20569e170..8976f22035 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -94,12 +94,14 @@ typedef struct DecodeContext { */ uint64_t side_data_pref_mask; +#if CONFIG_LIBLCEVC_DEC struct { FFLCEVCContext *ctx; int frame; int width; int height; } lcevc; +#endif } DecodeContext; static DecodeContext *decode_ctx(AVCodecInternal *avci) @@ -1660,6 +1662,7 @@ int ff_attach_decode_data(AVFrame *frame) static void update_frame_props(AVCodecContext *avctx, AVFrame *frame) { +#if CONFIG_LIBLCEVC_DEC AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); @@ -1672,10 +1675,12 @@ static void update_frame_props(AVCodecContext *avctx, AVFrame *frame) frame->width = frame->width * 2 / FFMAX(frame->sample_aspect_ratio.den, 1); frame->height = frame->height * 2 / FFMAX(frame->sample_aspect_ratio.num, 1); } +#endif } static int attach_post_process_data(AVCodecContext *avctx, AVFrame *frame) { +#if CONFIG_LIBLCEVC_DEC AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); @@ -1715,6 +1720,7 @@ static int attach_post_process_data(AVCodecContext *avctx, AVFrame *frame) fdd->post_process = ff_lcevc_process; } dc->lcevc.frame = 0; +#endif return 0; } @@ -2083,9 +2089,11 @@ av_cold int ff_decode_preinit(AVCodecContext *avctx) if (!(avctx->export_side_data & AV_CODEC_EXPORT_DATA_ENHANCEMENTS)) { if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { +#if CONFIG_LIBLCEVC_DEC ret = ff_lcevc_alloc(&dc->lcevc.ctx); if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) return ret; +#endif } } @@ -2326,15 +2334,19 @@ av_cold void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext * dst_dc->initial_pict_type = src_dc->initial_pict_type; dst_dc->intra_only_flag = src_dc->intra_only_flag; +#if CONFIG_LIBLCEVC_DEC av_refstruct_replace(&dst_dc->lcevc.ctx, src_dc->lcevc.ctx); +#endif } av_cold void ff_decode_internal_uninit(AVCodecContext *avctx) { +#if CONFIG_LIBLCEVC_DEC AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); av_refstruct_unref(&dc->lcevc.ctx); +#endif } static int attach_displaymatrix(AVCodecContext *avctx, AVFrame *frame, int orientation) diff --git a/libavcodec/lcevcdec.c b/libavcodec/lcevcdec.c index c2d1b11383..f55f55a03f 100644 --- a/libavcodec/lcevcdec.c +++ b/libavcodec/lcevcdec.c @@ -16,8 +16,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "config_components.h" - #include "libavutil/avassert.h" #include "libavutil/frame.h" #include "libavutil/imgutils.h" @@ -28,7 +26,6 @@ #include "decode.h" #include "lcevcdec.h" -#if CONFIG_LIBLCEVC_DEC static LCEVC_ColorFormat map_format(int format) { switch (format) { @@ -249,11 +246,9 @@ static void lcevc_free(AVRefStructOpaque unused, void *obj) LCEVC_DestroyDecoder(lcevc->decoder); memset(lcevc, 0, sizeof(*lcevc)); } -#endif static int lcevc_init(FFLCEVCContext *lcevc, void *logctx) { -#if CONFIG_LIBLCEVC_DEC LCEVC_AccelContextHandle dummy = { 0 }; const int32_t event = LCEVC_Log; @@ -272,7 +267,6 @@ static int lcevc_init(FFLCEVCContext *lcevc, void *logctx) return AVERROR_EXTERNAL; } -#endif lcevc->initialized = 1; return 0; @@ -291,7 +285,6 @@ int ff_lcevc_process(void *logctx, AVFrame *frame) return ret; } -#if CONFIG_LIBLCEVC_DEC av_assert0(frame_ctx->frame); @@ -304,7 +297,6 @@ int ff_lcevc_process(void *logctx, AVFrame *frame) return ret; av_frame_remove_side_data(frame, AV_FRAME_DATA_LCEVC); -#endif return 0; } @@ -312,11 +304,9 @@ int ff_lcevc_process(void *logctx, AVFrame *frame) int ff_lcevc_alloc(FFLCEVCContext **plcevc) { FFLCEVCContext *lcevc = NULL; -#if CONFIG_LIBLCEVC_DEC lcevc = av_refstruct_alloc_ext(sizeof(*lcevc), 0, NULL, lcevc_free); if (!lcevc) return AVERROR(ENOMEM); -#endif *plcevc = lcevc; return 0; } -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org