Looks good.

=============================================
Eric Hyche ([EMAIL PROTECTED])
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of 
> [EMAIL PROTECTED]
> Sent: Monday, November 06, 2006 12:15 PM
> To: [email protected]
> Subject: [Audio-dev] CR: Removing Assert on Symbian Audio session MMF
> 
> "Nokia submits this code under the terms of a commercial 
> contribution agreement with RealNetworks, and I am authorized 
> to contribute this code under said agreement."
> 
>       Modified by:  [EMAIL PROTECTED] 
> 
>       Reviewed by: 
> 
>       Date: 06-Nov-2006. 
> 
>       Project: SymbianMmf 
> 
>       ErrorId: EMBI-6V7GS7 
> 
>       Synopsis:  CR: Removing Assert on Symbian Audio session MMF 
> 
>          In emulator, the if PrepareForDeviceReset on audio 
> session MMF is called twice used to raise an assert. This 
> case happens frequently when a Stop is followed by Pause and 
> also during the underflow cases (Happens on emulator alone).
> 
>       Removed the assert and updated the function to prevent 
> the variable reset twice. 
> 
>       Also updated some logs to level 2 (mostly error cases). 
> 
>       The error has been tested for local & streaming both on 
> emulator and hardware. 
> 
> 
>       Files Modified: 
>       ========= 
>       
> audio/device/platform/symbian/audiosvr/mmf/audio_session-mmf.cpp 
> 
>       Image Size and Heap Use impact: no major impact 
> 
>       Platforms and Profiles Build Verified: 
> helix-client-s60-32-mmf-mdf-arm 
> 
>       Platforms and Profiles Functionality verified: armv5, winscw 
> 
>      Branch: Head & 210CayS 
> 
> 
> Index: platform/symbian/audiosvr/mmf/audio_session-mmf.cpp 
> =================================================================== 
> RCS file: 
> /cvsroot/audio/device/platform/symbian/audiosvr/mmf/audio_sess
> ion-mmf. 
> cpp,v 
> retrieving revision 1.14.2.4 
> diff -w -u -b -r1.14.2.4 audio_session-mmf.cpp 
> --- platform/symbian/audiosvr/mmf/audio_session-mmf.cpp 21 
> Aug 2006 21:26:32 -00 
> 00      1.14.2.4 
> +++ platform/symbian/audiosvr/mmf/audio_session-mmf.cpp 6 Nov 
> 2006 17:14:16 -000 
> 0 
> @@ -394,7 +394,7 @@ 
>      m_Settings.iChannels = channelCount; 
>      m_Settings.iEncoding = EMMFSoundEncoding16BitPCM; 
> 
> -    HXLOGL3(HXLOG_ADEV, "HXSymbianAudioSession::Init(): rate 
> = %ld; chan = %ld; 
>  sample frame = %lu bytes", m_sampleRate, 
> m_Settings.iChannels, m_cbSample); 
> +    HXLOGL2(HXLOG_ADEV, "HXSymbianAudioSession::Init(): rate 
> = %ld; chan = %ld; 
>  sample frame = %lu bytes", m_sampleRate, 
> m_Settings.iChannels, m_cbSample); 
> 
>      switch (m_state) 
>      { 
> @@ -585,9 +585,9 @@ 
>      // For now only KErrServerBusy is handled as recoverable error 
>      if(m_bDevSoundInitErr) 
>      { 
> -       HXLOGL3(HXLOG_ADEV, 
> "HXSymbianAudioSession::GetTime(): Previous PlayInit 
>  Failed. Retrying....\n"); 
> +       HXLOGL2(HXLOG_ADEV, 
> "HXSymbianAudioSession::GetTime(): Previous PlayInit 
>  Failed. Retrying....\n"); 
>         TRAPD(err, m_pStream->PlayInitL()); 
> -       HXLOGL3(HXLOG_ADEV, 
> "HXSymbianAudioSession::GetTime(): PlayInit RetVal:: 
> %d\n", err); 
> +       HXLOGL2(HXLOG_ADEV, 
> "HXSymbianAudioSession::GetTime(): PlayInit RetVal:: 
> %d\n", err); 
>         if(err != KErrNone) 
>         { 
>             if(err != KErrServerBusy) 
> @@ -743,7 +743,7 @@ 
>  void 
>  HXSymbianAudioSession::RequestDeviceTakenNotification() 
>  { 
> -    HXLOGL3(HXLOG_ADEV, 
> "HXSymbianAudioSession::RequestDeviceTakenNotification( 
> )"); 
> +    HXLOGL2(HXLOG_ADEV, 
> "HXSymbianAudioSession::RequestDeviceTakenNotification( 
> )"); 
>      m_wantsNotify = TRUE; 
>      m_notifyRequest = Message(); 
>  } 
> @@ -936,7 +936,7 @@ 
>          { 
>              // DevSound error KErrServerBusy is recoverable. 
>              // Hence flag is marked for retry 
> -            HXLOGL3(HXLOG_ADEV, 
> "HXSymbianAudioSession::DoPlayInit() PlayInit F 
> ailed. Mark flag for retry\n"); 
> +            HXLOGL2(HXLOG_ADEV, 
> "HXSymbianAudioSession::DoPlayInit() PlayInit F 
> ailed. Mark flag for retry\n"); 
>              m_bDevSoundInitErr = TRUE; 
>          } 
>          else 
> @@ -1181,14 +1181,14 @@ 
>      } 
>  } 
> 
> -// Called when a stop or pause (omap-based device) is issued. 
> +// Called when a stop or pause is issued. 
>  // 
>  void HXSymbianAudioSession::PrepareForDeviceReset() 
>  { 
>  #ifdef HELIX_CONFIG_SYMBIAN_SAMPLESPLAYED 
> 
> -    HX_ASSERT(!m_sampleCountResetPending); 
> - 
> +    if(m_sampleCountResetPending == FALSE) 
> +    { 
>      if (KErrNone == m_lastPlayError) 
>      { 
>          // preserve monotically increasing time when device resumes 
> @@ -1210,6 +1210,12 @@ 
>      } 
> 
>      m_sampleCountResetPending = TRUE; 
> +    } 
> +    else 
> +    { 
> +        // Session has been prepared already for reset, So ignore. 
> +        // One possible scenario is Pause followed by Stop 
> +    } 
> 
>  #endif 
>      // this tracks samples written after device reset trigger 
> 
> 


_______________________________________________
Audio-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Reply via email to