summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mov.c
diff options
context:
space:
mode:
authoratmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-03-24 06:10:13 +0000
committeratmos4 <atmos4@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-03-24 06:10:13 +0000
commita0399163e6070c43bab32ada1cd250c586173548 (patch)
tree602992d3f39aaf970dc2d77a5fa4ab8614d8f29e /libmpdemux/demux_mov.c
parenta699ffad787db0eb9853e8a629c4353ac9b1e183 (diff)
downloadmpv-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.c16
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);