|
@@ -935,72 +935,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
|
|
|
st->codecpar->codec_tag = tag;
|
|
|
}
|
|
|
|
|
|
- ist->dec = choose_decoder(o, ic, st);
|
|
|
- ist->decoder_opts = filter_codec_opts(o->g->codec_opts, ist->st->codecpar->codec_id, ic, st, ist->dec);
|
|
|
-
|
|
|
- ist->reinit_filters = -1;
|
|
|
- MATCH_PER_STREAM_OPT(reinit_filters, i, ist->reinit_filters, ic, st);
|
|
|
-
|
|
|
- MATCH_PER_STREAM_OPT(discard, str, discard_str, ic, st);
|
|
|
- ist->user_set_discard = AVDISCARD_NONE;
|
|
|
-
|
|
|
- if ((o->video_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) ||
|
|
|
- (o->audio_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) ||
|
|
|
- (o->subtitle_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) ||
|
|
|
- (o->data_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_DATA))
|
|
|
- ist->user_set_discard = AVDISCARD_ALL;
|
|
|
-
|
|
|
- if (discard_str && av_opt_eval_int(&cc, discard_opt, discard_str, &ist->user_set_discard) < 0) {
|
|
|
- av_log(NULL, AV_LOG_ERROR, "Error parsing discard %s.\n",
|
|
|
- discard_str);
|
|
|
- exit_program(1);
|
|
|
- }
|
|
|
-
|
|
|
- ist->filter_in_rescale_delta_last = AV_NOPTS_VALUE;
|
|
|
- ist->prev_pkt_pts = AV_NOPTS_VALUE;
|
|
|
-
|
|
|
- ist->dec_ctx = avcodec_alloc_context3(ist->dec);
|
|
|
- if (!ist->dec_ctx) {
|
|
|
- av_log(NULL, AV_LOG_ERROR, "Error allocating the decoder context.\n");
|
|
|
- exit_program(1);
|
|
|
- }
|
|
|
-
|
|
|
- ret = avcodec_parameters_to_context(ist->dec_ctx, par);
|
|
|
- if (ret < 0) {
|
|
|
- av_log(NULL, AV_LOG_ERROR, "Error initializing the decoder context.\n");
|
|
|
- exit_program(1);
|
|
|
- }
|
|
|
-
|
|
|
- ist->decoded_frame = av_frame_alloc();
|
|
|
- if (!ist->decoded_frame)
|
|
|
- exit_program(1);
|
|
|
-
|
|
|
- ist->pkt = av_packet_alloc();
|
|
|
- if (!ist->pkt)
|
|
|
- exit_program(1);
|
|
|
-
|
|
|
- if (o->bitexact)
|
|
|
- ist->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT;
|
|
|
-
|
|
|
- switch (par->codec_type) {
|
|
|
- case AVMEDIA_TYPE_VIDEO:
|
|
|
- if(!ist->dec)
|
|
|
- ist->dec = avcodec_find_decoder(par->codec_id);
|
|
|
-
|
|
|
- // avformat_find_stream_info() doesn't set this for us anymore.
|
|
|
- ist->dec_ctx->framerate = st->avg_frame_rate;
|
|
|
-
|
|
|
- MATCH_PER_STREAM_OPT(frame_rates, str, framerate, ic, st);
|
|
|
- if (framerate && av_parse_video_rate(&ist->framerate,
|
|
|
- framerate) < 0) {
|
|
|
- av_log(NULL, AV_LOG_ERROR, "Error parsing framerate %s.\n",
|
|
|
- framerate);
|
|
|
- exit_program(1);
|
|
|
- }
|
|
|
-
|
|
|
- ist->top_field_first = -1;
|
|
|
- MATCH_PER_STREAM_OPT(top_field_first, i, ist->top_field_first, ic, st);
|
|
|
-
|
|
|
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
|
|
MATCH_PER_STREAM_OPT(hwaccels, str, hwaccel, ic, st);
|
|
|
MATCH_PER_STREAM_OPT(hwaccel_output_formats, str,
|
|
|
hwaccel_output_format, ic, st);
|
|
@@ -1066,6 +1001,73 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
|
|
|
}
|
|
|
|
|
|
ist->hwaccel_pix_fmt = AV_PIX_FMT_NONE;
|
|
|
+ }
|
|
|
+
|
|
|
+ ist->dec = choose_decoder(o, ic, st);
|
|
|
+ ist->decoder_opts = filter_codec_opts(o->g->codec_opts, ist->st->codecpar->codec_id, ic, st, ist->dec);
|
|
|
+
|
|
|
+ ist->reinit_filters = -1;
|
|
|
+ MATCH_PER_STREAM_OPT(reinit_filters, i, ist->reinit_filters, ic, st);
|
|
|
+
|
|
|
+ MATCH_PER_STREAM_OPT(discard, str, discard_str, ic, st);
|
|
|
+ ist->user_set_discard = AVDISCARD_NONE;
|
|
|
+
|
|
|
+ if ((o->video_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) ||
|
|
|
+ (o->audio_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) ||
|
|
|
+ (o->subtitle_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) ||
|
|
|
+ (o->data_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_DATA))
|
|
|
+ ist->user_set_discard = AVDISCARD_ALL;
|
|
|
+
|
|
|
+ if (discard_str && av_opt_eval_int(&cc, discard_opt, discard_str, &ist->user_set_discard) < 0) {
|
|
|
+ av_log(NULL, AV_LOG_ERROR, "Error parsing discard %s.\n",
|
|
|
+ discard_str);
|
|
|
+ exit_program(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ ist->filter_in_rescale_delta_last = AV_NOPTS_VALUE;
|
|
|
+ ist->prev_pkt_pts = AV_NOPTS_VALUE;
|
|
|
+
|
|
|
+ ist->dec_ctx = avcodec_alloc_context3(ist->dec);
|
|
|
+ if (!ist->dec_ctx) {
|
|
|
+ av_log(NULL, AV_LOG_ERROR, "Error allocating the decoder context.\n");
|
|
|
+ exit_program(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = avcodec_parameters_to_context(ist->dec_ctx, par);
|
|
|
+ if (ret < 0) {
|
|
|
+ av_log(NULL, AV_LOG_ERROR, "Error initializing the decoder context.\n");
|
|
|
+ exit_program(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ ist->decoded_frame = av_frame_alloc();
|
|
|
+ if (!ist->decoded_frame)
|
|
|
+ exit_program(1);
|
|
|
+
|
|
|
+ ist->pkt = av_packet_alloc();
|
|
|
+ if (!ist->pkt)
|
|
|
+ exit_program(1);
|
|
|
+
|
|
|
+ if (o->bitexact)
|
|
|
+ ist->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT;
|
|
|
+
|
|
|
+ switch (par->codec_type) {
|
|
|
+ case AVMEDIA_TYPE_VIDEO:
|
|
|
+ if(!ist->dec)
|
|
|
+ ist->dec = avcodec_find_decoder(par->codec_id);
|
|
|
+
|
|
|
+ // avformat_find_stream_info() doesn't set this for us anymore.
|
|
|
+ ist->dec_ctx->framerate = st->avg_frame_rate;
|
|
|
+
|
|
|
+ MATCH_PER_STREAM_OPT(frame_rates, str, framerate, ic, st);
|
|
|
+ if (framerate && av_parse_video_rate(&ist->framerate,
|
|
|
+ framerate) < 0) {
|
|
|
+ av_log(NULL, AV_LOG_ERROR, "Error parsing framerate %s.\n",
|
|
|
+ framerate);
|
|
|
+ exit_program(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ ist->top_field_first = -1;
|
|
|
+ MATCH_PER_STREAM_OPT(top_field_first, i, ist->top_field_first, ic, st);
|
|
|
|
|
|
break;
|
|
|
case AVMEDIA_TYPE_AUDIO:
|