On Mon, Sep 5, 2016 at 2:33 PM, Luca Barbato <[email protected]> wrote: > As discussed in the ml, the high bitdept support in vpx allows to > specify the number of bits used. > > Reported-by: Harfe Leier <[email protected]> > --- > > libavcodec/libvpx.c | 28 +++++++++++++++++++++++----- > libavcodec/libvpx.h | 2 +- > libavcodec/libvpxdec.c | 2 +- > 3 files changed, 25 insertions(+), 7 deletions(-) > > diff --git a/libavcodec/libvpx.c b/libavcodec/libvpx.c > index 49f966d..c65f80d 100644 > --- a/libavcodec/libvpx.c > +++ b/libavcodec/libvpx.c > @@ -22,9 +22,9 @@ > > #include "libvpx.h" > > -enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t img) > +enum AVPixelFormat ff_vpx_image_to_pixfmt(vpx_image_t *img) > { > - switch (img) { > + switch (img->fmt) { > case VPX_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; > case VPX_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; > case VPX_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; > @@ -42,9 +42,27 @@ enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t > img) > case VPX_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; > #if VPX_IMAGE_ABI_VERSION >= 3 > case VPX_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; > - case VPX_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16BE; > - case VPX_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16BE; > - case VPX_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16BE; > + case VPX_IMG_FMT_I42016: > + switch (img->bit_depth) { > + case 9: return AV_PIX_FMT_YUV420P9; > + case 10: return AV_PIX_FMT_YUV420P10; > + case 16: return AV_PIX_FMT_YUV420P16BE; > + default: return AV_PIX_FMT_NONE; > + } > + case VPX_IMG_FMT_I42216: > + switch (img->bit_depth) { > + case 9: return AV_PIX_FMT_YUV422P9; > + case 10: return AV_PIX_FMT_YUV422P10; > + case 16: return AV_PIX_FMT_YUV422P16BE; > + default: return AV_PIX_FMT_NONE; > + } > + case VPX_IMG_FMT_I44416: > + switch (img->bit_depth) { > + case 9: return AV_PIX_FMT_YUV444P9; > + case 10: return AV_PIX_FMT_YUV444P10; > + case 16: return AV_PIX_FMT_YUV444P16BE; > + default: return AV_PIX_FMT_NONE; > + } > #endif > default: return AV_PIX_FMT_NONE; > } > diff --git a/libavcodec/libvpx.h b/libavcodec/libvpx.h > index b437f37..2b58ed4 100644 > --- a/libavcodec/libvpx.h > +++ b/libavcodec/libvpx.h > @@ -25,7 +25,7 @@ > > #include "avcodec.h" > > -enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t img); > +enum AVPixelFormat ff_vpx_image_to_pixfmt(vpx_image_t *img); > vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelFormat pix); > > #endif /* AVCODEC_LIBVPX_H */ > diff --git a/libavcodec/libvpxdec.c b/libavcodec/libvpxdec.c > index 6d3b29f..214e1c5 100644 > --- a/libavcodec/libvpxdec.c > +++ b/libavcodec/libvpxdec.c > @@ -81,7 +81,7 @@ static int vp8_decode(AVCodecContext *avctx, > } > > if ((img = vpx_codec_get_frame(&ctx->decoder, &iter))) { > - avctx->pix_fmt = ff_vpx_imgfmt_to_pixfmt(img->fmt); > + avctx->pix_fmt = ff_vpx_image_to_pixfmt(img); > if (avctx->pix_fmt == AV_PIX_FMT_NONE) { > av_log(avctx, AV_LOG_ERROR, "Unsupported output colorspace > (%d)\n", > img->fmt); > --
seems ok -- Vittorio _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
