On Fri, Nov 23, 2012 at 1:43 PM, Janne Grunau <janne-li...@jannau.net> wrote: > Sample count and delta are in ISO 14496-12 clearly specified as > unsigned int. > Fixes an assert caused by negative avg_frame_rate deduced from a > negative duraton computed in mov_read_stts(). > --- > libavformat/isom.h | 4 ++-- > libavformat/mov.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/libavformat/isom.h b/libavformat/isom.h > index 932b1d0..f4a178b 100644 > --- a/libavformat/isom.h > +++ b/libavformat/isom.h > @@ -43,8 +43,8 @@ int ff_mov_lang_to_iso639(unsigned code, char to[4]); > */ > > typedef struct MOVStts { > - int count; > - int duration; > + unsigned count; > + unsigned duration; > } MOVStts; > > typedef struct MOVStsc { > diff --git a/libavformat/mov.c b/libavformat/mov.c > index 35c07bd..a121aa5 100644 > --- a/libavformat/mov.c > +++ b/libavformat/mov.c > @@ -1664,8 +1664,8 @@ static int mov_read_stts(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > return AVERROR(ENOMEM); > > for (i = 0; i < entries && !pb->eof_reached; i++) { > - int sample_duration; > - int sample_count; > + unsigned sample_duration; > + unsigned sample_count; > > sample_count=avio_rb32(pb); > sample_duration = avio_rb32(pb);
I have a sample which only has a proper timeline when sample_duration is negative, and thus is required to be signed. I vote for fixing the logic that trips your assert, and not break this file. In case you are interested: http://files.1f0.de/samples/mp4-negative-stts-problem.mp4 Admitedly, this file is not spec compliant, but breaking it seems like something that can be avoided. - Hendrik _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel