|
|
|
@@ -41,6 +41,7 @@ |
|
|
|
#include "libavutil/intreadwrite.h" |
|
|
|
#include "libavutil/mathematics.h" |
|
|
|
#include "libavutil/opt.h" |
|
|
|
#include "libavutil/pixdesc.h" |
|
|
|
|
|
|
|
/** |
|
|
|
* Portion of struct vpx_codec_cx_pkt from vpx_encoder.h. |
|
|
|
@@ -546,7 +547,8 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, |
|
|
|
vpx_img_fmt_t *img_fmt) |
|
|
|
{ |
|
|
|
VPxContext av_unused *ctx = avctx->priv_data; |
|
|
|
enccfg->g_bit_depth = enccfg->g_input_bit_depth = 8; |
|
|
|
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); |
|
|
|
enccfg->g_bit_depth = enccfg->g_input_bit_depth = desc->comp[0].depth; |
|
|
|
switch (avctx->pix_fmt) { |
|
|
|
case AV_PIX_FMT_YUV420P: |
|
|
|
case AV_PIX_FMT_YUVA420P: |
|
|
|
@@ -570,8 +572,6 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, |
|
|
|
case AV_PIX_FMT_YUV420P10: |
|
|
|
case AV_PIX_FMT_YUV420P12: |
|
|
|
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { |
|
|
|
enccfg->g_bit_depth = enccfg->g_input_bit_depth = |
|
|
|
avctx->pix_fmt == AV_PIX_FMT_YUV420P10 ? 10 : 12; |
|
|
|
enccfg->g_profile = 2; |
|
|
|
*img_fmt = VPX_IMG_FMT_I42016; |
|
|
|
*flags |= VPX_CODEC_USE_HIGHBITDEPTH; |
|
|
|
@@ -581,8 +581,6 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, |
|
|
|
case AV_PIX_FMT_YUV422P10: |
|
|
|
case AV_PIX_FMT_YUV422P12: |
|
|
|
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { |
|
|
|
enccfg->g_bit_depth = enccfg->g_input_bit_depth = |
|
|
|
avctx->pix_fmt == AV_PIX_FMT_YUV422P10 ? 10 : 12; |
|
|
|
enccfg->g_profile = 3; |
|
|
|
*img_fmt = VPX_IMG_FMT_I42216; |
|
|
|
*flags |= VPX_CODEC_USE_HIGHBITDEPTH; |
|
|
|
@@ -592,8 +590,6 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, |
|
|
|
case AV_PIX_FMT_YUV440P10: |
|
|
|
case AV_PIX_FMT_YUV440P12: |
|
|
|
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { |
|
|
|
enccfg->g_bit_depth = enccfg->g_input_bit_depth = |
|
|
|
avctx->pix_fmt == AV_PIX_FMT_YUV440P10 ? 10 : 12; |
|
|
|
enccfg->g_profile = 3; |
|
|
|
*img_fmt = VPX_IMG_FMT_I44016; |
|
|
|
*flags |= VPX_CODEC_USE_HIGHBITDEPTH; |
|
|
|
@@ -606,9 +602,6 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, |
|
|
|
case AV_PIX_FMT_YUV444P10: |
|
|
|
case AV_PIX_FMT_YUV444P12: |
|
|
|
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { |
|
|
|
enccfg->g_bit_depth = enccfg->g_input_bit_depth = |
|
|
|
avctx->pix_fmt == AV_PIX_FMT_YUV444P10 || |
|
|
|
avctx->pix_fmt == AV_PIX_FMT_GBRP10 ? 10 : 12; |
|
|
|
enccfg->g_profile = 3; |
|
|
|
*img_fmt = VPX_IMG_FMT_I44416; |
|
|
|
*flags |= VPX_CODEC_USE_HIGHBITDEPTH; |
|
|
|
|