avcodec: add common fflcms2 boilerplate
Handling this in general code makes more sense than handling it in individual codec files, because it would be a lot of unnecessary code duplication for the plenty of formats that support exporting ICC profiles (jpg, png, tiff, webp, jxl, ...). encode.c and decode.c will be in charge of initializing this state as needed, so we merely need to make sure to uninit it afterwards from the common destructor path. Signed-off-by: Niklas Haas <git@haasn.dev>
This commit is contained in:
parent
e1a0f2df3d
commit
c688ddc067
2
configure
vendored
2
configure
vendored
@ -3814,7 +3814,7 @@ swresample_suggest="libm libsoxr stdatomic"
|
||||
swscale_deps="avutil"
|
||||
swscale_suggest="libm stdatomic"
|
||||
|
||||
avcodec_extralibs="pthreads_extralibs iconv_extralibs dxva2_extralibs"
|
||||
avcodec_extralibs="pthreads_extralibs iconv_extralibs dxva2_extralibs lcms2_extralibs"
|
||||
avfilter_extralibs="pthreads_extralibs"
|
||||
avutil_extralibs="d3d11va_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs"
|
||||
|
||||
|
@ -114,6 +114,7 @@ OBJS-$(CONFIG_INTRAX8) += intrax8.o intrax8dsp.o msmpeg4data.o
|
||||
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_LLAUDDSP) += lossless_audiodsp.o
|
||||
OBJS-$(CONFIG_LLVIDDSP) += lossless_videodsp.o
|
||||
OBJS-$(CONFIG_LLVIDENCDSP) += lossless_videoencdsp.o
|
||||
|
@ -479,6 +479,10 @@ av_cold int avcodec_close(AVCodecContext *avctx)
|
||||
|
||||
av_channel_layout_uninit(&avci->initial_ch_layout);
|
||||
|
||||
#if CONFIG_LCMS2
|
||||
ff_icc_context_uninit(&avci->icc);
|
||||
#endif
|
||||
|
||||
av_freep(&avctx->internal);
|
||||
}
|
||||
|
||||
|
@ -49,6 +49,10 @@
|
||||
#include "internal.h"
|
||||
#include "thread.h"
|
||||
|
||||
#if CONFIG_LCMS2
|
||||
# include "fflcms2.h"
|
||||
#endif
|
||||
|
||||
static int apply_param_change(AVCodecContext *avctx, const AVPacket *avpkt)
|
||||
{
|
||||
int ret;
|
||||
|
@ -33,6 +33,10 @@
|
||||
#include "avcodec.h"
|
||||
#include "config.h"
|
||||
|
||||
#if CONFIG_LCMS2
|
||||
# include "fflcms2.h"
|
||||
#endif
|
||||
|
||||
#define FF_SANE_NB_CHANNELS 512U
|
||||
|
||||
#if HAVE_SIMD_ALIGN_64
|
||||
@ -146,6 +150,10 @@ typedef struct AVCodecInternal {
|
||||
uint64_t initial_channel_layout;
|
||||
#endif
|
||||
AVChannelLayout initial_ch_layout;
|
||||
|
||||
#if CONFIG_LCMS2
|
||||
FFIccContext icc; /* used to read and write embedded ICC profiles */
|
||||
#endif
|
||||
} AVCodecInternal;
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user