mirror of https://git.ffmpeg.org/ffmpeg.git
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: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
d5343a5005
commit
f3fae82042
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
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) {
|
||||||
|
|
Loading…
Reference in New Issue