mirror of
https://github.com/mpv-player/mpv
synced 2025-03-25 04:38:01 +00:00
fix memleak when playing mov files
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15781 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
ef1e11d2cb
commit
a3e5eab301
@ -500,6 +500,30 @@ skip_chunk:
|
||||
return 0;
|
||||
}
|
||||
|
||||
void demux_close_mov(demuxer_t *demuxer) {
|
||||
mov_priv_t* priv = demuxer->priv;
|
||||
int i;
|
||||
if (!priv)
|
||||
return;
|
||||
for (i = 0; i < MOV_MAX_TRACKS; i++) {
|
||||
mov_track_t *track = priv->tracks[i];
|
||||
if (track) {
|
||||
free(track->tkdata);
|
||||
free(track->stdata);
|
||||
free(track->stream_header);
|
||||
free(track->samples);
|
||||
free(track->chunks);
|
||||
free(track->chunkmap);
|
||||
free(track->durmap);
|
||||
free(track->keyframes);
|
||||
free(track->editlist);
|
||||
free(track->desc);
|
||||
free(track);
|
||||
}
|
||||
}
|
||||
free(priv);
|
||||
}
|
||||
|
||||
static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak){
|
||||
mov_priv_t* priv=demuxer->priv;
|
||||
// printf("lschunks (level=%d,endpos=%x)\n", level, endpos);
|
||||
|
@ -161,6 +161,7 @@ extern void demux_close_aac(demuxer_t* demuxer);
|
||||
#ifdef USE_WIN32DLL
|
||||
extern void demux_close_avs(demuxer_t* demuxer);
|
||||
#endif
|
||||
extern void demux_close_mov(demuxer_t* demuxer);
|
||||
|
||||
|
||||
#ifdef USE_TV
|
||||
@ -258,6 +259,8 @@ void free_demuxer(demuxer_t *demuxer){
|
||||
case DEMUXER_TYPE_AVS:
|
||||
demux_close_avs(demuxer); break;
|
||||
#endif
|
||||
case DEMUXER_TYPE_MOV:
|
||||
demux_close_mov(demuxer); break;
|
||||
}
|
||||
// free streams:
|
||||
for(i = 0; i < MAX_A_STREAMS; i++)
|
||||
|
Loading…
Reference in New Issue
Block a user