Skip to content

Commit

Permalink
lavf: add avformat_new_stream as a replacement for av_new_stream.
Browse files Browse the repository at this point in the history
It takes a codec parameter, thus enabling codec-specific defaults.
  • Loading branch information
elenril committed Oct 19, 2011
1 parent 73447eb commit 569129a
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 4 deletions.
3 changes: 3 additions & 0 deletions doc/APIchanges
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
21 changes: 21 additions & 0 deletions libavformat/avformat.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand All @@ -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);

/**
Expand Down
13 changes: 11 additions & 2 deletions libavformat/utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
7 changes: 5 additions & 2 deletions libavformat/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -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, \
Expand Down Expand Up @@ -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 */

0 comments on commit 569129a

Please sign in to comment.