|
|
|
@@ -1265,6 +1265,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, in |
|
|
|
char *frame_size = NULL; |
|
|
|
char *frame_pix_fmt = NULL; |
|
|
|
char *intra_matrix = NULL, *inter_matrix = NULL; |
|
|
|
char *chroma_intra_matrix = NULL; |
|
|
|
int do_pass = 0; |
|
|
|
int i; |
|
|
|
|
|
|
|
@@ -1297,6 +1298,16 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, in |
|
|
|
} |
|
|
|
parse_matrix_coeffs(video_enc->intra_matrix, intra_matrix); |
|
|
|
} |
|
|
|
MATCH_PER_STREAM_OPT(chroma_intra_matrices, str, chroma_intra_matrix, oc, st); |
|
|
|
if (chroma_intra_matrix) { |
|
|
|
uint16_t *p = av_mallocz(sizeof(*video_enc->chroma_intra_matrix) * 64); |
|
|
|
if (!p) { |
|
|
|
av_log(NULL, AV_LOG_FATAL, "Could not allocate memory for intra matrix.\n"); |
|
|
|
exit_program(1); |
|
|
|
} |
|
|
|
av_codec_set_chroma_intra_matrix(video_enc, p); |
|
|
|
parse_matrix_coeffs(p, chroma_intra_matrix); |
|
|
|
} |
|
|
|
MATCH_PER_STREAM_OPT(inter_matrices, str, inter_matrix, oc, st); |
|
|
|
if (inter_matrix) { |
|
|
|
if (!(video_enc->inter_matrix = av_mallocz(sizeof(*video_enc->inter_matrix) * 64))) { |
|
|
|
@@ -2860,6 +2871,9 @@ const OptionDef options[] = { |
|
|
|
{ "inter_matrix", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC | |
|
|
|
OPT_OUTPUT, { .off = OFFSET(inter_matrices) }, |
|
|
|
"specify inter matrix coeffs", "matrix" }, |
|
|
|
{ "chroma_intra_matrix", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC | |
|
|
|
OPT_OUTPUT, { .off = OFFSET(chroma_intra_matrices) }, |
|
|
|
"specify intra matrix coeffs", "matrix" }, |
|
|
|
{ "top", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_INT| OPT_SPEC | |
|
|
|
OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(top_field_first) }, |
|
|
|
"top=1/bottom=0/auto=-1 field first", "" }, |
|
|
|
|