本文整理汇总了C++中MainFrame::GetBytePerSampleSize方法的典型用法代码示例。如果您正苦于以下问题:C++ MainFrame::GetBytePerSampleSize方法的具体用法?C++ MainFrame::GetBytePerSampleSize怎么用?C++ MainFrame::GetBytePerSampleSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MainFrame
的用法示例。
在下文中一共展示了MainFrame::GetBytePerSampleSize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: prepare_next
// 다음 10개의 pcm 데이타를 준비한다.
void prepare_next (void *userdata, int len, int bufferIndex)
{
if ( m_playMode == STOP || m_playMode == STOPPED ||
m_playMode == SONG_END ) return;
MainFrame *self = (MainFrame *)userdata;
Ims *m_ims = self->m_thread->GetIms();
Iss *m_iss = self->m_thread->GetIss();
for(int i=0; i<PREPARE_BUFFER_COUNT; i++)
{
static int remain_samples = 0;
int to_write_len, samples;
int delayTime = 0;
short int *pcm_buffer_pos;
pcm_buffer_pos = (short int *)pcm_buffer[bufferIndex][i];
to_write_len = len / self->GetBytePerSampleSize();
// 틱을 저장한다.
int tick = m_ims->GetCurrentTick();
song_tick[bufferIndex][i] = tick;
// 가사 레코드를 찾는다.
Iss *m_iss = self->m_thread->GetIss();
if ( m_iss->IsOpened() == true )
{
for(int x=m_lastLyricsRecord; x<m_iss->m_header.rec_count; x++)
{
// 가사 파일에는 본래의 tick을 8로 나눈 값이 들어가 있다.
if ( m_iss->m_record[x].kasa_tick >= tick/8 )
{
m_lastLyricsRecord = x;
lyrics_buffer[bufferIndex][i] = &m_iss->m_record[x];
break;
}
}
}
else
{
lyrics_buffer[bufferIndex][i] = NULL;
}
// 애드립 PCM 데이타를 만들어서 버퍼에 저장한다.
while (to_write_len > 0)
{
if (remain_samples > 0)
{
samples = remain_samples;
}
else
{
// 분당 박자수
int basicTempo = m_ims->GetBasicTempo();
delayTime = m_ims->PlayEvent();
MYADLIB_IMS *ims = m_ims->m_ims;
// 총 몇개의 쌤플을 쓸것인지 계산한다.
samples = MulDiv(22050 * 60,
delayTime, basicTempo * ims->header.nTickBeat);
}
if (samples > to_write_len)
{
// 애드립 PCM 데이타를 만들어서 버퍼에 저장한다.
YM3812UpdateOne(ym3812p, pcm_buffer_pos, to_write_len);
remain_samples = samples - to_write_len;
break;
}
else
{
// 애드립 PCM 데이타를 만들어서 버퍼에 저장한다.
YM3812UpdateOne(ym3812p, pcm_buffer_pos, samples);
remain_samples = 0;
}
pcm_buffer_pos = pcm_buffer_pos + samples;
to_write_len = to_write_len - samples;
}
if ( m_playMode == STOP || m_playMode == STOPPED ||
m_playMode == SONG_END)
{
// 종료된 위치를 저장
m_endBuffer = bufferIndex;
m_endBufferIndex = i;
return;
}
}
}