Commit 569129a6 authored by Anton Khirnov's avatar Anton Khirnov

lavf: add avformat_new_stream as a replacement for av_new_stream.

It takes a codec parameter, thus enabling codec-specific defaults.
parent 73447eb4
...@@ -13,6 +13,9 @@ libavutil: 2011-04-18 ...@@ -13,6 +13,9 @@ libavutil: 2011-04-18
API changes, most recent first: API changes, most recent first:
2011-10-xx - xxxxxxx - lavf 53.10.0
Add avformat_new_stream(). Deprecate av_new_stream().
2011-xx-xx - xxxxxxx - lavf 53.9.0 2011-xx-xx - xxxxxxx - lavf 53.9.0
Add AVFMT_NO_BYTE_SEEK AVInputFormat flag. Add AVFMT_NO_BYTE_SEEK AVInputFormat flag.
......
...@@ -1311,6 +1311,7 @@ void av_close_input_file(AVFormatContext *s); ...@@ -1311,6 +1311,7 @@ void av_close_input_file(AVFormatContext *s);
*/ */
void avformat_free_context(AVFormatContext *s); void avformat_free_context(AVFormatContext *s);
#if FF_API_NEW_STREAM
/** /**
* Add a new stream to a media file. * Add a new stream to a media file.
* *
...@@ -1321,7 +1322,27 @@ void avformat_free_context(AVFormatContext *s); ...@@ -1321,7 +1322,27 @@ void avformat_free_context(AVFormatContext *s);
* @param s media file handle * @param s media file handle
* @param id file-format-dependent stream ID * @param id file-format-dependent stream ID
*/ */
attribute_deprecated
AVStream *av_new_stream(AVFormatContext *s, int id); 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); AVProgram *av_new_program(AVFormatContext *s, int id);
/** /**
......
...@@ -2657,7 +2657,17 @@ void av_close_input_file(AVFormatContext *s) ...@@ -2657,7 +2657,17 @@ void av_close_input_file(AVFormatContext *s)
avio_close(pb); avio_close(pb);
} }
#if FF_API_NEW_STREAM
AVStream *av_new_stream(AVFormatContext *s, int id) 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; AVStream *st;
int i; int i;
...@@ -2678,13 +2688,12 @@ AVStream *av_new_stream(AVFormatContext *s, int id) ...@@ -2678,13 +2688,12 @@ AVStream *av_new_stream(AVFormatContext *s, int id)
return NULL; return NULL;
} }
st->codec = avcodec_alloc_context3(NULL); st->codec = avcodec_alloc_context3(c);
if (s->iformat) { if (s->iformat) {
/* no default bitrate if decoding */ /* no default bitrate if decoding */
st->codec->bit_rate = 0; st->codec->bit_rate = 0;
} }
st->index = s->nb_streams; st->index = s->nb_streams;
st->id = id;
st->start_time = AV_NOPTS_VALUE; st->start_time = AV_NOPTS_VALUE;
st->duration = AV_NOPTS_VALUE; st->duration = AV_NOPTS_VALUE;
/* we set the current DTS to 0 so that formats without any timestamps /* we set the current DTS to 0 so that formats without any timestamps
......
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
#include "libavutil/avutil.h" #include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 53 #define LIBAVFORMAT_VERSION_MAJOR 53
#define LIBAVFORMAT_VERSION_MINOR 9 #define LIBAVFORMAT_VERSION_MINOR 10
#define LIBAVFORMAT_VERSION_MICRO 1 #define LIBAVFORMAT_VERSION_MICRO 0
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \ LIBAVFORMAT_VERSION_MINOR, \
...@@ -95,5 +95,8 @@ ...@@ -95,5 +95,8 @@
#ifndef FF_API_RTSP_URL_OPTIONS #ifndef FF_API_RTSP_URL_OPTIONS
#define FF_API_RTSP_URL_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 54) #define FF_API_RTSP_URL_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif #endif
#ifndef FF_API_NEW_STREAM
#define FF_API_NEW_STREAM (LIBAVFORMAT_VERSION_MAJOR < 54)
#endif
#endif /* AVFORMAT_VERSION_H */ #endif /* AVFORMAT_VERSION_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment