[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