mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/libvpxenc: use pix_fmt descriptors where useful
similar to:
36e51c190b
avcodec/libaomenc: use pix_fmt descriptors where useful
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: James Zern <jzern@google.com>
This commit is contained in:
parent
17f6bd6e58
commit
b5f1e057e1
|
@ -41,6 +41,7 @@
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "libavutil/mathematics.h"
|
#include "libavutil/mathematics.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
#include "libavutil/pixdesc.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Portion of struct vpx_codec_cx_pkt from vpx_encoder.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)
|
vpx_img_fmt_t *img_fmt)
|
||||||
{
|
{
|
||||||
VPxContext av_unused *ctx = avctx->priv_data;
|
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) {
|
switch (avctx->pix_fmt) {
|
||||||
case AV_PIX_FMT_YUV420P:
|
case AV_PIX_FMT_YUV420P:
|
||||||
case AV_PIX_FMT_YUVA420P:
|
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_YUV420P10:
|
||||||
case AV_PIX_FMT_YUV420P12:
|
case AV_PIX_FMT_YUV420P12:
|
||||||
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) {
|
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;
|
enccfg->g_profile = 2;
|
||||||
*img_fmt = VPX_IMG_FMT_I42016;
|
*img_fmt = VPX_IMG_FMT_I42016;
|
||||||
*flags |= VPX_CODEC_USE_HIGHBITDEPTH;
|
*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_YUV422P10:
|
||||||
case AV_PIX_FMT_YUV422P12:
|
case AV_PIX_FMT_YUV422P12:
|
||||||
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) {
|
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;
|
enccfg->g_profile = 3;
|
||||||
*img_fmt = VPX_IMG_FMT_I42216;
|
*img_fmt = VPX_IMG_FMT_I42216;
|
||||||
*flags |= VPX_CODEC_USE_HIGHBITDEPTH;
|
*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_YUV440P10:
|
||||||
case AV_PIX_FMT_YUV440P12:
|
case AV_PIX_FMT_YUV440P12:
|
||||||
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) {
|
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;
|
enccfg->g_profile = 3;
|
||||||
*img_fmt = VPX_IMG_FMT_I44016;
|
*img_fmt = VPX_IMG_FMT_I44016;
|
||||||
*flags |= VPX_CODEC_USE_HIGHBITDEPTH;
|
*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_YUV444P10:
|
||||||
case AV_PIX_FMT_YUV444P12:
|
case AV_PIX_FMT_YUV444P12:
|
||||||
if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) {
|
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;
|
enccfg->g_profile = 3;
|
||||||
*img_fmt = VPX_IMG_FMT_I44416;
|
*img_fmt = VPX_IMG_FMT_I44416;
|
||||||
*flags |= VPX_CODEC_USE_HIGHBITDEPTH;
|
*flags |= VPX_CODEC_USE_HIGHBITDEPTH;
|
||||||
|
|
Loading…
Reference in New Issue