diff mbox

[FFmpeg-devel] matroskadec: partly revert "demux relevant subtitle packets after a seek" c16582579b1c6f66a86615c5808cd5b2bf17be73

Message ID 20161126072744.17134-1-fernetmenta@kodi.tv
State Accepted
Commit 7a9db61da39fbfaa910c10c0719be595a7d06f3d
Headers show

Commit Message

Rainer Hochecker Nov. 26, 2016, 7:27 a.m. UTC
From: Rainer Hochecker <fernetmenta@online.de>


Alternative patch. Revert the original code because it does more harm than any good.


Signed-off-by: Rainer Hochecker <fernetmenta@online.de>
---
 libavformat/matroskadec.c | 12 ------------
 1 file changed, 12 deletions(-)

Comments

wm4 Nov. 30, 2016, 9:34 a.m. UTC | #1
On Sat, 26 Nov 2016 08:27:44 +0100
Rainer Hochecker <fernetmenta@kodi.tv> wrote:

> From: Rainer Hochecker <fernetmenta@online.de>
> 
> 
> Alternative patch. Revert the original code because it does more harm than any good.
> 
> 
> Signed-off-by: Rainer Hochecker <fernetmenta@online.de>
> ---
>  libavformat/matroskadec.c | 12 ------------
>  1 file changed, 12 deletions(-)
> 
> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> index f79511e..cf3de96 100644
> --- a/libavformat/matroskadec.c
> +++ b/libavformat/matroskadec.c
> @@ -3398,18 +3398,6 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index,
>          tracks[i].audio.sub_packet_cnt = 0;
>          tracks[i].audio.buf_timecode   = AV_NOPTS_VALUE;
>          tracks[i].end_timecode         = 0;
> -        if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE &&
> -            tracks[i].stream &&
> -            tracks[i].stream->discard != AVDISCARD_ALL) {
> -            index_sub = av_index_search_timestamp(
> -                tracks[i].stream, st->index_entries[index].timestamp,
> -                AVSEEK_FLAG_BACKWARD);
> -            while (index_sub >= 0 &&
> -                  index_min > 0 &&
> -                  tracks[i].stream->index_entries[index_sub].pos < st->index_entries[index_min].pos &&
> -                  st->index_entries[index].timestamp - tracks[i].stream->index_entries[index_sub].timestamp < 30000000000 / matroska->time_scale)
> -                index_min--;
> -        }
>      }
>  
>      avio_seek(s->pb, st->index_entries[index_min].pos, SEEK_SET);

I can push this if you're ok with it.

I think "someone" should add support for fetching overlapping subtitles
via cue indexes too. (Although it looks like AVIndexEntry makes this
annoying, so it won't be me.)
wm4 Dec. 2, 2016, 1:21 p.m. UTC | #2
On Sat, 26 Nov 2016 08:27:44 +0100
Rainer Hochecker <fernetmenta@kodi.tv> wrote:

> From: Rainer Hochecker <fernetmenta@online.de>
> 
> 
> Alternative patch. Revert the original code because it does more harm than any good.
> 
> 
> Signed-off-by: Rainer Hochecker <fernetmenta@online.de>
> ---
>  libavformat/matroskadec.c | 12 ------------
>  1 file changed, 12 deletions(-)
> 
> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
> index f79511e..cf3de96 100644
> --- a/libavformat/matroskadec.c
> +++ b/libavformat/matroskadec.c
> @@ -3398,18 +3398,6 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index,
>          tracks[i].audio.sub_packet_cnt = 0;
>          tracks[i].audio.buf_timecode   = AV_NOPTS_VALUE;
>          tracks[i].end_timecode         = 0;
> -        if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE &&
> -            tracks[i].stream &&
> -            tracks[i].stream->discard != AVDISCARD_ALL) {
> -            index_sub = av_index_search_timestamp(
> -                tracks[i].stream, st->index_entries[index].timestamp,
> -                AVSEEK_FLAG_BACKWARD);
> -            while (index_sub >= 0 &&
> -                  index_min > 0 &&
> -                  tracks[i].stream->index_entries[index_sub].pos < st->index_entries[index_min].pos &&
> -                  st->index_entries[index].timestamp - tracks[i].stream->index_entries[index_sub].timestamp < 30000000000 / matroska->time_scale)
> -                index_min--;
> -        }
>      }
>  
>      avio_seek(s->pb, st->index_entries[index_min].pos, SEEK_SET);

Pushed. I heavily edited the commit message to provide context - I hope
that is ok.
diff mbox

Patch

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index f79511e..cf3de96 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -3398,18 +3398,6 @@  static int matroska_read_seek(AVFormatContext *s, int stream_index,
         tracks[i].audio.sub_packet_cnt = 0;
         tracks[i].audio.buf_timecode   = AV_NOPTS_VALUE;
         tracks[i].end_timecode         = 0;
-        if (tracks[i].type == MATROSKA_TRACK_TYPE_SUBTITLE &&
-            tracks[i].stream &&
-            tracks[i].stream->discard != AVDISCARD_ALL) {
-            index_sub = av_index_search_timestamp(
-                tracks[i].stream, st->index_entries[index].timestamp,
-                AVSEEK_FLAG_BACKWARD);
-            while (index_sub >= 0 &&
-                  index_min > 0 &&
-                  tracks[i].stream->index_entries[index_sub].pos < st->index_entries[index_min].pos &&
-                  st->index_entries[index].timestamp - tracks[i].stream->index_entries[index_sub].timestamp < 30000000000 / matroska->time_scale)
-                index_min--;
-        }
     }
 
     avio_seek(s->pb, st->index_entries[index_min].pos, SEEK_SET);