Fixes a crash when using a preset with stream copy.
CC: libav-sta...@libav.org
---
avconv_opt.c | 55 ---
1 file changed, 28 insertions(+), 27 deletions(-)
diff --git a/avconv_opt.c b/avconv_opt.c
index 79444eb..0eb601b 100644
--- a/avconv_opt.c
+++ b/avconv_opt.c
@@ -754,8 +754,6 @@ static OutputStream *new_output_stream(OptionsContext *o,
AVFormatContext *oc, e
char *bsf = NULL, *next, *codec_tag = NULL;
AVBitStreamFilterContext *bsfc, *bsfc_prev = NULL;
double qscale = -1;
-char *buf = NULL, *arg = NULL, *preset = NULL;
-AVIOContext *s = NULL;
if (!st) {
av_log(NULL, AV_LOG_FATAL, Could not alloc stream.\n);
@@ -777,37 +775,40 @@ static OutputStream *new_output_stream(OptionsContext *o,
AVFormatContext *oc, e
st-codec-codec_type = type;
choose_encoder(o, oc, ost);
if (ost-enc) {
+AVIOContext *s = NULL;
+char *buf = NULL, *arg = NULL, *preset = NULL;
+
ost-opts = filter_codec_opts(codec_opts, ost-enc-id, oc, st,
ost-enc);
+
+MATCH_PER_STREAM_OPT(presets, str, preset, oc, st);
+if (preset (!(ret = get_preset_file_2(preset, ost-enc-name,
s {
+do {
+buf = get_line(s);
+if (!buf[0] || buf[0] == '#') {
+av_free(buf);
+continue;
+}
+if (!(arg = strchr(buf, '='))) {
+av_log(NULL, AV_LOG_FATAL, Invalid line found in the
preset file.\n);
+exit(1);
+}
+*arg++ = 0;
+av_dict_set(ost-opts, buf, arg, AV_DICT_DONT_OVERWRITE);
+av_free(buf);
+} while (!s-eof_reached);
+avio_close(s);
+}
+if (ret) {
+av_log(NULL, AV_LOG_FATAL,
+ Preset %s specified for stream %d:%d, but could not be
opened.\n,
+ preset, ost-file_index, ost-index);
+exit(1);
+}
}
avcodec_get_context_defaults3(st-codec, ost-enc);
st-codec-codec_type = type; // XXX hack, avcodec_get_context_defaults2()
sets type to unknown for stream copy
-MATCH_PER_STREAM_OPT(presets, str, preset, oc, st);
-if (preset (!(ret = get_preset_file_2(preset, ost-enc-name, s {
-do {
-buf = get_line(s);
-if (!buf[0] || buf[0] == '#') {
-av_free(buf);
-continue;
-}
-if (!(arg = strchr(buf, '='))) {
-av_log(NULL, AV_LOG_FATAL, Invalid line found in the preset
file.\n);
-exit(1);
-}
-*arg++ = 0;
-av_dict_set(ost-opts, buf, arg, AV_DICT_DONT_OVERWRITE);
-av_free(buf);
-} while (!s-eof_reached);
-avio_close(s);
-}
-if (ret) {
-av_log(NULL, AV_LOG_FATAL,
- Preset %s specified for stream %d:%d, but could not be
opened.\n,
- preset, ost-file_index, ost-index);
-exit(1);
-}
-
ost-max_frames = INT64_MAX;
MATCH_PER_STREAM_OPT(max_frames, i64, ost-max_frames, oc, st);
--
1.7.10.4
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel