[FFmpeg-devel] [PATCH 7/8] add seeking support in ASS demuxer

Michael Niedermayer michaelni
Thu Jul 29 04:02:49 CEST 2010


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 ...


> 
> 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


> +        }
> +        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

ok otherwise if tested

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

Into a blind darkness they enter who follow after the Ignorance,
they as if into a greater darkness enter who devote themselves
to the Knowledge alone. -- Isha Upanishad
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100729/60042a3f/attachment.pgp>



More information about the ffmpeg-devel mailing list