当前位置: 首页>>代码示例>>C++>>正文


C++ WaveTrack::channels方法代码示例

本文整理汇总了C++中WaveTrack::channels方法的典型用法代码示例。如果您正苦于以下问题:C++ WaveTrack::channels方法的具体用法?C++ WaveTrack::channels怎么用?C++ WaveTrack::channels使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WaveTrack的用法示例。


在下文中一共展示了WaveTrack::channels方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: prefetch

void AudioPrefetch::prefetch(bool doSeek)
      {
      if (writePos == ~0U) {
            printf("AudioPrefetch::prefetch: invalid write position\n");
            return;
            }
      if (MusEGlobal::song->loop() && !MusEGlobal::audio->bounce() && !MusEGlobal::extSyncFlag.value()) {
            const Pos& loop = MusEGlobal::song->rPos();
            unsigned n = loop.frame() - writePos;
            if (n < MusEGlobal::segmentSize) {
                  unsigned lpos = MusEGlobal::song->lPos().frame();
                  // adjust loop start so we get exact loop len
                  if (n > lpos)
                        n = 0;
                  writePos = lpos - n;
                  }
            }
      WaveTrackList* tl = MusEGlobal::song->waves();
      for (iWaveTrack it = tl->begin(); it != tl->end(); ++it) {
            WaveTrack* track = *it;
            // Save time. Don't bother if track is off. Track On/Off not designed for rapid repeated response (but mute is). (p3.3.29)
            if(track->off())
              continue;
            
            int ch           = track->channels();
            float* bp[ch];
            if (track->prefetchFifo()->getWriteBuffer(ch, MusEGlobal::segmentSize, bp, writePos))
                  continue;

            track->fetchData(writePos, MusEGlobal::segmentSize, bp, doSeek);
            
            }
      writePos += MusEGlobal::segmentSize;
      }
开发者ID:AndreeeCZ,项目名称:muse,代码行数:34,代码来源:audioprefetch.cpp

示例2: prefetch

void AudioPrefetch::prefetch(bool doSeek)
{
	if (writePos == ~0U)
	{
		printf("AudioPrefetch::prefetch: invalid write position\n");
		return;
	}
	if (song->loop() && !audio->bounce() && !extSyncFlag.value())
	{
		const Pos& loop = song->rPos();
		unsigned n = loop.frame() - writePos;
		if (n < segmentSize)
		{
			unsigned lpos = song->lPos().frame();
			// adjust loop start so we get exact loop len
			if (n > lpos)
				n = 0;
			// printf("prefetch seek %d\n", writePos);
			writePos = lpos - n;
		}
	}
	WaveTrackList* tl = song->waves();
	for (iWaveTrack it = tl->begin(); it != tl->end(); ++it)
	{
		WaveTrack* track = *it;
		// p3.3.29
		// Save time. Don't bother if track is off. Track On/Off not designed for rapid repeated response (but mute is).
		if (track->off())
			continue;

		int ch = track->channels();
		float* bp[ch];
		// printf("prefetch %d\n", writePos);
		if (track->prefetchFifo()->getWriteBuffer(ch, segmentSize, bp, writePos))
		{
			// printf("AudioPrefetch::prefetch No write buffer!\n"); // p3.3.46 Was getting this...
			continue;
		}
		//track->fetchData(writePos, segmentSize, bp);
		track->fetchData(writePos, segmentSize, bp, doSeek);

		// p3.3.41
		//fprintf(stderr, "AudioPrefetch::prefetch data: segmentSize:%ld %e %e %e %e\n", segmentSize, bp[0][0], bp[0][1], bp[0][2], bp[0][3]);

	}
	writePos += segmentSize;
}
开发者ID:87maxi,项目名称:oom,代码行数:47,代码来源:audioprefetch.cpp


注:本文中的WaveTrack::channels方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。