[FFmpeg-devel] [PATCH] img2dec: support seeking in infinitely looped stream

Michael Niedermayer michaelni at gmx.at
Mon Jan 21 19:47:08 CET 2013


On Wed, Jan 09, 2013 at 10:43:30AM +0000, Paul B Mahol wrote:
> On 1/8/13, Michael Niedermayer <michaelni at gmx.at> wrote:
> > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> > ---
> >  libavformat/img2dec.c |   11 +++++++----
> >  1 file changed, 7 insertions(+), 4 deletions(-)
> >
> > diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
> > index c3f5bdb..23cdc4b 100644
> > --- a/libavformat/img2dec.c
> > +++ b/libavformat/img2dec.c
> > @@ -46,6 +46,7 @@ typedef struct {
> >      int img_first;
> >      int img_last;
> >      int img_number;
> > +    int64_t pts;
> >      int img_count;
> >      int is_pipe;
> >      int split_planes;       /**< use independent file for each Y, U, V
> > plane */
> > @@ -393,8 +394,8 @@ static int img_read_packet(AVFormatContext *s1, AVPacket
> > *pkt)
> >          return AVERROR(ENOMEM);
> >      pkt->stream_index = 0;
> >      pkt->flags       |= AV_PKT_FLAG_KEY;
> > -    if (!s->is_pipe && !s->loop)
> > -        pkt->pts      = s->img_number - s->img_first;
> > +    if (!s->is_pipe)
> > +        pkt->pts      = s->pts;
> >
> >      pkt->size = 0;
> >      for (i = 0; i < 3; i++) {
> > @@ -413,6 +414,7 @@ static int img_read_packet(AVFormatContext *s1, AVPacket
> > *pkt)
> >      } else {
> >          s->img_count++;
> >          s->img_number++;
> > +        s->pts++;
> >          return 0;
> >      }
> >  }
> > @@ -432,9 +434,10 @@ static int img_read_seek(AVFormatContext *s, int
> > stream_index, int64_t timestamp
> >  {
> >      VideoDemuxData *s1 = s->priv_data;
> >
> > -    if (timestamp < 0 || timestamp > s1->img_last - s1->img_first)
> > +    if (timestamp < 0 || !s1->loop && timestamp > s1->img_last -
> > s1->img_first)
> 
> Yes but loop do not need to be infinite, when I tried it with current code
> and ffplay I did not found anything strange with seeking. And it is not
> anything major to care about.
> 
> Yes ffplay loop option overwrites demuxer loop option - the last one is
> infinite if enabled - somehow silly.
> 
> >          return -1;
> > -    s1->img_number = timestamp + s1->img_first;
> > +    s1->img_number = timestamp%(s1->img_last - s1->img_first + 1) +
> > s1->img_first;
> > +    s1->pts = timestamp;
> >      return 0;
> >  }
> 
> So patch looks to be correct for current design of demuxer.

applied

thanks

[..]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The real ebay dictionary, page 3
"Rare item" - "Common item with rare defect or maybe just a lie"
"Professional" - "'Toy' made in china, not functional except as doorstop"
"Experts will know" - "The seller hopes you are not an expert"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130121/c40aa0cf/attachment.asc>


More information about the ffmpeg-devel mailing list