int play(char *fn) { int maxlatency; int thread_id; if (InitADPFILE(fn, &cubefile) && InitADXFILE(fn, &cubefile) && InitDSPFILE(fn, &cubefile)) return 1; lstrcpy(lastfn,fn); paused=0; decode_pos_ms=0; seek_needed=-1; maxlatency = mod.outMod->Open(cubefile.ch[0].sample_rate,cubefile.NCH,BPS, -1,-1); if (maxlatency < 0) // error opening device { MessageBox(NULL, "error opening device", AppName, MB_OK); return 1; } // dividing by 1000 for the first parameter of setinfo makes it // display 'H'... for hundred.. i.e. 14H Kbps. mod.SetInfo((cubefile.ch[0].sample_rate*BPS*cubefile.NCH)/1000,cubefile.ch[0].sample_rate/1000,cubefile.NCH,1); // initialize vis stuff mod.SAVSAInit(maxlatency,cubefile.ch[0].sample_rate); mod.VSASetInfo(cubefile.NCH,cubefile.ch[0].sample_rate); mod.outMod->SetVolume(-666); // set the output plug-ins default volume killDecodeThread=0; thread_handle = (HANDLE) CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) DecodeThread,(void *) &killDecodeThread,0,&thread_id); SetThreadPriority(thread_handle,priarray[CPUPriority]); return 0; }
static int play(char *fn) { int song; int maxlatency; DWORD threadId; strcpy(current_filename_with_song, fn); song = extractSongNumber(fn, current_filename); if (!loadModule(current_filename, module, &module_len)) return -1; if (!ASAP_Load(&asap, current_filename, module, module_len)) return 1; if (song < 0) song = asap.module_info.default_song; duration = playSong(song); maxlatency = mod.outMod->Open(ASAP_SAMPLE_RATE, channels, BITS_PER_SAMPLE, -1, -1); if (maxlatency < 0) return 1; mod.SetInfo(BITS_PER_SAMPLE, ASAP_SAMPLE_RATE / 1000, channels, 1); mod.SAVSAInit(maxlatency, ASAP_SAMPLE_RATE); // the order of VSASetInfo's arguments in in2.h is wrong! // http://forums.winamp.com/showthread.php?postid=1841035 mod.VSASetInfo(ASAP_SAMPLE_RATE, channels); mod.outMod->SetVolume(-666); seek_needed = -1; thread_run = TRUE; thread_handle = CreateThread(NULL, 0, playThread, NULL, 0, &threadId); if (playing_info) updateInfoDialog(current_filename, song); return thread_handle != NULL ? 0 : 1; }
static int play(char *fn) { LONGLONG filesize; DWORD thread_id; int maxlatency; /* checks */ if (decoder_ == 0) return 1; if (!(filesize = FileSize(fn))) return -1; /* init decoder */ if (!FLAC_plugin__decoder_init(decoder_, fn, filesize, &stream_data_, &flac_cfg.output)) return 1; strcpy(lastfn_, fn); /* open output */ maxlatency = mod_.outMod->Open(stream_data_.sample_rate, stream_data_.channels, stream_data_.output_bits_per_sample, -1, -1); if (maxlatency < 0) { FLAC_plugin__decoder_finish(decoder_); return 1; } /* set defaults */ mod_.outMod->SetVolume(-666); mod_.outMod->SetPan(0); /* initialize vis stuff */ mod_.SAVSAInit(maxlatency, stream_data_.sample_rate); mod_.VSASetInfo(stream_data_.sample_rate, stream_data_.channels); /* set info */ mod_.SetInfo(stream_data_.average_bps, stream_data_.sample_rate/1000, stream_data_.channels, 1); /* start playing thread */ paused = 0; thread_handle = CreateThread(NULL, 0, DecodeThread, NULL, 0, &thread_id); if (!thread_handle) return 1; return 0; }
static int play(char *fn) { char filename[MAX_PATH]; int song; const ASAPInfo *info; int channels; int maxlatency; DWORD threadId; strcpy(playing_filename_with_song, fn); song = extractSongNumber(fn, filename); if (!loadModule(filename, module, &module_len)) return -1; if (!ASAP_Load(asap, filename, module, module_len)) return 1; info = ASAP_GetInfo(asap); if (song < 0) song = ASAPInfo_GetDefaultSong(info); duration = playSong(song); channels = ASAPInfo_GetChannels(info); maxlatency = mod.outMod->Open(ASAP_SAMPLE_RATE, channels, BITS_PER_SAMPLE, -1, -1); if (maxlatency < 0) return 1; mod.SetInfo(BITS_PER_SAMPLE, ASAP_SAMPLE_RATE / 1000, channels, 1); mod.SAVSAInit(maxlatency, ASAP_SAMPLE_RATE); // the order of VSASetInfo's arguments in in2.h is wrong! // http://forums.winamp.com/showthread.php?postid=1841035 mod.VSASetInfo(ASAP_SAMPLE_RATE, channels); mod.outMod->SetVolume(-666); seek_needed = -1; thread_run = TRUE; thread_handle = CreateThread(NULL, 0, playThread, NULL, 0, &threadId); setPlayingSong(filename, song); return thread_handle != NULL ? 0 : 1; }
int play(char *fn) { int maxlatency; int thread_id; input_file = CreateFile(fn,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if (input_file == INVALID_HANDLE_VALUE) // error opening file { return 1; } file_length=GetFileSize(input_file,NULL); if(IsCurrentFile) { if(!strcmp(fn,lastfn)) { IsCurrentFile = TRUE; SongChanged=FALSE; } else { IsCurrentFile = FALSE; SongChanged=TRUE; } } strcpy(lastfn,fn); paused=0; decode_pos_ms=0; seek_needed=-1; GSFRun(fn); maxlatency = mod.outMod->Open(sndSamplesPerSec,sndNumChannels,sndBitsPerSample, -1,-1); if (maxlatency < 0) // error opening device { CloseHandle(input_file); input_file=INVALID_HANDLE_VALUE; return 1; } // dividing by 1000 for the first parameter of setinfo makes it // display 'H'... for hundred.. i.e. 14H Kbps. mod.SetInfo((sndSamplesPerSec*sndBitsPerSample*sndNumChannels)/1000,sndSamplesPerSec/1000,sndNumChannels,1); // initialize vis stuff mod.SAVSAInit(maxlatency,sndSamplesPerSec); mod.VSASetInfo(sndSamplesPerSec,sndNumChannels); mod.outMod->SetVolume(-666); // set the output plug-ins default volume killDecodeThread=0; thread_handle = (HANDLE) CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) DecodeThread,(void *) &killDecodeThread,0,&thread_id); return 0; }
int play(char *fn) { int maxlatency; int thread_id; HANDLE input_file = INVALID_HANDLE_VALUE; unsigned output_bits_per_sample; if(0 == decoder_) { return 1; } input_file = CreateFile(fn, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(input_file == INVALID_HANDLE_VALUE) { return -1; } CloseHandle(input_file); if(!safe_decoder_init_(fn, decoder_)) { return 1; } #ifdef FLAC__DO_DITHER output_bits_per_sample = min(file_info_.bits_per_sample, 16); #else output_bits_per_sample = file_info_.bits_per_sample; #endif strcpy(lastfn_, fn); paused_ = 0; decode_pos_ms_ = 0; seek_needed_ = -1; wide_samples_in_reservoir_ = 0; maxlatency = mod_.outMod->Open(file_info_.sample_rate, file_info_.channels, output_bits_per_sample, -1, -1); if(maxlatency < 0) { /* error opening device */ return 1; } /* dividing by 1000 for the first parameter of setinfo makes it */ /* display 'H'... for hundred.. i.e. 14H Kbps. */ mod_.SetInfo((file_info_.sample_rate*file_info_.bits_per_sample*file_info_.channels)/1000, file_info_.sample_rate/1000, file_info_.channels, 1); /* initialize vis stuff */ mod_.SAVSAInit(maxlatency, file_info_.sample_rate); mod_.VSASetInfo(file_info_.sample_rate, file_info_.channels); mod_.outMod->SetVolume(-666); /* set the output plug-ins default volume */ killDecodeThread = 0; thread_handle = (HANDLE) CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) DecodeThread, (void *) &killDecodeThread, 0, &thread_id); return 0; }
static int play( const in_char * fn ) { if ( !fn ) { return -1; } try { std::ifstream s( fn, std::ios::binary ); std::map< std::string, std::string > ctls; ctls["seek.sync_samples"] = "1"; self->mod = new openmpt::module( s, std::clog, ctls ); self->cached_filename = fn; self->cached_title = StringDecode( self->mod->get_metadata( "title" ), CP_UTF8 ); self->cached_length = static_cast<int>( self->mod->get_duration_seconds() * 1000.0 ); self->cached_infotext = generate_infotext( self->cached_filename, *self->mod ); apply_options(); self->samplerate = self->settings.samplerate; self->channels = self->settings.channels; int maxlatency = inmod.outMod->Open( self->samplerate, self->channels, BPS, -1, -1 ); std::ostringstream str; str << maxlatency; inmod.SetInfo( self->mod->get_num_channels(), self->samplerate/1000, self->channels, 1 ); inmod.SAVSAInit( maxlatency, self->samplerate ); inmod.VSASetInfo( self->channels, self->samplerate ); inmod.outMod->SetVolume( -666 ); inmod.outMod->SetPan( 0 ); self->paused = false; self->decode_position_frames = 0; self->PlayThread = CreateThread( NULL, 0, DecodeThread, NULL, 0, &self->PlayThreadID ); return 0; } catch ( ... ) { if ( self->mod ) { delete self->mod; self->mod = 0; } return -1; } }
int play(char *fn) { int maxlatency; int thread_id; current_file_mode = m_memmap_file; if (current_file_mode) { if (play_memmap(fn)) return -1; } else { if (play_file(fn)) return -1; } if(seek_table) { free(seek_table); seek_table = NULL; seek_table_length = 0; } get_AAC_format(fn, &file_info, &seek_table, &seek_table_length, 0); if(infile->http) { /* No seeking in http streams */ mod.is_seekable = 0; } else { if (file_info.headertype == 2) /* ADTS header - seekable */ mod.is_seekable = 1; else mod.is_seekable = 0; /* ADIF or Headerless - not seekable */ } strcpy(lastfn,fn); paused=0; decode_pos_ms=0; seek_needed=-1; /* To RageAmp: This is really needed, because aacinfo isn't very accurate on ADIF files yet. Can be fixed though :-) */ file_info.sampling_rate = samplerate; file_info.channels = frameInfo.channels; maxlatency = mod.outMod->Open(file_info.sampling_rate, file_info.channels, 16, -1,-1); if (maxlatency < 0) // error opening device { return -1; } // initialize vis stuff mod.SAVSAInit(maxlatency, file_info.sampling_rate); mod.VSASetInfo(file_info.sampling_rate, file_info.channels); mod.SetInfo(file_info.bitrate/1000, file_info.sampling_rate/1000, file_info.channels,1); mod.outMod->SetVolume(-666); // set the output plug-ins default volume killPlayThread = 0; if((play_thread_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) PlayThread, (void *) &killPlayThread, 0, &thread_id)) == NULL) { MessageBox(mod.hMainWindow, "Fatal error: Cannot create playback thread\n", "FAAD Error", MB_OK); return -1; } // Note: This line seriously slows down start up time if(m_priority != 3) // if the priority in config window is set to normal, there is nothing to reset! SetThreadPriority(play_thread_handle, priority_table[m_priority]); return 0; }
// called when winamp wants to play a file int play(const char *fn) { int maxlatency; int thread_id; paused=0; decode_pos_ms=0; seek_needed=-1; // CHANGEME! Write your own file opening code here input_file = CreateFile(fn,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if (input_file == INVALID_HANDLE_VALUE) // error opening file { // we return error. 1 means to keep going in the playlist, -1 // means to stop the playlist. return 1; } file_length=GetFileSize(input_file,NULL); strcpy(lastfn,fn); // -1 and -1 are to specify buffer and prebuffer lengths. // -1 means to use the default, which all input plug-ins should // really do. maxlatency = mod.outMod->Open(SAMPLERATE,NCH,BPS, -1,-1); // maxlatency is the maxium latency between a outMod->Write() call and // when you hear those samples. In ms. Used primarily by the visualization // system. if (maxlatency < 0) // error opening device { CloseHandle(input_file); input_file=INVALID_HANDLE_VALUE; return 1; } // dividing by 1000 for the first parameter of setinfo makes it // display 'H'... for hundred.. i.e. 14H Kbps. mod.SetInfo((SAMPLERATE*BPS*NCH)/1000,SAMPLERATE/1000,NCH,1); // initialize visualization stuff mod.SAVSAInit(maxlatency,SAMPLERATE); mod.VSASetInfo(SAMPLERATE,NCH); // set the output plug-ins default volume. // volume is 0-255, -666 is a token for // current volume. mod.outMod->SetVolume(-666); // launch decode thread killDecodeThread=0; thread_handle = (HANDLE) CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) DecodeThread,NULL,0,&thread_id); return 0; }