avformat/nutenc: implement deinit()
Should prevent some leaks if header writing fails Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
adc7d2a4ce
commit
56c182c4d7
@ -288,8 +288,10 @@ static int enu_free(void *opaque, void *elem)
|
||||
|
||||
void ff_nut_free_sp(NUTContext *nut)
|
||||
{
|
||||
av_tree_enumerate(nut->syncpoints, NULL, NULL, enu_free);
|
||||
av_tree_destroy(nut->syncpoints);
|
||||
if (nut->syncpoints) {
|
||||
av_tree_enumerate(nut->syncpoints, NULL, NULL, enu_free);
|
||||
av_tree_destroy(nut->syncpoints);
|
||||
}
|
||||
}
|
||||
|
||||
const Dispositions ff_nut_dispositions[] = {
|
||||
|
@ -1174,7 +1174,7 @@ static int nut_write_trailer(AVFormatContext *s)
|
||||
{
|
||||
NUTContext *nut = s->priv_data;
|
||||
AVIOContext *bc = s->pb, *dyn_bc;
|
||||
int i, ret;
|
||||
int ret;
|
||||
|
||||
while (nut->header_count < 3)
|
||||
write_headers(s, bc);
|
||||
@ -1186,15 +1186,22 @@ static int nut_write_trailer(AVFormatContext *s)
|
||||
put_packet(nut, bc, dyn_bc, 1, INDEX_STARTCODE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void nut_write_deinit(AVFormatContext *s)
|
||||
{
|
||||
NUTContext *nut = s->priv_data;
|
||||
int i;
|
||||
|
||||
ff_nut_free_sp(nut);
|
||||
for (i=0; i<s->nb_streams; i++)
|
||||
av_freep(&nut->stream[i].keyframe_pts);
|
||||
if (nut->stream)
|
||||
for (i=0; i<s->nb_streams; i++)
|
||||
av_freep(&nut->stream[i].keyframe_pts);
|
||||
|
||||
av_freep(&nut->stream);
|
||||
av_freep(&nut->chapter);
|
||||
av_freep(&nut->time_base);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define OFFSET(x) offsetof(NUTContext, x)
|
||||
@ -1227,6 +1234,7 @@ AVOutputFormat ff_nut_muxer = {
|
||||
.write_header = nut_write_header,
|
||||
.write_packet = nut_write_packet,
|
||||
.write_trailer = nut_write_trailer,
|
||||
.deinit = nut_write_deinit,
|
||||
.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS,
|
||||
.codec_tag = ff_nut_codec_tags,
|
||||
.priv_class = &class,
|
||||
|
Loading…
Reference in New Issue
Block a user