mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Fix bug: don't normalize or compress AC3 samples.
This commit is contained in:
parent
47d840bbff
commit
3b5c1adef2
@ -1,6 +1,8 @@
|
||||
User johns
|
||||
Date:
|
||||
|
||||
Release Version 0.5.1
|
||||
Fix bug: don't normalize or compress pass-through samples.
|
||||
Make audio ring buffer size a multiple of 3,5,7,8.
|
||||
Add reset ring buffer support.
|
||||
Fix bug: alloca wrong size for audio buffer.
|
||||
|
46
audio.c
46
audio.c
@ -3570,7 +3570,7 @@ void AudioEnqueue(const void *samples, int count)
|
||||
int16_t *buffer;
|
||||
int frames;
|
||||
|
||||
#ifdef DEBUG
|
||||
#ifdef noDEBUG
|
||||
static uint32_t last_tick;
|
||||
uint32_t tick;
|
||||
|
||||
@ -3585,28 +3585,34 @@ void AudioEnqueue(const void *samples, int count)
|
||||
Debug(3, "audio: enqueue not ready\n");
|
||||
return; // no setup yet
|
||||
}
|
||||
//
|
||||
// Convert / resample input to hardware format
|
||||
//
|
||||
frames =
|
||||
count / (AudioRing[AudioRingWrite].InChannels * AudioBytesProSample);
|
||||
buffer =
|
||||
alloca(frames * AudioRing[AudioRingWrite].HwChannels *
|
||||
AudioBytesProSample);
|
||||
AudioResample(samples, AudioRing[AudioRingWrite].InChannels, frames,
|
||||
buffer, AudioRing[AudioRingWrite].HwChannels);
|
||||
if (AudioRing[AudioRingWrite].UseAc3) {
|
||||
buffer = (void*)samples;
|
||||
} else {
|
||||
//
|
||||
// Convert / resample input to hardware format
|
||||
//
|
||||
frames =
|
||||
count / (AudioRing[AudioRingWrite].InChannels *
|
||||
AudioBytesProSample);
|
||||
buffer =
|
||||
alloca(frames * AudioRing[AudioRingWrite].HwChannels *
|
||||
AudioBytesProSample);
|
||||
AudioResample(samples, AudioRing[AudioRingWrite].InChannels, frames,
|
||||
buffer, AudioRing[AudioRingWrite].HwChannels);
|
||||
|
||||
count =
|
||||
frames * AudioRing[AudioRingWrite].HwChannels * AudioBytesProSample;
|
||||
count =
|
||||
frames * AudioRing[AudioRingWrite].HwChannels *
|
||||
AudioBytesProSample;
|
||||
|
||||
// resample into ring-buffer is too complex in the case of a roundabout
|
||||
// just use a temporary buffer
|
||||
// resample into ring-buffer is too complex in the case of a roundabout
|
||||
// just use a temporary buffer
|
||||
|
||||
if (AudioCompression) { // in place operation
|
||||
AudioCompressor(buffer, count);
|
||||
}
|
||||
if (AudioNormalize) { // in place operation
|
||||
AudioNormalizer(buffer, count);
|
||||
if (AudioCompression) { // in place operation
|
||||
AudioCompressor(buffer, count);
|
||||
}
|
||||
if (AudioNormalize) { // in place operation
|
||||
AudioNormalizer(buffer, count);
|
||||
}
|
||||
}
|
||||
|
||||
n = RingBufferWrite(AudioRing[AudioRingWrite].RingBuffer, buffer, count);
|
||||
|
Loading…
Reference in New Issue
Block a user