From be1d32492e58cbba6d69d3ce67545536b15e051d Mon Sep 17 00:00:00 2001 From: Steven Liu Date: Mon, 26 Sep 2016 15:51:02 +0800 Subject: [PATCH] avformat/hlsenc: support multi level path in m3u8 with filename MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit before patch: localhost:osx liuqi$ tree 20160926/ 20160926/ └── file-20160909 └── 26 └── 16 └── 15 ├── 46 │   ├── 13.ts │   ├── 25.ts │   ├── 36.ts │   ├── 45.ts │   └── 54.ts └── 47 ├── 04.ts ├── 14.ts ├── 24.ts └── 35.ts 6 directories, 9 files localhost:osx liuqi$ cat out.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:12 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:11.360000, 13.ts #EXTINF:10.800000, 25.ts #EXTINF:9.120000, 36.ts #EXTINF:8.760000, 45.ts #EXTINF:10.200000, 54.ts #EXTINF:10.720000, 04.ts #EXTINF:9.600000, 14.ts #EXTINF:10.600000, 24.ts #EXTINF:8.760000, 35.ts #EXT-X-ENDLIST after patch: localhost:osx liuqi$ tree 20160926/ 20160926/ └── file-20160909 └── 26 └── 16 └── 15 ├── 46 │   ├── 13.ts │   ├── 25.ts │   ├── 36.ts │   ├── 45.ts │   └── 54.ts └── 47 ├── 04.ts ├── 14.ts ├── 24.ts └── 35.ts 6 directories, 9 files localhost:osx liuqi$ cat out.m3u8 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:12 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:11.360000, 20160926/file-20160909/26/16/15/46/13.ts #EXTINF:10.800000, 20160926/file-20160909/26/16/15/46/25.ts #EXTINF:9.120000, 20160926/file-20160909/26/16/15/46/36.ts #EXTINF:8.760000, 20160926/file-20160909/26/16/15/46/45.ts #EXTINF:10.200000, 20160926/file-20160909/26/16/15/46/54.ts #EXTINF:10.720000, 20160926/file-20160909/26/16/15/47/04.ts #EXTINF:9.600000, 20160926/file-20160909/26/16/15/47/14.ts #EXTINF:10.600000, 20160926/file-20160909/26/16/15/47/24.ts #EXTINF:8.760000, 20160926/file-20160909/26/16/15/47/35.ts #EXT-X-ENDLIST Signed-off-by: Steven Liu --- libavformat/hlsenc.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index c1619373bf..e0bb44b364 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -364,8 +364,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double int64_t pos, int64_t size) { HLSSegment *en = av_malloc(sizeof(*en)); - char *tmp, *p; - const char *pl_dir, *filename; + const char *filename; int ret; if (!en) @@ -374,19 +373,7 @@ static int hls_append_segment(struct AVFormatContext *s, HLSContext *hls, double filename = av_basename(hls->avf->filename); if (hls->use_localtime_mkdir) { - /* Possibly prefix with mkdir'ed subdir, if playlist share same - * base path. */ - tmp = av_strdup(s->filename); - if (!tmp) { - av_free(en); - return AVERROR(ENOMEM); - } - - pl_dir = av_dirname(tmp); - p = hls->avf->filename; - if (strstr(p, pl_dir) == p) - filename = hls->avf->filename + strlen(pl_dir) + 1; - av_free(tmp); + filename = hls->avf->filename; } av_strlcpy(en->filename, filename, sizeof(en->filename));