lavf: add avformat_new_stream as a replacement for av_new_stream.

It takes a codec parameter, thus enabling codec-specific defaults.
This commit is contained in:
Anton Khirnov 2011-06-18 11:19:27 +02:00
parent 73447eb4bd
commit 569129a6dc
4 changed files with 40 additions and 4 deletions

View File

@ -13,6 +13,9 @@ libavutil: 2011-04-18
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
Add AVFMT_NO_BYTE_SEEK AVInputFormat flag.

View File

@ -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);
/**

View File

@ -2657,7 +2657,17 @@ 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;
@ -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

View File

@ -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 */