diff --git a/libavcodec/exrenc.c b/libavcodec/exrenc.c index 459afebb82..9138684bcb 100644 --- a/libavcodec/exrenc.c +++ b/libavcodec/exrenc.c @@ -54,8 +54,10 @@ enum ExrPixelType { static const char abgr_chlist[4] = { 'A', 'B', 'G', 'R' }; static const char bgr_chlist[4] = { 'B', 'G', 'R', 'A' }; +static const char y_chlist[4] = { 'Y' }; static const uint8_t gbra_order[4] = { 3, 1, 0, 2 }; static const uint8_t gbr_order[4] = { 1, 0, 2, 0 }; +static const uint8_t y_order[4] = { 0 }; typedef struct EXRScanlineData { uint8_t *compressed_data; @@ -106,6 +108,11 @@ static int encode_init(AVCodecContext *avctx) s->ch_names = abgr_chlist; s->ch_order = gbra_order; break; + case AV_PIX_FMT_GRAYF32: + s->planes = 1; + s->ch_names = y_chlist; + s->ch_order = y_order; + break; default: av_assert0(0); } @@ -546,6 +553,7 @@ const FFCodec ff_exr_encoder = { FF_CODEC_ENCODE_CB(encode_frame), .close = encode_close, .p.pix_fmts = (const enum AVPixelFormat[]) { + AV_PIX_FMT_GRAYF32, AV_PIX_FMT_GBRPF32, AV_PIX_FMT_GBRAPF32, AV_PIX_FMT_NONE },