Changeset 138 for libmpc/branches/r2d/libmpcdec
- Timestamp:
- 11/15/06 13:29:00 (18 years ago)
- Location:
- libmpc/branches/r2d/libmpcdec
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
libmpc/branches/r2d/libmpcdec/Makefile.am
r137 r138 10 10 AM_CFLAGS = -DMPC_LITTLE_ENDIAN 11 11 12 libmpcdec_la_LIBADD = $(top_builddir)/common/libcommon.a -
libmpc/branches/r2d/libmpcdec/mpc_demux.c
r126 r138 43 43 44 44 // streaminfo.c 45 mpc_status streaminfo_read_header_sv8(mpc_streaminfo* si, const mpc_bits_reader * r_in); 45 mpc_status streaminfo_read_header_sv8(mpc_streaminfo* si, 46 const mpc_bits_reader * r_in, 47 mpc_size_t block_size); 46 48 mpc_status streaminfo_read_header_sv7(mpc_streaminfo* si, mpc_bits_reader * r_in); 47 49 void streaminfo_encoder_info(mpc_streaminfo* si, const mpc_bits_reader * r_in); … … 134 136 while( memcmp(b.key, "AD", 2) != 0 ){ // scan all blocks until audio 135 137 mpc_demux_fill(d, 11 + b.size, 0); 136 if (memcmp(b.key, "SI", 2) == 0) 137 streaminfo_read_header_sv8(&d->si, &d->bits_reader); 138 else if (memcmp(b.key, "EI", 2) == 0) 138 if (memcmp(b.key, "SI", 2) == 0){ 139 int ret = streaminfo_read_header_sv8(&d->si, &d->bits_reader, b.size); 140 if (ret != MPC_STATUS_OK) 141 return ret; 142 } else if (memcmp(b.key, "EI", 2) == 0) 139 143 streaminfo_encoder_info(&d->si, &d->bits_reader); 140 144 else if (memcmp(b.key, "RG", 2) == 0) … … 161 165 p_tmp->block_bits = 0; 162 166 // lire entête 163 mpc_demux_header(p_tmp); 164 // initialisation decodeur 165 p_tmp->d = mpc_decoder_init(&p_tmp->si); 167 if (mpc_demux_header(p_tmp) == MPC_STATUS_OK) { 168 // initialisation decodeur 169 p_tmp->d = mpc_decoder_init(&p_tmp->si); 170 } else { 171 free(p_tmp); 172 p_tmp = 0; 173 } 166 174 } 167 175 -
libmpc/branches/r2d/libmpcdec/streaminfo.c
r126 r138 39 39 #include <stdio.h> 40 40 #include "internal.h" 41 42 unsigned long crc32(unsigned char *buf, int len); 41 43 42 44 mpc_uint32_t mpc_bits_read(mpc_bits_reader * r, const unsigned int nb_bits); … … 139 141 /// Reads streaminfo from SV8 header. 140 142 mpc_status 141 streaminfo_read_header_sv8(mpc_streaminfo* si, const mpc_bits_reader * r_in) 142 { 143 mpc_uint32_t CRC; 143 streaminfo_read_header_sv8(mpc_streaminfo* si, const mpc_bits_reader * r_in, 144 mpc_size_t block_size) 145 { 146 mpc_uint32_t CRC, CRC_tmp; 144 147 mpc_bits_reader r = *r_in; 145 148 146 // FIXME : add CRC check147 149 CRC = mpc_bits_read(&r, 32); 150 CRC_tmp = crc32(r.buff + 1 - (r.count >> 3), block_size - 4); 151 if (CRC != CRC_tmp) 152 return MPC_STATUS_FILE; 153 148 154 si->stream_version = mpc_bits_read(&r, 8); 149 155 mpc_bits_get_size(&r, &si->samples);
Note: See TracChangeset
for help on using the changeset viewer.