mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Plug memory leak in NUT muxer and demuxer
Originally committed as revision 22174 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
1f6d0d42c5
commit
4b83fc0fe4
@ -12,6 +12,9 @@ libavutil: 2009-03-08
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2010-03-03 - r22174 - lavu 50.10.0 - av_tree_enumerate()
|
||||||
|
Add av_tree_enumerate().
|
||||||
|
|
||||||
2010-02-07 - r21673 - lavu 50.9.0 - av_compare_ts()
|
2010-02-07 - r21673 - lavu 50.9.0 - av_compare_ts()
|
||||||
Add av_compare_ts().
|
Add av_compare_ts().
|
||||||
|
|
||||||
|
@ -69,6 +69,17 @@ void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void enu_free(void *opaque, void *elem)
|
||||||
|
{
|
||||||
|
av_free(elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ff_nut_free_sp(NUTContext *nut)
|
||||||
|
{
|
||||||
|
av_tree_enumerate(nut->syncpoints, NULL, NULL, enu_free);
|
||||||
|
av_tree_destroy(nut->syncpoints);
|
||||||
|
}
|
||||||
|
|
||||||
const Dispositions ff_nut_dispositions[] = {
|
const Dispositions ff_nut_dispositions[] = {
|
||||||
{"default" , AV_DISPOSITION_DEFAULT},
|
{"default" , AV_DISPOSITION_DEFAULT},
|
||||||
{"dub" , AV_DISPOSITION_DUB},
|
{"dub" , AV_DISPOSITION_DUB},
|
||||||
|
@ -110,6 +110,7 @@ int64_t ff_lsb2full(StreamContext *stream, int64_t lsb);
|
|||||||
int ff_nut_sp_pos_cmp(Syncpoint *a, Syncpoint *b);
|
int ff_nut_sp_pos_cmp(Syncpoint *a, Syncpoint *b);
|
||||||
int ff_nut_sp_pts_cmp(Syncpoint *a, Syncpoint *b);
|
int ff_nut_sp_pts_cmp(Syncpoint *a, Syncpoint *b);
|
||||||
void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts);
|
void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts);
|
||||||
|
void ff_nut_free_sp(NUTContext *nut);
|
||||||
|
|
||||||
extern const Dispositions ff_nut_dispositions[];
|
extern const Dispositions ff_nut_dispositions[];
|
||||||
|
|
||||||
|
@ -901,6 +901,7 @@ static int nut_read_close(AVFormatContext *s)
|
|||||||
|
|
||||||
av_freep(&nut->time_base);
|
av_freep(&nut->time_base);
|
||||||
av_freep(&nut->stream);
|
av_freep(&nut->stream);
|
||||||
|
ff_nut_free_sp(nut);
|
||||||
for(i = 1; i < nut->header_count; i++)
|
for(i = 1; i < nut->header_count; i++)
|
||||||
av_freep(&nut->header[i]);
|
av_freep(&nut->header[i]);
|
||||||
|
|
||||||
|
@ -797,6 +797,7 @@ static int write_trailer(AVFormatContext *s){
|
|||||||
while(nut->header_count<3)
|
while(nut->header_count<3)
|
||||||
write_headers(nut, bc);
|
write_headers(nut, bc);
|
||||||
put_flush_packet(bc);
|
put_flush_packet(bc);
|
||||||
|
ff_nut_free_sp(nut);
|
||||||
av_freep(&nut->stream);
|
av_freep(&nut->stream);
|
||||||
av_freep(&nut->time_base);
|
av_freep(&nut->time_base);
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 50
|
#define LIBAVUTIL_VERSION_MAJOR 50
|
||||||
#define LIBAVUTIL_VERSION_MINOR 9
|
#define LIBAVUTIL_VERSION_MINOR 10
|
||||||
#define LIBAVUTIL_VERSION_MICRO 0
|
#define LIBAVUTIL_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
@ -135,7 +135,6 @@ void av_tree_destroy(AVTreeNode *t){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem)){
|
void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem)){
|
||||||
if(t){
|
if(t){
|
||||||
int v= cmp ? cmp(opaque, t->elem) : 0;
|
int v= cmp ? cmp(opaque, t->elem) : 0;
|
||||||
@ -144,7 +143,6 @@ void av_tree_enumerate(AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, voi
|
|||||||
if(v<=0) av_tree_enumerate(t->child[1], opaque, cmp, enu);
|
if(v<=0) av_tree_enumerate(t->child[1], opaque, cmp, enu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
|
|
||||||
|
@ -79,4 +79,17 @@ void *av_tree_find(const struct AVTreeNode *root, void *key, int (*cmp)(void *ke
|
|||||||
void *av_tree_insert(struct AVTreeNode **rootp, void *key, int (*cmp)(void *key, const void *b), struct AVTreeNode **next);
|
void *av_tree_insert(struct AVTreeNode **rootp, void *key, int (*cmp)(void *key, const void *b), struct AVTreeNode **next);
|
||||||
void av_tree_destroy(struct AVTreeNode *t);
|
void av_tree_destroy(struct AVTreeNode *t);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies enu(opaque, &elem) to all the elements in the tree in a given range.
|
||||||
|
*
|
||||||
|
* @param cmp a comparison function that returns < 0 for a element below the
|
||||||
|
* range, > 0 for a element above the range and == 0 for a
|
||||||
|
* element inside the range
|
||||||
|
*
|
||||||
|
* @note The cmp function should use the same ordering used to construct the
|
||||||
|
* tree.
|
||||||
|
*/
|
||||||
|
void av_tree_enumerate(struct AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem));
|
||||||
|
|
||||||
|
|
||||||
#endif /* AVUTIL_TREE_H */
|
#endif /* AVUTIL_TREE_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user