iOS, remote audio lost after interruption by an alarm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ming: On the ticket I see that [3411] has a comment: "Modified default core audio unit used on iOS from VPIO to RemoteIO".

Could you explain why the default has changed? If I'm not mistaken I have read that only the VPIO support
echo cancelation on the iPhone?

Best regards,
Even Andr? Fiskvik

On 15. feb. 2011, at 06.35, Ming wrote:

> Hi Dmitry and Cornelis,
> 
> I just simplify the code for interruption handling in coreaudio (for
> more details, please see ticket #1175:
> http://trac.pjsip.org/repos/ticket/1175). However, there's still one
> magic trick to make everything works as expected. You have to add a
> single line of code in your application:
> 
>    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
> 
> (Reference: http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/RemoteControl/RemoteControl.html)
> 
> Best regards,
> Ming
> 
> On Sun, Feb 13, 2011 at 8:38 AM,  <cg_vanderbent at mail.com> wrote:
>> Yes, I'm having the same problem and it's on my list of sorting this out
>> next week.
>> 
>> Glad you did it, and hope to see a solution soon as this is a show stopper
>> issue.
>> 
>> Regards,
>> 
>> Cornelis
>> 
>> 
>> -----Original Message-----
>> From: dto <dto2005@xxxxxxxxx>
>> To: pjsip list <pjsip at lists.pjsip.org>
>> Sent: Sat, Feb 12, 2011 10:44 pm
>> Subject: iOS, remote audio lost after interruption by an alarm
>> 
>> Hello,
>> 
>> We are using PJSIP in a SIP calling application for iPhone. We currently
>> have one problem with audio interruption on iOS 4.2 when in a call. We use
>> PJSIP coreaudio_dev as is with no changes. So other PJSIP users will likely
>> experience the same problem. It happens in 100% of attempts.
>> 
>> Following are the easy steps to reproduce it (assuming you already have
>> working calling application based on pjsip. I refer to such application as
>> "APP"):
>> 
>> 1) "APP" registers with the SIP server, makes a SIP call. (for example, one
>> could call 8800 on Asterisk based SIP server). Stay on this call, send "APP"
>> to the background. Remote audio still can be heard.
>> 2) Now go to the "Clock" application on iPhone and set up an alarm to happen
>> a a minute later from current time. Close the "Clock" app.
>> 3) At this point DO NOT put "APP" in the foreground. Observe the call is
>> still active in the background, red bar indicates that, you can hear the
>> remote audio.
>> 4) The alarm happens as scheduled. It plays some sound and shows the dialog.
>> Press OK on the dialog. Alarm sound stops, the dialog gets dismissed.
>> 5) At this point there is no red bar any more. The remote audio can not be
>> heard any more.
>> 6) Put "APP" in the foreground, observe the call itself is still active.
>> Just the remote audio has gone.
>> 
>> ===
>> 
>> Tracking down the error, I see that in coreaudio_dev.c, after audio
>> interruption ended, the interruptionListener() is called. This one calls
>> propListener() as shown below:
>> 
>>   .....
>>   if (inInterruption == kAudioSessionEndInterruption) {
>>   strm->interrupted = PJ_FALSE;
>>   /* There may be an audio route change during the interruption
>>   * (such as when the alarm rings), so we have to notify the
>>   * listener as well.
>>   */
>>   propListener(strm, kAudioSessionProperty_AudioRouteChange,
>>   0, NULL);
>>   } else if (inInterruption == kAudioSessionBeginInterruption) {
>>   ....
>> 
>> Then propListener(), in turn, tries to recreate the audio device and fails
>> with the log message below:
>> 
>>   ....
>>   if (create_audio_unit(strm->cf->io_comp, 0,
>>   strm->param.dir, strm,
>> &strm->io_units[0]) != PJ_SUCCESS)
>>   {
>>   PJ_LOG(3, (THIS_FILE,
>>   "Error: failed to create a new instance of audio unit"));
>>   return;
>>   }
>>   ....
>> 
>> I added more logging and learned that create_audio_unit() fails on the
>> following line:
>> 
>>   /* Initialize the audio unit */
>>   ostatus = AudioUnitInitialize(*io_unit);
>> 
>> and ostatus is -12985.
>> 
>> ====
>> 
>> Did anybody see that problem? Did anybody fix it? Any thoughts?
>> 
>> Thanks,
>> Dmitry
>> 
>> 
>> 
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>> 
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>> 
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>> 
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>> 
>> 
> 
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
> 
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20110215/82d47f1f/attachment-0001.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux