comparison libmpdemux/parse_mp4.c @ 6929:a3aac765967d

allow early exit from esds parsing, so decoder info (type & bitrate) are available even if no codec-specific data or other extras found
author arpi
date Mon, 05 Aug 2002 18:22:51 +0000
parents 534580bc88a8
children 492c6d674c3e
comparison
equal deleted inserted replaced
6928:668ab67dce8f 6929:a3aac765967d
100 " -> avgBitrate: %.3fkbit/s\n", 100 " -> avgBitrate: %.3fkbit/s\n",
101 len, esds->objectTypeId, esds->streamType, 101 len, esds->objectTypeId, esds->streamType,
102 esds->bufferSizeDB, esds->maxBitrate/1000.0, 102 esds->bufferSizeDB, esds->maxBitrate/1000.0,
103 esds->avgBitrate/1000.0); 103 esds->avgBitrate/1000.0);
104 104
105 esds->decoderConfigLen=0;
106
105 if (len < 15) { 107 if (len < 15) {
106 freereturn(s,1); 108 freereturn(s,0);
107 } 109 }
108 110
109 /* get and verify DecSpecificInfoTag */ 111 /* get and verify DecSpecificInfoTag */
110 if (stream_read_char(s) != MP4DecSpecificDescrTag) { 112 if (stream_read_char(s) != MP4DecSpecificDescrTag) {
111 freereturn(s,1); 113 freereturn(s,0);
112 } 114 }
113 115
114 /* read length */ 116 /* read length */
115 esds->decoderConfigLen = len = mp4_read_descr_len(s); 117 esds->decoderConfigLen = len = mp4_read_descr_len(s);
116 118
123 mp_msg(MSGT_DEMUX, MP4_DL, 125 mp_msg(MSGT_DEMUX, MP4_DL,
124 "ESDS MPEG4 Decoder Specific Descriptor (%dBytes)\n", len); 126 "ESDS MPEG4 Decoder Specific Descriptor (%dBytes)\n", len);
125 127
126 /* get and verify SLConfigDescrTag */ 128 /* get and verify SLConfigDescrTag */
127 if(stream_read_char(s) != MP4SLConfigDescrTag) { 129 if(stream_read_char(s) != MP4SLConfigDescrTag) {
128 freereturn(s,1); 130 freereturn(s,0);
129 } 131 }
130 132
131 /* Note: SLConfig is usually constant value 2, size 1Byte */ 133 /* Note: SLConfig is usually constant value 2, size 1Byte */
132 esds->SLConfigLen = len = mp4_read_descr_len(s); 134 esds->SLConfigLen = len = mp4_read_descr_len(s);
133 esds->SLConfig = malloc(esds->SLConfigLen); 135 esds->SLConfig = malloc(esds->SLConfigLen);