[FFmpeg-devel] [PATCH] libavformat/dashdec: Support negative value of the @r attrbute of S in SegmentTimeline element

Moritz Barsnick barsnick at gmx.net
Wed Aug 8 11:04:39 EEST 2018


On Mon, Aug 06, 2018 at 19:18:27 -0700, sanil wrote:
> The following patch supports parsing negative value of the @r attribute of S in SegmentTimeline element.
> 
> Example streams:
> 1. http://dash.edgesuite.net/dash264/TestCases/1c/qualcomm/1/MultiRate.mpd
> 2. http://dash.edgesuite.net/dash264/TestCases/1c/qualcomm/2/MultiRate.mpd

I can confirm that the patch makes these streams (seem to) work, albeit
with one warning message:
[dash @ 0xba72680] Could not read complete fragment.

But, for one, your patch doesn't apply to master anymore, due to recent
changes. That's due to this change:

> @@ -1952,7 +1964,7 @@ static int dash_read_header(AVFormatContext *s)
>          ++stream_index;
>      }
>  
> -  c->is_init_section_common_audio = is_common_init_section_exist(c->audios, c->n_audios);
> +    c->is_init_section_common_audio = is_common_init_section_exist(c->audios, c->n_audios);
>  
>      for (i = 0; i < c->n_audios; i++) {
>          struct representation *cur_audio = c->audios[i];

While this indentation fix is correct, it doesn't belong into a
functional fix patch. And it's not required anymore anyway, since
commit 2f45378ba14417cbb4fc9494ba941cb06443c4f9.

Furthermore:

>          num = pls->first_seq_no + pls->n_timelines - 1;
> -        for (i = 0; i < pls->n_timelines; i++) {
> -            num += pls->timelines[i]->repeat;
> +         for (i = 0; i < pls->n_timelines; i++) {
> +            if (pls->timelines[i]->repeat == -1) {

This also changes indentation, but incorrectly.

> +                int length_of_each_segment = pls->timelines[i]->duration/pls->fragment_timescale;
> +                num =  c->period_duration/length_of_each_segment;

Operators are surrounded by spaces, e.g. "pls->timelines[i]->duration / pls->fragment_timescale".

>          }
> +
>      } else if (c->is_live && pls->fragment_duration) {

And here you're adding an empty line, which you also shouldn't do.

Cheers,
Moritz


More information about the ffmpeg-devel mailing list