Changeset 373 for dsfilters/dec_mpc/src/mpc_filter.cpp
- Timestamp:
- 12/15/07 19:09:12 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
dsfilters/dec_mpc/src/mpc_filter.cpp
r372 r373 7 7 //----------------------------------------------------------------------------- 8 8 #include "stdafx.h" 9 9 10 10 11 … … 283 284 HRESULT CMPCDecoder::Receive(IMediaSample *pSample) 284 285 { 285 if (!m_pOutput->IsConnected()) return NOERROR; 286 if (!m_pOutput->IsConnected()) { 287 return E_FAIL; 288 } 289 290 // we don't accept data while flushing 291 if (m_pInput->IsFlushing()) { 292 return E_UNEXPECTED; 293 } 294 286 295 287 296 // we receive whole AP packets so just decode the frames :D … … 295 304 reader.AppendSE(); 296 305 297 // manually clear the buffer for demuxer298 demux->bytes_total = 0;299 demux->bits_reader.buff = demux->buffer;300 demux->bits_reader.count = 8;301 demux->block_bits = 0;302 demux->block_frames = 0;303 304 306 // TODO: use some more clever way of doing this. 305 307 MPC_SAMPLE_FORMAT samples[1152 * 8]; … … 322 324 } 323 325 326 // manually clear the buffer for demuxer 327 demux->bytes_total = reader.size; // 0 328 demux->bits_reader.buff = reader.buf; //d->buffer; 329 demux->bits_reader.count = 8; 330 demux->block_bits = 0; 331 demux->block_frames = 0; 332 demux->d->decoded_samples = 0; 333 324 334 // now scan through the frames 325 while (true) { 335 int frame_cnt = 1 << stream_info.block_pwr; 336 for (int i=0; i<frame_cnt; i++) { 326 337 327 338 //--------------------------------------------------------------------- … … 336 347 // decode one frame 337 348 err = mpc_demux_decode(demux, &frame); 338 if (err != MPC_STATUS_OK) break; 339 if (frame.bits == -1) break; // done. 349 if (err != MPC_STATUS_OK) { 350 break; 351 } 352 if (frame.bits == -1) { 353 break; // done. 354 } 355 340 356 341 357 //--------------------------------------------------------------------- … … 352 368 __int64 to_skip = min(frame.samples, samples_to_skip); 353 369 decoded_time_samples -= to_skip; 370 samples_to_skip -= to_skip; 354 371 current_sample += to_skip; 355 372 src_samples += (to_skip * stream_info.channels);
Note: See TracChangeset
for help on using the changeset viewer.