av_freep(&ost->apad);
av_freep(&ost->disposition);
av_dict_free(&ost->encoder_opts);
+ av_dict_free(&ost->sws_dict);
av_dict_free(&ost->swr_opts);
av_dict_free(&ost->resample_opts);
av_dict_free(&ost->bsf_args);
char *filters; ///< filtergraph associated to the -filter option
char *filters_script; ///< filtergraph script associated to the -filter_script option
- int64_t sws_flags;
AVDictionary *encoder_opts;
+ AVDictionary *sws_dict;
AVDictionary *swr_opts;
AVDictionary *resample_opts;
AVDictionary *bsf_args;
if (codec->width || codec->height) {
char args[255];
AVFilterContext *filter;
+ AVDictionaryEntry *e = NULL;
- snprintf(args, sizeof(args), "%d:%d:0x%X",
+ snprintf(args, sizeof(args), "%d:%d",
codec->width,
- codec->height,
- (unsigned)ost->sws_flags);
+ codec->height);
+
+ while ((e = av_dict_get(ost->sws_dict, "", e,
+ AV_DICT_IGNORE_SUFFIX))) {
+ av_strlcatf(args, sizeof(args), ":%s=%s", e->key, e->value);
+ }
+
snprintf(name, sizeof(name), "scaler for output stream %d:%d",
ost->file_index, ost->index);
if ((ret = avfilter_graph_create_filter(&filter, avfilter_get_by_name("scale"),
char args[512];
AVDictionaryEntry *e = NULL;
- snprintf(args, sizeof(args), "flags=0x%X", (unsigned)ost->sws_flags);
+ args[0] = 0;
+ while ((e = av_dict_get(ost->sws_dict, "", e,
+ AV_DICT_IGNORE_SUFFIX))) {
+ av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
+ }
+ if (strlen(args))
+ args[strlen(args)-1] = 0;
fg->graph->scale_sws_opts = av_strdup(args);
args[0] = 0;
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
ost->enc_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
- av_opt_get_int(o->g->sws_opts, "sws_flags", 0, &ost->sws_flags);
+ av_dict_copy(&ost->sws_dict, o->g->sws_dict, 0);
av_dict_copy(&ost->swr_opts, o->g->swr_opts, 0);
if (ost->enc && av_get_exact_bits_per_sample(ost->enc->id) == 24)