[FFmpeg-devel] [PATCH 1/3] Allow output formats without any streams.
Anton Khirnov
anton
Wed Dec 15 13:15:12 CET 2010
Required for future metadata format.
---
ffmpeg.c | 2 +-
libavformat/avformat.h | 1 +
libavformat/utils.c | 4 ++--
3 files changed, 4 insertions(+), 3 deletions(-)
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 3079b38..1820ec9 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. */
#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 c8e6d66..7138f73 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2708,7 +2708,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);
}
@@ -2776,7 +2776,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);
}
--
1.7.2.3
More information about the ffmpeg-devel
mailing list