[Audio Threads] Remove unused code
This code turned out to be somewhat of a mistake to employ, so it's now being removed, and shall not be re-added, as it doesn't really work. Signed-off-by: Christopher Snowhill <kode54@gmail.com>swiftingly
parent
84d0cbee3c
commit
1c36869e57
|
@ -17,101 +17,6 @@
|
|||
|
||||
#import <mach/mach_time.h>
|
||||
|
||||
// This workgroup attribute needs to be initialized.
|
||||
static os_workgroup_attr_s attr = OS_WORKGROUP_ATTR_INITIALIZER_DEFAULT;
|
||||
|
||||
// One nanosecond in seconds.
|
||||
static const double kOneNanosecond = 1.0e9;
|
||||
|
||||
// The I/O interval time in seconds.
|
||||
static const double kIOIntervalTime = 0.020;
|
||||
|
||||
// The clock identifier that specifies interval timestamps.
|
||||
static const os_clockid_t clockId = OS_CLOCK_MACH_ABSOLUTE_TIME;
|
||||
|
||||
// Enables time-contraint policy and priority suitable for low-latency,
|
||||
// glitch-resistant audio.
|
||||
BOOL SetPriorityRealtimeAudio(mach_port_t mach_thread_id) {
|
||||
kern_return_t result;
|
||||
|
||||
// Increase thread priority to real-time.
|
||||
|
||||
// Please note that the thread_policy_set() calls may fail in
|
||||
// rare cases if the kernel decides the system is under heavy load
|
||||
// and is unable to handle boosting the thread priority.
|
||||
// In these cases we just return early and go on with life.
|
||||
|
||||
// Make thread fixed priority.
|
||||
thread_extended_policy_data_t policy;
|
||||
policy.timeshare = 0; // Set to 1 for a non-fixed thread.
|
||||
result = thread_policy_set(mach_thread_id,
|
||||
THREAD_EXTENDED_POLICY,
|
||||
(thread_policy_t)&policy,
|
||||
THREAD_EXTENDED_POLICY_COUNT);
|
||||
if(result != KERN_SUCCESS) {
|
||||
DLog(@"thread_policy_set extended policy failure: %d", result);
|
||||
return NO;
|
||||
}
|
||||
|
||||
// Set to relatively high priority.
|
||||
thread_precedence_policy_data_t precedence;
|
||||
precedence.importance = 63;
|
||||
result = thread_policy_set(mach_thread_id,
|
||||
THREAD_PRECEDENCE_POLICY,
|
||||
(thread_policy_t)&precedence,
|
||||
THREAD_PRECEDENCE_POLICY_COUNT);
|
||||
if(result != KERN_SUCCESS) {
|
||||
DLog(@"thread_policy_set precedence policy failure: %d", result);
|
||||
return NO;
|
||||
}
|
||||
|
||||
// Most important, set real-time constraints.
|
||||
|
||||
// Define the guaranteed and max fraction of time for the audio thread.
|
||||
// These "duty cycle" values can range from 0 to 1. A value of 0.5
|
||||
// means the scheduler would give half the time to the thread.
|
||||
// These values have empirically been found to yield good behavior.
|
||||
// Good means that audio performance is high and other threads won't starve.
|
||||
const double kGuaranteedAudioDutyCycle = 0.75;
|
||||
const double kMaxAudioDutyCycle = 0.85;
|
||||
|
||||
// Define constants determining how much time the audio thread can
|
||||
// use in a given time quantum. All times are in milliseconds.
|
||||
|
||||
// About 128 frames @44.1KHz
|
||||
const double kTimeQuantum = 2.9;
|
||||
|
||||
// Time guaranteed each quantum.
|
||||
const double kAudioTimeNeeded = kGuaranteedAudioDutyCycle * kTimeQuantum;
|
||||
|
||||
// Maximum time each quantum.
|
||||
const double kMaxTimeAllowed = kMaxAudioDutyCycle * kTimeQuantum;
|
||||
|
||||
// Get the conversion factor from milliseconds to absolute time
|
||||
// which is what the time-constraints call needs.
|
||||
mach_timebase_info_data_t tb_info;
|
||||
mach_timebase_info(&tb_info);
|
||||
double ms_to_abs_time =
|
||||
((double)tb_info.denom / (double)tb_info.numer) * 1000000;
|
||||
|
||||
thread_time_constraint_policy_data_t time_constraints;
|
||||
time_constraints.period = kTimeQuantum * ms_to_abs_time;
|
||||
time_constraints.computation = kAudioTimeNeeded * ms_to_abs_time;
|
||||
time_constraints.constraint = kMaxTimeAllowed * ms_to_abs_time;
|
||||
time_constraints.preemptible = 0;
|
||||
|
||||
result = thread_policy_set(mach_thread_id,
|
||||
THREAD_TIME_CONSTRAINT_POLICY,
|
||||
(thread_policy_t)&time_constraints,
|
||||
THREAD_TIME_CONSTRAINT_POLICY_COUNT);
|
||||
if(result != KERN_SUCCESS) {
|
||||
DLog(@"thread_policy_set constraint policy failure: %d", result);
|
||||
return NO;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@implementation Node
|
||||
|
||||
- (id)initWithController:(id)c previous:(id)p {
|
||||
|
|
Loading…
Reference in New Issue