[FFmpeg-devel] [PATCH] avformat/mov: mov_build_index: pick the bigger sample_size of the 2

Alex Sukhanov alx.sukhanov at gmail.com
Fri May 24 08:21:26 CEST 2013


On Thu, May 23, 2013 at 7:00 PM, Michael Niedermayer <michaelni at gmx.at>wrote:

> On Thu, May 23, 2013 at 06:09:06PM -0700, Alex Sukhanov wrote:
> > On Thu, May 23, 2013 at 3:48 PM, Michael Niedermayer <michaelni at gmx.at
> >wrote:
> >
> > > On Thu, May 23, 2013 at 02:23:18PM -0700, Alex Sukhanov wrote:
> > > > On Thu, May 23, 2013 at 1:13 PM, Michael Niedermayer <
> michaelni at gmx.at
> > > >wrote:
> > > >
> > > > > Fixes Ticket2605
> > > > >
> > > > > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> > > > > ---
> > > > >  libavformat/mov.c |    2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/libavformat/mov.c b/libavformat/mov.c
> > > > > index d5e1f89..9497884 100644
> > > > > --- a/libavformat/mov.c
> > > > > +++ b/libavformat/mov.c
> > > > > @@ -2018,7 +2018,7 @@ static void mov_build_index(MOVContext *mov,
> > > > > AVStream *st)
> > > > >                  }
> > > > >                  if (keyframe)
> > > > >                      distance = 0;
> > > > > -                sample_size = sc->alt_sample_size > 0 ?
> > > > > sc->alt_sample_size : sc->sample_sizes[current_sample];
> > > > > +                sample_size = sc->alt_sample_size > 0 ?
> > > > > FFMAX(sc->alt_sample_size, sc->sample_size) :
> > > > > sc->sample_sizes[current_sample];
> > > > >                  if (sc->pseudo_stream_id == -1 ||
> > > > >                     sc->stsc_data[stsc_index].id - 1 ==
> > > > > sc->pseudo_stream_id) {
> > > > >                      AVIndexEntry *e =
> > > > > &st->index_entries[st->nb_index_entries++];
> > > > > --
> > > > > 1.7.9.5
> > > > >
> > > > > _______________________________________________
> > > > > ffmpeg-devel mailing list
> > > > > ffmpeg-devel at ffmpeg.org
> > > > > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > > > >
> > > >
> > > >
> > > > Hi Michael,
> > > >
> > > > Thanks for looking on this problem. I just think that your fix
> > > potentially
> > > > doesn't cover all cases.
> > > > With your fix now we able to extract audio if STSZ sample_size < real
> > > > sample_size, as we have it in my sample file:
> > > > STSZ::sample_size = 1
> > > > real sample size = 4
> > > >
> > >
> > > > But what if STSZ::sample_size = 100
> > > > real sample size = 4?
> > >
> > > then the value 100 will be used
> > >
> > >
> > > >
> > > > Don't you think that we should revert
> > > >
> > >
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=50059bde77674977d9134f3c1151a63cb7a2391c
> > >
> > > If you revert the Fix for #522 then the sample from #522 will fail
> > >
> > >
> > >
> > Well, I'm looking on noaudio.mp4 (from #522) and see that
> > - Audio pcm_mulaw
> > - Track Timescale 8000
> > - num_channels 1
> > - bits_per_sample 8
> > - Sample duration is variable: 639, 640 640, 641, 648
> > - Sample size (STSZ) = 640 for each sample, what is incorrect. As long as
> > sample size should be equal to sample duration in this configuration.
> >
> > BTW, I found that $mplayer -demuxer mov plays both (noaudio.mp4 and my
> > sample) correctly.
> >
> > So I guess that PCM audio recovering should be implemented in different
> way.
>
> Do you have a sample that fails with the patch?
>

I uploaded audio_silence_after_ffmpeg_upgrade_100.mov on ftp
upload.ffmpeg.org
To my mind it should fail for this patch

>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Asymptotically faster algorithms should always be preferred if you have
> asymptotical amounts of data
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>


More information about the ffmpeg-devel mailing list