summaryrefslogtreecommitdiffstats
path: root/demux/demux.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-11-14 19:51:09 +0100
committerwm4 <wm4@nowhere>2013-11-14 19:52:18 +0100
commite91edf9aed3fde6f0038d7db8acfc1653d8fe9d7 (patch)
tree22730097a101ac423ed5c138224878883399e72d /demux/demux.c
parentd0346e087abf7da9cda71143039ec4cc74627116 (diff)
downloadmpv-e91edf9aed3fde6f0038d7db8acfc1653d8fe9d7.tar.bz2
mpv-e91edf9aed3fde6f0038d7db8acfc1653d8fe9d7.tar.xz
demux: use talloc for certain stream headers
Slightly simplifies memory management. This might make adding a demuxer cache wrapper easier at a later point, because you can just copy the complete stream header, without worrying that the wrapper will free the individual stream header fields.
Diffstat (limited to 'demux/demux.c')
-rw-r--r--demux/demux.c30
1 files changed, 1 insertions, 29 deletions
diff --git a/demux/demux.c b/demux/demux.c
index da5957efdd..af00e81676 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -273,34 +273,6 @@ struct sh_stream *new_sh_stream(demuxer_t *demuxer, enum stream_type type)
return sh;
}
-static void free_sh_sub(sh_sub_t *sh)
-{
- free(sh->extradata);
-}
-
-static void free_sh_audio(sh_audio_t *sh)
-{
- free(sh->wf);
- free(sh->codecdata);
-}
-
-static void free_sh_video(sh_video_t *sh)
-{
- free(sh->bih);
-}
-
-static void free_sh_stream(struct sh_stream *sh)
-{
- ds_free_packs(sh->ds);
-
- switch (sh->type) {
- case STREAM_AUDIO: free_sh_audio(sh->audio); break;
- case STREAM_VIDEO: free_sh_video(sh->video); break;
- case STREAM_SUB: free_sh_sub(sh->sub); break;
- default: abort();
- }
-}
-
void free_demuxer(demuxer_t *demuxer)
{
if (!demuxer)
@@ -309,7 +281,7 @@ void free_demuxer(demuxer_t *demuxer)
demuxer->desc->close(demuxer);
// free streams:
for (int n = 0; n < demuxer->num_streams; n++)
- free_sh_stream(demuxer->streams[n]);
+ ds_free_packs(demuxer->streams[n]->ds);
talloc_free(demuxer);
}