annotate libmpdemux/parse_mp4.c @ 9009:f2d4324561b2

1) Removed the code to remove {} from sub_read_line_ssa 2) Put this code in a separated function: sub_pp_ssa 3) After recoding added a call to sub_pp_ssa. To be more acqurate: I added a pointer to function to hold a postprocessing function to be invoked after using iconv. There are one pointer for each format, if this pointer isn.t NULL the post processing function is called. patch by Salvador Eduardo Tropea <salvador@inti.gov.ar> help by <hephooey@fastmail.fm>
author arpi
date Sun, 19 Jan 2003 00:54:55 +0000
parents a3aac765967d
children 492c6d674c3e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
1 /* parse_mp4.c - MP4 file format parser code
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
2 * This file is part of MPlayer, see http://mplayerhq.hu/ for info.
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
3 * (c)2002 by Felix Buenemann <atmosfear at users.sourceforge.net>
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
4 * File licensed under the GPL, see http://www.fsf.org/ for more info.
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
5 * Code inspired by libmp4 from http://mpeg4ip.sourceforge.net/.
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
6 */
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
7
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
8 #include <stdio.h>
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
9 #include <inttypes.h>
5403
dba4cecbb4d1 FreeBSD warning fix
nexus
parents: 5333
diff changeset
10 #ifdef HAVE_MALLOC_H
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
11 #include <malloc.h>
5403
dba4cecbb4d1 FreeBSD warning fix
nexus
parents: 5333
diff changeset
12 #endif
5404
534580bc88a8 FreeBSD require stdlib.h
nexus
parents: 5403
diff changeset
13 #include <stdlib.h>
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
14 #include "parse_mp4.h"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
15 #include "mp_msg.h"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
16 #include "stream.h"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
17
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
18 //#define MP4_DUMPATOM
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
19
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
20 #define MP4_DL MSGL_V
5303
534f16f50c17 10l fix memory allocation
atmos4
parents: 5301
diff changeset
21 #define freereturn(a,b) free(a); return b
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
22
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
23 int mp4_read_descr_len(stream_t *s) {
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
24 uint8_t b;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
25 uint8_t numBytes = 0;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
26 uint32_t length = 0;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
27
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
28 do {
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
29 b = stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
30 numBytes++;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
31 length = (length << 7) | (b & 0x7F);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
32 } while ((b & 0x80) && numBytes < 4);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
33
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
34 //printf("MP4 read desc len: %d\n", length);
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
35 return length;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
36 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
37
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
38 /* parse the data part of MP4 esds atoms */
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
39 int mp4_parse_esds(unsigned char *data, int datalen, esds_t *esds) {
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
40 /* create memory stream from data */
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
41 stream_t *s = new_memory_stream(data, datalen);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
42 uint8_t len;
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
43 #ifdef MP4_DUMPATOM
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
44 {int i;
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
45 printf("ESDS Dump (%dbyte):\n", datalen);
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
46 for(i = 0; i < datalen; i++)
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
47 printf("%02X ", data[i]);
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
48 printf("\nESDS Dumped\n");}
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
49 #endif
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
50 memset(esds, 0, sizeof(esds_t));
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
51
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
52 esds->version = stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
53 esds->flags = stream_read_int24(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
54 mp_msg(MSGT_DEMUX, MP4_DL,
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
55 "ESDS MPEG4 version: %d flags: 0x%06X\n",
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
56 esds->version, esds->flags);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
57
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
58 /* get and verify ES_DescrTag */
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
59 if (stream_read_char(s) == MP4ESDescrTag) {
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
60 /* read length */
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
61 len = mp4_read_descr_len(s);
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
62
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
63 esds->ESId = stream_read_word(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
64 esds->streamPriority = stream_read_char(s);
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
65 mp_msg(MSGT_DEMUX, MP4_DL,
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
66 "ESDS MPEG4 ES Descriptor (%dBytes):\n"
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
67 " -> ESId: %d\n"
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
68 " -> streamPriority: %d\n",
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
69 len, esds->ESId, esds->streamPriority);
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
70
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
71 if (len < (5 + 15)) {
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
72 freereturn(s,1);
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
73 }
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
74 } else {
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
75 esds->ESId = stream_read_word(s);
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
76 mp_msg(MSGT_DEMUX, MP4_DL,
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
77 "ESDS MPEG4 ES Descriptor (%dBytes):\n"
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
78 " -> ESId: %d\n", 2, esds->ESId);
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
79 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
80
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
81 /* get and verify DecoderConfigDescrTab */
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
82 if (stream_read_char(s) != MP4DecConfigDescrTag) {
5303
534f16f50c17 10l fix memory allocation
atmos4
parents: 5301
diff changeset
83 freereturn(s,1);
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
84 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
85
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
86 /* read length */
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
87 len = mp4_read_descr_len(s);
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
88
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
89 esds->objectTypeId = stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
90 esds->streamType = stream_read_char(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
91 esds->bufferSizeDB = stream_read_int24(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
92 esds->maxBitrate = stream_read_dword(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
93 esds->avgBitrate = stream_read_dword(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
94 mp_msg(MSGT_DEMUX, MP4_DL,
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
95 "ESDS MPEG4 Decoder Config Descriptor (%dBytes):\n"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
96 " -> objectTypeId: %d\n"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
97 " -> streamType: 0x%02X\n"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
98 " -> bufferSizeDB: 0x%06X\n"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
99 " -> maxBitrate: %.3fkbit/s\n"
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
100 " -> avgBitrate: %.3fkbit/s\n",
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
101 len, esds->objectTypeId, esds->streamType,
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
102 esds->bufferSizeDB, esds->maxBitrate/1000.0,
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
103 esds->avgBitrate/1000.0);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
104
6929
a3aac765967d allow early exit from esds parsing, so decoder info (type & bitrate) are
arpi
parents: 5404
diff changeset
105 esds->decoderConfigLen=0;
a3aac765967d allow early exit from esds parsing, so decoder info (type & bitrate) are
arpi
parents: 5404
diff changeset
106
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
107 if (len < 15) {
6929
a3aac765967d allow early exit from esds parsing, so decoder info (type & bitrate) are
arpi
parents: 5404
diff changeset
108 freereturn(s,0);
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
109 }
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
110
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
111 /* get and verify DecSpecificInfoTag */
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
112 if (stream_read_char(s) != MP4DecSpecificDescrTag) {
6929
a3aac765967d allow early exit from esds parsing, so decoder info (type & bitrate) are
arpi
parents: 5404
diff changeset
113 freereturn(s,0);
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
114 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
115
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
116 /* read length */
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
117 esds->decoderConfigLen = len = mp4_read_descr_len(s);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
118
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
119 esds->decoderConfig = malloc(esds->decoderConfigLen);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
120 if (esds->decoderConfig) {
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
121 stream_read(s, esds->decoderConfig, esds->decoderConfigLen);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
122 } else {
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
123 esds->decoderConfigLen = 0;
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
124 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
125 mp_msg(MSGT_DEMUX, MP4_DL,
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
126 "ESDS MPEG4 Decoder Specific Descriptor (%dBytes)\n", len);
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
127
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
128 /* get and verify SLConfigDescrTag */
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
129 if(stream_read_char(s) != MP4SLConfigDescrTag) {
6929
a3aac765967d allow early exit from esds parsing, so decoder info (type & bitrate) are
arpi
parents: 5404
diff changeset
130 freereturn(s,0);
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
131 }
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
132
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
133 /* Note: SLConfig is usually constant value 2, size 1Byte */
5333
c4f6ab72300a eeh 10l, removed one line too much :(
atmos4
parents: 5332
diff changeset
134 esds->SLConfigLen = len = mp4_read_descr_len(s);
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
135 esds->SLConfig = malloc(esds->SLConfigLen);
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
136 if (esds->SLConfig) {
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
137 stream_read(s, esds->SLConfig, esds->SLConfigLen);
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
138 } else {
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
139 esds->SLConfigLen = 0;
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
140 }
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
141 mp_msg(MSGT_DEMUX, MP4_DL,
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
142 "ESDS MPEG4 Sync Layer Config Descriptor (%dBytes)\n"
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
143 " -> predefined: %d\n", len, esds->SLConfig[0]);
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
144
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
145 /* will skip the remainder of the atom */
5303
534f16f50c17 10l fix memory allocation
atmos4
parents: 5301
diff changeset
146 freereturn(s,0);
5301
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
147
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
148 }
d72c3169a343 Improved MP4 parsing (finally)
atmos4
parents:
diff changeset
149
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
150 /* cleanup all mem occupied by mp4_parse_esds */
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
151 void mp4_free_esds(esds_t *esds) {
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
152 if(esds->decoderConfigLen)
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
153 free(esds->decoderConfig);
5332
a3874da21700 Fix some silly logical bugs and fix memory cleanup in case mp4_parse_es returned with an error by memsetting the esds struct to 0 on init.
atmos4
parents: 5305
diff changeset
154 if(esds->SLConfigLen)
5305
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
155 free(esds->SLConfig);
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
156 }
77ac28af44ec - Add parsing of Sync Layer Descriptor
atmos4
parents: 5303
diff changeset
157
5303
534f16f50c17 10l fix memory allocation
atmos4
parents: 5301
diff changeset
158 #undef freereturn
534f16f50c17 10l fix memory allocation
atmos4
parents: 5301
diff changeset
159 #undef MP4_DL
534f16f50c17 10l fix memory allocation
atmos4
parents: 5301
diff changeset
160