本文整理汇总了C++中WaveFile::ResetToStart方法的典型用法代码示例。如果您正苦于以下问题:C++ WaveFile::ResetToStart方法的具体用法?C++ WaveFile::ResetToStart怎么用?C++ WaveFile::ResetToStart使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaveFile
的用法示例。
在下文中一共展示了WaveFile::ResetToStart方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ShowFormat
static void ShowFormat(WaveFile& wave, bool details = true)
{
cout
<< "Format: " << wave.GetFormatType()
<< (wave.IsCompressed()? " (compressed)" : " (PCM)") << endl
<< "Channels: " << wave.GetNumChannels() << endl
<< "Sample rate: " << wave.GetSampleRate() << endl
<< "Bytes per second: " << wave.GetBytesPerSecond() << endl
<< "Bytes per sample: " << wave.GetBytesPerSample() << endl
<< "Bits per channel: " << wave.GetBitsPerChannel() << endl
<< "Bytes: " << wave.GetDataLength() << endl
<< "Samples: " << wave.GetNumSamples() << endl
<< "Seconds: " << wave.GetNumSeconds() << endl;
if(wave.GetFile())
cout << "File pointer: " << ftell(wave.GetFile()) << endl;
else
cout << "File pointer: null" << endl;
if (details) {
string type, value;
if (wave.GetFirstExtraItem(type, value)) {
cout << "Extra data:" << endl;
do {
cout << " " << type << ": " << value << endl;
} while (wave.GetNextExtraItem(type, value));
}
wave.ResetToStart();
}
pause();
}
示例2: CopyFrom
bool WaveFile::CopyFrom(WaveFile& other)
{
const size_t transferBufSize = 4096;
if (!writeFile) {
error = "Copy to an unopened file";
return false;
} else if (!other.readFile) {
error = "Copy from an unopened file";
return false;
}
try {
// allocate the transfer buffer
char* transferBuffer = new char[transferBufSize];
unsigned long bytesRead = 0;
try {
if (!other.ResetToStart())
throw error = "Couldn't reset input file to start";
while (bytesRead < other.dataLength) {
// calculate the size of the next buffer
size_t bytesToRead = (size_t) min(transferBufSize,
size_t(other.dataLength - bytesRead));
// read the buffer
if (fread(transferBuffer, 1, bytesToRead, other.readFile->filep())
!= bytesToRead)
throw error = "Error reading samples from input file";
bytesRead += bytesToRead;
// write the buffer
if (fwrite(transferBuffer, 1, bytesToRead, writeFile) != bytesToRead)
throw error = "Error writing samples to output file";
dataLength += bytesToRead;
changed = true;
}
// delete the transfer buffer
delete[] transferBuffer;
} catch (...) {
delete[] transferBuffer;
throw error;
}
} catch (...) {
return false;
}
return true;
}