diff options
author | Aurelien Jacobs <aurel@gnuage.org> | 2010-10-06 20:56:14 +0000 |
---|---|---|
committer | Aurelien Jacobs <aurel@gnuage.org> | 2010-10-06 20:56:14 +0000 |
commit | 38aab35f47c3c7a559c3180568695c6ad21d62ac (patch) | |
tree | 0a4d9b90c2ce5049428020f51cbea516438cabd5 /libavformat | |
parent | feb2440c38c7bde97b04e3ad32575e50cb85c826 (diff) | |
download | ffmpeg-38aab35f47c3c7a559c3180568695c6ad21d62ac.tar.gz |
add new streams API without MAX_STREAMS limit
(disabled until next major bump)
Originally committed as revision 25381 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/avformat.h | 4 | ||||
-rw-r--r-- | libavformat/utils.c | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h index d55a44689b..4a46a36789 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -672,7 +672,11 @@ typedef struct AVFormatContext { void *priv_data; ByteIOContext *pb; unsigned int nb_streams; +#if LIBAVFORMAT_VERSION_MAJOR < 53 AVStream *streams[MAX_STREAMS]; +#else + AVStream **streams; +#endif char filename[1024]; /**< input or output filename */ /* stream info */ int64_t timestamp; diff --git a/libavformat/utils.c b/libavformat/utils.c index 2776a0ff05..73f89a0a0f 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2543,11 +2543,21 @@ AVStream *av_new_stream(AVFormatContext *s, int id) { AVStream *st; int i; +#if LIBAVFORMAT_VERSION_MAJOR >= 53 + AVStream **streams; + if (s->nb_streams >= INT_MAX/sizeof(*streams)) + return NULL; + streams = av_realloc(s->streams, (s->nb_streams + 1) * sizeof(*streams)); + if (!streams) + return NULL; + s->streams = streams; +#else if (s->nb_streams >= MAX_STREAMS){ av_log(s, AV_LOG_ERROR, "Too many streams\n"); return NULL; } +#endif st = av_mallocz(sizeof(AVStream)); if (!st) |