bool flac_decoder::decode(FILE *outf) { f = outf; memflg = false; m_write_callback = &flac_decoder::file_write_callback; return process_until_end_of_stream(); }
bool flac_decoder::decode(memory_ref &mem) { out_mem = mem; memflg = true; m_write_callback = &flac_decoder::mem_write_callback; return process_until_end_of_stream(); }
bool flac_decoder::decode(memory *mem) { out = mem; memflg = true; p = out->begin(); return process_until_end_of_stream(); }
bool StreamDecoder::test_respond() { printf("testing init()... "); if(init() != ::OggFLAC__STREAM_DECODER_OK) return die(); printf("OK\n"); current_metadata_number_ = 0; if(::fseek(file_, 0, SEEK_SET) < 0) { printf("FAILED rewinding input, errno = %d\n", errno); return false; } printf("testing process_until_end_of_stream()... "); if(!process_until_end_of_stream()) { State state = get_state(); printf("FAILED, returned false, state = %u (%s)\n", (unsigned)((::OggFLAC__StreamDecoderState)state), state.as_cstring()); return false; } printf("OK\n"); printf("testing finish()... "); finish(); printf("OK\n"); return true; }
bool FileDecoder::test_respond(bool is_ogg) { ::FLAC__StreamDecoderInitStatus init_status; if(!set_md5_checking(true)) { printf("FAILED at set_md5_checking(), returned false\n"); return false; } switch(layer_) { case LAYER_FILE: { printf("opening %sFLAC file... ", is_ogg? "Ogg ":""); FILE *file = ::fopen(flacfilename(is_ogg), "rb"); if(0 == file) { printf("ERROR (%s)\n", strerror(errno)); return false; } printf("OK\n"); printf("testing init%s()... ", is_ogg? "_ogg":""); init_status = is_ogg? init_ogg(file) : init(file); } break; case LAYER_FILENAME: printf("testing init%s()... ", is_ogg? "_ogg":""); init_status = is_ogg? init_ogg(flacfilename(is_ogg)) : init(flacfilename(is_ogg)); break; default: die_("internal error 001"); return false; } if(init_status != ::FLAC__STREAM_DECODER_INIT_STATUS_OK) return die_s_(0, this); printf("OK\n"); current_metadata_number_ = 0; printf("testing process_until_end_of_stream()... "); if(!process_until_end_of_stream()) { State state = get_state(); printf("FAILED, returned false, state = %u (%s)\n", (unsigned)((::FLAC__StreamDecoderState)state), state.as_cstring()); return false; } printf("OK\n"); printf("testing finish()... "); if(!finish()) { State state = get_state(); printf("FAILED, returned false, state = %u (%s)\n", (unsigned)((::FLAC__StreamDecoderState)state), state.as_cstring()); return false; } printf("OK\n"); return true; }
void play(audio_output_ptr audio_output) { audio_output_ = audio_output; process_until_end_of_stream(); auto output = audio_output_.lock(); if ( output.get() ) { output->write_end_marker(); } }
FLACDecoder::FLACDecoder(const char *filename) : FLAC::Decoder::File() { this->filename = filename; set_md5_checking(true); FLAC__StreamDecoderInitStatus init_status = init(filename); if(init_status != FLAC__STREAM_DECODER_INIT_STATUS_OK) { throw std::runtime_error(std::string("FLACDecoder error: Unable to initialise decoder: ") + std::string(FLAC__StreamDecoderInitStatusString[init_status])); } process_until_end_of_stream(); }
bool StreamDecoder::test_respond(bool is_ogg) { ::FLAC__StreamDecoderInitStatus init_status; if(!set_md5_checking(true)) { printf("FAILED at set_md5_checking(), returned false\n"); return false; } printf("testing init%s()... ", is_ogg? "_ogg":""); init_status = is_ogg? init_ogg() : init(); if(init_status != ::FLAC__STREAM_DECODER_INIT_STATUS_OK) return die_s_(0, this); printf("OK\n"); current_metadata_number_ = 0; if(fseeko(file_, 0, SEEK_SET) < 0) { printf("FAILED rewinding input, errno = %d\n", errno); return false; } printf("testing process_until_end_of_stream()... "); if(!process_until_end_of_stream()) { State state = get_state(); printf("FAILED, returned false, state = %u (%s)\n", (unsigned)((::FLAC__StreamDecoderState)state), state.as_cstring()); return false; } printf("OK\n"); printf("testing finish()... "); if(!finish()) { State state = get_state(); printf("FAILED, returned false, state = %u (%s)\n", (unsigned)((::FLAC__StreamDecoderState)state), state.as_cstring()); return false; } printf("OK\n"); return true; }
bool flac_decoder::decode(FILE *outf) { f = outf; memflg = false; return process_until_end_of_stream(); }