summaryrefslogtreecommitdiff
path: root/avconv_opt.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2014-02-23 08:05:52 +0100
committerAnton Khirnov <anton@khirnov.net>2014-02-24 07:25:07 +0100
commit746dca483a2f0f2639265f6e1c0085c8861875a1 (patch)
treee8498593ea6cfd66cff11cff30b9d199af8e6d5a /avconv_opt.c
parentd59fcdaff36eb45307a29756c5dd1852034a3f3f (diff)
avconv: support forcing codec tags for input streams
Diffstat (limited to 'avconv_opt.c')
-rw-r--r--avconv_opt.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/avconv_opt.c b/avconv_opt.c
index d62d11f5e6..7bc41c96b2 100644
--- a/avconv_opt.c
+++ b/avconv_opt.c
@@ -463,6 +463,8 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
AVCodecContext *dec = st->codec;
InputStream *ist = av_mallocz(sizeof(*ist));
char *framerate = NULL, *hwaccel = NULL, *hwaccel_device = NULL;
+ char *codec_tag = NULL;
+ char *next;
if (!ist)
exit_program(1);
@@ -478,6 +480,14 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
ist->ts_scale = 1.0;
MATCH_PER_STREAM_OPT(ts_scale, dbl, ist->ts_scale, ic, st);
+ MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, ic, st);
+ if (codec_tag) {
+ uint32_t tag = strtol(codec_tag, &next, 0);
+ if (*next)
+ tag = AV_RL32(codec_tag);
+ st->codec->codec_tag = tag;
+ }
+
ist->dec = choose_decoder(o, ic, st);
ist->opts = filter_codec_opts(o->g->codec_opts, ist->st->codec->codec_id, ic, st, ist->dec);
@@ -2238,7 +2248,7 @@ const OptionDef options[] = {
{ "frames", OPT_INT64 | HAS_ARG | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(max_frames) },
"set the number of frames to record", "number" },
{ "tag", OPT_STRING | HAS_ARG | OPT_SPEC |
- OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(codec_tags) },
+ OPT_EXPERT | OPT_OUTPUT | OPT_INPUT, { .off = OFFSET(codec_tags) },
"force codec tag/fourcc", "fourcc/tag" },
{ "q", HAS_ARG | OPT_EXPERT | OPT_DOUBLE |
OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(qscale) },