diff --git a/libavcodec/utils.c b/libavcodec/utils.c index e1301b0875..565e2ffa58 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -786,13 +786,16 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame) frame->reordered_opaque = avctx->reordered_opaque; #if FF_API_AVFRAME_COLORSPACE - frame->color_primaries = avctx->color_primaries; - frame->color_trc = avctx->color_trc; + if (frame->color_primaries == AVCOL_PRI_UNSPECIFIED) + frame->color_primaries = avctx->color_primaries; + if (frame->color_trc == AVCOL_TRC_UNSPECIFIED) + frame->color_trc = avctx->color_trc; if (av_frame_get_colorspace(frame) == AVCOL_SPC_UNSPECIFIED) av_frame_set_colorspace(frame, avctx->colorspace); if (av_frame_get_color_range(frame) == AVCOL_RANGE_UNSPECIFIED) av_frame_set_color_range(frame, avctx->color_range); - frame->chroma_location = avctx->chroma_sample_location; + if (frame->chroma_location == AVCHROMA_LOC_UNSPECIFIED) + frame->chroma_location = avctx->chroma_sample_location; #endif switch (avctx->codec->type) {