On Wed,  8 Jan 2014 03:25:39 +0100, Luca Barbato <[email protected]> wrote:
> From: Matthieu Bouron <[email protected]>
> 
> Signed-off-by: Luca Barbato <[email protected]>
> ---
>  libavformat/mxf.c | 33 +++++++++++++++++++++++++++++++++
>  libavformat/mxf.h |  7 +++++++
>  2 files changed, 40 insertions(+)
> 
> diff --git a/libavformat/mxf.c b/libavformat/mxf.c
> index 040d8a2..e51106f 100644
> --- a/libavformat/mxf.c
> +++ b/libavformat/mxf.c
> @@ -104,3 +104,36 @@ int ff_mxf_decode_pixel_layout(const char 
> pixel_layout[16], enum AVPixelFormat *
>  
>      return -1;
>  }
> +
> +static const MXFSamplesPerFrame mxf_spf[] = {
> +    { { 1001, 24000 }, { 2002, 0,    0,    0,    0,    0 } }, // FILM 23.976
> +    { { 1, 24},        { 2000, 0,    0,    0,    0,    0 } }, // FILM 24
> +    { { 1001, 30000 }, { 1602, 1601, 1602, 1601, 1602, 0 } }, // NTSC 29.97
> +    { { 1001, 60000 }, { 801,  801,  801,  801,  800,  0 } }, // NTSC 59.94
> +    { { 1, 25 },       { 1920, 0,    0,    0,    0,    0 } }, // PAL 25
> +    { { 1, 50 },       { 960,  0,    0,    0,    0,    0 } }, // PAL 50
> +};
> +
> +const MXFSamplesPerFrame *ff_mxf_get_samples_per_frame(AVFormatContext *s,
> +                                                       AVRational time_base)
> +{
> +    int i;
> +    for (i = 0; i < FF_ARRAY_ELEMS(mxf_spf); i++) {
> +        if (!av_cmp_q(mxf_spf[i].time_base, time_base))
> +            return &mxf_spf[i];
> +    }
> +
> +    /* Find closest container time base for approximative codec time base 
> like
> +     * 1/29.97, 1/30, ... */
> +    for (i = 0; i < FF_ARRAY_ELEMS(mxf_spf); i++) {
> +        if (fabs(av_q2d(mxf_spf[i].time_base) - av_q2d(time_base)) < 0.0001) 
> {

float-based (and thus platform-dependent) guessing like this in a demuxer is
bound to lead to trouble later.
Please change this to pure integer (using suitable functions from rational.h)

Also, the commit message should state why is this useful.
And reorder this commit, so that commits which depend on it follow immediately
after.

-- 
Anton Khirnov
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to