[FFmpeg-devel] [PATCH/RFC] honor DAR aspect ratio in nuv files.
Måns Rullgård
mans
Thu Jun 5 01:32:15 CEST 2008
elupus <elupus at ecce.se> writes:
> Hi,
>
> Apperently, the nuv format doesn't store PAR in it's header
> nowadays. It's actually DAR. So the following patch should handle
> that case (pasted inlined, will resend attached later after some
> other comments). This is how the myth decoder handles the old types
> of files.
>
> However, from what I can tell from the myth nuv recorder's history,
> the aspect was never really a valid aspect before, just hardcoded to
> 1.0 all the time. Thus maybe it's better to not set
> sample_aspect_ratio when the file header indicates an aspect of 1.0,
> as the video codec would probabably be a better source for this
> information then.
>
> Also, the nuv format allows for the aspect to change mid stream, by
> resending the file header. I'm not sure this is something that is
> allowed in ffmpeg, as it wouldn't be caught if you happended to seek
> past that new fileheader. Any thought on how to handle this? (i'm
> quite happy to just ignore it)
>
> Index: libavformat/nuv.c
> ===================================================================
> --- libavformat/nuv.c (revision 13656)
> +++ libavformat/nuv.c (working copy)
> @@ -137,6 +137,8 @@
> get_byte(pb); // 'P' == progressive, 'I' == interlaced
> url_fskip(pb, 3); // padding
> aspect = av_int2dbl(get_le64(pb));
> + if(aspect < 0.9999 && aspect > 1.0001)
That condition can never be true.
> + aspect = 4.0 / 3.0;
> fps = av_int2dbl(get_le64(pb));
>
> // number of packets per stream type, -1 means unknown, e.g. streaming
> @@ -156,7 +158,10 @@
> vst->codec->width = width;
> vst->codec->height = height;
> vst->codec->bits_per_sample = 10;
> - vst->codec->sample_aspect_ratio = av_d2q(aspect, 10000);
> + av_reduce(&vst->codec->sample_aspect_ratio.num,
> + &vst->codec->sample_aspect_ratio.den,
> + height * aspect
> + width, 255);
> vst->r_frame_rate = av_d2q(fps, 60000);
> av_set_pts_info(vst, 32, 1, 1000);
> } else
Was the old code valid for some files? If yes, this change is wrong
for those files.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list