Lines Matching defs:avctx

54 static int libjxl_init_jxl_decoder(AVCodecContext *avctx)
56 LibJxlDecodeContext *ctx = avctx->priv_data;
60 av_log(avctx, AV_LOG_ERROR, "Error subscribing to JXL events\n");
65 av_log(avctx, AV_LOG_ERROR, "Failed to set JxlThreadParallelRunner\n");
75 static av_cold int libjxl_decode_init(AVCodecContext *avctx)
77 LibJxlDecodeContext *ctx = avctx->priv_data;
83 av_log(avctx, AV_LOG_ERROR, "Failed to create JxlDecoder\n");
87 ctx->runner = JxlThreadParallelRunnerCreate(&manager, ff_libjxl_get_threadcount(avctx->thread_count));
89 av_log(avctx, AV_LOG_ERROR, "Failed to create JxlThreadParallelRunner\n");
93 return libjxl_init_jxl_decoder(avctx);
96 static enum AVPixelFormat libjxl_get_pix_fmt(void *avctx, const JxlBasicInfo *basic_info, JxlPixelFormat *format)
123 av_log(avctx, AV_LOG_WARNING, "Downsampling larger integer to 16-bit via libjxl\n");
125 av_log(avctx, AV_LOG_WARNING, "Downsampling float to 16-bit integer via libjxl\n");
133 static enum AVColorPrimaries libjxl_get_primaries(void *avctx, const JxlColorEncoding *jxl_color)
153 av_log(avctx, AV_LOG_WARNING, "Changing unknown white point to D65\n");
160 static enum AVColorTransferCharacteristic libjxl_get_trc(void *avctx, const JxlColorEncoding *jxl_color)
175 av_log(avctx, AV_LOG_WARNING, "Unsupported gamma transfer: %f\n", jxl_color->gamma);
178 av_log(avctx, AV_LOG_WARNING, "Unknown transfer function: %d\n", jxl_color->transfer_function);
184 static int libjxl_get_icc(AVCodecContext *avctx)
186 LibJxlDecodeContext *ctx = avctx->priv_data;
200 av_log(avctx, AV_LOG_WARNING, "Unable to obtain ICC Profile\n");
225 static int libjxl_color_encoding_event(AVCodecContext *avctx, AVFrame *frame)
227 LibJxlDecodeContext *ctx = avctx->priv_data;
248 av_log(avctx, AV_LOG_VERBOSE, "Using embedded ICC Profile\n");
249 if ((ret = libjxl_get_icc(avctx)) < 0)
261 avctx->color_range = frame->color_range = AVCOL_RANGE_JPEG;
263 avctx->colorspace = AVCOL_SPC_RGB;
264 avctx->color_primaries = AVCOL_PRI_UNSPECIFIED;
265 avctx->color_trc = AVCOL_TRC_UNSPECIFIED;
270 if (avctx->colorspace == AVCOL_SPC_RGB)
271 avctx->color_primaries = libjxl_get_primaries(avctx, &jxl_color);
272 avctx->color_trc = libjxl_get_trc(avctx, &jxl_color);
275 if (avctx->color_primaries == AVCOL_PRI_UNSPECIFIED) {
276 if (avctx->colorspace == AVCOL_SPC_RGB) {
277 av_log(avctx, AV_LOG_WARNING, "Falling back on wide gamut output\n");
279 avctx->color_primaries = AVCOL_PRI_BT2020;
284 if (avctx->color_trc == AVCOL_TRC_UNSPECIFIED) {
287 av_log(avctx, AV_LOG_WARNING, "Falling back on Linear Light transfer\n");
289 avctx->color_trc = AVCOL_TRC_LINEAR;
291 av_log(avctx, AV_LOG_WARNING, "Falling back on iec61966-2-1/sRGB transfer\n");
293 avctx->color_trc = AVCOL_TRC_IEC61966_2_1;
298 jxl_color.color_space = avctx->colorspace == AVCOL_SPC_RGB ? JXL_COLOR_SPACE_RGB : JXL_COLOR_SPACE_GRAY;
301 av_log(avctx, AV_LOG_WARNING, "Unable to set fallback color encoding\n");
307 avctx->color_trc = AVCOL_TRC_UNSPECIFIED;
308 avctx->color_primaries = AVCOL_PRI_UNSPECIFIED;
309 if ((ret = libjxl_get_icc(avctx)) < 0)
314 frame->color_trc = avctx->color_trc;
315 frame->color_primaries = avctx->color_primaries;
316 frame->colorspace = avctx->colorspace;
321 static int libjxl_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt)
323 LibJxlDecodeContext *ctx = avctx->priv_data;
336 av_log(avctx, AV_LOG_ERROR, "Unknown libjxl decode error\n");
351 av_log(avctx, AV_LOG_ERROR, "Unknown libjxl decode error\n");
355 av_log(avctx, AV_LOG_ERROR, "Unexpected end of JXL codestream\n");
358 av_log(avctx, AV_LOG_DEBUG, "NEED_MORE_INPUT event emitted\n");
361 av_log(avctx, AV_LOG_DEBUG, "BASIC_INFO event emitted\n");
367 av_log(avctx, AV_LOG_ERROR, "Bad libjxl basic info event\n");
370 avctx->pix_fmt = libjxl_get_pix_fmt(avctx, &ctx->basic_info, &ctx->jxl_pixfmt);
371 if (avctx->pix_fmt == AV_PIX_FMT_NONE) {
372 av_log(avctx, AV_LOG_ERROR, "Bad libjxl pixel format\n");
375 if ((ret = ff_set_dimensions(avctx, ctx->basic_info.xsize, ctx->basic_info.ysize)) < 0)
379 av_log(avctx, AV_LOG_DEBUG, "COLOR_ENCODING event emitted\n");
380 if ((ret = libjxl_color_encoding_event(avctx, frame)) < 0)
384 av_log(avctx, AV_LOG_DEBUG, "NEED_IMAGE_OUT_BUFFER event emitted\n");
385 if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
390 av_log(avctx, AV_LOG_ERROR, "Bad libjxl dec need image out buffer event\n");
396 av_log(avctx, AV_LOG_DEBUG, "FULL_IMAGE event emitted\n");
409 av_log(avctx, AV_LOG_DEBUG, "SUCCESS event emitted\n");
422 libjxl_init_jxl_decoder(avctx);
427 av_log(avctx, AV_LOG_ERROR, "Bad libjxl event: %d\n", jret);
433 static av_cold int libjxl_decode_close(AVCodecContext *avctx)
435 LibJxlDecodeContext *ctx = avctx->priv_data;