2015-03-28, 11:35
I you change audio output to "Fixed" 5.1 48 khz - everything is fine for the same file. So decoding is file and even resampling it on the fly is no issue. I think it's something PI specific then (firmware).
Quote:It's _not_ a Denon issue. It's an issue with the PI delivering that amount of data. I highly doubt your 512 Pi will be able to play those without issue over time. You most likely only have a chance with disabling VIZ alltogether, making sure nothing is scraped. Press c on the file and play with another player.Do you think RPi512/PAPlayer can't play with passthrough on? (What I have).
(2015-03-28, 11:31)fritsch Wrote: I can easily reproduce.Cool.
(2015-03-28, 11:31)fritsch Wrote: @popcornmix, @millhouse: It works for you? > 96 khz flac or multi channel flac?I'd tried to reproduce in the past and failed, but perhaps I didn't have the exact same setup.
(2015-03-28, 11:31)fritsch Wrote: HDMI, Optimized, 5.1 channel configuration.
Funny sidenote: Disabling CEC seems to make it work better :-)
(2015-03-28, 11:31)fritsch Wrote: @popcornmix, @millhouse: It works for you? > 96 khz flac or multi channel flac?
(2015-03-28, 17:07)fritsch Wrote: What makes me wonder is, that when I do "resampling" on top to 48 khz, it works without issues.
Wondering if there are some constraints in AESink implementation that "fear to run" dry, based on the samplerate, e.g. 96 khz is a lot :-)
Quote:#define NUM_OMX_BUFFERS 2
#define AUDIO_PLAYBUFFER (0.1) // 100ms
(2015-03-28, 17:16)fritsch Wrote: When reading the code, it seems the sink is optimized for 2 channels and 100 ms buffer, which would mean 50ms of audio. In case of 6 channel audio, we still also only have 2 OMX_BUFFERS but that would reduce the audio in buffer to 100/6 = 1/3 * 50 ~ 16 ms. That puts high load onto AE.
17:25:19 3379.672363 T:1971201104 NOTICE: CActiveAESink::StateMachine CSinkDataProtocol::TIMEOUT S_TOP_CONFIGURED_SILENCE
SetSilenceTimer();
if (!m_extSilenceTimer.IsTimePast())
{
m_state = S_TOP_CONFIGURED_SILENCE;
}
case S_TOP_CONFIGURED_SILENCE:
if (port == NULL) // timeout
{
switch (signal)
{
case CSinkControlProtocol::TIMEOUT:
OutputSamples(&m_sampleOfSilence);
if (m_extError)
{
m_sink->Deinitialize();
delete m_sink;
m_sink = NULL;
m_state = S_TOP_CONFIGURED_SUSPEND;
}
else
m_state = S_TOP_CONFIGURED_PLAY;
m_extTimeout = 0;
return;
default:
break;
}
}
break;