1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-04-24 17:12:34 +02:00

hlsenc: remove the AVIOContext for the playlist from the muxer context

Its only used in one function, having it in the context serves no purpose.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Hendrik Leppkes 2015-02-20 12:55:13 +01:00 committed by Michael Niedermayer
parent 31c7c0e156
commit 28bf05e7b5

View File

@ -85,8 +85,6 @@ typedef struct HLSContext {
char *baseurl; char *baseurl;
char *format_options_str; char *format_options_str;
AVDictionary *format_options; AVDictionary *format_options;
AVIOContext *pb;
} HLSContext; } HLSContext;
static int hls_delete_old_segments(HLSContext *hls) { static int hls_delete_old_segments(HLSContext *hls) {
@ -243,10 +241,11 @@ static int hls_window(AVFormatContext *s, int last)
HLSSegment *en; HLSSegment *en;
int target_duration = 0; int target_duration = 0;
int ret = 0; int ret = 0;
AVIOContext *out = NULL;
int64_t sequence = FFMAX(hls->start_sequence, hls->sequence - hls->nb_entries); int64_t sequence = FFMAX(hls->start_sequence, hls->sequence - hls->nb_entries);
int version = hls->flags & HLS_SINGLE_FILE ? 4 : 3; int version = hls->flags & HLS_SINGLE_FILE ? 4 : 3;
if ((ret = avio_open2(&hls->pb, s->filename, AVIO_FLAG_WRITE, if ((ret = avio_open2(&out, s->filename, AVIO_FLAG_WRITE,
&s->interrupt_callback, NULL)) < 0) &s->interrupt_callback, NULL)) < 0)
goto fail; goto fail;
@ -255,32 +254,32 @@ static int hls_window(AVFormatContext *s, int last)
target_duration = ceil(en->duration); target_duration = ceil(en->duration);
} }
avio_printf(hls->pb, "#EXTM3U\n"); avio_printf(out, "#EXTM3U\n");
avio_printf(hls->pb, "#EXT-X-VERSION:%d\n", version); avio_printf(out, "#EXT-X-VERSION:%d\n", version);
if (hls->allowcache == 0 || hls->allowcache == 1) { if (hls->allowcache == 0 || hls->allowcache == 1) {
avio_printf(hls->pb, "#EXT-X-ALLOW-CACHE:%s\n", hls->allowcache == 0 ? "NO" : "YES"); avio_printf(out, "#EXT-X-ALLOW-CACHE:%s\n", hls->allowcache == 0 ? "NO" : "YES");
} }
avio_printf(hls->pb, "#EXT-X-TARGETDURATION:%d\n", target_duration); avio_printf(out, "#EXT-X-TARGETDURATION:%d\n", target_duration);
avio_printf(hls->pb, "#EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence); avio_printf(out, "#EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", sequence);
av_log(s, AV_LOG_VERBOSE, "EXT-X-MEDIA-SEQUENCE:%"PRId64"\n", av_log(s, AV_LOG_VERBOSE, "EXT-X-MEDIA-SEQUENCE:%"PRId64"\n",
sequence); sequence);
for (en = hls->segments; en; en = en->next) { for (en = hls->segments; en; en = en->next) {
avio_printf(hls->pb, "#EXTINF:%f,\n", en->duration); avio_printf(out, "#EXTINF:%f,\n", en->duration);
if (hls->flags & HLS_SINGLE_FILE) if (hls->flags & HLS_SINGLE_FILE)
avio_printf(hls->pb, "#EXT-X-BYTERANGE:%"PRIi64"@%"PRIi64"\n", avio_printf(out, "#EXT-X-BYTERANGE:%"PRIi64"@%"PRIi64"\n",
en->size, en->pos); en->size, en->pos);
if (hls->baseurl) if (hls->baseurl)
avio_printf(hls->pb, "%s", hls->baseurl); avio_printf(out, "%s", hls->baseurl);
avio_printf(hls->pb, "%s\n", en->filename); avio_printf(out, "%s\n", en->filename);
} }
if (last) if (last)
avio_printf(hls->pb, "#EXT-X-ENDLIST\n"); avio_printf(out, "#EXT-X-ENDLIST\n");
fail: fail:
avio_closep(&hls->pb); avio_closep(&out);
return ret; return ret;
} }
@ -486,7 +485,6 @@ static int hls_write_trailer(struct AVFormatContext *s)
hls_free_segments(hls->segments); hls_free_segments(hls->segments);
hls_free_segments(hls->old_segments); hls_free_segments(hls->old_segments);
avio_closep(&hls->pb);
return 0; return 0;
} }