diff options
author | atmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-03-24 06:10:13 +0000 |
---|---|---|
committer | atmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-03-24 06:10:13 +0000 |
commit | a0399163e6070c43bab32ada1cd250c586173548 (patch) | |
tree | 602992d3f39aaf970dc2d77a5fa4ab8614d8f29e /libmpdemux/demux_mov.c | |
parent | a699ffad787db0eb9853e8a629c4353ac9b1e183 (diff) | |
download | mpv-a0399163e6070c43bab32ada1cd250c586173548.tar.bz2 mpv-a0399163e6070c43bab32ada1cd250c586173548.tar.xz |
- Add parsing of Sync Layer Descriptor
- Add a function to cleanup malloced mem from mp4_parse_esds
- Fix some weird code from me :)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5306 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mov.c')
-rw-r--r-- | libmpdemux/demux_mov.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index 9b3e3278fb..dd4be1daea 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -706,21 +706,17 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak case MOV_FOURCC('e','s','d','s'): { mp_msg(MSGT_DEMUX, MSGL_INFO, "MOV: Found MPEG4 audio Elementary Stream Descriptor atom (%d)!\n", atom_len); if(atom_len >= 8) { - esds_t *esds = (esds_t *)malloc(sizeof(esds_t)); - if(esds && !mp4_parse_esds(&trak->stdata[36], atom_len-8, esds)) { + esds_t esds; + if(!mp4_parse_esds(&trak->stdata[36], atom_len-8, &esds)) { - sh->i_bps = esds->avgBitrate/8; + sh->i_bps = esds.avgBitrate/8; // dump away the codec specific configuration for the AAC decoder - sh->codecdata_len = esds->decoderConfigLen; + sh->codecdata_len = esds.decoderConfigLen; sh->codecdata = (unsigned char *)malloc(sh->codecdata_len); - memcpy(sh->codecdata, esds->decoderConfig, sh->codecdata_len); - } - if(esds) { - if(esds->decoderConfig) - free(esds->decoderConfig); - free(esds); + memcpy(sh->codecdata, esds.decoderConfig, sh->codecdata_len); } + mp4_free_esds(&esds); // freeup esds mem #if 0 { FILE* f=fopen("esds.dat","wb"); fwrite(&trak->stdata[36],atom_len-8,1,f); |