comparison libmpdemux/demux_mov.c @ 15780:490dff9ee43f

fix memleak when playing mov files
author reimar
date Mon, 20 Jun 2005 14:16:59 +0000
parents a8b8aac04c9e
children dd5d3924a1ab
comparison
equal deleted inserted replaced
15779:a4421e69eb6d 15780:490dff9ee43f
498 mp_msg(MSGT_DEMUX,MSGL_WARN,"MOV: missing header (moov/cmov) chunk! Maybe broken file...\n"); 498 mp_msg(MSGT_DEMUX,MSGL_WARN,"MOV: missing header (moov/cmov) chunk! Maybe broken file...\n");
499 499
500 return 0; 500 return 0;
501 } 501 }
502 502
503 void demux_close_mov(demuxer_t *demuxer) {
504 mov_priv_t* priv = demuxer->priv;
505 int i;
506 if (!priv)
507 return;
508 for (i = 0; i < MOV_MAX_TRACKS; i++) {
509 mov_track_t *track = priv->tracks[i];
510 if (track) {
511 free(track->tkdata);
512 free(track->stdata);
513 free(track->stream_header);
514 free(track->samples);
515 free(track->chunks);
516 free(track->chunkmap);
517 free(track->durmap);
518 free(track->keyframes);
519 free(track->editlist);
520 free(track->desc);
521 free(track);
522 }
523 }
524 free(priv);
525 }
526
503 static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak){ 527 static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak){
504 mov_priv_t* priv=demuxer->priv; 528 mov_priv_t* priv=demuxer->priv;
505 // printf("lschunks (level=%d,endpos=%x)\n", level, endpos); 529 // printf("lschunks (level=%d,endpos=%x)\n", level, endpos);
506 while(1){ 530 while(1){
507 off_t pos; 531 off_t pos;