Album Player
|
Автор |
Сообщение |
Igor_A
Ветеран
    
Откуда: _
Сообщений: 1 035
Репутация: 406
|
RE: Album Player / 29-04-2020 16:09
Uolis
Настройки правильные, только параметры в миллисекундах задаются разные в PlayPcmWin и в APlayer.
В APlayer указывается длительность полного буфера (Output Buffer),
а в PlayPcmWin - периодичность опроса этого буфера, которая там названа Latency.
В коде PlayPcmWin, в файле WasapiUser.cpp, где инициализируется вывод через WASAPI, есть такие строки
Код:
REFERENCE_TIME bufferPeriodicity = m_latencyMillisec * 10000;
REFERENCE_TIME bufferDuration = bufferPeriodicity * periodsPerBuffer;
Здесь m_latencyMillisec - это та Latency, которая задаётся в настройках PlayPcmWin, а bufferDuration - полный размер буфера, тот Output Buffer, который задаётся в настройках APlayer. Как видите, они связаны множителем periodsPerBuffer, который выше по тексту в PlayPcmWin определён как
Код:
#define PERIODS_PER_BUFFER_ON_TIMER_DRIVEN_MODE (4)
periodsPerBuffer = PERIODS_PER_BUFFER_ON_TIMER_DRIVEN_MODE;
То есть, этот множитель равен 4. Соответственно, буфер (bufferDuration / Output Buffer) WASAPI в PlayPcmWin в четыре раза больше, чем Latency.
Поэтому равные с PlayPcmWin условия по настройкам на размер буфера WASAPI будут созданы, если в поле OutputBuffer настроек WASAPI в APlayer указать значение 12 при задании Latency 3 в PlayPcmWin. Периодичность опроса (m_latencyMillisec / bufferPeriodicity) в APlayer задаётся как 1/8 длительности буфера, то есть, в этом случае она будет 1.5.
(Отредактировал 29-04-2020 в 16:24 Igor_A.)
|
|
|
|
Выразили согласие: | |
|
Сообщения в этой теме |
RE: Album Player - Igor_A - 29-04-2020 16:09
|
Пользователи просматривают эту тему:
|

|