[FFmpeg-devel] [PATCH] avformat/hlsenc: support TAG span multiple lines when parse playlist

Steven Liu lingjiujianke at gmail.com
Fri May 5 11:55:05 EEST 2017


2017-05-06 0:50 GMT+08:00 Steven Liu <lq at chinaffmpeg.org>:

> refer to: https://developer.apple.com/library/content/technotes/
> tn2288/_index.html
>
> support to parse the EXT-X-KEY span multiple lines:
>  #EXTM3U
>  #EXT-X-VERSION:3
>  #EXT-X-TARGETDURATION:10
>  #EXT-X-MEDIA-SEQUENCE:0
>  #EXT-X-KEY:METHOD=AES-128,URI="/file.key", \
>  IV=0x498c8325965f907960e3d94d20c4d138
>  #EXTINF:10.000000,
>  out0.ts
>  #EXTINF:8.640000,
>  out1.ts
>  #EXTINF:9.160000,
>  out2.ts
>
> Reported-by: Aaron Levinson <alevinsn at aracnet.com>
> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> ---
>  libavformat/hlsenc.c |   21 +++++++++++++++++++--
>  1 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index 221089c..c167624 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -500,10 +500,27 @@ static int hls_encryption_start(AVFormatContext *s)
>
>  static int read_chomp_line(AVIOContext *s, char *buf, int maxlen)
>  {
> -    int len = ff_get_line(s, buf, maxlen);
> +    int len = 0;
> +    int total_len = 0;
> +
> +re_get_line:
> +    if (maxlen > total_len) {
> +        len = ff_get_line(s, buf, maxlen - total_len);
> +    } else {
> +        av_log(s, AV_LOG_WARNING, "The tag is too long, context only can
> get %s\n", buf);
> +        return maxlen;
> +    }
>      while (len > 0 && av_isspace(buf[len - 1]))
>          buf[--len] = '\0';
> -    return len;
> +
> +    if (buf[len - 1] == '\\') {
> +        buf += len - 1;
> +        total_len += len - 1;
> +        goto re_get_line;
> +    }
> +
> +    total_len += len;
> +    return total_len;
>  }
>
>  static int hls_mux_init(AVFormatContext *s)
> --
> 1.7.1
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


Hi Aaron Levinson

What about this one?


More information about the ffmpeg-devel mailing list