summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2011-06-15 08:00:03 +0200
committerAnton Khirnov <anton@khirnov.net>2011-06-16 20:24:55 +0200
commit0b7ccad6bf79cebe5cd8392105276a4ba19d19f9 (patch)
treeb7c47681e31e3af054b19b8d266223003f17a157 /ffmpeg.c
parent10de86b882f980a7e856a903bcb45a8fa7816cfd (diff)
ffmpeg: don't abuse a global for passing frame size from input to output
It's broken with multiple files or video streams.
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 952707d9eb..6a4fb5358f 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2226,6 +2226,10 @@ static int transcode(AVFormatContext **output_files,
#endif
codec->bits_per_raw_sample= 0;
}
+ if (!codec->width || !codec->height) {
+ codec->width = icodec->width;
+ codec->height = icodec->height;
+ }
ost->resample_height = icodec->height;
ost->resample_width = icodec->width;
ost->resample_pix_fmt= icodec->pix_fmt;
@@ -3297,16 +3301,12 @@ static int opt_input_file(const char *opt, const char *filename)
case AVMEDIA_TYPE_VIDEO:
input_codecs[nb_input_codecs-1] = avcodec_find_decoder_by_name(video_codec_name);
set_context_opts(dec, avcodec_opts[AVMEDIA_TYPE_VIDEO], AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM, input_codecs[nb_input_codecs-1]);
- frame_height = dec->height;
- frame_width = dec->width;
rfps = ic->streams[i]->r_frame_rate.num;
rfps_base = ic->streams[i]->r_frame_rate.den;
if (dec->lowres) {
dec->flags |= CODEC_FLAG_EMU_EDGE;
- frame_height >>= dec->lowres;
- frame_width >>= dec->lowres;
- dec->height = frame_height;
- dec->width = frame_width;
+ dec->height >>= dec->lowres;
+ dec->width >>= dec->lowres;
}
if(me_threshold)
dec->debug |= FF_DEBUG_MV;
@@ -3352,6 +3352,8 @@ static int opt_input_file(const char *opt, const char *filename)
video_channel = 0;
frame_rate = (AVRational){0, 0};
frame_pix_fmt = PIX_FMT_NONE;
+ frame_height = 0;
+ frame_width = 0;
audio_sample_rate = 0;
audio_channels = 0;
@@ -3893,6 +3895,8 @@ static void opt_output_file(const char *filename)
set_context_opts(oc, avformat_opts, AV_OPT_FLAG_ENCODING_PARAM, NULL);
frame_rate = (AVRational){0, 0};
+ frame_width = 0;
+ frame_height = 0;
audio_sample_rate = 0;
audio_channels = 0;