mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Increased audio buffer time for PES packets.
This commit is contained in:
parent
762959fbb4
commit
9b68248a3e
@ -1,6 +1,7 @@
|
|||||||
User johns
|
User johns
|
||||||
Date:
|
Date:
|
||||||
|
|
||||||
|
Increased audio buffer time for PES packets.
|
||||||
Support configuration and set of video background.
|
Support configuration and set of video background.
|
||||||
Survive lost X11 display.
|
Survive lost X11 display.
|
||||||
Fix bug: 100% cpu use with plugins like mp3.
|
Fix bug: 100% cpu use with plugins like mp3.
|
||||||
|
18
audio.c
18
audio.c
@ -141,7 +141,7 @@ static unsigned AudioSampleRate; ///< audio sample rate in hz
|
|||||||
static unsigned AudioChannels; ///< number of audio channels
|
static unsigned AudioChannels; ///< number of audio channels
|
||||||
static const int AudioBytesProSample = 2; ///< number of bytes per sample
|
static const int AudioBytesProSample = 2; ///< number of bytes per sample
|
||||||
static int64_t AudioPTS; ///< audio pts clock
|
static int64_t AudioPTS; ///< audio pts clock
|
||||||
static int AudioBufferTime = 216; ///< audio buffer time in ms
|
static int AudioBufferTime = 336; ///< audio buffer time in ms
|
||||||
|
|
||||||
#ifdef USE_AUDIO_THREAD
|
#ifdef USE_AUDIO_THREAD
|
||||||
static pthread_t AudioThread; ///< audio play thread
|
static pthread_t AudioThread; ///< audio play thread
|
||||||
@ -303,7 +303,7 @@ static int AlsaAddToRingbuffer(const void *samples, int count)
|
|||||||
/ (AudioSampleRate * AudioChannels * AudioBytesProSample),
|
/ (AudioSampleRate * AudioChannels * AudioBytesProSample),
|
||||||
VideoGetBuffers());
|
VideoGetBuffers());
|
||||||
// forced start
|
// forced start
|
||||||
if (AlsaStartThreshold * 2 < RingBufferUsedBytes(AlsaRingBuffer)) {
|
if (AlsaStartThreshold * 3 < RingBufferUsedBytes(AlsaRingBuffer)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
// enough video + audio buffered
|
// enough video + audio buffered
|
||||||
@ -1066,7 +1066,7 @@ static int AlsaSetup(int *freq, int *channels, int use_ac3)
|
|||||||
// FIXME: use hw_params for buffer_size period_size
|
// FIXME: use hw_params for buffer_size period_size
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
if (0) { // no underruns allowed, play silence
|
if (0) { // no underruns allowed, play silence
|
||||||
snd_pcm_sw_params_t *sw_params;
|
snd_pcm_sw_params_t *sw_params;
|
||||||
snd_pcm_uframes_t boundary;
|
snd_pcm_uframes_t boundary;
|
||||||
@ -1307,7 +1307,7 @@ static int OssAddToRingbuffer(const void *samples, int count)
|
|||||||
/ (AudioSampleRate * AudioChannels * AudioBytesProSample),
|
/ (AudioSampleRate * AudioChannels * AudioBytesProSample),
|
||||||
VideoGetBuffers());
|
VideoGetBuffers());
|
||||||
// forced start
|
// forced start
|
||||||
if (OssStartThreshold * 2 < RingBufferUsedBytes(OssRingBuffer)) {
|
if (OssStartThreshold * 3 < RingBufferUsedBytes(OssRingBuffer)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
// enough video + audio buffered
|
// enough video + audio buffered
|
||||||
@ -2098,12 +2098,12 @@ void AudioEnqueue(const void *samples, int count)
|
|||||||
if (0) {
|
if (0) {
|
||||||
static uint32_t last;
|
static uint32_t last;
|
||||||
static uint32_t tick;
|
static uint32_t tick;
|
||||||
static uint32_t max = 110;
|
static uint32_t max = 101;
|
||||||
uint64_t delay;
|
uint64_t delay;
|
||||||
|
|
||||||
delay = AudioGetDelay();
|
delay = AudioGetDelay();
|
||||||
tick = GetMsTicks();
|
tick = GetMsTicks();
|
||||||
if ((last && tick - last > max) || delay < 80 * 90) {
|
if ((last && tick - last > max) && AudioRunning) {
|
||||||
|
|
||||||
//max = tick - last;
|
//max = tick - last;
|
||||||
Debug(3, "audio: packet delta %d %lu\n", tick - last, delay / 90);
|
Debug(3, "audio: packet delta %d %lu\n", tick - last, delay / 90);
|
||||||
@ -2252,11 +2252,15 @@ void AudioPause(void)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
** Set audio buffer time.
|
** Set audio buffer time.
|
||||||
|
**
|
||||||
|
** PES audio packets have a max distance of 300 ms.
|
||||||
|
** TS audio packet have a max distance of 100 ms.
|
||||||
|
** The period size of the audio buffer is 24 ms.
|
||||||
*/
|
*/
|
||||||
void AudioSetBufferTime(int delay)
|
void AudioSetBufferTime(int delay)
|
||||||
{
|
{
|
||||||
if (!delay) {
|
if (!delay) {
|
||||||
delay = 216;
|
delay = 336;
|
||||||
}
|
}
|
||||||
AudioBufferTime = delay;
|
AudioBufferTime = delay;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user