[SCM] libav/experimental: Allow output formats without any streams.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:20:52 UTC 2013


The following commit has been merged in the experimental branch:
commit bb62d5c1f06e7ff0446abb9cbe6a102cdbd38cc0
Author: Anton Khirnov <wyskas at gmail.com>
Date:   Mon Dec 27 07:46:44 2010 +0000

    Allow output formats without any streams.
    
    Required for future metadata format.
    
    Originally committed as revision 26100 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/ffmpeg.c b/ffmpeg.c
index 71e5d3b..9491981 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1990,7 +1990,7 @@ static int transcode(AVFormatContext **output_files,
     nb_ostreams = 0;
     for(i=0;i<nb_output_files;i++) {
         os = output_files[i];
-        if (!os->nb_streams) {
+        if (!os->nb_streams && !(os->oformat->flags & AVFMT_NOSTREAMS)) {
             dump_format(output_files[i], i, output_files[i]->filename, 1);
             fprintf(stderr, "Output file #%d does not contain any stream\n", i);
             ret = AVERROR(EINVAL);
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 1e87881..4f46935 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -323,6 +323,7 @@ typedef struct AVFormatParameters {
 #define AVFMT_TS_DISCONT    0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */
 #define AVFMT_VARIABLE_FPS  0x0400 /**< Format allows variable fps. */
 #define AVFMT_NODIMENSIONS  0x0800 /**< Format does not need width/height */
+#define AVFMT_NOSTREAMS     0x1000 /**< Format does not require any streams */
 
 typedef struct AVOutputFormat {
     const char *name;
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 58e06e8..e9a8099 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2709,7 +2709,7 @@ int av_write_header(AVFormatContext *s)
     AVStream *st;
 
     // some sanity checks
-    if (s->nb_streams == 0) {
+    if (s->nb_streams == 0 && !(s->oformat->flags & AVFMT_NOSTREAMS)) {
         av_log(s, AV_LOG_ERROR, "no streams\n");
         return AVERROR(EINVAL);
     }
@@ -2777,7 +2777,7 @@ int av_write_header(AVFormatContext *s)
 #endif
 
     /* set muxer identification string */
-    if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) {
+    if (s->nb_streams && !(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) {
         av_metadata_set2(&s->metadata, "encoder", LIBAVFORMAT_IDENT, 0);
     }
 

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list