static char lastfn_[MAX_PATH]; /* currently playing file (used for getting info on the current file) */\r
flac_config_t flac_cfg;\r
\r
-static file_info_struct file_info_;\r
+static stream_data_struct stream_data_;\r
static int paused;\r
-static FLAC__FileDecoder *decoder_;\r
+static FLAC__StreamDecoder *decoder_;\r
static char sample_buffer_[SAMPLES_PER_WRITE * FLAC_PLUGIN__MAX_SUPPORTED_CHANNELS * (24/8) * 2];\r
/* (24/8) for max bytes per sample, and 2 for DSPs */\r
\r
\r
static void init()\r
{\r
- decoder_ = FLAC__file_decoder_new();\r
+ decoder_ = FLAC__stream_decoder_new();\r
strcpy(lastfn_, "");\r
\r
InitConfig();\r
if (decoder_ == 0) return 1;\r
if (!(filesize = FileSize(fn))) return -1;\r
/* init decoder */\r
- if (!FLAC_plugin__decoder_init(decoder_, fn, filesize, &file_info_, &flac_cfg.output))\r
+ if (!FLAC_plugin__decoder_init(decoder_, fn, filesize, &stream_data_, &flac_cfg.output))\r
return 1;\r
strcpy(lastfn_, fn);\r
/* open output */\r
- maxlatency = mod_.outMod->Open(file_info_.sample_rate, file_info_.channels, file_info_.output_bits_per_sample, -1, -1);\r
+ maxlatency = mod_.outMod->Open(stream_data_.sample_rate, stream_data_.channels, stream_data_.output_bits_per_sample, -1, -1);\r
if (maxlatency < 0)\r
{\r
FLAC_plugin__decoder_finish(decoder_);\r
mod_.outMod->SetVolume(-666);\r
mod_.outMod->SetPan(0);\r
/* initialize vis stuff */\r
- mod_.SAVSAInit(maxlatency, file_info_.sample_rate);\r
- mod_.VSASetInfo(file_info_.sample_rate, file_info_.channels);\r
+ mod_.SAVSAInit(maxlatency, stream_data_.sample_rate);\r
+ mod_.VSASetInfo(stream_data_.sample_rate, stream_data_.channels);\r
/* set info */\r
- mod_.SetInfo(file_info_.average_bps, file_info_.sample_rate/1000, file_info_.channels, 1);\r
+ mod_.SetInfo(stream_data_.average_bps, stream_data_.sample_rate/1000, stream_data_.channels, 1);\r
/* start playing thread */\r
paused = 0;\r
thread_handle = CreateThread(NULL, 0, DecodeThread, NULL, 0, &thread_id);\r
{\r
if (thread_handle)\r
{\r
- file_info_.is_playing = false;\r
+ stream_data_.is_playing = false;\r
if (WaitForSingleObject(thread_handle, 2000) == WAIT_TIMEOUT)\r
{\r
FLAC_plugin__show_error("Error while stopping decoding thread.");\r
\r
static int getlength()\r
{\r
- return file_info_.length_in_msec;\r
+ return stream_data_.length_in_msec;\r
}\r
\r
static int getoutputtime()\r
\r
static void setoutputtime(int time_in_ms)\r
{\r
- file_info_.seek_to = time_in_ms;\r
+ stream_data_.seek_to = time_in_ms;\r
}\r
\r
static void setvolume(int volume)\r
\r
static DWORD WINAPI DecodeThread(void *unused)\r
{\r
- const unsigned channels = file_info_.channels;\r
- const unsigned bits_per_sample = file_info_.bits_per_sample;\r
- const unsigned target_bps = file_info_.output_bits_per_sample;\r
- const unsigned sample_rate = file_info_.sample_rate;\r
+ const unsigned channels = stream_data_.channels;\r
+ const unsigned bits_per_sample = stream_data_.bits_per_sample;\r
+ const unsigned target_bps = stream_data_.output_bits_per_sample;\r
+ const unsigned sample_rate = stream_data_.sample_rate;\r
const unsigned fact = channels * (target_bps/8);\r
\r
- while (file_info_.is_playing)\r
+ while (stream_data_.is_playing)\r
{\r
/* seek needed */\r
- if (file_info_.seek_to != -1)\r
+ if (stream_data_.seek_to != -1)\r
{\r
- const int pos = FLAC_plugin__seek(decoder_, &file_info_);\r
+ const int pos = FLAC_plugin__seek(decoder_, &stream_data_);\r
if (pos != -1) mod_.outMod->Flush(pos);\r
}\r
/* stream ended */\r
- else if (file_info_.eof)\r
+ else if (stream_data_.eof)\r
{\r
if (!mod_.outMod->IsPlaying())\r
{\r
else\r
{\r
/* decode samples */\r
- int bytes = FLAC_plugin__decode(decoder_, &file_info_, sample_buffer_);\r
+ int bytes = FLAC_plugin__decode(decoder_, &stream_data_, sample_buffer_);\r
const int n = bytes / fact;\r
/* visualization */\r
do_vis(sample_buffer_, channels, target_bps, mod_.outMod->GetWrittenTime(), n);\r
if (mod_.dsp_isactive())\r
bytes = mod_.dsp_dosamples((short*)sample_buffer_, n, target_bps, channels, sample_rate) * fact;\r
/* output */\r
- while (mod_.outMod->CanWrite()<bytes && file_info_.is_playing && file_info_.seek_to==-1)\r
+ while (mod_.outMod->CanWrite()<bytes && stream_data_.is_playing && stream_data_.seek_to==-1)\r
Sleep(20);\r
- if (file_info_.is_playing && file_info_.seek_to==-1)\r
+ if (stream_data_.is_playing && stream_data_.seek_to==-1)\r
mod_.outMod->Write(sample_buffer_, bytes);\r
/* show bitrate */\r
if (flac_cfg.display.show_bps)\r
{\r
- const int rate = FLAC_plugin__get_rate(mod_.outMod->GetWrittenTime(), mod_.outMod->GetOutputTime(), &file_info_);\r
- if (rate) mod_.SetInfo(rate/1000, file_info_.sample_rate/1000, file_info_.channels, 1);\r
+ const int rate = FLAC_plugin__get_rate(mod_.outMod->GetWrittenTime(), mod_.outMod->GetOutputTime(), &stream_data_);\r
+ if (rate) mod_.SetInfo(rate/1000, stream_data_.sample_rate/1000, stream_data_.channels, 1);\r
}\r
}\r
}\r
if (!filename || !*filename) {\r
filename = lastfn_;\r
if (length_in_msec) {\r
- *length_in_msec = file_info_.length_in_msec;\r
+ *length_in_msec = stream_data_.length_in_msec;\r
length_in_msec = 0; /* force skip in following code */\r
}\r
}\r