[SCM] libav/experimental: add support for chapters definition in lavf patch by Anton Khirnov wyskas _at_ gmail _dot_ com

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:21:00 UTC 2013


The following commit has been merged in the experimental branch:
commit 79d7836a5e213d547629555e3f1157e7197aef68
Author: Anton Khirnov <wyskas at gmail.com>
Date:   Thu May 22 22:00:21 2008 +0000

    add support for chapters definition in lavf
    patch by Anton Khirnov  wyskas _at_ gmail _dot_ com
    
    Originally committed as revision 13240 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 3c67bdb..17f317e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -22,7 +22,7 @@
 #define FFMPEG_AVFORMAT_H
 
 #define LIBAVFORMAT_VERSION_MAJOR 52
-#define LIBAVFORMAT_VERSION_MINOR 13
+#define LIBAVFORMAT_VERSION_MINOR 14
 #define LIBAVFORMAT_VERSION_MICRO  0
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@@ -389,6 +389,11 @@ typedef struct AVProgram {
 #define AVFMTCTX_NOHEADER      0x0001 /**< signal that no header is present
                                          (streams are added dynamically) */
 
+typedef struct AVChapter {
+    int64_t start, end; /**< chapter start/end time in AV_TIME_BASE units */
+    char *title; /**< chapter title */
+} AVChapter;
+
 #define MAX_STREAMS 20
 
 /**
@@ -514,6 +519,9 @@ typedef struct AVFormatContext {
      * obtained from real-time capture devices.
      */
     unsigned int max_picture_buffer;
+
+    int num_chapters;
+    AVChapter **chapters;
 } AVFormatContext;
 
 typedef struct AVPacketList {
@@ -745,6 +753,18 @@ AVStream *av_new_stream(AVFormatContext *s, int id);
 AVProgram *av_new_program(AVFormatContext *s, int id);
 
 /**
+ * Add a new chapter.
+ * This function is NOT part of the public API
+ * and should be ONLY used by demuxers.
+ *
+ * @param s media file handle
+ * @param start chapter start time in AV_TIME_BASE units
+ * @param end chapter end time in AV_TIME_BASE units
+ * @param title chapter title
+ */
+int ff_new_chapter(AVFormatContext *s, int64_t start, int64_t end, const char *title);
+
+/**
  * Set the pts for a given stream.
  *
  * @param s stream
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 5b6fd55..d98db39 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2148,6 +2148,11 @@ void av_close_input_stream(AVFormatContext *s)
     av_freep(&s->programs);
     flush_packet_queue(s);
     av_freep(&s->priv_data);
+    while(s->num_chapters--) {
+        av_free(s->chapters[s->num_chapters]->title);
+        av_free(s->chapters[s->num_chapters]);
+    }
+    av_freep(&s->chapters);
     av_free(s);
 }
 
@@ -2229,6 +2234,19 @@ void av_set_program_name(AVProgram *program, char *provider_name, char *name)
     }
 }
 
+int ff_new_chapter(AVFormatContext *s, int64_t start, int64_t end, const char *title)
+{
+    AVChapter *chapter = av_mallocz(sizeof(AVChapter));
+    if(!chapter)
+        return AVERROR(ENOMEM);
+    chapter->title = av_strdup(title);
+    chapter->start = start;
+    chapter->end = end;
+
+    dynarray_add(&s->chapters, &s->num_chapters, chapter);
+
+    return 0;
+}
 
 /************************************************************/
 /* output media file */

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list