diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-06-18 11:19:27 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2011-10-19 17:02:11 +0200 |
commit | 569129a6dc503379c0486008224dfaff8f0ee81f (patch) | |
tree | 25e88c8ee236c07ea01614e908fe7c08392435d1 /libavformat | |
parent | 73447eb4bdba11bf23367f115f1a0ce46ce6f1df (diff) | |
download | ffmpeg-569129a6dc503379c0486008224dfaff8f0ee81f.tar.gz |
lavf: add avformat_new_stream as a replacement for av_new_stream.
It takes a codec parameter, thus enabling codec-specific defaults.
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/avformat.h | 21 | ||||
-rw-r--r-- | libavformat/utils.c | 13 | ||||
-rw-r--r-- | libavformat/version.h | 7 |
3 files changed, 37 insertions, 4 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 4e7e883eb5..65f66d84d3 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1311,6 +1311,7 @@ void av_close_input_file(AVFormatContext *s); */ void avformat_free_context(AVFormatContext *s); +#if FF_API_NEW_STREAM /** * Add a new stream to a media file. * @@ -1321,7 +1322,27 @@ void avformat_free_context(AVFormatContext *s); * @param s media file handle * @param id file-format-dependent stream ID */ +attribute_deprecated AVStream *av_new_stream(AVFormatContext *s, int id); +#endif + +/** + * Add a new stream to a media file. + * + * When demuxing, it is called by the demuxer in read_header(). If the + * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also + * be called in read_packet(). + * + * When muxing, should be called by the user before avformat_write_header(). + * + * @param c If non-NULL, the AVCodecContext corresponding to the new stream + * will be initialized to use this codec. This is needed for e.g. codec-specific + * defaults to be set, so codec should be provided if it is known. + * + * @return newly created stream or NULL on error. + */ +AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c); + AVProgram *av_new_program(AVFormatContext *s, int id); /** diff --git a/libavformat/utils.c b/libavformat/utils.c index 6393b62615..9735d455d9 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2657,8 +2657,18 @@ void av_close_input_file(AVFormatContext *s) avio_close(pb); } +#if FF_API_NEW_STREAM AVStream *av_new_stream(AVFormatContext *s, int id) { + AVStream *st = avformat_new_stream(s, NULL); + if (st) + st->id = id; + return st; +} +#endif + +AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c) +{ AVStream *st; int i; AVStream **streams; @@ -2678,13 +2688,12 @@ AVStream *av_new_stream(AVFormatContext *s, int id) return NULL; } - st->codec = avcodec_alloc_context3(NULL); + st->codec = avcodec_alloc_context3(c); if (s->iformat) { /* no default bitrate if decoding */ st->codec->bit_rate = 0; } st->index = s->nb_streams; - st->id = id; st->start_time = AV_NOPTS_VALUE; st->duration = AV_NOPTS_VALUE; /* we set the current DTS to 0 so that formats without any timestamps diff --git a/libavformat/version.h b/libavformat/version.h index db20bd6658..9de30ea55b 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -24,8 +24,8 @@ #include "libavutil/avutil.h" #define LIBAVFORMAT_VERSION_MAJOR 53 -#define LIBAVFORMAT_VERSION_MINOR 9 -#define LIBAVFORMAT_VERSION_MICRO 1 +#define LIBAVFORMAT_VERSION_MINOR 10 +#define LIBAVFORMAT_VERSION_MICRO 0 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ @@ -95,5 +95,8 @@ #ifndef FF_API_RTSP_URL_OPTIONS #define FF_API_RTSP_URL_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 54) #endif +#ifndef FF_API_NEW_STREAM +#define FF_API_NEW_STREAM (LIBAVFORMAT_VERSION_MAJOR < 54) +#endif #endif /* AVFORMAT_VERSION_H */ |