[FFmpeg-devel] [PATCH 7/8] add seeking support in ASS demuxer
Aurelien Jacobs
aurel
Fri Jul 30 00:10:35 CEST 2010
On Thu, Jul 29, 2010 at 04:02:49AM +0200, Michael Niedermayer wrote:
> On Wed, Jul 21, 2010 at 11:53:22AM +0200, Aurelien Jacobs wrote:
> >
> > ---
> > libavformat/assdec.c | 37 ++++++++++++++++++++++++++++++++++++-
> > 1 files changed, 36 insertions(+), 1 deletions(-)
>
> i realize we have noone in MAINTAINERS for this so i guess i have to ...
Maybe you should add yourself ?
Or if you don't want to, I can maintain it.
> > diff --git a/libavformat/assdec.c b/libavformat/assdec.c
> > index ff1009c..a87f84b 100644
> > --- a/libavformat/assdec.c
> > +++ b/libavformat/assdec.c
> > @@ -162,6 +162,41 @@ static int read_packet(AVFormatContext *s, AVPacket *pkt)
> > return 0;
> > }
> >
> > +static int read_seek2(AVFormatContext *s, int stream_index,
> > + int64_t min_ts, int64_t ts, int64_t max_ts, int flags)
> > +{
> > + ASSContext *ass = s->priv_data;
> > +
> > + if (flags & AVSEEK_FLAG_BYTE) {
> > + return AVERROR_NOTSUPP;
> > + } else if (flags & AVSEEK_FLAG_FRAME) {
> > + if (ts < 0 || ts >= ass->event_count)
> > + return AVERROR(ERANGE);
> > + ass->event_index = ts;
> > + } else {
> > + int i, idx = -1;
> > + int64_t min_ts_diff = INT64_MAX;
> > + if (stream_index == -1) {
> > + AVRational time_base = s->streams[0]->time_base;
> > + ts = av_rescale_q( ts, AV_TIME_BASE_Q, time_base);
>
> > + min_ts = av_rescale_q(min_ts, AV_TIME_BASE_Q, time_base);
> > + max_ts = av_rescale_q(max_ts, AV_TIME_BASE_Q, time_base);
>
> these strictly need to round up and down so the min/max is strictly correct
OK. Fixed.
> > + }
> > + for (i=0; i<ass->event_count; i++) {
>
> if the events are sorted then a search either starting from the previous
> point and going both ways or a binary search could be done and would be
> a bit faster for really huge subtitle files.
> this doesnt need to be done before commiting this, its just an idea/note
I thought about doing a binary search too. But I also thought it was not
worth the complexity for now. It can be improved later.
For now, I've added a comment to not forget.
> ok otherwise if tested
Applied.
Aurel
More information about the ffmpeg-devel
mailing list