mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-10 06:41:42 +02:00
changed frames to 960
throw if sample rate is not supported
This commit is contained in:
parent
870ca0a920
commit
5f19e54cc2
2 changed files with 42 additions and 28 deletions
|
@ -113,31 +113,12 @@ void OpenslPlayer::playerCallback(SLAndroidSimpleBufferQueueItf bq)
|
||||||
|
|
||||||
void OpenslPlayer::initOpensl()
|
void OpenslPlayer::initOpensl()
|
||||||
{
|
{
|
||||||
unsigned int rate;
|
|
||||||
int channels;
|
|
||||||
// int buff_size;
|
|
||||||
|
|
||||||
const msg::SampleFormat& format = stream_->getFormat();
|
const msg::SampleFormat& format = stream_->getFormat();
|
||||||
rate = format.rate;
|
|
||||||
channels = format.channels;
|
|
||||||
|
|
||||||
frames_ = rate / 20; // => 50ms
|
frames_ = 960;//rate / 50; // => 50ms
|
||||||
|
|
||||||
buff_size = frames_ * channels * 2 /* 2 -> sample size */;
|
buff_size = frames_ * format.channels * 2 /* 2 -> sample size */;
|
||||||
logO << "frames: " << frames_ << ", channels: " << channels << ", rate: " << rate << ", buff: " << buff_size << "\n";
|
logO << "frames: " << frames_ << ", channels: " << format.channels << ", rate: " << format.rate << ", buff: " << buff_size << "\n";
|
||||||
|
|
||||||
//// audioCallback = cb;
|
|
||||||
framesPerBuffer = frames_;//_FramesPerBuffer;
|
|
||||||
if (framesPerBuffer == 0)
|
|
||||||
framesPerBuffer = 256;
|
|
||||||
if (framesPerBuffer < 32)
|
|
||||||
framesPerBuffer = 32;
|
|
||||||
sampleRate = rate;
|
|
||||||
if (sampleRate != 44100 && sampleRate != 48000)
|
|
||||||
{
|
|
||||||
logE << "Invalid sample rate " << sampleRate << " - choosing 44100\n";
|
|
||||||
sampleRate = 44100;
|
|
||||||
}
|
|
||||||
|
|
||||||
buffer[0] = new char[buff_size];
|
buffer[0] = new char[buff_size];
|
||||||
buffer[1] = new char[buff_size];
|
buffer[1] = new char[buff_size];
|
||||||
|
@ -156,13 +137,48 @@ void OpenslPlayer::initOpensl()
|
||||||
assert(SL_RESULT_SUCCESS == result);
|
assert(SL_RESULT_SUCCESS == result);
|
||||||
|
|
||||||
SLuint32 sr = SL_SAMPLINGRATE_44_1;
|
SLuint32 sr = SL_SAMPLINGRATE_44_1;
|
||||||
if (sampleRate == 48000)
|
switch(format.rate)
|
||||||
{
|
{
|
||||||
|
case 8000:
|
||||||
|
sr = SL_SAMPLINGRATE_8;
|
||||||
|
break;
|
||||||
|
case 11025:
|
||||||
|
sr = SL_SAMPLINGRATE_11_025;
|
||||||
|
break;
|
||||||
|
case 16000:
|
||||||
|
sr = SL_SAMPLINGRATE_16;
|
||||||
|
break;
|
||||||
|
case 22050:
|
||||||
|
sr = SL_SAMPLINGRATE_22_05;
|
||||||
|
break;
|
||||||
|
case 24000:
|
||||||
|
sr = SL_SAMPLINGRATE_24;
|
||||||
|
break;
|
||||||
|
case 32000:
|
||||||
|
sr = SL_SAMPLINGRATE_32;
|
||||||
|
break;
|
||||||
|
case 44100:
|
||||||
|
sr = SL_SAMPLINGRATE_44_1;
|
||||||
|
break;
|
||||||
|
case 48000:
|
||||||
sr = SL_SAMPLINGRATE_48;
|
sr = SL_SAMPLINGRATE_48;
|
||||||
|
break;
|
||||||
|
case 64000:
|
||||||
|
sr = SL_SAMPLINGRATE_64;
|
||||||
|
break;
|
||||||
|
case 88200:
|
||||||
|
sr = SL_SAMPLINGRATE_88_2;
|
||||||
|
break;
|
||||||
|
case 96000:
|
||||||
|
sr = SL_SAMPLINGRATE_96;
|
||||||
|
break;
|
||||||
|
case 192000:
|
||||||
|
sr = SL_SAMPLINGRATE_192;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw SnapException("Sample rate not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
logO << "SamplingRate: " << sr/1000 << "\n";
|
|
||||||
|
|
||||||
SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2};
|
SLDataLocator_AndroidSimpleBufferQueue loc_bufq = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2};
|
||||||
SLDataFormat_PCM format_pcm =
|
SLDataFormat_PCM format_pcm =
|
||||||
{
|
{
|
||||||
|
|
|
@ -66,8 +66,6 @@ protected:
|
||||||
|
|
||||||
// Double buffering.
|
// Double buffering.
|
||||||
char *buffer[2];
|
char *buffer[2];
|
||||||
int framesPerBuffer;
|
|
||||||
int sampleRate;
|
|
||||||
int curBuffer;
|
int curBuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue