lavf: factor ff_free_stream() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
3ac754b93b
commit
85a576775e
@ -344,4 +344,6 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt);
|
||||
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out,
|
||||
AVPacket *pkt, int flush);
|
||||
|
||||
void ff_free_stream(AVFormatContext *s, AVStream *st);
|
||||
|
||||
#endif /* AVFORMAT_INTERNAL_H */
|
||||
|
@ -2996,6 +2996,25 @@ int av_read_pause(AVFormatContext *s)
|
||||
return AVERROR(ENOSYS);
|
||||
}
|
||||
|
||||
void ff_free_stream(AVFormatContext *s, AVStream *st){
|
||||
av_assert0(s->nb_streams>0);
|
||||
av_assert0(s->streams[ s->nb_streams-1 ] == st);
|
||||
|
||||
if (st->parser) {
|
||||
av_parser_close(st->parser);
|
||||
}
|
||||
if (st->attached_pic.data)
|
||||
av_free_packet(&st->attached_pic);
|
||||
av_dict_free(&st->metadata);
|
||||
av_freep(&st->index_entries);
|
||||
av_freep(&st->codec->extradata);
|
||||
av_freep(&st->codec->subtitle_header);
|
||||
av_freep(&st->codec);
|
||||
av_freep(&st->priv_data);
|
||||
av_freep(&st->info);
|
||||
av_freep(&s->streams[ --s->nb_streams ]);
|
||||
}
|
||||
|
||||
void avformat_free_context(AVFormatContext *s)
|
||||
{
|
||||
int i;
|
||||
@ -3005,22 +3024,8 @@ void avformat_free_context(AVFormatContext *s)
|
||||
if (s->iformat && s->iformat->priv_class && s->priv_data)
|
||||
av_opt_free(s->priv_data);
|
||||
|
||||
for(i=0;i<s->nb_streams;i++) {
|
||||
/* free all data in a stream component */
|
||||
st = s->streams[i];
|
||||
if (st->parser) {
|
||||
av_parser_close(st->parser);
|
||||
}
|
||||
if (st->attached_pic.data)
|
||||
av_free_packet(&st->attached_pic);
|
||||
av_dict_free(&st->metadata);
|
||||
av_freep(&st->index_entries);
|
||||
av_freep(&st->codec->extradata);
|
||||
av_freep(&st->codec->subtitle_header);
|
||||
av_freep(&st->codec);
|
||||
av_freep(&st->priv_data);
|
||||
av_freep(&st->info);
|
||||
av_freep(&st);
|
||||
for(i=s->nb_streams-1; i>=0; i--) {
|
||||
ff_free_stream(s, s->streams[i]);
|
||||
}
|
||||
for(i=s->nb_programs-1; i>=0; i--) {
|
||||
av_dict_free(&s->programs[i]->metadata);
|
||||
|
Loading…
Reference in New Issue
Block a user