From 880e8ba7307de38daa2644a7ae054e3156f0ab22 Mon Sep 17 00:00:00 2001 From: Roman Shaposhnik Date: Tue, 29 Apr 2003 01:51:38 +0000 Subject: * fixing NTSC frame rate for DV streams * let ffmpeg preserve 'aspect_ratio' for recoding. Do we want to make it tweakable from the command line ? Originally committed as revision 1827 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffmpeg.c | 3 +++ libavcodec/dv.c | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index b24de887dd..a004ab825d 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -88,6 +88,7 @@ static AVOutputFormat *file_oformat; static AVImageFormat *image_format; static int frame_width = 160; static int frame_height = 128; +static float frame_aspect_ratio = 0; static int frame_topBand = 0; static int frame_bottomBand = 0; static int frame_leftBand = 0; @@ -2015,6 +2016,7 @@ static void opt_input_file(const char *filename) case CODEC_TYPE_VIDEO: frame_height = enc->height; frame_width = enc->width; + frame_aspect_ratio = enc->aspect_ratio; rfps = ic->streams[i]->r_frame_rate; rfps_base = ic->streams[i]->r_frame_rate_base; enc->workaround_bugs = workaround_bugs; @@ -2171,6 +2173,7 @@ static void opt_output_file(const char *filename) video_enc->width = frame_width; video_enc->height = frame_height; + video_enc->aspect_ratio = frame_aspect_ratio; if (!intra_only) video_enc->gop_size = gop_size; diff --git a/libavcodec/dv.c b/libavcodec/dv.c index d686aca9c6..b678960320 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -538,16 +538,17 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, width = 720; if (dsf) { avctx->frame_rate = 25; + avctx->frame_rate_base = 1; packet_size = PAL_FRAME_SIZE; height = 576; nb_dif_segs = 12; } else { - avctx->frame_rate = 30; + avctx->frame_rate = 30000; + avctx->frame_rate_base = 1001; packet_size = NTSC_FRAME_SIZE; height = 480; nb_dif_segs = 10; } - avctx->frame_rate_base= 1; /* NOTE: we only accept several full frames */ if (buf_size < packet_size) return -1; @@ -723,8 +724,8 @@ static int dvaudio_decode_frame(AVCodecContext *avctx, avctx->sample_rate = dv_audio_frequency[freq]; avctx->channels = 2; + avctx->bit_rate = avctx->channels * avctx->sample_rate * 16; // What about: - // avctx->bit_rate = // avctx->frame_size = *data_size = (dv_audio_min_samples[sys][freq] + smpls) * -- cgit v1.2.3