better buffer size suggestion

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6390 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
beveloper 2004-01-28 19:08:27 +00:00
parent 21aea2f3df
commit df6c2e833f
1 changed files with 27 additions and 5 deletions

View File

@ -2695,11 +2695,33 @@ BMediaRoster::AudioBufferSizeFor(int32 channel_count,
float frame_rate, float frame_rate,
bus_type bus_kind) bus_type bus_kind)
{ {
UNIMPLEMENTED(); bigtime_t buffer_duration;
int size = 4096; ssize_t buffer_size;
int framesize = (sample_format & 0xf) * channel_count;
size = (size / framesize) * framesize; system_info info;
return size; get_system_info(&info);
if (info.cpu_clock_speed > 2000000000)
buffer_duration = 2500;
else if (info.cpu_clock_speed > 1000000000)
buffer_duration = 5000;
else if (info.cpu_clock_speed > 600000000)
buffer_duration = 10000;
else if (info.cpu_clock_speed > 200000000)
buffer_duration = 20000;
else if (info.cpu_clock_speed > 100000000)
buffer_duration = 30000;
else
buffer_duration = 50000;
if ((bus_kind == B_ISA_BUS || bus_kind == B_PCMCIA_BUS) && buffer_duration < 25000)
buffer_duration = 25000;
buffer_size = (sample_format & 0xf) * channel_count * (ssize_t)((frame_rate * buffer_duration) / 1000000.0);
printf("Suggested buffer duration %Ld, size %ld\n", buffer_duration, buffer_size);
return buffer_size;
} }