2011-04-03 2 views
0

Я создал приложение, используя пример SpeakHere. Программа принимает вокальный ввод, выполняет некоторые эффекты на нем, а затем записывает его в файл для воспроизведения.Текущая нить предотвращает полное воспроизведение звука на iPhone

Я создал поток, который запускает код обработки звука, показывая небольшую анимацию. Все работает отлично, за исключением случаев, когда поток завершен, и я нажимаю воспроизведение, он воспроизводится всего несколько секунд, а затем он останавливается. Странная вещь в этом заключается в том, что никаких других изменений или ошибок не возникает. Я загрузил аудио с устройства на свою машину, и все это есть, так что это не так, как если бы запись была короче.

[NSThread detachNewThreadSelector:@selector (run_thread) 
         toTarget:self 
         withObject:nil]; 

И тогда метод:

-(void)run_thread 
{ 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 


printf("Running Thread...\n"); 

recordFilePath = runAllAudioRoutines(); 

NSString *print_recordFilePath= (NSString *)recordFilePath; 

NSLog(@"RECORD FILE PATH ----> %@", print_recordFilePath); 



player->CreateQueueForFile(recordFilePath); 

bars_mixing_rap = false; 

// Set the button's state back to "record" 
btn_record.title = @"Record"; 
btn_record.enabled = YES; 
btn_play.enabled = YES; 

LOADING = FALSE; 

[pool drain]; 

} 

Любые идеи?

+0

Вы пытались использовать грандиозную центральную диспетчеризацию, а не использовать NSThreads? –

+0

Интересно, но, к сожалению, это доступно только для iOS4. Мне нужно что-то, что может работать на других iOS. –

ответ

1

Является ли код надежным? Не понятно, что делает runAllAudioRoutines() или что btn_record и btn_play, , но если btn_record был, скажем, экземпляром NSButton, который вы не можете установить в заголовке или включенном состоянии из фонового потока.

+0

Как узнать, является ли что-то потокобезопасным или нет? –

+0

@ Эрик Теперь это вопрос. Apple имеет много документации. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html%23//apple_ref/doc/uid/10000057i-CH12-SW1 – hooleyhoop

+0

Подводя итог, это очень сложно. – hooleyhoop

Смежные вопросы