Changeset 162 for libmpc/branches/r2d/mpcdec
- Timestamp:
- 12/19/06 02:08:32 (19 years ago)
- Location:
- libmpc/branches/r2d/mpcdec
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libmpc/branches/r2d/mpcdec/mpcdec.c
r85 r162 63 63 main(int argc, char **argv) 64 64 { 65 mpc_reader reader; mpc_ streaminfo si; mpc_decoder* decoder; mpc_status err;65 mpc_reader reader; mpc_demux* demux; mpc_streaminfo si; mpc_decoder* decoder; mpc_status err; 66 66 MPC_SAMPLE_FORMAT sample_buffer[MPC_DECODER_BUFFER_LENGTH]; 67 67 clock_t begin, end, sum; int total_samples; t_wav_output_file wav_output; 68 68 mpc_bool_t is_wav_output; 69 69 70 printf("mpcdec - musepack (mpc) decoder sample application\n"); 70 71 if(3 < argc && argc < 2) 71 72 { … … 77 78 if(err < 0) return !MPC_STATUS_OK; 78 79 79 err = mpc_streaminfo_init(&si, &reader); 80 if(err < 0) return !MPC_STATUS_OK; 81 82 err = mpc_decoder_init(&decoder, &reader, &si); 83 if(err < 0) return !MPC_STATUS_OK; 80 demux = mpc_demux_init(&reader); 81 if(!demux) return !MPC_STATUS_OK; 82 mpc_demux_get_info(demux, &si); 83 decoder = mpc_decoder_init(&si); 84 84 85 85 is_wav_output = argc > 2; … … 92 92 wavo_fc.m_user_data = fopen(argv[2], "wb"); 93 93 if(!wavo_fc.m_user_data) return !MPC_STATUS_OK; 94 err = waveformat_output_open(&wav_output, wavo_fc, si.channels, 16, 0, si.sample_freq, (t_wav_uint32) si. pcm_samples * 2);94 err = waveformat_output_open(&wav_output, wavo_fc, si.channels, 16, 0, si.sample_freq, (t_wav_uint32) si.samples * 2); 95 95 if(!err) return !MPC_STATUS_OK; 96 96 } … … 99 99 while(MPC_TRUE) 100 100 { 101 mpc_ uint32_t samples;101 mpc_frame_info frame; mpc_uint32_t samples; 102 102 103 begin = clock(); 104 samples = mpc_decoder_decode(decoder, sample_buffer, 0, 0); 105 end = clock(); 103 frame.buffer = sample_buffer; 104 begin = clock(); 105 mpc_demux_decode(demux, &frame); 106 end = clock(); 107 if(frame.bits == -1) break; 106 108 107 if(samples <= 0) break; 108 if(!samples) break; 109 total_samples += samples; 109 total_samples += frame.samples; 110 110 sum += end - begin; 111 111 112 112 if(is_wav_output) 113 if(waveformat_output_process_float32(&wav_output, sample_buffer, samples*2) < 0)113 if(waveformat_output_process_float32(&wav_output, sample_buffer, frame.samples*2) < 0) 114 114 break; 115 115 } … … 124 124 125 125 mpc_decoder_exit(decoder); 126 mpc_demux_exit(demux); 126 127 mpc_reader_exit_stdio(&reader); 127 128 if(is_wav_output)
Note: See TracChangeset
for help on using the changeset viewer.