avcodec/proresenc_kostya: add 4444XQ profile

Signed-off-by: Paul B Mahol <onemda@gmail.com>
pull/264/head^2
Paul B Mahol 8 years ago
parent 0f8d3d8a46
commit bbaca6e867
  1. 1
      doc/encoders.texi
  2. 18
      libavcodec/proresenc_kostya.c

@ -2381,6 +2381,7 @@ Select the ProRes profile to encode
@item standard @item standard
@item hq @item hq
@item 4444 @item 4444
@item 4444xq
@end table @end table
@item quant_mat @var{integer} @item quant_mat @var{integer}

@ -46,6 +46,7 @@ enum {
PRORES_PROFILE_STANDARD, PRORES_PROFILE_STANDARD,
PRORES_PROFILE_HQ, PRORES_PROFILE_HQ,
PRORES_PROFILE_4444, PRORES_PROFILE_4444,
PRORES_PROFILE_4444XQ,
}; };
enum { enum {
@ -124,7 +125,7 @@ static const struct prores_profile {
int max_quant; int max_quant;
int br_tab[NUM_MB_LIMITS]; int br_tab[NUM_MB_LIMITS];
int quant; int quant;
} prores_profile_info[5] = { } prores_profile_info[6] = {
{ {
.full_name = "proxy", .full_name = "proxy",
.tag = MKTAG('a', 'p', 'c', 'o'), .tag = MKTAG('a', 'p', 'c', 'o'),
@ -164,6 +165,14 @@ static const struct prores_profile {
.max_quant = 6, .max_quant = 6,
.br_tab = { 2350, 1828, 1600, 1425 }, .br_tab = { 2350, 1828, 1600, 1425 },
.quant = QUANT_MAT_HQ, .quant = QUANT_MAT_HQ,
},
{
.full_name = "4444XQ",
.tag = MKTAG('a', 'p', '4', 'x'),
.min_quant = 1,
.max_quant = 6,
.br_tab = { 3525, 2742, 2400, 2137 },
.quant = QUANT_MAT_HQ,
} }
}; };
@ -1155,7 +1164,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
: "HQ profile to keep best quality"); : "HQ profile to keep best quality");
} }
if (av_pix_fmt_desc_get(avctx->pix_fmt)->flags & AV_PIX_FMT_FLAG_ALPHA) { if (av_pix_fmt_desc_get(avctx->pix_fmt)->flags & AV_PIX_FMT_FLAG_ALPHA) {
if (ctx->profile != PRORES_PROFILE_4444) { if (ctx->profile != PRORES_PROFILE_4444 &&
ctx->profile != PRORES_PROFILE_4444XQ) {
// force alpha and warn // force alpha and warn
av_log(avctx, AV_LOG_WARNING, "Profile selected will not " av_log(avctx, AV_LOG_WARNING, "Profile selected will not "
"encode alpha. Override with -profile if needed.\n"); "encode alpha. Override with -profile if needed.\n");
@ -1298,7 +1308,7 @@ static const AVOption options[] = {
AV_OPT_TYPE_INT, { .i64 = 8 }, 1, MAX_MBS_PER_SLICE, VE }, AV_OPT_TYPE_INT, { .i64 = 8 }, 1, MAX_MBS_PER_SLICE, VE },
{ "profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, { "profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT,
{ .i64 = PRORES_PROFILE_AUTO }, { .i64 = PRORES_PROFILE_AUTO },
PRORES_PROFILE_AUTO, PRORES_PROFILE_4444, VE, "profile" }, PRORES_PROFILE_AUTO, PRORES_PROFILE_4444XQ, VE, "profile" },
{ "auto", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_AUTO }, { "auto", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_AUTO },
0, 0, VE, "profile" }, 0, 0, VE, "profile" },
{ "proxy", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_PROXY }, { "proxy", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_PROXY },
@ -1311,6 +1321,8 @@ static const AVOption options[] = {
0, 0, VE, "profile" }, 0, 0, VE, "profile" },
{ "4444", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_4444 }, { "4444", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_4444 },
0, 0, VE, "profile" }, 0, 0, VE, "profile" },
{ "4444xq", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PRORES_PROFILE_4444XQ },
0, 0, VE, "profile" },
{ "vendor", "vendor ID", OFFSET(vendor), { "vendor", "vendor ID", OFFSET(vendor),
AV_OPT_TYPE_STRING, { .str = "Lavc" }, CHAR_MIN, CHAR_MAX, VE }, AV_OPT_TYPE_STRING, { .str = "Lavc" }, CHAR_MIN, CHAR_MAX, VE },
{ "bits_per_mb", "desired bits per macroblock", OFFSET(bits_per_mb), { "bits_per_mb", "desired bits per macroblock", OFFSET(bits_per_mb),

Loading…
Cancel
Save