"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: 
                        TSW Id: EADA-7H2MNG
                        Date: 08/01/2008
                         
                        Project: SymbianMmf_rel
                         
                        Synopsis: Helix not handling Error from MDF
Devsound

                        Overview:
                        MDF Audio Device returns an unknown Error Code
which is not handled in Helix. So helix still tries to send more packets
to Device whereas device doesn't play any more packets. This causes
video to appear frozen.

                        Fix:
                        On receiving any unknown errors from Device,
abort and send error code to UI for displaying appropriate error
message. Make similar changes for both MDF and ARM Audio.

                        Files modified & changes:
        
/audio/device/platform/symbian/CHXSymbianAudioSession.cpp
                        /audio/device/platform/symbian/audsymbian.cpp
                        /datatype/mdf/audio/dsp/mdfdevsound.cpp
                        /datatype/mdf/audio/dsp/mdfauddevice.cpp

                        Image Size and Heap Use impact: None

                        Module Release testing (STIF, Audio) : Passed

                        Test case(s) Added  : No

                        Memory leak check performed : Passed, No leaks
found
                          
                        Platforms and Profiles Build Verified:
helix-client-s60-32-mmf-mdf-dsp

                        Platforms and Profiles Functionality verified:
armv5
                          
                        Branch: Head, 210CayS, 221Cays


        Index: CHXSymbianAudioSession.cpp
        
===================================================================
        RCS file:
/cvsroot/audio/device/platform/symbian/CHXSymbianAudioSession.cpp,v
        retrieving revision 1.1
        diff -u -w -r1.1 CHXSymbianAudioSession.cpp
        --- CHXSymbianAudioSession.cpp  3 Apr 2007 18:24:49 -0000
1.1
        +++ CHXSymbianAudioSession.cpp  4 Aug 2008 22:52:51 -0000
        @@ -275,6 +275,10 @@
                         break;
                     }
                 default:
        +            if(m_pAudDevStatusObserver != NULL)
        +            {
        +
m_pAudDevStatusObserver->OnAudDevStatusChange(aError);
        +            }
                     break;
                 }
             } // End of if (aError != KErrNone)

        Index: audsymbian.cpp
        
===================================================================
        RCS file:
/cvsroot/audio/device/platform/symbian/audsymbian.cpp,v
        retrieving revision 1.35.2.7
        diff -u -w -r1.35.2.7 audsymbian.cpp
        --- audsymbian.cpp      3 Apr 2007 18:33:09 -0000       1.35.2.7
        +++ audsymbian.cpp      4 Aug 2008 22:53:10 -0000
        @@ -496,6 +496,11 @@
                 HX_ASSERT(m_pErrorMessages != NULL);
                 m_pErrorMessages->Report(HXLOG_INFO,
HXR_AUDIODEVICETAKEN, 0, NULL, NULL);
             }
        +   else
        +   {
        +        HX_ASSERT(m_pErrorMessages != NULL);
        +        m_pErrorMessages->Report(HXLOG_ERR, HXR_AUDIO_DRIVER,
0, NULL, NULL);
        +   }
         }

         //

        Index: mdfdevsound.cpp
        
===================================================================
        RCS file: /cvsroot/datatype/mdf/audio/dsp/mdfdevsound.cpp,v
        retrieving revision 1.1.2.17.2.1
        diff -u -w -r1.1.2.17.2.1 mdfdevsound.cpp
        --- mdfdevsound.cpp     3 Apr 2008 18:58:00 -0000
1.1.2.17.2.1
        +++ mdfdevsound.cpp     4 Aug 2008 20:28:10 -0000
        @@ -951,6 +951,18 @@
                 m_devStatus = DevPlayError;
             }

        +    if(m_devStatus == DevPlayError)
        +    {
        +        //Retry later in case of KErrNotReady(-18) and
KErrServerBusy (-16)
        +        //for any other errors Bail out
        +        if((m_lDevError != KErrNotReady) &&
        +           (m_lDevError != KErrServerBusy) &&
        +            m_pDevObserver)
        +        {
        +            m_pDevObserver->OnDeviceError(HXR_AUDIO_DRIVER);
        +        }
        +    }
             HXLOGL4(HXLOG_MDFA, "---devsnd:PlyErr >\n");
         }

        Index: mdfauddevice.cpp
        
===================================================================
                RCS file:
/cvsroot/datatype/mdf/audio/dsp/mdfauddevice.cpp,v
                retrieving revision 1.1.2.10
                diff -u -w -r1.1.2.10 mdfauddevice.cpp
                --- mdfauddevice.cpp    3 Nov 2006 21:15:11 -0000
1.1.2.10
                +++ mdfauddevice.cpp    4 Aug 2008 19:47:04 -0000
                @@ -788,8 +788,15 @@
                     // Report error to Error Messages
                     if(m_pErrorMessage)
                     {
                +        if(hxr == HXR_AUDIODEVICETAKEN)
                +        {
                             m_pErrorMessage->Report(HXLOG_INFO, hxr, 0,
NULL, NULL);
                         }
                +       else //All other errors are reported as ERROR
                +       {
                +           m_pErrorMessage->Report(HXLOG_ERR, hxr, 0,
NULL, NULL);
                +       }
                +    }

                     HXLOGL4(HXLOG_MDFA, "mdfdeV:OnDeviceError >");
                 }

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

Reply via email to