Commit f3fae820 authored by James Almer's avatar James Almer

avcodec/libaomdec: add support for monochrome files

All such files are signaled as I42016, as there's no monochrome value
in aom_img_fmt_t.
Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent d5343a50
...@@ -61,9 +61,10 @@ static av_cold int aom_init(AVCodecContext *avctx, ...@@ -61,9 +61,10 @@ static av_cold int aom_init(AVCodecContext *avctx,
static void image_copy_16_to_8(AVFrame *pic, struct aom_image *img) static void image_copy_16_to_8(AVFrame *pic, struct aom_image *img)
{ {
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pic->format);
int i; int i;
for (i = 0; i < 3; i++) { for (i = 0; i < desc->nb_components; i++) {
int w = img->d_w; int w = img->d_w;
int h = img->d_h; int h = img->d_h;
int x, y; int x, y;
...@@ -97,7 +98,8 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img) ...@@ -97,7 +98,8 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img)
case AOM_IMG_FMT_I420: case AOM_IMG_FMT_I420:
case AOM_IMG_FMT_I42016: case AOM_IMG_FMT_I42016:
if (img->bit_depth == 8) { if (img->bit_depth == 8) {
avctx->pix_fmt = AV_PIX_FMT_YUV420P; avctx->pix_fmt = img->monochrome ?
AV_PIX_FMT_GRAY8 : AV_PIX_FMT_YUV420P;
avctx->profile = FF_PROFILE_AV1_MAIN; avctx->profile = FF_PROFILE_AV1_MAIN;
return 0; return 0;
} else if (img->bit_depth == 10) { } else if (img->bit_depth == 10) {
...@@ -114,7 +116,8 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img) ...@@ -114,7 +116,8 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img)
case AOM_IMG_FMT_I422: case AOM_IMG_FMT_I422:
case AOM_IMG_FMT_I42216: case AOM_IMG_FMT_I42216:
if (img->bit_depth == 8) { if (img->bit_depth == 8) {
avctx->pix_fmt = AV_PIX_FMT_YUV422P; avctx->pix_fmt = img->monochrome ?
AV_PIX_FMT_GRAY10 : AV_PIX_FMT_YUV420P10;
avctx->profile = FF_PROFILE_AV1_PROFESSIONAL; avctx->profile = FF_PROFILE_AV1_PROFESSIONAL;
return 0; return 0;
} else if (img->bit_depth == 10) { } else if (img->bit_depth == 10) {
...@@ -131,7 +134,8 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img) ...@@ -131,7 +134,8 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img)
case AOM_IMG_FMT_I444: case AOM_IMG_FMT_I444:
case AOM_IMG_FMT_I44416: case AOM_IMG_FMT_I44416:
if (img->bit_depth == 8) { if (img->bit_depth == 8) {
avctx->pix_fmt = AV_PIX_FMT_YUV444P; avctx->pix_fmt = img->monochrome ?
AV_PIX_FMT_GRAY12 : AV_PIX_FMT_YUV420P12;
avctx->profile = FF_PROFILE_AV1_HIGH; avctx->profile = FF_PROFILE_AV1_HIGH;
return 0; return 0;
} else if (img->bit_depth == 10) { } else if (img->bit_depth == 10) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment