MCPcopy Create free account
hub / github.com/GrapheneCt/NetStream / EntryFunction

Method EntryFunction

NetStream/source/players/player_av.cpp:443–523  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

441}
442
443void AVPlayer::AVAudioThread::EntryFunction()
444{
445 int32_t ret = false;
446 SceAvPlayerFrameInfo data;
447 int32_t outPortId = -1;
448 bool usingFallback = false;
449
450 SCE_DBG_LOG_INFO("[AVAudioThread] AVAudioThread start");
451
452 uint8_t *silence = (uint8_t *)sce_paf_memalign(0x20, SCE_AV_PLAYER_PCM_BUFFER_SIZE * 2 * 4);
453 sce_paf_memset(silence, 0, SCE_AV_PLAYER_PCM_BUFFER_SIZE * 2 * 4);
454
455 outPortId = sceAudioOutOpenPort(
456 SCE_AUDIO_OUT_PORT_TYPE_VOICE,
457 (SCE_AV_PLAYER_PCM_BUFFER_SIZE / sizeof(int16_t)),
458 44100,
459 1);
460 if (outPortId < 0)
461 {
462 SCE_DBG_LOG_ERROR("[AVAudioThread] Failed to open VOICE audio port");
463 }
464
465 while (!IsCanceled())
466 {
467 if (sceAvPlayerIsActive(m_playerCore))
468 {
469 ret = sceAvPlayerGetAudioData(m_playerCore, &data);
470 if (ret)
471 {
472 if (m_parent->m_lastAudioDetails.channelCount != data.details.audio.channelCount ||
473 m_parent->m_lastAudioDetails.sampleRate != data.details.audio.sampleRate)
474 {
475 SCE_DBG_LOG_INFO("[AVAudioThread] Audio params changed, reconfiguring port");
476 SCE_DBG_LOG_INFO("[AVAudioThread] New params: %u %u", data.details.audio.channelCount, data.details.audio.sampleRate);
477
478 usingFallback = false;
479
480 ret = sceAudioOutSetConfig(
481 outPortId,
482 (SCE_AV_PLAYER_PCM_BUFFER_SIZE / sizeof(int16_t)),
483 data.details.audio.sampleRate,
484 data.details.audio.channelCount - 1);
485
486 if (ret != SCE_OK)
487 {
488 SCE_DBG_LOG_ERROR("[AVAudioThread] Could not reconfigure audio port, using failsafe to keep timing");
489 usingFallback = true;
490 }
491
492 int32_t maxVolumeArray[2] = { SCE_AUDIO_VOLUME_0DB, SCE_AUDIO_VOLUME_0DB };
493 sceAudioOutSetVolume(outPortId, SCE_AUDIO_VOLUME_FLAG_L_CH | SCE_AUDIO_VOLUME_FLAG_R_CH, maxVolumeArray);
494
495 m_parent->m_lastAudioDetails.channelCount = data.details.audio.channelCount;
496 m_parent->m_lastAudioDetails.sampleRate = data.details.audio.sampleRate;
497 }
498
499 const void *outData = data.pData;
500 if (usingFallback)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected