[FFmpeg-soc] [soc]: r5269 - in concat/libavformat: avplaylist.c avplaylist.h m3u.c pls.c xspf.c

gkovacs subversion at mplayerhq.hu
Tue Aug 25 10:23:19 CEST 2009


Author: gkovacs
Date: Tue Aug 25 10:23:19 2009
New Revision: 5269

Log:
change av_playlist_from_filelist to av_playlist_add_filelist and allocate AVPlaylistContext externally

Modified:
   concat/libavformat/avplaylist.c
   concat/libavformat/avplaylist.h
   concat/libavformat/m3u.c
   concat/libavformat/pls.c
   concat/libavformat/xspf.c

Modified: concat/libavformat/avplaylist.c
==============================================================================
--- concat/libavformat/avplaylist.c	Tue Aug 25 09:56:58 2009	(r5268)
+++ concat/libavformat/avplaylist.c	Tue Aug 25 10:23:19 2009	(r5269)
@@ -126,13 +126,13 @@ AVPlaylistContext *av_playlist_get_conte
 
 AVFormatContext *av_playlist_formatcontext_from_filelist(const char **flist, int len)
 {
-    AVPlaylistContext *ctx;
     AVFormatContext *ic;
-    ctx = av_playlist_from_filelist(flist, len);
+    AVPlaylistContext *ctx = av_mallocz(sizeof(*ctx));
     if (!ctx) {
-        av_log(NULL, AV_LOG_ERROR, "failed to create AVPlaylistContext in av_playlist_formatcontext_from_filelist\n");
+        av_log(NULL, AV_LOG_ERROR, "failed to allocate AVPlaylistContext in av_playlist_formatcontext_from_filelist\n");
         return NULL;
     }
+    av_playlist_add_filelist(ctx, flist, len);
     ic = avformat_alloc_context();
     ic->iformat = ff_concat_alloc_demuxer();
     ic->priv_data = ctx;
@@ -190,18 +190,15 @@ int av_playlist_split_encodedstring(cons
     av_free(sepidx);
 }
 
-AVPlaylistContext *av_playlist_from_filelist(const char **flist, int len)
+int av_playlist_add_filelist(AVPlaylistContext *ctx, const char **flist, int len)
 {
-    int i;
-    AVPlaylistContext *ctx;
-    ctx = av_mallocz(sizeof(*ctx));
-    if (!ctx) {
-        av_log(NULL, AV_LOG_ERROR, "av_mallocz error in av_playlist_from_filelist\n");
-        return NULL;
+    int i, err;
+    for (i = 0; i < len; ++i) {
+        err = av_playlist_add_path(ctx, flist[i]);
+        if (err)
+            return err;
     }
-    for (i = 0; i < len; ++i)
-        av_playlist_add_path(ctx, flist[i]);
-    return ctx;
+    return 0;
 }
 
 int av_playlist_add_path(AVPlaylistContext *ctx, const char *itempath)

Modified: concat/libavformat/avplaylist.h
==============================================================================
--- concat/libavformat/avplaylist.h	Tue Aug 25 09:56:58 2009	(r5268)
+++ concat/libavformat/avplaylist.h	Tue Aug 25 10:23:19 2009	(r5269)
@@ -101,12 +101,13 @@ int av_playlist_split_encodedstring(cons
                                     char ***flist_ptr,
                                     int *len_ptr);
 
-/** @brief Allocates and returns a AVPlaylistContext with playlist elements specified by a file list.
+/** @brief Adds playlist elements specified by a file list to a AVPlaylistContext.
+ *  @param ctx Pre-allocated AVPlaylistContext to add elements to.
  *  @param flist List of filenames from which to construct the playlist.
  *  @param len Length of filename list.
- *  @return Returns the allocated AVPlaylistContext.
+ *  @return Returns 0 upon success, or negative upon failure.
  */
-AVPlaylistContext *av_playlist_from_filelist(const char **flist, int len);
+int av_playlist_add_filelist(AVPlaylistContext *ctx, const char **flist, int len);
 
 /** @brief Creates and adds AVFormatContext for item located at specified path to a AVPlaylistContext.
  *  @param ctx Pre-allocated AVPlaylistContext to add elements to.

Modified: concat/libavformat/m3u.c
==============================================================================
--- concat/libavformat/m3u.c	Tue Aug 25 09:56:58 2009	(r5268)
+++ concat/libavformat/m3u.c	Tue Aug 25 10:23:19 2009	(r5269)
@@ -92,7 +92,12 @@ static int m3u_read_header(AVFormatConte
         return AVERROR_EOF;
     }
     av_playlist_relative_paths(flist, flist_len, dirname(s->filename));
-    ctx = av_playlist_from_filelist(flist, flist_len);
+    ctx = av_mallocz(sizeof(*ctx));
+    if (!ctx) {
+        av_log(NULL, AV_LOG_ERROR, "failed to allocate AVPlaylistContext in m3u_read_header\n");
+        return AVERROR_NOMEM;
+    }
+    av_playlist_add_filelist(ctx, flist, flist_len);
     av_free(flist);
     s->priv_data = ctx;
     av_playlist_populate_context(ctx, ctx->pe_curidx);

Modified: concat/libavformat/pls.c
==============================================================================
--- concat/libavformat/pls.c	Tue Aug 25 09:56:58 2009	(r5268)
+++ concat/libavformat/pls.c	Tue Aug 25 10:23:19 2009	(r5269)
@@ -111,7 +111,12 @@ static int pls_read_header(AVFormatConte
         return AVERROR_EOF;
     }
     av_playlist_relative_paths(flist, flist_len, dirname(s->filename));
-    ctx = av_playlist_from_filelist(flist, flist_len);
+    ctx = av_mallocz(sizeof(*ctx));
+    if (!ctx) {
+        av_log(NULL, AV_LOG_ERROR, "failed to allocate AVPlaylistContext in pls_read_header\n");
+        return AVERROR_NOMEM;
+    }
+    av_playlist_add_filelist(ctx, flist, flist_len);
     av_free(flist);
     s->priv_data = ctx;
     av_playlist_populate_context(ctx, ctx->pe_curidx);

Modified: concat/libavformat/xspf.c
==============================================================================
--- concat/libavformat/xspf.c	Tue Aug 25 09:56:58 2009	(r5268)
+++ concat/libavformat/xspf.c	Tue Aug 25 10:23:19 2009	(r5269)
@@ -134,7 +134,12 @@ static int xspf_read_header(AVFormatCont
         return AVERROR_EOF;
     }
     av_playlist_relative_paths(flist, flist_len, dirname(s->filename));
-    ctx = av_playlist_from_filelist(flist, flist_len);
+    ctx = av_mallocz(sizeof(*ctx));
+    if (!ctx) {
+        av_log(NULL, AV_LOG_ERROR, "failed to allocate AVPlaylistContext in xspf_read_header\n");
+        return AVERROR_NOMEM;
+    }
+    av_playlist_add_filelist(ctx, flist, flist_len);
     av_free(flist);
     s->priv_data = ctx;
     av_playlist_populate_context(ctx, ctx->pe_curidx);


More information about the FFmpeg-soc mailing list