[FFmpeg-devel] [PATCH 1/3] avformat/hlsplaylist: add int type of API ff_hls_write_file_entry

Steven Liu lq at chinaffmpeg.org
Sat Dec 2 04:42:55 EET 2017


Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
---
 libavformat/dashenc.c     |  6 +++++-
 libavformat/hlsenc.c      | 12 ++++++++----
 libavformat/hlsplaylist.c |  6 ++++--
 libavformat/hlsplaylist.h |  2 +-
 4 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
index 1783675d00..22ef3103dc 100644
--- a/libavformat/dashenc.c
+++ b/libavformat/dashenc.c
@@ -342,6 +342,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext
         AVIOContext *out_hls = NULL;
         AVDictionary *http_opts = NULL;
         int target_duration = 0;
+        int ret = 0;
         const char *proto = avio_find_protocol_name(c->dirname);
         int use_rename = proto && !strcmp(proto, "file");
 
@@ -368,11 +369,14 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, DASHContext
 
         for (i = start_index; i < os->nb_segments; i++) {
             Segment *seg = os->segments[i];
-            ff_hls_write_file_entry(out_hls, 0, c->single_file,
+            ret = ff_hls_write_file_entry(out_hls, 0, c->single_file,
                                     (double) seg->duration / timescale, 0,
                                     seg->range_length, seg->start_pos, NULL,
                                     c->single_file ? os->initfile : seg->file,
                                     NULL);
+            if (ret < 0) {
+                av_log(os->ctx, AV_LOG_WARNING, "ff_hls_write_file_entry get error\n");
+            }
         }
 
         if (final)
diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index cdfbf45823..3cb636c4c2 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1236,11 +1236,13 @@ static int hls_window(AVFormatContext *s, int last, VariantStream *vs)
                                    hls->flags & HLS_SINGLE_FILE, en->size, en->pos);
         }
 
-        ff_hls_write_file_entry(out, en->discont, byterange_mode,
+        ret = ff_hls_write_file_entry(out, en->discont, byterange_mode,
                                 en->duration, hls->flags & HLS_ROUND_DURATIONS,
                                 en->size, en->pos, vs->baseurl,
                                 en->filename, prog_date_time_p);
-
+        if (ret < 0) {
+            av_log(s, AV_LOG_WARNING, "ff_hls_write_file_entry get error\n");
+        }
     }
 
     if (last && (hls->flags & HLS_OMIT_ENDLIST)==0)
@@ -1251,11 +1253,13 @@ static int hls_window(AVFormatContext *s, int last, VariantStream *vs)
             goto fail;
         ff_hls_write_playlist_header(sub_out, hls->version, hls->allowcache,
                                      target_duration, sequence, PLAYLIST_TYPE_NONE);
-
         for (en = vs->segments; en; en = en->next) {
-            ff_hls_write_file_entry(sub_out, 0, byterange_mode,
+            ret = ff_hls_write_file_entry(sub_out, 0, byterange_mode,
                                     en->duration, 0, en->size, en->pos,
                                     vs->baseurl, en->sub_filename, NULL);
+            if (ret < 0) {
+                av_log(s, AV_LOG_WARNING, "ff_hls_write_file_entry get error\n");
+            }
         }
 
         if (last)
diff --git a/libavformat/hlsplaylist.c b/libavformat/hlsplaylist.c
index 235e519a9e..96a8afbe1d 100644
--- a/libavformat/hlsplaylist.c
+++ b/libavformat/hlsplaylist.c
@@ -82,14 +82,14 @@ void ff_hls_write_init_file(AVIOContext *out, char *filename,
     avio_printf(out, "\n");
 }
 
-void ff_hls_write_file_entry(AVIOContext *out, int insert_discont,
+int ff_hls_write_file_entry(AVIOContext *out, int insert_discont,
                              int byterange_mode,
                              double duration, int round_duration,
                              int64_t size, int64_t pos, //Used only if HLS_SINGLE_FILE flag is set
                              char *baseurl, //Ignored if NULL
                              char *filename, double *prog_date_time) {
     if (!out || !filename)
-        return;
+        return AVERROR(EINVAL);
 
     if (insert_discont) {
         avio_printf(out, "#EXT-X-DISCONTINUITY\n");
@@ -128,6 +128,8 @@ void ff_hls_write_file_entry(AVIOContext *out, int insert_discont,
     if (baseurl)
         avio_printf(out, "%s", baseurl);
     avio_printf(out, "%s\n", filename);
+
+    return 0;
 }
 
 void ff_hls_write_end_list (AVIOContext *out) {
diff --git a/libavformat/hlsplaylist.h b/libavformat/hlsplaylist.h
index 4cbc8cacc9..48d71b7c77 100644
--- a/libavformat/hlsplaylist.h
+++ b/libavformat/hlsplaylist.h
@@ -49,7 +49,7 @@ void ff_hls_write_playlist_header(AVIOContext *out, int version, int allowcache,
                                   uint32_t playlist_type);
 void ff_hls_write_init_file(AVIOContext *out, char *filename,
                             int byterange_mode, int64_t size, int64_t pos);
-void ff_hls_write_file_entry(AVIOContext *out, int insert_discont,
+int ff_hls_write_file_entry(AVIOContext *out, int insert_discont,
                              int byterange_mode,
                              double duration, int round_duration,
                              int64_t size, int64_t pos, //Used only if HLS_SINGLE_FILE flag is set
-- 
2.11.0 (Apple Git-81)





More information about the ffmpeg-devel mailing list