# HG changeset patch # User reimar # Date 1245833873 0 # Node ID dcaea581e24d57b3cd6c5ee26085728c0ee2cd40 # Parent 8d81bf3822ac951ba4e7f4ddd8f7f2fa1ba36962 mov_read_packet: extract code that searches for the stream/sample to demux next into a separate function. diff -r 8d81bf3822ac -r dcaea581e24d mov.c --- a/mov.c Wed Jun 24 08:50:46 2009 +0000 +++ b/mov.c Wed Jun 24 08:57:53 2009 +0000 @@ -2055,15 +2055,11 @@ return 0; } -static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) +static AVIndexEntry *mov_find_next_sample(AVFormatContext *s, AVStream **st) { - MOVContext *mov = s->priv_data; - MOVStreamContext *sc = 0; - AVIndexEntry *sample = 0; - AVStream *st = NULL; + AVIndexEntry *sample = NULL; int64_t best_dts = INT64_MAX; - int i, ret; - retry: + int i; for (i = 0; i < s->nb_streams; i++) { AVStream *avst = s->streams[i]; MOVStreamContext *msc = avst->priv_data; @@ -2078,10 +2074,22 @@ (FFABS(best_dts - dts) > AV_TIME_BASE && dts < best_dts)))))) { sample = current_sample; best_dts = dts; - st = avst; + *st = avst; } } } + return sample; +} + +static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) +{ + MOVContext *mov = s->priv_data; + MOVStreamContext *sc; + AVIndexEntry *sample; + AVStream *st = NULL; + int ret; + retry: + sample = mov_find_next_sample(s, &st); if (!sample) { mov->found_mdat = 0; if (!url_is_streamed(s->pb) ||