|
|
|
@ -3665,34 +3665,18 @@ static int init_output_stream(OutputStream *ost, AVFrame *frame, |
|
|
|
|
|
|
|
|
|
// parse user provided disposition, and update stream values
|
|
|
|
|
if (ost->disposition) { |
|
|
|
|
static const AVOption opts[] = { |
|
|
|
|
{ "disposition" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, INT64_MAX, .unit = "flags" }, |
|
|
|
|
{ "default" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEFAULT }, .unit = "flags" }, |
|
|
|
|
{ "dub" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DUB }, .unit = "flags" }, |
|
|
|
|
{ "original" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ORIGINAL }, .unit = "flags" }, |
|
|
|
|
{ "comment" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_COMMENT }, .unit = "flags" }, |
|
|
|
|
{ "lyrics" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_LYRICS }, .unit = "flags" }, |
|
|
|
|
{ "karaoke" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_KARAOKE }, .unit = "flags" }, |
|
|
|
|
{ "forced" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_FORCED }, .unit = "flags" }, |
|
|
|
|
{ "hearing_impaired" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_HEARING_IMPAIRED }, .unit = "flags" }, |
|
|
|
|
{ "visual_impaired" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_VISUAL_IMPAIRED }, .unit = "flags" }, |
|
|
|
|
{ "clean_effects" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "flags" }, |
|
|
|
|
{ "attached_pic" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ATTACHED_PIC }, .unit = "flags" }, |
|
|
|
|
{ "captions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CAPTIONS }, .unit = "flags" }, |
|
|
|
|
{ "descriptions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DESCRIPTIONS }, .unit = "flags" }, |
|
|
|
|
{ "dependent" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEPENDENT }, .unit = "flags" }, |
|
|
|
|
{ "metadata" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "flags" }, |
|
|
|
|
{ NULL }, |
|
|
|
|
}; |
|
|
|
|
static const AVClass class = { |
|
|
|
|
.class_name = "", |
|
|
|
|
.item_name = av_default_item_name, |
|
|
|
|
.option = opts, |
|
|
|
|
.version = LIBAVUTIL_VERSION_INT, |
|
|
|
|
}; |
|
|
|
|
const AVClass *pclass = &class; |
|
|
|
|
|
|
|
|
|
ret = av_opt_eval_flags(&pclass, &opts[0], ost->disposition, &ost->st->disposition); |
|
|
|
|
#if LIBAVFORMAT_VERSION_MAJOR >= 60 |
|
|
|
|
ret = av_opt_set(ost->st, "disposition", ost->disposition, 0); |
|
|
|
|
#else |
|
|
|
|
{ |
|
|
|
|
const AVClass *class = av_stream_get_class(); |
|
|
|
|
const AVOption *o = av_opt_find(&class, "disposition", NULL, 0, AV_OPT_SEARCH_FAKE_OBJ); |
|
|
|
|
|
|
|
|
|
av_assert0(o); |
|
|
|
|
ret = av_opt_eval_flags(&class, o, ost->disposition, &ost->st->disposition); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (ret < 0) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|