Hi,
Am 25.10.2011 09:22, schrieb IOhannes m zmoelnig:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> hi all,
>
> what is the reason that animated GIFs lack duration information and are
> not seekable?
Because the format itself doesn't support seeking and I didn't implement
building a file index :)
> running bgav_get_frame_table() returns a NULL-pointer, and
> bgav_get_duration() returns 0.
>
> it would be nice if animated GIFs could be treated like any other video
> file...or am i doing something wrong?
No you don't, it's just a missing feature.
From what I see there are just 3 things necessary to implement seeking:
- in open_gif(), set ctx->index_mode to INDEX_MODE_SIMPLE and
s->flags |= STREAM_INTRA_ONLY
- in next_packet_gif() set p->position to the file position
(ctx->input->position), which is valid at the beginning of the function
(i.e. such that re-seeking to that position will output the same packet
again).
- Write a function resync_gif(), which looks like:
static void resync_gif(bgav_demuxer_context_t * ctx, bgav_stream_t * s)
{
gif_priv_t * priv;
priv = ctx->priv;
priv->video_pts = STREAM_GET_SYNC(s);
}
and add it to the demuxer functions.
A quite simple demuxer, which is made seekable this way is in demux_y4m.c
Try this and if this doesn't work, I'll look into that.
Burkhard
------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn
about Cisco certifications, training, and career opportunities.
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
Gmerlin-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gmerlin-general