# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282115842 -10800 # Node ID 1fa3fb47b1e3b9067cfcd620252f898ac956be68 # Parent 94fc26b6e00694f57fdb815a9b84b8f550de2ffa Revision: 201031 Kit: 201033 diff -r 94fc26b6e006 -r 1fa3fb47b1e3 inc/AmrCodec.h --- a/inc/AmrCodec.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,364 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - - -#ifndef __AMRCODEC_H__ -#define __AMRCODEC_H__ - -// INCLUDES - -#include - - -// FORWARD DECLARATIONS - -class CAmrToPcmDecoderImpl; -class CPcmToAmrEncoderImpl; - - -// CLASS DECLARATION - -/** -* TAmrDecParams -* AMR decoding parameters. -*/ -class TAmrDecParams - { -public: - /** - * Default constructor. - */ - inline TAmrDecParams(); -public: - // error concealment level (0 none, 1 default) - TInt iConcealment; - }; - -TAmrDecParams::TAmrDecParams() : -iConcealment(1) {} - -/** -* TAmrEncParams -* AMR encoding parameters. -*/ -class TAmrEncParams - { -public: - /** - * Default constructor. - */ - inline TAmrEncParams(); -public: - // encoding mode 0-7 (0=MR475,1=MR515,...,7=MR122, default 7) - TInt iMode; - // DTX flag (TRUE or default FALSE) - TInt iDTX; - }; - -TAmrEncParams::TAmrEncParams() : -iMode(7), iDTX(0) {} - - -// CLASS DEFINITIONS - -/** -* TAmrFrameInfo -* AMR frame info struct. -*/ -class TAmrFrameInfo - { -public: - /** - * Default constructor. - */ - TAmrFrameInfo() {}; -public: - /** - * Returns the size of smallest AMR audio frame, i.e., the size of one DTX - * frame. NO DATA frames (size 1 byte) are not taken into account here. - * - * @since ?Series60_version - * @param none - * @return TInt - */ - IMPORT_C static TInt MinFrameSize(); - - /** - * Returns the size of biggest AMR audio frame, i.e., the size of one EFR - * frame. - * - * @since ?Series60_version - * @param none - * @return TInt - */ - IMPORT_C static TInt MaxFrameSize(); - - /** - * Returns the maximum number of samples per one audio channel in one - * AMR audio frame. - * - * @since ?Series60_version - * @param none - * @return TInt - */ - IMPORT_C static TInt MaxFrameSamples(); - - /** - * Returns the maximum number audio channels in one frame. - * - * @since ?Series60_version - * @param none - * @return TInt - */ - IMPORT_C static TInt MaxChannels(); - - /** - * Returns the size of one AMR frame header. The header must include - * all bits needed for determining the actual frame length. - * - * @since ?Series60_version - * @param none - * @return TInt Size of AMR frame header - */ - IMPORT_C static TInt FrameHeaderSize(); - - /** - * Returns the size of frame described by given coding parameters. The only - * parameter used in calculation is the coding mode (iMode). - * - * @since ?Series60_version - * @param none - * @return TInt AMR frame size - */ - IMPORT_C static TInt FrameSize(const TAmrFrameInfo& aInfo); -public: - TInt iMode; // encoding mode - TInt iBitrate; // bitrate (kbit/s) - TInt iSamplingRate; // sampling frequency (Hz) - TInt iChannels; // number of channels - TInt iFrameSize; // encoded size (bytes) - TInt iFrameSamples; // decoded size (samples per channel) -public: - TInt iSamplingRateOut; // sampling frequency after conversion (Hz) - TInt iChannelsOut; // number of audio channels after conversion (1 or 2) - TInt iFrameSamplesOut; // decoded size after conversion (samples per channel) - }; - -/** -* CAmrToPcmDecoder -* Low level AMR decoding API. -*/ -class CAmrToPcmDecoder : public CBase - { -protected: - /** - * Default constructor. - */ - IMPORT_C CAmrToPcmDecoder(); - - /** - * 2nd phase constructor. Constructs the decoder. - */ - IMPORT_C void ConstructL(); -public: - /** - * Two-phased constructor. First allocates and constructs decoder - * and then resets it according to the given configuration. - * - * @since ?Series60_version - * @param aConf Decoder configuration params - * @return CAmrToPcmDecoder* Pointer to constructed decoder - */ - IMPORT_C static CAmrToPcmDecoder* NewL(const TAmrDecParams& aConf); - - /** - * Destructor - */ - IMPORT_C virtual ~CAmrToPcmDecoder(); - - /** - * Initializes decoder and resets it into the default decoding state. - * - * @since ?Series60_version - * @param none - * @return void - */ - IMPORT_C void Reset(); - - /** - * Initializes decoder and resets it according to the given configuration. - * - * @since ?Series60_version - * @param aConf Decoder configuration params - * @return void - */ - IMPORT_C void Reset(const TAmrDecParams& aConf); - - /** - * Calculates the frame size and returns information about the frame which - * starts from the beginning of aBuf. Returns 0, if the frame bit syntax is - * incorrect or not enough bits are available for calculating the frame size - * and the frame parameters (aBufLen < TAmrCodecParams::FrameHeaderSize). - * - * The frame parameters returned via aInfo are: mode, sampling frequency, - * number of channels, frame size (same as return value) and number of - * samples in this frame. See also TMdaRawAmrAudioCodec class. - * - * @since ?Series60_version - * @param aBuf Pointer to frame buffer - * @param aBufLen Length of frame buffer - * @param aInfo Reference to frame parameters - * @return TInt Length of frame in bytes - */ - IMPORT_C static TInt FrameInfo(const TUint8* aBuf, TInt aBufLen, TAmrFrameInfo& aInfo); - - /** - * A variation of the FrameInfo above, which takes into account the - * decoding switches in calculating iSampligRateOut, iChannelsOut - * and iFrameSamplesOut.Initializes decoder and resets it according - * to the given configuration. - * - * @since ?Series60_version - * @param aBuf Pointer to frame buffer - * @param aBufLen Length of frame buffer - * @param aInfo Reference to fram parameters - * @param aConf Reference to decoding switches - * @return TInt Length of frame in bytes - */ - IMPORT_C static TInt FrameInfo(const TUint8* aBuf, TInt aBufLen, TAmrFrameInfo& aInfo, const TAmrDecParams& aConf); - - /** - * This routine seeks the start position of the next frame and returns - * the byte position of its header. Returns aBufLen, if no valid frame - * can not be found (see FrameInfo). The seek progresses from the start - * of aBuf (0) toward the end of aBuf(aBufLen - 1). - * - * The level of syntax check depends on the number of bits available. At - * minimum the first frame header bits are checked only, but if more - * bits are available, they can be used to make the sync seek more robust. - * For succesful seek the whole frame does not need to exist in aBuf. - * - * @since ?Series60_version - * @param aBuf Pointer to frame buffer - * @param aBufLen Length of frame buffer - * @return TInt Frame position or aBufLen - */ - IMPORT_C static TInt SeekSync(const TUint8* aBuf, TInt aBufLen); - - /** - * Decodes one frame. - * - * @since ?Series60_version - * @param aSrc Pointer to bit stream buffer - * @param aSrcUsed Number of consumed bytes - * @param aDst Pointer to PCM buffer - * @param aDstLen Number of produced bytes - * @param aMuteFlag If ETrue this frame is muted - * @return TInt Non-zero if decoding failed - */ - IMPORT_C TInt Decode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst, TInt& aDstLen, TBool aMuteFlag); - - /** - * Decodes one frame from aSrc to aDst1 and aDst2. NOTE: aDst1 or - * aDst2 can be NULL and in that case decoding to that buffer is not - * requested. - * - * @since ?Series60_version - * @param aSrc Pointer to bit stream buffer - * @param aSrcUsed Number of consumed bytes - * @param aDst1 Pointer to PCM sample buffer (time domain sample) - * @param aDst2 Pointer to frequency sample buffer (frequency domain sample) - * @param aDstLen1 Number of produced bytes in aDst1 - * @param aDstLen2 Number of produced bytes in aDst2 - * @param aMuteFlag If ETrue this frame is muted - * @return TInt Non-zero if decoding failed - */ - IMPORT_C TInt Decode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst1, TUint8* aDst2, TInt& aDstLen1, TInt& aDstLen2, TInt aMuteFlag); -private: - CAmrToPcmDecoderImpl* iState; - }; - -/** -* CPcmToAmrEncoder -* Low level AMR encoding API. -*/ -class CPcmToAmrEncoder : public CBase - { -protected: - - /** - * Default constructor. - */ - IMPORT_C CPcmToAmrEncoder(); - - /** - * 2nd phase constructor. Constructs the encoder. - */ - IMPORT_C void ConstructL(); -public: - - /** - * Two-phased constructor. First allocates and constructs encoder - * and then resets it according to the given configuration. - * - * @since ?Series60_version - * @param aConf Encoder configuration params - * @return CPcmToAmrEncoder* Pointer to constructed encoder - */ - IMPORT_C static CPcmToAmrEncoder* NewL(const TAmrEncParams& aConf); - - /** - * Destructor - */ - IMPORT_C virtual ~CPcmToAmrEncoder(); - - /** - * Initializes encoder and resets encoder state. - * - * @since ?Series60_version - * @param none - * @return void - */ - IMPORT_C void Reset(); - - /** - * Initializes encoder and resets it according to the given configuration. - * - * @since ?Series60_version - * @param aConf Encoder configuration params - * @return void - */ - IMPORT_C void Reset(const TAmrEncParams& aConf); - - /** - * Encodes one frame. - * - * @since ?Series60_version - * @param aSrc Pointer to PCM buffer - * @param aSrcUsed Number of consumed bytes - * @param aDst Pointer to bit stream buffer - * @param aDstLen Length of resulting frame - * @return TInt Non-zero if encoding failed - */ - IMPORT_C TInt Encode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst, TInt& aDstLen); -private: - CPcmToAmrEncoderImpl* iState; - }; - -#endif //__AMRCODEC_H__ - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 inc/DebugMacros.h --- a/inc/DebugMacros.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Debug Macros used by AdvancedAudioController -* -*/ - - -#ifndef __DEBUGMACROS_H__ -#define __DEBUGMACROS_H__ - -// MACROS -#ifdef _DEBUG -#define DP0(string) RDebug::Print(string) -#define DP1(string,arg1) RDebug::Print(string,arg1) -#define DP2(string,arg1,arg2) RDebug::Print(string,arg1,arg2) -#define DP3(string,arg1,arg2,arg3) RDebug::Print(string,arg1,arg2,arg3) -#define DP4(string,arg1,arg2,arg3,arg4) RDebug::Print(string,arg1,arg2,arg3,arg4) -#define DP5(string,arg1,arg2,arg3,arg4,arg5) RDebug::Print(string,arg1,arg2,arg3,arg4,arg5) -#define DP6(string,arg1,arg2,arg3,arg4,arg5,arg6) RDebug::Print(string,arg1,arg2,arg3,arg4,arg5,arg6) -#else -#define DP0(string) -#define DP1(string,arg1) -#define DP2(string,arg1,arg2) -#define DP3(string,arg1,arg2,arg3) -#define DP4(string,arg1,arg2,arg3,arg4) -#define DP5(string,arg1,arg2,arg3,arg4,arg5) -#define DP6(string,arg1,arg2,arg3,arg4,arg5,arg6) -#endif - -#endif //__DEBUGMACROS_H__ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 inc/EAacPlusFrameParser.h --- a/inc/EAacPlusFrameParser.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - - -#ifndef EAACPLUSFRAMEPARSER_H -#define EAACPLUSFRAMEPARSER_H - -// INCLUDES -#include -#include "EAacPlusUtil.h" - -class CFrameTable; -class CMMFBuffer; - -// CLASS DECLARATION - -/** -* This class implements utility functions to extract AAC frame -* information. -* -* @lib MmfEAacPlusUtil.lib -* @since 3.2 -*/ -class CEAacPlusFrameParser : public CBase - { - public: - - class TEAacPlusParserConfig - { - public: - CEAacPlusUtil::TEAacPlusFrameLenConfig iFrameLenConfig; // config info needed by util for frame length. - TInt iOutSamplingFrequency; // output sampling freq of decoder - TInt iNumOfSamples; // samples per frame - CFrameTable* iFrameTable; // the frame table - }; - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - IMPORT_C static CEAacPlusFrameParser* NewL(); - - /** - * Destructor. - */ - IMPORT_C virtual ~CEAacPlusFrameParser(); - - public: // New functions - - /** - * Used to parse the aac frames and populate the seek table. - * @since 3.2 - * @param aBuf buffer of AAC data from start of aac content - * @param aBufLen length of aBuf - * @return status - */ - IMPORT_C TInt Parse(const CMMFBuffer& aSrc, TInt& aSrcUsed); - - /** - * Used to configure the utility with information needed to enable the apis. - * This api can be used if GetAacFrameInfo is not used to initialize the utility. - * @since 3.2 - * @param aFormatType format type - * @param aSamplingFrequency sampling frequency - * @return status - */ - IMPORT_C TInt Config(TEAacPlusParserConfig& aParserConfig); - IMPORT_C TInt ReConfig(); - - private: - - /** - * C++ default constructor. - */ - CEAacPlusFrameParser(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - private: // Data - CEAacPlusUtil* iAacUtil; - CFrameTable* iFrameTable; - - // local input buffer - TUint8* iTmpBuf; - const TUint8* iTmpBufPtr; - TInt iTmpBufBytes; - TInt iBytesCopied; - - TBool iUsingTmpBuf; - - TInt iPos; -// CEAacPlusUtil::TEAacPlusFormatType iFormatType; -// TInt iInSamplingFrequency; -// TInt iOutSamplingFrequency; -// TInt iNumOfSamples; - TEAacPlusParserConfig iParserConfig; - - }; - -#endif // EAACPLUSFRAMEPARSER_H - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 inc/EAacPlusUtil.h --- a/inc/EAacPlusUtil.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Header file for EAacPlusUtil.cpp -* -*/ - - -#ifndef EAACPLUSUTIL_H -#define EAACPLUSUTIL_H - -// INCLUDES -#include - -// CLASS DECLARATION -class EAacpAudioFrameInfo; - -/** -* This class implements utility functions to extract AAC frame -* information. -* -* @lib MmfEAacPlusUtil.lib -* @since 3.2 -*/ -class CEAacPlusUtil : public CBase - { - public: - // CONSTANTS - enum TEAacPlusFormatType - { - EAacPlusFormatRaw=0, - EAacPlusFormatAdif=1, - EAacPlusFormatAdts=2 - }; - /** - * EAAC+ frame info struct. - * - * @lib MmfEAacPlusUtil.lib - * @since 3.2 - */ - class TEAacPlusFrameInfo - { - public: - TInt iOutFrameSize; // Size of PCM Samples generated by decoder - TInt iNoOfSamples; // Number of PCM Samples generated by decoder per frame - TInt iSamplingFrequency; // Sampling freq of AAC Code decoder - TInt iNoOfChannels; // No of output channel 1=Mono; 2=Stereo - TInt iObjectType; // MPEG Audio Object Type 2=AAC-LC; 4=AAC-LTP - TInt iOutSamplingFrequency; // Sampling Frequence for the output samples - TInt iDownSampledMode; // 0=Normal Mode; 1=Down Sampled mode - TInt iSbr; // 0=SBR not present; 1=SBR present - TInt iPs; // 0=PS not present; 1=PS present - }; - - class TEAacPlusFrameLenConfig - { - public: - TEAacPlusFormatType iFormatType; // Container type. - TInt iSamplingFrequency; // Sampling freq of AAC core decoder - TInt iObjectType; // MPEG Audio Object Type 2=AAC-LC; 4=AAC-LTP - }; - - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - IMPORT_C static CEAacPlusUtil* NewL(); - - /** - * Destructor. - */ - IMPORT_C virtual ~CEAacPlusUtil(); - - public: // New functions - - /** - * Used to get the format type. - * @since 3.2 - * @param aBuf buffer of AAC data from start of aac content - * @param aBufLen length of aBuf - * @param TEAacPlusFormatType returned format type 0=raw; 1=ADIF; 2=ADTS - * @return status - */ - IMPORT_C TInt GetAacFormatType(const TUint8* aBuf, TInt aBufLen, TEAacPlusFormatType& aFormatType); - - /** - * Used to get the audio format information for ADIF and ADTS content. - * Data should be provided beginning with start of aac content including header. - * Enough data should follow the header to determine SBR and PS if needed. - * Can be used with mpeg data where aHdrBuf will contain the AudioSpecificConfig. Implicit SBR and PS - * will not be determined. - * @since 3.2 - * @param aHdrBuf buffer with AAC data beginning at start of aac content including ADIF or ADTS header - * @param aHdrLen length of aHdrBuf; header length is returned in this parameter - * @param aFrameInfo returns the format information - * @return status - */ - IMPORT_C TInt GetAacFrameInfo (const TUint8* aHdrBuf, TInt& aHdrLen, TEAacPlusFrameInfo& aFrameInfo); - - /** - * Used to get the audio format information for mpeg aac. - * aHdrBuf will contain the AudioSpecificConfig. aDataBuf will contain data at beginning of raw audio frames. - * Implicit SBR and PS can be determined. - * @since 3.2 - * @param aHdrBuf buffer with AudioSpecificConfig data. - * @param aHdrLen length of aHdrBuf - * @param aFrameInfo returns the format information - * @param aDataBuf buffer with raw audio frames - * @param aDataBufLen length of aDataBuf - * @return status - */ - IMPORT_C TInt GetAacFrameInfo (const TUint8* aHdrBuf, TInt& aHdrLen, TEAacPlusFrameInfo& aFrameInfo, - TUint8* aDataBuf, TInt aDataBufLen); - - /** - * Used to get the size in bytes of the frame found at the start of aBuf. - * @since 3.2 - * @param aBuf buffer with AAC data frame - * @param aBufLen length of aBuf - * @param aFrameLen returns the frame size in bytes - * @return status - */ - IMPORT_C TInt GetAacFrameLength(const TUint8* aBuf, TInt aBufLen, TInt& aFrameLen); - - /** - * Used to configure the utility with information needed to enable the apis. - * This api can be used if GetAacFrameInfo is not used to initialize the utility. - * @since 3.2 - * @param aFormatType format type - * @param aSamplingFrequency sampling frequency - * @return status - */ - IMPORT_C TInt Config(TEAacPlusFrameLenConfig& aFrameLenConfig); - - private: - - /** - * C++ default constructor. - */ - CEAacPlusUtil(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - private: // Data - TEAacPlusFormatType iFormat; - EAacpAudioFrameInfo* iGetFrameLenParam; - TBool iInitialized; - }; - -#endif // EAACPLUSUTIL_H - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 inc/FrameTable.h --- a/inc/FrameTable.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - - -#ifndef CFRAMETABLE_H -#define CFRAMETABLE_H - -// INCLUDES -#include - -// FORWARD DECLARATIONS -class MFrameTableEventObserver; - -// CLASS DEFINITIONS - -/** - * This class provides AAC utility functions. - * - * @lib AACAudioControllerUtility.lib - * @since 3.0 - */ -class CFrameTable : public CBase - { -public: - // Constructors and destructor - - enum TFrameTableEvent - { - EPosReached, - EDecodeInterval, - EPlayWindowEndPosReached - }; - - /** - * Two-phased constructor. - */ - IMPORT_C static CFrameTable* NewL(); - - /** - * Destructor. - */ - IMPORT_C virtual ~CFrameTable(); - -public: - // New functions - - IMPORT_C TInt InitFrameTable(TInt aSampleRate, TInt aSamplesPerFrame); - IMPORT_C TInt SubmitTableEntry(TUint aPos); - - IMPORT_C TInt FindFramePosFromTime(TUint& aTimeMs, TUint& aPos); - IMPORT_C TInt FindFrameTimeFromPos(TUint& aTimeMs, TUint& aPos); - IMPORT_C TInt LastFramePos(TUint& aPos); - IMPORT_C TInt LastFrameTime(TUint& aTimeMs); - - IMPORT_C void ShrinkTable(); - IMPORT_C void ResetTable(); - - IMPORT_C TInt SetSourceReference(TUint aTimeMs, TUint aPos); - - IMPORT_C TInt RegisterForEvent(TFrameTableEvent aEvent, - MFrameTableEventObserver* aObserver, TUint aParam); - IMPORT_C TInt UnRegisterForEvent(TFrameTableEvent aEvent, - MFrameTableEventObserver* aObserver); - IMPORT_C TInt Bitrate(); - IMPORT_C TInt IsSeeking(TBool& aIsSeeking); - IMPORT_C TInt GetLastPosEvent(TUint& aPos); - -private: - - class TBufRefPosEntry - { -public: - TUint iPos; - TUint iFrameNum; - }; - - /** - * C++ default constructor. - */ - CFrameTable(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - TUint CalcFrameFromTimeMs(TUint aTimeMs); - TInt SubmitLowResTableEntry(TBufRefPosEntry& aEntry); - -private: - // Data - - RArray iFrameTable; - RArray iLowResFrameTable; - TUint iSampleRate; - TUint iSamplesPerFrame; - TUint iMsecPerFrame; - TUint iLastBytePos; - TUint iAvgBitrate; - TUint iOffset; - TUint iTimeRefMs; - TUint iPosEventMs; - TUint iPlayWindowEndPosEventMs; - TInt iIntervalRef; - TUint iIntervalEvent; - MFrameTableEventObserver* iObserver; - TUint iEventPos; - TUint iCurrentFrameCount; - TUint iFramesPerLowResInterval; - TUint iLowResIntervalMs; - TUint iFrameNum; - TBool iOkToShrink; - }; - -class MFrameTableEventObserver - { -public: - virtual TInt - HandleFrameTableEvent(CFrameTable::TFrameTableEvent aEvent) = 0; - }; - -#endif // CFRAMETABLE_H -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 inc/Mp3Codec.h --- a/inc/Mp3Codec.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - - -#ifndef __MP3CODEC_H__ -#define __MP3CODEC_H__ - -// INCLUDES -#include - -// CONSTANTS - -// DATA TYPES - -// FORWARD DECLARATION -class CMp3ToPcmDecoderImpl; - -// CLASS DEFINITIONS -/* ------------------------------------------------------------------------------ - - TMp3DecParams - - MP3 decoding parameters. - - @since 2.1 - ------------------------------------------------------------------------------ -*/ -class TMp3DecParams - { -public: - inline TMp3DecParams(); -public: - TInt iStereoToMono; // stereo to mono switch (TRUE or default FALSE) - TInt iLeftRight; // decode left or right channel (1 left, 2 right, 0 default all) - TInt iDecimFactor; // decimation factor (2, 4 or default 1) - TInt iConcealment; // error concealment level (0 none, default 1) - TInt iSampleLength; // resolution of PCM samples (default 16 bits) - TInt iSamplingFrequency; //Output sampling frequency - }; - -TMp3DecParams::TMp3DecParams() : -iStereoToMono(0), iLeftRight(0), iDecimFactor(1), iConcealment(1), iSampleLength(16), iSamplingFrequency(0) {} - - - -/* ------------------------------------------------------------------------------ - - TMp3FrameInfo - - MP3 frame info struct. - - @since 2.1 - ------------------------------------------------------------------------------ -*/ -class TMp3FrameInfo - { -public: - inline TMp3FrameInfo(); -public: - IMPORT_C static TInt MinFrameSize(); - IMPORT_C static TInt MaxFrameSize(); - IMPORT_C static TInt MaxFrameSamples(); - IMPORT_C static TInt MaxChannels(); - IMPORT_C static TInt MaxAncillaryBits(); - IMPORT_C static TInt FrameHeaderSize(); - IMPORT_C static TInt FrameSize(const TMp3FrameInfo& aInfo); -public: - TInt iId; // id of algorithm (1 MPEG-1, 0 MPEG-2) - TInt iLayer; // layer number (1, 2, 3 or 4) - TInt iErrorProtection; // err prot flag (TRUE or FALSE, TRUE if err protected) - TInt iBitrate; // bitrate (kbit/s) - TInt iSamplingRate; // sampling frequency (Hz) - TInt iPadding; // padding flag (TRUE or FALSE, TRUE if p slot exists) - TInt iPrivateBit; // bit for private use - TInt iMode; // audio mode (0 stereo, 1 jstereo, 2 dual, 3 mono) - TInt iChannels; // number of audio channels (1 for mono, otherwise 2) - TInt iCopyright; // copyright flag (TRUE or FALSE, TRUE if copyrighted) - TInt iOrigCopy; // original flag (TRUE or FALSE, TRUE if original) - TInt iFrameSize; // size of encoded frame (bytes) - TInt iFrameSamples; // length of decoded frame (samples per channel) -public: - TInt iSamplingRateOut; // sampling frequency after conversion(s) (Hz) - TInt iChannelsOut; // number of audio channels after conversion(s) (1 or 2) - TInt iFrameSamplesOut; // length of decoded frame after conversion(s) (samples per channel) - }; - -TMp3FrameInfo::TMp3FrameInfo() {} - - - -/* ------------------------------------------------------------------------------ - - CMp3ToPcmDecoder - - Low level MP3 decoding API. - - @since 2.1 - ------------------------------------------------------------------------------ -*/ -class CMp3ToPcmDecoder : public CBase - { -protected: - IMPORT_C CMp3ToPcmDecoder(); - IMPORT_C void ConstructL(); - -public: - IMPORT_C static CMp3ToPcmDecoder* NewL(const TMp3DecParams& aConf); - IMPORT_C virtual ~CMp3ToPcmDecoder(); - IMPORT_C void Reset(); - IMPORT_C void Reset(const TMp3DecParams& aConf); - IMPORT_C static TInt FrameInfo(const TUint8* aBuf, TInt aBufLen, TMp3FrameInfo& aInfo); - IMPORT_C static TInt FrameInfo(const TUint8* aBuf, TInt aBufLen, TMp3FrameInfo& aInfo, const TMp3DecParams& aConf); - IMPORT_C static TInt SeekSync(const TUint8* aBuf, TInt aBufLen); - IMPORT_C TInt Decode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst, TInt& aDstLen, TInt aMuteFlag); - IMPORT_C TInt Decode(TUint8* aSrc, TInt& aSrcUsed, TUint8* aDst1, TUint8* aDst2, TUint8* aDst3, TInt& aDstLen1, TInt& aDstLen2, TInt& aDstLen3, TInt aMuteFlag); -private: - CMp3ToPcmDecoderImpl* iState; - }; - -#endif //__MP3CODEC_H__ -//----------------------------------------------------------------------------- -// End of File -//----------------------------------------------------------------------------- diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/data/openmaxal.cfg --- a/khronosfws/openmax_al/data/openmaxal.cfg Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/data/openmaxal.cfg Wed Aug 18 10:17:22 2010 +0300 @@ -21,7 +21,7 @@ # Num of entries followed by actual entries all ending with a comma -3,file,http,rtsp, +6,file,http,rtsp,rtspu,rtspt,mms, 15,3gp,wma,wmv,wav,amr,mp3,mp4,rm,ra,avi,mkv,aac,mid,awb,3g2, @@ -40,15 +40,15 @@ -# -# + + # Num of entries followed by actual entries all ending with a comma -#1,file, -# -# -#2,amr,mp4, -# -# +0, + + +0, + + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/group/openmaxal.mmp --- a/khronosfws/openmax_al/group/openmaxal.mmp Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/group/openmaxal.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -31,6 +31,8 @@ CAPABILITY ALL -TCB MACRO USE_NGA_SURFACES +MACRO XA_API=EXPORT_C + //MACRO MARKERPOSITIONTIMERLOG //MACRO POSITIONUPDATETIMERLOG //MACRO USE_LOCAL_WINDOW_RESOURCES @@ -41,93 +43,37 @@ SOURCE xaadaptationgst.c SOURCE xagstcapabilitiesmgr.c SOURCE xaaudioencoderitfadaptation.c -SOURCE xadevicevolumeitfadaptation.c -SOURCE xadynamicsourceitfadaptation.c SOURCE xaengineadaptctx.c -SOURCE xaequalizeritfadaptation.c -SOURCE xaledarrayadaptctx.c -SOURCE xaledarrayitfadaptation.c -SOURCE xamediaplayeradaptctx.c SOURCE xamediarecorderadaptctx.c SOURCE xametadataadaptation.c -SOURCE xametadataadaptctx.c -SOURCE xaoutputmixadaptctx.c -SOURCE xaoutputmixitfadaptation.c -SOURCE xaplaybackrateitfadaptation.c -SOURCE xaplayitfadaptation.c - -SOURCE xardsitfadaptation.c SOURCE xarecorditfadaptation.c -SOURCE xaseekitfadaptation.c -SOURCE xavibraadaptctx.c -SOURCE xavibraitfadaptation.c -SOURCE xavolumeitfadaptation.c -SOURCE xastreaminformationitfadaptation.c -#ifdef OMAX_CAMERABIN -SOURCE xacameraadaptctx.c -SOURCE xacameraitfadaptation.c -SOURCE xaimagecontrolsitfadaptation.c -SOURCE xaimageeffectsitfadaptation.c -SOURCE xaimageencoderitfadaptation.c -SOURCE xasnapshotitfadaptation.c -SOURCE xastaticcameracapsadaptation.c -SOURCE xavideoencoderitfadaptation.c -SOURCE xavideopostprosessingitfadaptation.c -#endif SOURCEPATH ../src/adptcommon SOURCE xaframeworkmgr.c SOURCE xacapabilitiesmgr.c SOURCE xaadptbasectx.c -#ifdef OMAX_CAMERABIN -SOURCEPATH ../src/camera -SOURCE xacameradevice.c -SOURCE xacameraitf.c -#endif - SOURCEPATH ../src/common SOURCE openmaxal.c SOURCE xacommon.c SOURCE xaconfigextensionsitf.c SOURCE xadynamicsourceitf.c SOURCE xadynintmgmtitf.c -SOURCE xaequalizeritf.c SOURCE xametadataextractionitf.c -SOURCE xametadatatraversalitf.c SOURCE xaobjectitf.c SOURCE xaplatform.c SOURCE xathreadsafety.c SOURCE xavolumeitf.c SOURCE xastreaminformationitf.c -SOURCE xanokialinearvolume_iid.c -SOURCE xanokiavolumeext_iid.c SOURCE xanokialinearvolumeitf.c SOURCE xanokiavolumeextitf.c -#ifdef OMAX_CAMERABIN -SOURCE xaimagecontrolsitf.c -SOURCE xaimageeffectsitf.c -SOURCE xavideopostprocessingitf.c -#endif SOURCEPATH ../src/engine -SOURCE xaaudiodecodercapabilitiesitf.c SOURCE xaaudioencodercapabilitiesitf.c SOURCE xaaudioiodevicecapabilitiesitf.c -SOURCE xadevicevolumeitf.c SOURCE xaengine.c SOURCE xaengineitf.c SOURCE xathreadsyncitf.c -#ifdef OMAX_CAMERABIN -SOURCE xacameracapabilitiesitf.c -SOURCE xaimagedecodercapabilitiesitf.c -SOURCE xaimageencodercapabilitiesitf.c -SOURCE xavideodecodercapabilitiesitf.c -SOURCE xavideoencodercapabilitiesitf.c -#endif -SOURCEPATH ../src/ledarray -SOURCE xaledarraydevice.c -SOURCE xaledarrayitf.c SOURCEPATH ../src/mediaplayer SOURCE xamediaplayer.c @@ -141,27 +87,13 @@ SOURCE xamediarecorder.c SOURCE xametadatainsertionitf.c SOURCE xarecorditf.c -#ifdef OMAX_CAMERABIN -SOURCE xaimageencoderitf.c -SOURCE xasnapshotitf.c -SOURCE xavideoencoderitf.c -#endif SOURCEPATH ../src/metadataextractor SOURCE xametadataextractor.c -SOURCEPATH ../src/outputmix -SOURCE xaoutputmix.c -SOURCE xaoutputmixitf.c - SOURCEPATH ../src/radio SOURCE xaradiodevice.c SOURCE xaradioitf.c -SOURCE xardsitf.c - -SOURCEPATH ../src/vibra -SOURCE xavibradevice.c -SOURCE xavibraitf.c SOURCEPATH ../src/mmf_adaptation // Removing below file since currently there is no Engine related @@ -180,7 +112,6 @@ SOURCE xanokialinearvolumeitfadaptationmmf.c SOURCE xanokiavolumeextitfadaptationmmf.c SOURCE xammfcapabilitiesmgr.c -//SOURCE xangavideosink.cpp SOURCE markerpositiontimer.cpp SOURCE positionupdatetimer.cpp SOURCE xaseekitfadaptationmmf.c @@ -195,15 +126,11 @@ USERINCLUDE ../src/khronos USERINCLUDE ../src/mmf_adaptation USERINCLUDE ../src/gst_adaptation -USERINCLUDE ../src/camera USERINCLUDE ../src/common USERINCLUDE ../src/engine -USERINCLUDE ../src/ledarray USERINCLUDE ../src/mediaplayer USERINCLUDE ../src/mediarecorder -USERINCLUDE ../src/outputmix USERINCLUDE ../src/radio -USERINCLUDE ../src/vibra USERINCLUDE ../src/adptcommon MW_LAYER_SYSTEMINCLUDE @@ -235,9 +162,5 @@ LIBRARY libgstcoreelements.lib LIBRARY libgstcoreindexers.lib LIBRARY MetaDataUtility.lib -#ifdef OMAX_CAMERABIN -LIBRARY libgstphotography.lib -LIBRARY libgstvideo.lib -#endif STATICLIBRARY hxmetadatautil.lib diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/inc/openmaxalwrapper.h --- a/khronosfws/openmax_al/inc/openmaxalwrapper.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/inc/openmaxalwrapper.h Wed Aug 18 10:17:22 2010 +0300 @@ -16,16 +16,14 @@ * to DEF files. * */ -#ifndef _OPENMAXAL_WRAPPER_H_ -#define _OPENMAXAL_WRAPPER_H_ +#ifndef OPENMAXAL_WRAPPER_H_ +#define OPENMAXAL_WRAPPER_H_ -#include -#undef XA_API - -#define XA_API __declspec(dllexport) - +#include #include #include #include +#include -#endif +#endif //ends OPENMAXAL_WRAPPER_H_ + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/adptcommon/xaadptbasectx.c --- a/khronosfws/openmax_al/src/adptcommon/xaadptbasectx.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/adptcommon/xaadptbasectx.c Wed Aug 18 10:17:22 2010 +0300 @@ -161,7 +161,8 @@ DEBUG_API("->XAAdaptationBase_ThreadEntry"); if (!adaptCtx) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAAdaptationBase_ThreadEntry"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAAdaptationBase_ThreadEntry"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -169,44 +170,22 @@ switch (adaptCtx->ctxId) { case XAMediaPlayerAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaPlayer) - ; + XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaPlayer); break; case XAMediaRecorderAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder) - ; + XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); break; case XARadioAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio) - ; - break; - case XACameraAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera) - ; - break; - case XAOutputMixAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSOutputMix) - ; - break; - case XAVibraAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSVibra) - ; - break; - case XALedArrayAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSLEDArray) - ; + XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); break; case XAMDAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMetaDataExtractor) - ; + XA_IMPL_THREAD_SAFETY_ENTRY(XATSMetaDataExtractor); break; case XAEngineAdaptation: - XA_IMPL_THREAD_SAFETY_ENTRY(XATSEngine) - ; + XA_IMPL_THREAD_SAFETY_ENTRY(XATSEngine); break; default: - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID") - ; + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); /* invalid parameter */ res = XA_RESULT_PARAMETER_INVALID; break; @@ -225,7 +204,8 @@ DEBUG_API("->XAAdaptationBase_ThreadExit"); if (!adaptCtx) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAAdaptationBase_ThreadExit"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAAdaptationBase_ThreadExit"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -233,44 +213,22 @@ switch (adaptCtx->ctxId) { case XAMediaPlayerAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer) - ; + XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer); break; case XAMediaRecorderAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder) - ; + XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); break; case XARadioAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio) - ; - break; - case XACameraAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera) - ; - break; - case XAOutputMixAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix) - ; - break; - case XAVibraAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra) - ; - break; - case XALedArrayAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray) - ; + XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); break; case XAMDAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSMetaDataExtractor) - ; + XA_IMPL_THREAD_SAFETY_EXIT(XATSMetaDataExtractor); break; case XAEngineAdaptation: - XA_IMPL_THREAD_SAFETY_EXIT(XATSEngine) - ; + XA_IMPL_THREAD_SAFETY_EXIT(XATSEngine); break; default: - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID") - ; + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); /* invalid parameter */ res = XA_RESULT_PARAMETER_INVALID; break; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h --- a/khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h Wed Aug 18 10:17:22 2010 +0300 @@ -63,6 +63,8 @@ #define RADIO_DEFAULT_FREQ_RANGE XA_FREQRANGE_FMEUROAMERICA #define RADIO_DEFAULT_FREQ 88000000 +#define RADIO_DEFAULT_MIN_FREQ 87500000 +#define RADIO_DEFAULT_MAX_FREQ 108000000 /* TYPEDEFS */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/adptcommon/xacapabilitiesmgr.c --- a/khronosfws/openmax_al/src/adptcommon/xacapabilitiesmgr.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/adptcommon/xacapabilitiesmgr.c Wed Aug 18 10:17:22 2010 +0300 @@ -99,7 +99,8 @@ if (!(*ppListHead)) { *ppListHead = firstNode; - }DEBUG_API("<-XACapabilitiesMgr_UpdateAudioIOCapabilitieList"); + } + DEBUG_API("<-XACapabilitiesMgr_UpdateAudioIOCapabilitieList"); return res; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/adptcommon/xaframeworkmgr.c --- a/khronosfws/openmax_al/src/adptcommon/xaframeworkmgr.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/adptcommon/xaframeworkmgr.c Wed Aug 18 10:17:22 2010 +0300 @@ -62,9 +62,6 @@ static FWMgrBool tokenizeTag(FWMgrTagType tagType, const char* buffer, FrameworkMap **node); -/* Crates a default rules config file */ -static int createDefaultRules(const char * filename); - /* Global functions from header file */ /* FrameworkMap* XAFrameworkMgr_CreateFrameworkMap @@ -82,13 +79,11 @@ FrameworkMap *curNode = NULL; FWMgrBool newNode; FrameworkMap *frameworkMap = NULL; - FILE* fp = fopen(configFileLocationZ, "r"); + FILE* fp = fopen(configFileLocationC, "r"); if (fp == NULL) { - createDefaultRules(configFileLocationC); - - fp = fopen(configFileLocationC, "r"); + fp = fopen(configFileLocationZ, "r"); } if (fp != NULL) @@ -553,70 +548,4 @@ } return FWMgrTrue; } - -int createDefaultRules(const char * filename) - { - FILE* fp = fopen(filename, "w"); - if (fp == NULL) - return /*KErrAccessDenied*/-21; - fputs("#/*\r\n", fp); - fputs( - "#* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\r\n", - fp); - fputs("#* All rights reserved.\r\n", fp); - fputs( - "#* This component and the accompanying materials are made available\r\n", - fp); - fputs("#* under the terms of \"Eclipse Public License v1.0\"\r\n", fp); - fputs("#* which accompanies this distribution, and is available\r\n", fp); - fputs("#* at the URL \"http://www.eclipse.org/legal/epl-v10.html\".\r\n", - fp); - fputs("#*\r\n", fp); - fputs("#* Initial Contributors:\r\n", fp); - fputs("#* Nokia Corporation - initial contribution.\r\n", fp); - fputs("#*\r\n", fp); - fputs("#* Contributors:\r\n", fp); - fputs("#*\r\n", fp); - fputs("#* Description:\r\n", fp); - fputs("#*\r\n", fp); - fputs("#*/\r\n", fp); - fputs( - "#============================================================================>|\r\n", - fp); - fputs( - "# Must not exceed 80 chars each line=========================================>|\r\n", - fp); - fputs( - "#============================================================================>|\r\n", - fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs( - "# Num of entries followed by actual entries all ending with a comma\r\n", - fp); - fputs("6,file,http,rtsp,rtspu,rtspt,mms,\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs( - "15,3gp,wma,wmv,wav,amr,mp3,mp4,rm,ra,avi,mkv,aac,mid,awb,3g2,\r\n", - fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs( - "# Num of entries followed by actual entries all ending with a comma\r\n", - fp); - fputs("1,file,\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("3,wav,amr,mp4,\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fputs("\r\n", fp); - fclose(fp); - return 0; - } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/camera/xacameradevice.c --- a/khronosfws/openmax_al/src/camera/xacameradevice.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,462 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xacameradevice.h" -#include "xacameraitf.h" -#include "xaconfigextensionsitf.h" -#include "xadynintmgmtitf.h" -#include "xaimagecontrolsitf.h" -#include "xaimageeffectsitf.h" -#include "xavideopostprocessingitf.h" -#include "xathreadsafety.h" -#include "xaframeworkmgr.h" -#include "xacameraadaptctx.h" -#include "xacapabilitiesmgr.h" - -/* Static mapping of enumeration XACameraDeviceInterfaces to interface iids */ -static const XAInterfaceID* XACameraDeviceItfIIDs[CAMERA_ITFCOUNT]= -{ - &XA_IID_OBJECT, - &XA_IID_CAMERA, - &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_IMAGECONTROLS, - &XA_IID_IMAGEEFFECTS, - &XA_IID_VIDEOPOSTPROCESSING -}; - - -/***************************************************************************** - * Global methods - *****************************************************************************/ - -/* XAResult XACameraDeviceImpl_Create - * Description: Create object - */ -XAresult XACameraDeviceImpl_CreateCameraDevice(FrameworkMap* mapper, - XACapabilities* capabilities, - XAObjectItf* pDevice, - XAuint32 deviceID, - XAuint32 numInterfaces, - const XAInterfaceID * pInterfaceIds, - const XAboolean * pInterfaceRequired) -{ - XACameraDeviceImpl* pImpl = NULL; - XAObjectItfImpl* pBaseObj = NULL; - XAuint8 itfIndex = 0; - - DEBUG_API("->XACameraDeviceImpl_Create"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - - if( !pDevice ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraDeviceImpl_Create"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* instantiate object implementation */ - pImpl = (XACameraDeviceImpl*)calloc(1,sizeof(XACameraDeviceImpl)); - if( !pImpl ) - { - /* memory allocation failed */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XACameraDeviceImpl_Create"); - return XA_RESULT_MEMORY_FAILURE; - } - pBaseObj = &pImpl->baseObj; - - /* Initialize base object default implementation */ - XAObjectItfImpl_Init(pBaseObj, - CAMERA_ITFCOUNT, - XACameraDeviceItfIIDs, - XACameraDeviceImpl_DoRealize, - XACameraDeviceImpl_DoResume, - XACameraDeviceImpl_FreeResources); - - /* Mark interfaces that need to be exposed */ - /* Implicit and mandated interfaces */ - pBaseObj->interfaceMap[CAMERA_CAMERAITF].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[CAMERA_DIMITF].required = XA_BOOLEAN_TRUE; - - /* Explicit interfaces */ - if( (numInterfaces != 0) && pInterfaceIds && pInterfaceRequired ) - { - /* Check required interfaces */ - for( itfIndex = 0; itfIndex < numInterfaces; itfIndex++ ) - { - /* If mapEntry is null then required interface is not supported.*/ - XAObjItfMapEntry *entry = - XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIndex]); - if( !entry ) - { - if( pInterfaceRequired[itfIndex] ) - { - /* required interface cannot be accommodated - fail creation */ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("Required interface not found - abort creation!"); - DEBUG_API("<-XACameraDeviceImpl_Create"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - else - { - DEBUG_INFO("Requested (not required) interface not found - continue creation"); - } - } - else - { - entry->required = XA_BOOLEAN_TRUE; - } - } - } - - /* Mark interfaces that can be handled dynamically */ - /* Mandated dynamic itfs */ - pBaseObj->interfaceMap[CAMERA_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; - - /* This code is put here to return Feature Not Supported since adaptation is not present*/ - /*************************************************/ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("Required interface not found - abort creation!"); - DEBUG_API("<-XACameraDeviceImpl_Create"); - return XA_RESULT_FEATURE_UNSUPPORTED; - /*************************************************/ - -/* Initialize XACameraDeviceImpl variables - pImpl->deviceID = deviceID; - - pImpl->adaptationCtx = XACameraAdapt_Create(pImpl->deviceID); - - Set ObjectItf to point to newly created object - *pDevice = (XAObjectItf)&(pBaseObj->self); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraDeviceImpl_Create"); - return XA_RESULT_SUCCESS;*/ -} - -/* XAResult XACameraDeviceImpl_QueryNumSupportedInterfaces - * Description: Statically query number of supported interfaces - */ -XAresult XACameraDeviceImpl_QueryNumSupportedInterfaces( XAuint32 *pNumSupportedInterfaces ) -{ - DEBUG_API("->XACameraDeviceImpl_QueryNumSupportedInterfaces"); - if( pNumSupportedInterfaces ) - { - *pNumSupportedInterfaces = CAMERA_ITFCOUNT; - - DEBUG_API_A1("<-XACameraDeviceImpl_QueryNumSupportedInterfaces - %i", (int)(*pNumSupportedInterfaces) ); - return XA_RESULT_SUCCESS; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraDeviceImpl_QueryNumSupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } -} -/* XAResult XACameraDeviceImpl_QuerySupportedInterfaces - * Description: Statically query supported interfaces - */ -XAresult XACameraDeviceImpl_QuerySupportedInterfaces( XAuint32 index, - XAInterfaceID * pInterfaceId ) -{ - DEBUG_API("->XACameraDeviceImpl_QuerySupportedInterfaces"); - - if( index >= CAMERA_ITFCOUNT || !pInterfaceId ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraDeviceImpl_QuerySupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } - else - { - *pInterfaceId = *(XACameraDeviceItfIIDs[index]); - - DEBUG_API("<-XACameraDeviceImpl_QuerySupportedInterfaces"); - return XA_RESULT_SUCCESS; - } -} - - -/***************************************************************************** - * base object XAObjectItfImpl methods - *****************************************************************************/ - -/* XAresult XACameraDeviceImpl_DoRealize( XAObjectItf self ) - * Description: Realize all implicit and explicitly wanted interfaces. - * Create and initialize implementation-specific variables. - * Called from base object XAObjectItfImpl - */ -XAresult XACameraDeviceImpl_DoRealize( XAObjectItf self ) -{ - XAuint8 itfIdx = 0; - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XACameraDeviceImpl* pObjImpl = (XACameraDeviceImpl*)(pObj); - XAresult ret = XA_RESULT_SUCCESS; - - - DEBUG_API("->XACameraDeviceImpl_DoRealize"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - - /* check casting from correct pointer type */ - if( !pObjImpl || pObj != pObjImpl->baseObj.self ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraDeviceImpl_DoRealize"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XACameraAdapt_PostInit( pObjImpl->adaptationCtx ); - - if( ret != XA_RESULT_SUCCESS ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR_A1("Camera adapt postinit - %d", ret); - DEBUG_API("<-XACameraDeviceImpl_DoRealize"); - return ret; - } - - /* Realize all implicit and explicitly wanted interfaces */ - for( itfIdx = 0; itfIdx < CAMERA_ITFCOUNT; itfIdx++) - { - if( !(pObj->interfaceMap[itfIdx].pItf) && - pObj->interfaceMap[itfIdx].required ) - { - void *pItf = NULL; - switch( itfIdx ) - { - case CAMERA_DIMITF: - pItf = XADIMItfImpl_Create(); - if(pItf) - { - XADIMItfImpl_Init(pItf, self, - XACameraDeviceImpl_DoAddItf, - XACameraDeviceImpl_DoResumeItf, - XACameraDeviceImpl_DoRemoveItf); - } - break; - - case CAMERA_CAMERAITF: - pItf = XACameraItfImpl_Create( pObjImpl->adaptationCtx ); - break; - case CAMERA_CONFIGEXTENSIONITF: - pItf = XAConfigExtensionsItfImpl_Create(); - break; - case CAMERA_IMAGECONTROLSITF: - pItf = XAImageControlsItfImpl_Create( pObjImpl->adaptationCtx ); - break; - case CAMERA_IMAGEEFFECTSITF: - pItf = XAImageEffectsItfImpl_Create( pObjImpl->adaptationCtx ); - break; - case CAMERA_VIDEOPOSTPROCESSINGITF: - pItf = XAVideoPostProcessingItfImpl_Create( pObjImpl->adaptationCtx ); - break; - - default: - break; - } - if( !pItf ) - { - /* memory allocation failed */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XACameraDeviceImpl_DoRealize"); - return XA_RESULT_MEMORY_FAILURE; - } - else - { - pObj->interfaceMap[itfIdx].pItf = pItf; - } - } - } - - pObj->state = XA_OBJECT_STATE_REALIZED; - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraDeviceImpl_DoRealize"); - return XA_RESULT_SUCCESS; -} - -/* XAresult XACameraDeviceImpl_DoResume - * Description: Resume object from suspended state - */ -XAresult XACameraDeviceImpl_DoResume(XAObjectItf self) -{ - DEBUG_API("->XACameraDeviceImpl_DoResume"); - DEBUG_API("<-XACameraDeviceImpl_DoResume"); - /* This implementation does not support suspended state */ - return XA_RESULT_PRECONDITIONS_VIOLATED; -} - -/* void XACameraDeviceImpl_FreeResources - * Description: Free all resources reserved at XACameraDeviceImpl_DoRealize() - */ -void XACameraDeviceImpl_FreeResources(XAObjectItf self) -{ - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAuint8 itfIdx = 0; - XACameraDeviceImpl* pImpl = (XACameraDeviceImpl*)(*self); - assert( pObj && pImpl && pObj == pObj->self ); - DEBUG_API("->XACameraDeviceImpl_FreeResources"); - XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSCamera); - - - - - /* free all allocated interfaces */ - for(itfIdx = 0; itfIdx < CAMERA_ITFCOUNT; itfIdx++) - { - void *pItf = pObj->interfaceMap[itfIdx].pItf; - if(pItf) - { - switch(itfIdx) - { - case CAMERA_CAMERAITF: - XACameraItfImpl_Free( pItf ); - break; - case CAMERA_CONFIGEXTENSIONITF: - XAConfigExtensionsItfImpl_Free( pItf ); - break; - case CAMERA_DIMITF: - XADIMItfImpl_Free( pItf ); - break; - case CAMERA_IMAGECONTROLSITF: - XAImageControlsItfImpl_Free( pItf ); - break; - case CAMERA_IMAGEEFFECTSITF: - XAImageEffectsItfImpl_Free( pItf ); - break; - case CAMERA_VIDEOPOSTPROCESSINGITF: - XAVideoPostProcessingItfImpl_Free( pItf ); - break; - default: - break; - } - pObj->interfaceMap[itfIdx].pItf = NULL; - } - } - - if ( pImpl->adaptationCtx != NULL ) - { - XACameraAdapt_Destroy( pImpl->adaptationCtx ); - pImpl->adaptationCtx = NULL; - } - - XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSCamera); - DEBUG_API("<-XACameraDeviceImpl_FreeResources"); - return; -} - -/***************************************************************************** - * CameraDeviceImpl -specific methods - *****************************************************************************/ - -/* XACameraDeviceImpl_DoAddItf - * Dynamically add an interface, object specific parts - */ -XAresult XACameraDeviceImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XACameraDeviceImpl* pImpl = (XACameraDeviceImpl*)(pObj); - - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XACameraDeviceImpl_DoAddItf"); - if(mapEntry) - { - switch( mapEntry->mapIdx ) - { - case CAMERA_IMAGEEFFECTSITF: - mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->adaptationCtx ); - break; - default: - DEBUG_ERR("XACameraDeviceImpl_DoAddItf unknown id"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - - if( !mapEntry->pItf && ret == XA_RESULT_SUCCESS) - { - DEBUG_ERR("XACameraDeviceImpl_DoAddItf itf creation failed"); - ret = XA_RESULT_MEMORY_FAILURE; - } - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - ret = XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_API("<-XACameraDeviceImpl_DoAddItf"); - return ret; -} - -/* XACameraDeviceImpl_DoResumeItf - * Try to resume lost interface, object specific parts - */ -XAresult XACameraDeviceImpl_DoResumeItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XACameraDeviceImpl_DoResumeItf"); - /* For now, no difference between suspended and unrealised itfs */ - ret = XACameraDeviceImpl_DoAddItf(self,mapEntry); - DEBUG_API("<-XACameraDeviceImpl_DoResumeItf"); - return ret; -} - -/* XACameraDeviceImpl_DoRemoveItf - * Dynamically remove an interface, object specific parts - */ -XAresult XACameraDeviceImpl_DoRemoveItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XACameraDeviceImpl_DoRemoveItf"); - if(mapEntry) - { - switch( mapEntry->mapIdx ) - { - case CAMERA_IMAGEEFFECTSITF: - XAImageEffectsItfImpl_Free( mapEntry->pItf ); - break; - default: - DEBUG_ERR("XACameraDeviceImpl_DoRemoveItf unknown id"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - mapEntry->pItf = NULL; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - ret = XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_API("<-XACameraDeviceImpl_DoRemoveItf"); - return ret; -} -/* END OF FILE */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/camera/xacameradevice.h --- a/khronosfws/openmax_al/src/camera/xacameradevice.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XACAMERADEVICE_H -#define XACAMERADEVICE_H - -#include "openmaxalwrapper.h" -#include "xaobjectitf.h" -#include "xaglobals.h" -#include "xaadptbasectx.h" -/** MACROS **/ - - -/** TYPES **/ - - -/** ENUMERATIONS **/ -/* Enumeration for interfaces that CameraDevice supports. */ -typedef enum -{ - CAMERA_OBJECTITF, - CAMERA_CAMERAITF, - CAMERA_CONFIGEXTENSIONITF, - CAMERA_DIMITF, - CAMERA_IMAGECONTROLSITF, - CAMERA_IMAGEEFFECTSITF, - CAMERA_VIDEOPOSTPROCESSINGITF, - CAMERA_ITFCOUNT -} XACameraDeviceInterfaces; - -/** STRUCTURES **/ -/* Specification for CameraDeviceImpl. */ -typedef struct XACameraDeviceImpl_ -{ - /* Parent for XACameraDeviceImpl */ - XAObjectItfImpl baseObj; - - /* variables */ - XAuint32 deviceID; - - XAAdaptationBaseCtx* adaptationCtx; - -} XACameraDeviceImpl; - - -/** METHODS **/ - -/* base object XAObjectItfImpl methods */ -XAresult XACameraDeviceImpl_DoRealize(XAObjectItf self); -XAresult XACameraDeviceImpl_DoResume(XAObjectItf self); -void XACameraDeviceImpl_FreeResources(XAObjectItf self); - -/* CameraDeviceImpl -specific methods*/ -/* DynamicInterfaceManagement object-specific methods */ -XAresult XACameraDeviceImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ); -XAresult XACameraDeviceImpl_DoResumeItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ); -XAresult XACameraDeviceImpl_DoRemoveItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ); - - - -#endif /* XACAMERADEVICE_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/camera/xacameraitf.c --- a/khronosfws/openmax_al/src/camera/xacameraitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1139 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xacameraitf.h" - -#include "xacameraitfadaptation.h" - -#include "xathreadsafety.h" - -/* XACameraItfImpl* GetImpl(XACameraItf self) - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XACameraItfImpl* GetImpl(XACameraItf self) -{ - if( self ) - { - XACameraItfImpl* impl = (XACameraItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/***************************************************************************** - * Base interface XACameraItf implementation - *****************************************************************************/ - -/** - * XAresult XACameraItfImpl_RegisterCallback( XACameraItf self, - * xaCameraCallback callback, - * void *pContext ) - * Description: Sets callback for camera event notification. - **/ -XAresult XACameraItfImpl_RegisterCallback( XACameraItf self, - xaCameraCallback callback, - void *pContext ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_RegisterCallback"); - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_RegisterCallback"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - impl->callback = callback; - impl->context = pContext; - impl->cbPtrToSelf = self; - - DEBUG_API("<-XACameraItfImpl_RegisterCallback"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetFlashMode( XACameraItf self, XAuint32 flashMode ) - * Description: Sets the camera flash setting. - **/ -XAresult XACameraItfImpl_SetFlashMode( XACameraItf self, XAuint32 flashMode ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_SetFlashMode"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - - if( !impl || flashMode > XA_CAMERA_FLASHMODE_TORCH || flashMode < XA_CAMERA_FLASHMODE_OFF ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetFlashMode"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is flash mode changed */ - if( impl->flashMode != flashMode ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetFlashMode( (XAAdaptationGstCtx*)impl->adapCtx, flashMode ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->flashMode = flashMode; - } - /* wait for adaptation */ - impl->flashReady = XA_BOOLEAN_FALSE; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetFlashMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetFlashMode( XACameraItf self, XAuint32 *pFlashMode ) - * Description: Gets the camera flash setting. - **/ -XAresult XACameraItfImpl_GetFlashMode( XACameraItf self, XAuint32 *pFlashMode ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_GetFlashMode"); - if( !impl || !pFlashMode ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetFlashMode"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pFlashMode = impl->flashMode; - - DEBUG_API("<-XACameraItfImpl_GetFlashMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_IsFlashReady( XACameraItf self, XAboolean *pReady ) - * Description: Queries whether the flash is ready for use. - **/ -XAresult XACameraItfImpl_IsFlashReady( XACameraItf self, XAboolean *pReady ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_IsFlashReady"); - if( !impl || !pReady ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_IsFlashReady"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - *pReady = impl->flashReady; - - DEBUG_API("<-XACameraItfImpl_IsFlashReady"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetFocusMode( XACameraItf self, XAuint32 focusMode, - * XAmillimeter manualSetting, - * XAboolean macroEnabled ) - * Description: Sets the camera focus mode. - **/ -XAresult XACameraItfImpl_SetFocusMode( XACameraItf self, XAuint32 focusMode, - XAmillimeter manualSetting, - XAboolean macroEnabled ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_SetFocusMode"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - - if( !impl || focusMode < XA_CAMERA_FOCUSMODE_MANUAL || focusMode > XA_CAMERA_FOCUSMODE_CONTINUOUS_CENTROID ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetFocusMode"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is focus mode changed */ - if( impl->focusMode != focusMode ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetFocusMode( (XAAdaptationGstCtx*)impl->adapCtx, focusMode, manualSetting, macroEnabled ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->focusMode = focusMode; - impl->focusManualSetting = manualSetting; - impl->macroEnabled = macroEnabled; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetFocusMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetFocusMode( XACameraItf self, - * XAuint32 *pFocusMode, - * XAmillimeter *pManualSetting, - * XAboolean *pMacroEnabled ) - * Description: Gets the camera focus mode. - **/ -XAresult XACameraItfImpl_GetFocusMode( XACameraItf self, - XAuint32 *pFocusMode, - XAmillimeter *pManualSetting, - XAboolean *pMacroEnabled ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_GetFocusMode"); - if( !impl || !pFocusMode || !pManualSetting || !pMacroEnabled ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetFocusMode"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pFocusMode = impl->focusMode; - *pMacroEnabled = impl->macroEnabled; - - if( impl->focusMode & XA_CAMERA_FOCUSMODE_MANUAL ) - { - *pManualSetting = impl->focusManualSetting; - } - - DEBUG_API("<-XACameraItfImpl_GetFocusMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetFocusRegionPattern( XACameraItf self, - * XAuint32 focusPattern, - * XAuint32 activePoints1, - * XAuint32 activePoints2 ) - * Description: Set the camera focus region pattern. - **/ -XAresult XACameraItfImpl_SetFocusRegionPattern( XACameraItf self, - XAuint32 focusPattern, - XAuint32 activePoints1, - XAuint32 activePoints2 ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_SetFocusRegionPattern"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - - if( !impl || focusPattern < XA_FOCUSPOINTS_ONE || focusPattern > XA_FOCUSPOINTS_CUSTOM ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetFocusRegionPattern"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is focus pattern changed */ - if( focusPattern == impl->focusPattern ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetFocusRegionPattern( (XAAdaptationGstCtx*)impl->adapCtx, focusPattern, activePoints1, activePoints2 ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if (ret == XA_RESULT_SUCCESS) - { - impl->focusPattern = focusPattern; - if( !(impl->focusMode & XA_CAMERA_FOCUSMODE_MANUAL) ) - { - impl->activePoints1 = activePoints1; - impl->activePoints2 = activePoints2; - } - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetFocusRegionPattern"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetFocusRegionPattern( XACameraItf self, - * XAuint32 *pFocusPattern, - * XAuint32 *pActivePoints1, - * XAuint32 *pActivePoints2 ) - * Description: Gets the camera focus region pattern. - **/ -XAresult XACameraItfImpl_GetFocusRegionPattern( XACameraItf self, - XAuint32 *pFocusPattern, - XAuint32 *pActivePoints1, - XAuint32 *pActivePoints2 ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_GetFocusRegionPattern"); - if( !impl || !pFocusPattern || !pActivePoints1 || !pActivePoints2 ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetFocusRegionPattern"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pFocusPattern = impl->focusPattern; - - if( !(impl->focusMode & XA_CAMERA_FOCUSMODE_MANUAL) && - (impl->focusPattern == XA_FOCUSPOINTS_CUSTOM) ) - { - *pActivePoints1 = impl->activePoints1; - *pActivePoints2 = impl->activePoints2; - } - - DEBUG_API("<-XACameraItfImpl_GetFocusRegionPattern"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetFocusRegionPositions( XACameraItf self, - * XAuint32 *pNumPositionEntries, - * XAFocusPointPosition *pFocusPosition ) - * Description: Get the camera focus region pattern's positioning and size for each - * point in the active focus pattern. - **/ -XAresult XACameraItfImpl_GetFocusRegionPositions( XACameraItf self, - XAuint32 *pNumPositionEntries, - XAFocusPointPosition *pFocusPosition ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_GetFocusRegionPositions"); - if( !impl || !pNumPositionEntries || !pFocusPosition ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetFocusRegionPositions"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_GetFocusRegionPositions( (XAAdaptationGstCtx*)impl->adapCtx, pNumPositionEntries, - pFocusPosition ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - DEBUG_API("<-XACameraItfImpl_GetFocusRegionPositions"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetFocusModeStatus( XACameraItf self, - * XAuint32 *pFocusStatus, - * XAuint32 *pRegionStatus1, - * XAuint32 *pRegionStatus2 ) - * Description: Gets the camera focus status. - **/ -XAresult XACameraItfImpl_GetFocusModeStatus( XACameraItf self, - XAuint32 *pFocusStatus, - XAuint32 *pRegionStatus1, - XAuint32 *pRegionStatus2 ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_GetFocusModeStatus"); - if( !impl || !*pFocusStatus ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetFocusModeStatus"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - *pFocusStatus = impl->focusStatus; - - DEBUG_API("<-XACameraItfImpl_GetFocusModeStatus"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetMeteringMode( XACameraItf self, XAuint32 meteringMode ) - * Description: Sets the camera metering mode for exposure. - **/ -XAresult XACameraItfImpl_SetMeteringMode( XACameraItf self, XAuint32 meteringMode ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraItfImpl_SetMeteringMode"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - - if( !impl || meteringMode < XA_CAMERA_METERINGMODE_AVERAGE || meteringMode >XA_CAMERA_METERINGMODE_MATRIX ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetMeteringMode"); - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetMeteringMode( (XAAdaptationGstCtx*)impl->adapCtx, meteringMode ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->meteringMode = meteringMode; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetMeteringMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetMeteringMode( XACameraItf self, XAuint32 *pMeteringMode ) - * Description: Gets the camera metering mode for exposure. - **/ -XAresult XACameraItfImpl_GetMeteringMode( XACameraItf self, XAuint32 *pMeteringMode ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraItfImpl_GetMeteringMode"); - - if( !impl || !pMeteringMode ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetMeteringMode"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pMeteringMode = impl->meteringMode; - - DEBUG_API("<-XACameraItfImpl_GetMeteringMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetExposureMode( XACameraItf self, XAuint32 exposure, - * XAuint32 compensation ) - * Description: Sets the camera exposure mode. - **/ -XAresult XACameraItfImpl_SetExposureMode( XACameraItf self, XAuint32 exposure, - XAuint32 compensation ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_SetExposureMode"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - impl = GetImpl(self); - if( !impl || exposure < XA_CAMERA_EXPOSUREMODE_MANUAL || exposure > XA_CAMERA_EXPOSUREMODE_NIGHTPORTRAIT ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetExposureMode"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is focus mode changed */ - if( impl->exposureMode != exposure || impl->compensation != compensation ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetExposureMode( (XAAdaptationGstCtx*)impl->adapCtx, exposure, exposure ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->exposureMode = exposure; - impl->compensation = compensation; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetExposureMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetExposureMode( XACameraItf self, XAuint32 *pExposure, - * XAuint32 *pCompensation ) - * Description: Gets the camera exposure mode. - **/ -XAresult XACameraItfImpl_GetExposureMode( XACameraItf self, XAuint32 *pExposure, - XAuint32 *pCompensation ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetExposureMode"); - impl = GetImpl(self); - if( !impl || !pExposure || !pCompensation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetExposureMode"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pExposure = impl->exposureMode; - *pCompensation = impl->compensation; - - DEBUG_API("<-XACameraItfImpl_GetExposureMode"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetISOSensitivity( XACameraItf self, XAuint32 isoSensitivity, - * XAuint32 manualSetting ) - * Description: Sets the camera ISO sensitivity. - **/ -XAresult XACameraItfImpl_SetISOSensitivity( XACameraItf self, XAuint32 isoSensitivity, - XAuint32 manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_SetISOSensitivity"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - impl = GetImpl(self); - if( !impl || isoSensitivityXA_CAMERA_ISOSENSITIVITYMODE_AUTO ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetISOSensitivity"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is focus mode changed */ - if( impl->isoSensitivity != isoSensitivity || impl->isoManualSetting != manualSetting ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetISOSensitivity((XAAdaptationGstCtx*)impl->adapCtx, isoSensitivity, manualSetting ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->isoSensitivity = isoSensitivity; - impl->isoManualSetting = manualSetting; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetISOSensitivity"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetISOSensitivity( XACameraItf self, XAuint32 *pIsoSensitivity, - * XAuint32 *pManualSetting ) - * Description: Gets the camera ISO sensitivity. - **/ -XAresult XACameraItfImpl_GetISOSensitivity( XACameraItf self, XAuint32 *pIsoSensitivity, - XAuint32 *pManualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetISOSensitivity"); - impl = GetImpl(self); - if( !impl || !pIsoSensitivity || !pManualSetting ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetISOSensitivity"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pIsoSensitivity = impl->isoSensitivity; - - if( impl->isoSensitivity == XA_CAMERA_ISOSENSITIVITYMODE_MANUAL ) - { - *pManualSetting = impl->isoManualSetting; - } - if( impl->isoSensitivity == XA_CAMERA_ISOSENSITIVITYMODE_AUTO ) - { - *pManualSetting = 0; - } - - DEBUG_API("<-XACameraItfImpl_GetISOSensitivity"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetAperture( XACameraItf self, XAuint32 aperture, - * XAuint32 manualSetting ) - * Description: Sets the camera aperture. - **/ -XAresult XACameraItfImpl_SetAperture( XACameraItf self, XAuint32 aperture, - XAuint32 manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_SetAperture"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - impl = GetImpl(self); - if( !impl || apertureXA_CAMERA_APERTUREMODE_AUTO ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetAperture"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is aperture mode or value changed */ - if( impl->aperture != aperture || impl->apertureManualSetting != manualSetting ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetAperture( (XAAdaptationGstCtx*)impl->adapCtx, aperture, manualSetting ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->aperture = aperture; - impl->apertureManualSetting = manualSetting; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetAperture"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetAperture( XACameraItf self, XAuint32 *pAperture, - * XAuint32 *pManualSetting ) - * Description: Gets the camera aperture. - **/ -XAresult XACameraItfImpl_GetAperture( XACameraItf self, XAuint32 *pAperture, - XAuint32 *pManualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetAperture"); - impl = GetImpl(self); - if( !impl || !pAperture || !pManualSetting ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetAperture"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pAperture = impl->aperture; - - if( impl->aperture == XA_CAMERA_APERTUREMODE_MANUAL ) - { - *pManualSetting = impl->apertureManualSetting; - } - if( impl->aperture == XA_CAMERA_APERTUREMODE_AUTO ) - { - *pManualSetting = 0; - } - - DEBUG_API("<-XACameraItfImpl_GetAperture"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetShutterSpeed( XACameraItf self, XAuint32 shutterSpeed, - * XAmicrosecond manualSetting ) - * Description: Sets the camera shutter speed. - **/ -XAresult XACameraItfImpl_SetShutterSpeed( XACameraItf self, XAuint32 shutterSpeed, - XAmicrosecond manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_SetShutterSpeed"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - impl = GetImpl(self); - if( !impl || shutterSpeed < XA_CAMERA_SHUTTERSPEEDMODE_MANUAL || shutterSpeed > XA_CAMERA_SHUTTERSPEEDMODE_AUTO ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetShutterSpeed"); - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetShutterSpeed( (XAAdaptationGstCtx*)impl->adapCtx, shutterSpeed, manualSetting ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->shutterManualSetting = manualSetting; - impl->shutterSpeed = shutterSpeed; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetShutterSpeed"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetShutterSpeed( XACameraItf self, XAuint32 *pShutterSpeed, - * XAmicrosecond *pManualSetting ) - * Description: Gets the camera shutter speed. - **/ -XAresult XACameraItfImpl_GetShutterSpeed( XACameraItf self, XAuint32 *pShutterSpeed, - XAmicrosecond *pManualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetShutterSpeed"); - impl = GetImpl(self); - if( !impl || !pShutterSpeed || !pManualSetting ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetShutterSpeed"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pShutterSpeed = impl->shutterSpeed; - - if( impl->shutterSpeed == XA_CAMERA_SHUTTERSPEEDMODE_MANUAL ) - { - *pManualSetting = impl->shutterManualSetting; - } - if( impl->shutterSpeed == XA_CAMERA_SHUTTERSPEEDMODE_AUTO ) - { - *pManualSetting = 0; - } - - DEBUG_API("<-XACameraItfImpl_GetShutterSpeed"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetWhiteBalance( XACameraItf self, XAuint32 whiteBalance, - * XAuint32 manualSetting ) - * Description: Sets the camera white balance. - **/ -XAresult XACameraItfImpl_SetWhiteBalance( XACameraItf self, XAuint32 whiteBalance, - XAuint32 manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_SetWhiteBalance"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - impl = GetImpl(self); - if( !impl ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetWhiteBalance"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is whitebalance mode or value changed */ - if( impl->whiteBalance != whiteBalance || impl->whiteBalManualSetting != manualSetting ) - { - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetWhiteBalance( (XAAdaptationGstCtx*)impl->adapCtx, whiteBalance, manualSetting ); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - if ( ret == XA_RESULT_SUCCESS ) - { - impl->whiteBalance = whiteBalance; - impl->whiteBalManualSetting = manualSetting; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetWhiteBalance"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetWhiteBalance( XACameraItf self, XAuint32 *pWhiteBalance, - * XAuint32 *pManualSetting ) - * Description: Gets the camera white balance. - **/ -XAresult XACameraItfImpl_GetWhiteBalance( XACameraItf self, XAuint32 *pWhiteBalance, - XAuint32 *pManualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetWhiteBalance"); - impl = GetImpl(self); - if( !impl || !pWhiteBalance || !pManualSetting ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetWhiteBalance"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pWhiteBalance = impl->whiteBalance; - - if( impl->whiteBalance == XA_CAMERA_WHITEBALANCEMODE_MANUAL ) - { - *pManualSetting = impl->whiteBalManualSetting; - } - - DEBUG_API("<-XACameraItfImpl_GetWhiteBalance"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetAutoLocks( XACameraItf self, XAuint32 locks ) - * Description: Locks the given automatic camera settings. This method is typically - * called when the camera trigger is half-pressed. - **/ -XAresult XACameraItfImpl_SetAutoLocks( XACameraItf self, XAuint32 locks ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - DEBUG_API("->XACameraItfImpl_SetAutoLocks"); - impl = GetImpl(self); - if( !impl || locks < XA_CAMERA_LOCK_AUTOFOCUS || - (locks > ( XA_CAMERA_LOCK_AUTOFOCUS & XA_CAMERA_LOCK_AUTOEXPOSURE & XA_CAMERA_LOCK_AUTOWHITEBALANCE ))) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetAutoLocks"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetAutoLocks( (XAAdaptationGstCtx*)impl->adapCtx, locks ); - - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - - if ( ret == XA_RESULT_SUCCESS ) - { - impl->locks = locks; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetAutoLocks"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetAutoLocks( XACameraItf self, XAuint32 *locks ) - * Description: Gets the current state of the automatic camera settings locks. - **/ -XAresult XACameraItfImpl_GetAutoLocks( XACameraItf self, XAuint32 *locks ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetAutoLocks"); - impl = GetImpl(self); - if( !impl || !locks ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetAutoLocks"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *locks = impl->locks; - - DEBUG_API("<-XACameraItfImpl_GetAutoLocks"); - return ret; -} - -/** - * XAresult XACameraItfImpl_SetZoom( XACameraItf self, XAuint32 zoom, - * XAboolean digitalEnabled, XAuint32 speed, - * XAboolean async ) - * Description: Sets the new zoom factor. - **/ -XAresult XACameraItfImpl_SetZoom( XACameraItf self, XApermille zoom, - XAboolean digitalEnabled, XAuint32 speed, - XAboolean async ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_SetZoom"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSCamera); - impl = GetImpl(self); - if( !impl || !( speed == XA_CAMERA_ZOOM_FASTEST || speed == XA_CAMERA_ZOOM_FAST - || speed == XA_CAMERA_ZOOM_NORMAL || speed == XA_CAMERA_ZOOM_SLOW ) ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_SetZoom"); - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XACameraItfAdapt_SetZoom( (XAAdaptationGstCtx*)impl->adapCtx, zoom, digitalEnabled, speed, async ); - - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - - if ( ret == XA_RESULT_SUCCESS ) - { - impl->zoom = zoom; - impl->digitalEnabled = digitalEnabled; - impl->speed = speed; - impl->async = async; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); - DEBUG_API("<-XACameraItfImpl_SetZoom"); - return ret; -} - -/** - * XAresult XACameraItfImpl_GetZoom( XACameraItf self, XAuint32 *pZoom, - * XAboolean *pDigital ) - * Description: Gets the current zoom factor. - **/ -XAresult XACameraItfImpl_GetZoom( XACameraItf self, XApermille *pZoom, - XAboolean *pDigital ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraItfImpl* impl = NULL; - - DEBUG_API("->XACameraItfImpl_GetZoom"); - impl = GetImpl(self); - if( !impl || !pZoom || !pDigital ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraItfImpl_GetZoom"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pZoom = impl->zoom; - *pDigital = impl->digitalEnabled; - - DEBUG_API("<-XACameraItfImpl_GetZoom"); - return ret; -} - - -/***************************************************************************** - * XACameraItfImpl -specific methods - *****************************************************************************/ - -/* XACameraItfImpl* XACameraItfImpl_Create() - * Description: Allocate and initialize CameraItfImpl - */ - -XACameraItfImpl* XACameraItfImpl_Create( XAAdaptationBaseCtx *adapCtx ) -{ - XACameraItfImpl* self = (XACameraItfImpl*) - calloc(1,sizeof(XACameraItfImpl)); - DEBUG_API("->XACameraItfImpl_Create"); - if( self ) - { - /* init itf default implementation */ - self->itf.RegisterCallback = XACameraItfImpl_RegisterCallback; - self->itf.SetFlashMode = XACameraItfImpl_SetFlashMode; - self->itf.GetFlashMode = XACameraItfImpl_GetFlashMode; - self->itf.IsFlashReady = XACameraItfImpl_IsFlashReady; - self->itf.SetFocusMode = XACameraItfImpl_SetFocusMode; - self->itf.GetFocusMode = XACameraItfImpl_GetFocusMode; - self->itf.SetFocusRegionPattern = XACameraItfImpl_SetFocusRegionPattern; - self->itf.GetFocusRegionPattern = XACameraItfImpl_GetFocusRegionPattern; - self->itf.GetFocusRegionPositions = XACameraItfImpl_GetFocusRegionPositions; - self->itf.GetFocusModeStatus = XACameraItfImpl_GetFocusModeStatus; - self->itf.SetMeteringMode = XACameraItfImpl_SetMeteringMode; - self->itf.GetMeteringMode = XACameraItfImpl_GetMeteringMode; - self->itf.SetExposureMode = XACameraItfImpl_SetExposureMode; - self->itf.GetExposureMode = XACameraItfImpl_GetExposureMode; - self->itf.SetISOSensitivity = XACameraItfImpl_SetISOSensitivity; - self->itf.GetISOSensitivity = XACameraItfImpl_GetISOSensitivity; - self->itf.SetAperture = XACameraItfImpl_SetAperture; - self->itf.GetAperture = XACameraItfImpl_GetAperture; - self->itf.SetShutterSpeed = XACameraItfImpl_SetShutterSpeed; - self->itf.GetShutterSpeed = XACameraItfImpl_GetShutterSpeed; - self->itf.SetWhiteBalance = XACameraItfImpl_SetWhiteBalance; - self->itf.GetWhiteBalance = XACameraItfImpl_GetWhiteBalance; - self->itf.SetAutoLocks = XACameraItfImpl_SetAutoLocks; - self->itf.GetAutoLocks = XACameraItfImpl_GetAutoLocks; - self->itf.SetZoom = XACameraItfImpl_SetZoom; - self->itf.GetZoom = XACameraItfImpl_GetZoom; - - - /* init variables */ - self->flashReady = XA_BOOLEAN_TRUE; - self->adapCtx = adapCtx; - self->cbPtrToSelf = NULL; - XAAdaptationBase_AddEventHandler( adapCtx, &XACameraItfImp_AdaptCb, XA_CAMERAITFEVENTS, self ); - self->self = self; - } - - DEBUG_API("<-XACameraItfImpl_Create"); - return self; -} - - -/* void XACameraItfImpl_Free(XACameraItfImpl* self) - * Description: Free all resources reserved at XACameraItfImpl_Create - */ -void XACameraItfImpl_Free(XACameraItfImpl* self) -{ - DEBUG_API("->XACameraItfImpl_Free"); - assert( self==self->self ); - XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XACameraItfImp_AdaptCb ); - free( self ); - DEBUG_API("<-XACameraItfImpl_Free"); -} - -/* void XACameraItfAdapt_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) - * @param void *pHandlerCtx - pointer to cb context (XACameraItfImpl) - * @param XAAdaptEvent *event - Event - * Description: Event handler for adaptation events - */ -void XACameraItfImp_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) -{ - XACameraItfImpl* impl =(XACameraItfImpl*)pHandlerCtx; - XAuint32 eventData=0; - - DEBUG_API("->XACameraItfImp_AdaptCb"); - if(!impl) - { - DEBUG_ERR("XACameraItfAdapt_AdaptCb, invalid context pointer!"); - DEBUG_API("<-XACameraItfImp_AdaptCb"); - return; - } - assert(event); - - if( event->data ) - { - eventData = *(XAuint32*)event->data; - } - switch( event->eventid ) - { - case XA_CAMERACBEVENT_FOCUSSTATUS: - impl->focusStatus = eventData; - break; - case XA_CAMERACBEVENT_ZOOMSTATUS: - impl->zoom = eventData; - break; - case XA_CAMERACBEVENT_EXPOSURESTATUS: - impl->focusStatus = eventData; - break; - case XA_CAMERACBEVENT_FLASHREADY: - impl->flashReady = XA_BOOLEAN_TRUE; - break; - case XA_CAMERACBEVENT_WHITEBALANCELOCKED: - case XA_CAMERACBEVENT_ROTATION: - default: - break; - } - - if( impl->callback ) - { - impl->callback( impl->cbPtrToSelf, impl->context, event->eventid, eventData ); - } - DEBUG_API("<-XACameraItfImp_AdaptCb"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/camera/xacameraitf.h --- a/khronosfws/openmax_al/src/camera/xacameraitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XACAMERAITF_H -#define XACAMERAITF_H - -#include "xaadptbasectx.h" -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XACameraItf implementation */ -typedef struct XACameraItfImpl_ -{ - /* parent interface */ - struct XACameraItf_ itf; - /* pointer to self */ - struct XACameraItfImpl_* self; - - /* variables */ - XAuint32 flashMode; - XAboolean flashReady; - XAuint32 focusMode; - XAuint32 focusStatus; - XAmillimeter focusManualSetting; - XAboolean macroEnabled; - XAuint32 focusPattern; - XAuint32 activePoints1; - XAuint32 activePoints2; - XAuint32 meteringMode; - XAuint32 exposureMode; - XAuint32 compensation; - XAuint32 isoSensitivity; - XAuint32 isoManualSetting; - XAuint32 aperture; - XAuint32 apertureManualSetting; - XAuint32 shutterSpeed; - XAmicrosecond shutterManualSetting; - XAuint32 whiteBalance; - XAuint32 whiteBalManualSetting; - XAuint32 locks; - XApermille zoom; - XAboolean digitalEnabled; - XAuint32 speed; - XAuint32 async; - - xaCameraCallback callback; - void *context; - XACameraItf cbPtrToSelf; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; -} XACameraItfImpl; - -/** METHODS **/ - -/* Base interface XACameraItf implementation - *See API Specification for method documentation - */ -XAresult XACameraItfImpl_RegisterCallback( XACameraItf self, - xaCameraCallback callback, - void *pContext ); - -XAresult XACameraItfImpl_SetFlashMode( XACameraItf self, XAuint32 flashMode ); - -XAresult XACameraItfImpl_GetFlashMode( XACameraItf self, XAuint32 *pFlashMode ); - -XAresult XACameraItfImpl_IsFlashReady( XACameraItf self, XAboolean *pReady ); - -XAresult XACameraItfImpl_SetFocusMode( XACameraItf self, XAuint32 focusMode, - XAmillimeter manualSetting, - XAboolean macroEnabled ); - -XAresult XACameraItfImpl_GetFocusMode( XACameraItf self, - XAuint32 *pFocusMode, - XAmillimeter *pManualSetting, - XAboolean *pMacroEnabled ); - -XAresult XACameraItfImpl_SetFocusRegionPattern( XACameraItf self, - XAuint32 focusPattern, - XAuint32 activePoints1, - XAuint32 activePoints2 ); - -XAresult XACameraItfImpl_GetFocusRegionPattern( XACameraItf self, - XAuint32 *pFocusPattern, - XAuint32 *pActivePoints1, - XAuint32 *pActivePoints2 ); - -XAresult XACameraItfImpl_GetFocusRegionPositions( XACameraItf self, - XAuint32 *pNumPositionEntries, - XAFocusPointPosition *pFocusPosition ); - -XAresult XACameraItfImpl_GetFocusModeStatus( XACameraItf self, - XAuint32 *pFocusStatus, - XAuint32 *pRegionStatus1, - XAuint32 *pRegionStatus2 ); - -XAresult XACameraItfImpl_SetMeteringMode( XACameraItf self, XAuint32 meteringMode ); - -XAresult XACameraItfImpl_GetMeteringMode( XACameraItf self, XAuint32 *pMeteringMode ); - -XAresult XACameraItfImpl_SetExposureMode( XACameraItf self, XAuint32 exposure, - XAuint32 compensation ); - -XAresult XACameraItfImpl_GetExposureMode( XACameraItf self, XAuint32 *pExposure, - XAuint32 *pCompensation ); - -XAresult XACameraItfImpl_SetISOSensitivity( XACameraItf self, XAuint32 isoSensitivity, - XAuint32 manualSetting ); - -XAresult XACameraItfImpl_GetISOSensitivity( XACameraItf self, XAuint32 *pIsoSensitivity, - XAuint32 *pManualSetting ); - -XAresult XACameraItfImpl_SetAperture( XACameraItf self, XAuint32 aperture, - XAuint32 manualSetting ); - -XAresult XACameraItfImpl_GetAperture( XACameraItf self, XAuint32 *pAperture, - XAuint32 *pManualSetting ); - -XAresult XACameraItfImpl_SetShutterSpeed( XACameraItf self, XAuint32 shutterSpeed, - XAmicrosecond manualSetting ); - -XAresult XACameraItfImpl_GetShutterSpeed( XACameraItf self, XAuint32 *pShutterSpeed, - XAmicrosecond *pManualSetting ); - -XAresult XACameraItfImpl_SetWhiteBalance( XACameraItf self, XAuint32 whiteBalance, - XAuint32 manualSetting ); - -XAresult XACameraItfImpl_GetWhiteBalance( XACameraItf self, XAuint32 *pWhiteBalance, - XAuint32 *pManualSetting ); - -XAresult XACameraItfImpl_SetAutoLocks( XACameraItf self, XAuint32 locks ); - -XAresult XACameraItfImpl_GetAutoLocks( XACameraItf self, XAuint32 *locks ); - -XAresult XACameraItfImpl_SetZoom( XACameraItf self, XApermille zoom, - XAboolean digitalEnabled, XAuint32 speed, - XAboolean async ); - -XAresult XACameraItfImpl_GetZoom( XACameraItf self, XApermille *pZoom, - XAboolean *pDigital ); - -/* XACameraItfImpl -specific methods */ -XACameraItfImpl* XACameraItfImpl_Create( XAAdaptationBaseCtx *adapCtx ); -void XACameraItfImp_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ); -void XACameraItfImpl_Free(XACameraItfImpl* self); - -#endif /* XACAMERAITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/openmaxal.c --- a/khronosfws/openmax_al/src/common/openmaxal.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/openmaxal.c Wed Aug 18 10:17:22 2010 +0300 @@ -23,6 +23,9 @@ #include "openmaxalwrapper.h" #include "openmaxal_iid.c" +#include "xanokialinearvolume_iid.c" +#include "xanokiavolumeext_iid.c" + #include "xaglobals.h" #include "xaobjects.h" diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xadynamicsourceitf.c --- a/khronosfws/openmax_al/src/common/xadynamicsourceitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xadynamicsourceitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -20,7 +20,6 @@ #include #include "xadynamicsourceitf.h" -#include "xadynamicsourceitfadaptation.h" #include "xadynamicsourceitfadaptationmmf.h" /***************************************************************************** @@ -39,13 +38,16 @@ /* check casting */ if (!impl || impl != impl->self || !pDataSource) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XADynamicSourceItfImpl_SetSource"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XADynamicSourceItfImpl_SetSource"); return XA_RESULT_PARAMETER_INVALID; } if (!impl->adaptCtx) { - DEBUG_ERR("Adaptation not ready!!");DEBUG_ERR("XA_RESULT_INTERNAL_ERROR");DEBUG_API("<-XADynamicSourceItfImpl_SetSource"); + DEBUG_ERR("Adaptation not ready!!"); + DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); + DEBUG_API("<-XADynamicSourceItfImpl_SetSource"); res = XA_RESULT_INTERNAL_ERROR; } else @@ -53,12 +55,7 @@ res = XACommon_CheckDataSource(pDataSource, NULL); if (res == XA_RESULT_SUCCESS) { - if (impl->adaptCtx->fwtype == FWMgrFWGST) - { - res = XADynamicSourceItfAdapt_SetSource( - (XAAdaptationGstCtx*) impl->adaptCtx, pDataSource); - } - else + if (impl->adaptCtx->fwtype == FWMgrFWMMF) { res = XADynamicSourceItfAdaptMMF_SetSource( (XAAdaptationMMFCtx*) impl->adaptCtx, pDataSource); @@ -91,7 +88,8 @@ /* init variables */ self->adaptCtx = adaptCtx; self->self = self; - }DEBUG_API("<-XADynamicSourceItfImpl_Create"); + } + DEBUG_API("<-XADynamicSourceItfImpl_Create"); return self; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xadynintmgmtitf.c --- a/khronosfws/openmax_al/src/common/xadynintmgmtitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xadynintmgmtitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -53,7 +53,8 @@ DEBUG_API("->XADIMItfImpl_AddInterface"); if (!impl) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XADIMItfImpl_AddInterface"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XADIMItfImpl_AddInterface"); return XA_RESULT_PARAMETER_INVALID; } @@ -154,7 +155,8 @@ if (!impl) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XADIMItfImpl_ResumeInterface"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XADIMItfImpl_ResumeInterface"); return XA_RESULT_PARAMETER_INVALID; } @@ -201,7 +203,8 @@ if (!impl) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XADIMItfImpl_RegisterCallback"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XADIMItfImpl_RegisterCallback"); return XA_RESULT_PARAMETER_INVALID; } impl->dimCb = callback; @@ -242,7 +245,8 @@ free(self); self = NULL; } - }DEBUG_API("<-XADIMItfImpl_Create"); + } + DEBUG_API("<-XADIMItfImpl_Create"); return self; } @@ -288,7 +292,8 @@ { self->dimCb((XADynamicInterfaceManagementItf) (self), self->dimCbContext, event, result, iid); - }DEBUG_API("<-XADIMItfImpl_SendCbEvent"); + } + DEBUG_API("<-XADIMItfImpl_SendCbEvent"); } /* void* XADIMItfImpl_AsyncAddItf diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaequalizeritf.c --- a/khronosfws/openmax_al/src/common/xaequalizeritf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,605 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaequalizeritf.h" - -#include "xaequalizeritfadaptation.h" - -static const XAuint16 equalizerNumOfPresets = 0; - -/** - * XAEqualizerItfImpl* GetImpl(XAEqualizerItf self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XAEqualizerItfImpl* GetImpl(XAEqualizerItf self) -{ - if(self) - { - XAEqualizerItfImpl *impl = (XAEqualizerItfImpl*)(*self); - if(impl && impl == impl->self) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAEqualizerItf implementation - */ - -/** - * XAresult XAEqualizerItfImpl_SetEnabled(XAEqualizerItf self,XAboolean enabled) - * Description: Enables the effect. - **/ -XAresult XAEqualizerItfImpl_SetEnabled(XAEqualizerItf self,XAboolean enabled) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAEqualizerItfImpl* impl = GetImpl(self); - XAuint16 index = 0; - DEBUG_API("->XAEqualizerItfImpl_SetEnabled"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_SetEnabled"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - - if(enabled && !(impl->enabled)) - { - for(index = 0; index < EQUALIZER_NUM_OF_BANDS; index++) - { - if(impl->changeLevel[index]) - { - ret = XAEqualizerItfAdapt_SetBandLevel((XAAdaptationGstCtx*)impl->adapCtx, index, impl->levels[index]); - - if(XA_RESULT_SUCCESS == ret) - { - impl->changeLevel[index] = XA_BOOLEAN_FALSE; - } - } - } - } - else if(!enabled && impl->enabled) - { - for(index = 0; index < EQUALIZER_NUM_OF_BANDS; index++) - { - ret = XAEqualizerItfAdapt_SetBandLevel((XAAdaptationGstCtx*)impl->adapCtx, index, EQUALIZER_DEFAULT_BAND_LEVEL); - - if(XA_RESULT_SUCCESS == ret) - { - impl->changeLevel[index] = XA_BOOLEAN_FALSE; - } - } - } - else - { - /* do nothing */ - } - - if(ret == XA_RESULT_SUCCESS) - { - impl->enabled = enabled; - } - - DEBUG_API("<-XAEqualizerItfImpl_SetEnabled"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_IsEnabled(XAEqualizerItf self, XAboolean *pEnabled) - * Description: Gets the enabled status of the effect. - **/ -XAresult XAEqualizerItfImpl_IsEnabled(XAEqualizerItf self, XAboolean *pEnabled) -{ - XAresult ret = XA_RESULT_SUCCESS; - - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_IsEnabled"); - - if(!impl || !pEnabled) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_IsEnabled"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pEnabled = impl->enabled; - - DEBUG_API("<-XAEqualizerItfImpl_IsEnabled"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetNumberOfBands(XAEqualizerItf self, - * XAuint16 *pNumBands) - * Description: Gets the number of frequency bands that the equalizer supports. - * A valid equalizer must have at least two bands. - **/ -XAresult XAEqualizerItfImpl_GetNumberOfBands(XAEqualizerItf self, - XAuint16 *pNumBands) -{ - XAresult ret = XA_RESULT_SUCCESS; - - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetNumberOfBands"); - - if(!impl || !pNumBands) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetNumberOfBands"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pNumBands = EQUALIZER_NUM_OF_BANDS; - - DEBUG_API("<-XAEqualizerItfImpl_GetNumberOfBands"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetBandLevelRange(XAEqualizerItf self, - * XAmillibel *pMin, - * XAmillibel *pMax) - * Description: Returns the minimun and maximun band levels supported. - **/ -XAresult XAEqualizerItfImpl_GetBandLevelRange(XAEqualizerItf self, - XAmillibel *pMin, - XAmillibel *pMax) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetBandLevelRange"); - - if(!impl || (!pMin && !pMax)) /* other may be NULL */ - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetBandLevelRange"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAEqualizerItfImpl_GetBandLevelRange"); - return ret; - } - ret = XAEqualizerItfAdapt_GetBandLevelRange((XAAdaptationGstCtx*)impl->adapCtx, pMin, pMax); - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAEqualizerItfImpl_GetBandLevelRange"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_SetBandLevel(XAEqualizerItf self, XAuint16 band, - * XAmillibel level) - * Description: Sets the given equalizer band to the given gain value. - **/ -XAresult XAEqualizerItfImpl_SetBandLevel(XAEqualizerItf self, XAuint16 band, - XAmillibel level) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint16 numOfBands = 0; - XAmillibel minLevel = 0; - XAmillibel maxLevel = 0; - XAEqualizerItfImpl* impl = NULL; - - DEBUG_API("->XAEqualizerItfImpl_SetBandLevel"); - impl = GetImpl(self); - - /* Get number of bands */ - if(XA_RESULT_SUCCESS != XAEqualizerItfImpl_GetNumberOfBands(self, &numOfBands)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_SetBandLevel"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* Get minimum and maximum level */ - if(XA_RESULT_SUCCESS != XAEqualizerItfImpl_GetBandLevelRange(self, &minLevel, &maxLevel)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_SetBandLevel"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if(!impl || band > (numOfBands-1) || level < minLevel || level > maxLevel) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_SetBandLevel"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAEqualizerItfImpl_SetBandLevel"); - return ret; - } - - if(impl->enabled) - { - ret = XAEqualizerItfAdapt_SetBandLevel((XAAdaptationGstCtx*)impl->adapCtx, band, level); - if(XA_RESULT_SUCCESS == ret) - { - impl->levels[band] = level; - } - } - else - { - impl->changeLevel[band] = XA_BOOLEAN_TRUE; - impl->levels[band] = level; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAEqualizerItfImpl_SetBandLevel"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetBandLevel(XAEqualizerItf self, XAuint16 band, - * XAmillibel *pLevel) - * Description: Gets the gain set for the given equalizer band. - **/ -XAresult XAEqualizerItfImpl_GetBandLevel(XAEqualizerItf self, XAuint16 band, - XAmillibel *pLevel) -{ - XAresult ret = XA_RESULT_SUCCESS; - - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetBandLevel"); - - if(!impl || !pLevel || band >= EQUALIZER_NUM_OF_BANDS) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetBandLevel"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pLevel = impl->levels[band]; - DEBUG_API("<-XAEqualizerItfImpl_GetBandLevel"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetCenterFreq(XAEqualizerItf self, XAuint16 band, - * XAmilliHertz *pCenter) - * Description: Gets the center frequency of the given band. - **/ -XAresult XAEqualizerItfImpl_GetCenterFreq(XAEqualizerItf self, XAuint16 band, - XAmilliHertz *pCenter) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetCenterFreq"); - - if(!impl || !pCenter) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetCenterFreq"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAEqualizerItfImpl_GetCenterFreq"); - return ret; - } - ret = XAEqualizerItfAdapt_GetCenterFreq((XAAdaptationGstCtx*)impl->adapCtx, band, pCenter); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAEqualizerItfImpl_GetCenterFreq"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetBandFreqRange(XAEqualizerItf self, XAuint16 band, - * XAmilliHertz *pMin, - * XAmilliHertz *pMax) - * Description: Gets the frequency range of the given frequency band. - **/ -XAresult XAEqualizerItfImpl_GetBandFreqRange(XAEqualizerItf self, XAuint16 band, - XAmilliHertz *pMin, - XAmilliHertz *pMax) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint16 numOfBands = 0; - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetBandFreqRange"); - - /* Get number of bands */ - if(XA_RESULT_SUCCESS != XAEqualizerItfImpl_GetNumberOfBands(self, &numOfBands)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetBandFreqRange"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if(!impl || (!pMin && !pMax) || band > numOfBands) /* pMin or pMax may be NULL */ - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetBandFreqRange"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAEqualizerItfImpl_GetBandFreqRange"); - return ret; - } - ret = XAEqualizerItfAdapt_GetBandFreqRange((XAAdaptationGstCtx*)impl->adapCtx, band, pMin, pMax); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAEqualizerItfImpl_GetBandFreqRange"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetBand(XAEqualizerItf self, XAmilliHertz frequency, - * XAuint16 *pBand) - * - * Description: Gets the band that has the most effect on the given frequency. - * If no band has an effect on the given frequency, XA_EQUALIZER_UNDEFINED is returned. - **/ -XAresult XAEqualizerItfImpl_GetBand(XAEqualizerItf self, XAmilliHertz frequency, - XAuint16 *pBand) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetBand"); - - if(!impl || !pBand) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetBand"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAEqualizerItfImpl_GetBand"); - return ret; - } - ret = XAEqualizerItfAdapt_GetBand((XAAdaptationGstCtx*)impl->adapCtx, frequency, pBand); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAEqualizerItfImpl_GetBand"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetCurrentPreset(XAEqualizerItf self, - * XAuint16 *pPreset) - * Description: Gets the current preset. - **/ -XAresult XAEqualizerItfImpl_GetCurrentPreset(XAEqualizerItf self, - XAuint16 *pPreset) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetCurrentPreset"); - - if(!impl || !pPreset) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetCurrentPreset"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* no presets defined */ - - if(ret == XA_RESULT_SUCCESS) - { - *pPreset = impl->preset; - } - - DEBUG_API("<-XAEqualizerItfImpl_GetCurrentPreset"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_UsePreset(XAEqualizerItf self, XAuint16 index) - * Description: Sets the equalizer according to the given preset - **/ -XAresult XAEqualizerItfImpl_UsePreset(XAEqualizerItf self, XAuint16 index) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint16 numOfPresets = 0; - XAEqualizerItfImpl* impl = GetImpl(self); - - DEBUG_API("->XAEqualizerItfImpl_UsePreset"); - - /* get number of presets */ - if( XA_RESULT_SUCCESS != XAEqualizerItfImpl_GetNumberOfPresets(self, &numOfPresets)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_UsePreset"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if(!impl || index >= numOfPresets ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_UsePreset"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - impl->preset = index; - - DEBUG_API("<-XAEqualizerItfImpl_UsePreset"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetNumberOfPresets(XAEqualizerItf self, - * XAuint16 *pNumPresets) - * Description: Gets the total number of presets the equalizer supports. - **/ -XAresult XAEqualizerItfImpl_GetNumberOfPresets(XAEqualizerItf self, - XAuint16 *pNumPresets) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAEqualizerItfImpl* impl = GetImpl(self); - DEBUG_API("->XAEqualizerItfImpl_GetNumberOfPresets"); - - if(!impl || !pNumPresets) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetNumberOfPresets"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* No presets defined. */ - *pNumPresets = equalizerNumOfPresets; - - DEBUG_API("<-XAEqualizerItfImpl_GetNumberOfPresets"); - return ret; -} - -/** - * XAresult XAEqualizerItfImpl_GetPresetName(XAEqualizerItf self, XAuint16 index, - * const XAchar **ppName) - * Description: Gets the preset name based on the index. - **/ -XAresult XAEqualizerItfImpl_GetPresetName(XAEqualizerItf self, XAuint16 index, - const XAchar **ppName) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint16 numOfPresets = 0; - XAEqualizerItfImpl* impl = GetImpl(self); - - DEBUG_API("->XAEqualizerItfImpl_GetPresetName"); - - /* get number of presets */ - if( XA_RESULT_SUCCESS != XAEqualizerItfImpl_GetNumberOfPresets(self, &numOfPresets)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetPresetName"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if(!impl || !ppName || index > (numOfPresets-1)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEqualizerItfImpl_GetPresetName"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* Implementation placeholder here for presets when defined. - Currently always return XA_RESULT_PARAMETER_INVALID */ - - DEBUG_API("<-XAEqualizerItfImpl_GetPresetName"); - return ret; -} - -/** - * XAEqualizerItfImpl -specific methods - **/ - - -/** - * XAEqualizerItfImplImpl* XAEqualizerItfImpl_Create() - * @return XAEqualizerItfImplImpl* - Pointer to EqualizerItf interface implementation - **/ -XAEqualizerItfImpl* XAEqualizerItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XAuint16 index = 0; - - XAEqualizerItfImpl *self = (XAEqualizerItfImpl*) - calloc(1,sizeof(XAEqualizerItfImpl)); - - DEBUG_API("->XAEqualizerItfImpl_Create"); - - if(self) - { - /* init itf default implementation */ - self->itf.GetBand = XAEqualizerItfImpl_GetBand; - self->itf.GetBandFreqRange = XAEqualizerItfImpl_GetBandFreqRange; - self->itf.GetBandLevel = XAEqualizerItfImpl_GetBandLevel; - self->itf.GetBandLevelRange = XAEqualizerItfImpl_GetBandLevelRange; - self->itf.GetCenterFreq = XAEqualizerItfImpl_GetCenterFreq; - self->itf.GetCurrentPreset = XAEqualizerItfImpl_GetCurrentPreset; - self->itf.GetNumberOfBands = XAEqualizerItfImpl_GetNumberOfBands; - self->itf.GetNumberOfPresets = XAEqualizerItfImpl_GetNumberOfPresets; - self->itf.GetPresetName = XAEqualizerItfImpl_GetPresetName; - self->itf.IsEnabled = XAEqualizerItfImpl_IsEnabled; - self->itf.SetBandLevel = XAEqualizerItfImpl_SetBandLevel; - self->itf.SetEnabled = XAEqualizerItfImpl_SetEnabled; - self->itf.UsePreset = XAEqualizerItfImpl_UsePreset; - - /* init variables */ - self->enabled = XA_BOOLEAN_FALSE; - self->preset = XA_EQUALIZER_UNDEFINED; - - for(index = 0; index < EQUALIZER_NUM_OF_BANDS; index++) - { - self->levels[index] = EQUALIZER_DEFAULT_BAND_LEVEL; - self->changeLevel[index] = XA_BOOLEAN_FALSE; - } - - self->adapCtx = adapCtx; - - self->self = self; - } - - DEBUG_API("<-XAEqualizerItfImpl_Create"); - return self; -} - -/** - * void XAEqualizerItfImpl_Free(XAEqualizerItfImpl* self) - * @param XAEqualizerItfImpl* self - - **/ -void XAEqualizerItfImpl_Free(XAEqualizerItfImpl* self) -{ - DEBUG_API("->XAEqualizerItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAEqualizerItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaequalizeritf.h --- a/khronosfws/openmax_al/src/common/xaequalizeritf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAEQUALIZERITF_H -#define XAEQUALIZERITF_H - -#include "xaadptbasectx.h" -#include "xaequalizeritfadaptation.h" - -/** MACROS **/ -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAEqualizerItf implementation */ -typedef struct XAEqualizerItfImpl_ -{ - /* parent interface */ - struct XAEqualizerItf_ itf; - /* pointer to self */ - struct XAEqualizerItfImpl_* self; - - /* variables */ - XAboolean enabled; - XAuint16 preset; - - XAmillibel levels[EQUALIZER_NUM_OF_BANDS]; - XAboolean changeLevel[EQUALIZER_NUM_OF_BANDS]; - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - -} XAEqualizerItfImpl; - -/** METHODS **/ - -/* Base interface XAEqualizerItf implementation */ -XAresult XAEqualizerItfImpl_SetEnabled(XAEqualizerItf self,XAboolean enabled); - -XAresult XAEqualizerItfImpl_IsEnabled(XAEqualizerItf self, XAboolean *pEnabled); - -XAresult XAEqualizerItfImpl_GetNumberOfBands(XAEqualizerItf self, - XAuint16 *pNumBands); - -XAresult XAEqualizerItfImpl_GetBandLevelRange(XAEqualizerItf self, - XAmillibel *pMin, - XAmillibel *pMax); - -XAresult XAEqualizerItfImpl_SetBandLevel(XAEqualizerItf self, XAuint16 band, - XAmillibel level); - -XAresult XAEqualizerItfImpl_GetBandLevel(XAEqualizerItf self, XAuint16 band, - XAmillibel *pLevel); - -XAresult XAEqualizerItfImpl_GetCenterFreq(XAEqualizerItf self, XAuint16 band, - XAmilliHertz *pCenter); - -XAresult XAEqualizerItfImpl_GetBandFreqRange(XAEqualizerItf self, XAuint16 band, - XAmilliHertz *pMin, - XAmilliHertz *pMax); - -XAresult XAEqualizerItfImpl_GetBand(XAEqualizerItf self, XAmilliHertz frequency, - XAuint16 *pBand); - -XAresult XAEqualizerItfImpl_GetCurrentPreset(XAEqualizerItf self, - XAuint16 *pPreset); - -XAresult XAEqualizerItfImpl_UsePreset(XAEqualizerItf self, XAuint16 index); - -XAresult XAEqualizerItfImpl_GetNumberOfPresets(XAEqualizerItf self, - XAuint16 *pNumPresets); - -XAresult XAEqualizerItfImpl_GetPresetName(XAEqualizerItf self, XAuint16 index, - const XAchar **ppName); - - -/* XAEqualizerItfImpl -specific methods */ -XAEqualizerItfImpl* XAEqualizerItfImpl_Create(XAAdaptationBaseCtx *adapCtx); - -void XAEqualizerItfImpl_Free(XAEqualizerItfImpl* self); - -#endif /* XAEQUALIZERITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaimagecontrolsitf.c --- a/khronosfws/openmax_al/src/common/xaimagecontrolsitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,356 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaimagecontrolsitf.h" -#include "xaimagecontrolsitfadaptation.h" - -/** - * XAImageControlsItfImpl* GetImpl(XAVolumeItf self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XAImageControlsItfImpl* GetImpl(XAImageControlsItf self) -{ - if(self) - { - XAImageControlsItfImpl* impl = (XAImageControlsItfImpl*)(*self); - if(impl && (impl == impl->self)) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAImageControlsItf implementation - */ - -/** - * XAresult XAImageControlsItfImpl_SetBrightness(XAImageControlsItf self, - * XAuint32 brightness) - * Description: Sets the brightness level. - **/ -XAresult XAImageControlsItfImpl_SetBrightness(XAImageControlsItf self, - XAuint32 brightness) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageControlsItfImpl_SetBrightness"); - - if(!impl || brightness > MAX_BRIGHTNESS_VALUE) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_SetBrightness"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageControlsItfImpl_SetBrightness"); - return ret; - } - ret = XAImageControlsItfAdapt_SetBrightness((XAAdaptationGstCtx*)impl->adapCtx, brightness); - - if(ret == XA_RESULT_SUCCESS) - { - impl->brightness = brightness; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageControlsItfImpl_SetBrightness"); - return ret; -} - -/** - * XAresult XAImageControlsItfImpl_SetBrightness(XAImageControlsItf self, - * XAuint32 *pBrightness) - * Description: Gets the current brightness level. - **/ -XAresult XAImageControlsItfImpl_GetBrightness(XAImageControlsItf self, - XAuint32 *pBrightness) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageControlsItfImpl_GetBrightness"); - - if(!impl || !pBrightness) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_GetBrightness"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pBrightness = impl->brightness; - - DEBUG_API("<-XAImageControlsItfImpl_GetBrightness"); - return ret; -} - -/** - * XAresult XAImageControlsItfImpl_SetContrast(XAImageControlsItf self, - * XAint32 contrast) - * Description: Sets the contrast level. - **/ -XAresult XAImageControlsItfImpl_SetContrast(XAImageControlsItf self, - XAint32 contrast) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageControlsItfImpl_SetContrast"); - - if(!impl || (contrast < MIN_CONTRAST_VALUE || contrast > MAX_CONTRAST_VALUE)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_SetContrast"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED) - { - DEBUG_API("<-XAImageControlsItfImpl_SetContrast"); - return ret; - } - ret = XAImageControlsItfAdapt_SetContrast((XAAdaptationGstCtx*)impl->adapCtx, contrast); - - if(ret == XA_RESULT_SUCCESS) - { - impl->contrast = contrast; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageControlsItfImpl_SetContrast"); - return ret; -} - -/** - * XAresult XAImageControlsItfImpl_GetContrast(XAImageControlsItf self, - * XAint32 *pContrast) - * Description: Gets the contrast level. - **/ -XAresult XAImageControlsItfImpl_GetContrast(XAImageControlsItf self, - XAint32 *pContrast) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageControlsItfImpl_GetContrast"); - - if(!impl || !pContrast) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_GetContrast"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pContrast = impl->contrast; - - DEBUG_API("<-XAImageControlsItfImpl_GetContrast"); - return ret; -} - -/** - * XAresult XAImageControlsItfImpl_SetGamma(XAImageControlsItf self, - * XApermille gamma) - * Description: Sets the gamma level. - **/ -XAresult XAImageControlsItfImpl_SetGamma(XAImageControlsItf self, - XApermille gamma) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - XApermille minGammaValue = 0; - XApermille maxGammaValue = 0; - XAuint32 numSettings = 0; - DEBUG_API("->XAImageControlsItfImpl_SetGamma"); - - /* check supported min and max gamma levels */ - ret = XAImageControlsItfImpl_GetSupportedGammaSettings(self, &minGammaValue, - &maxGammaValue, &numSettings, NULL); - - if(!impl || (gamma < minGammaValue || gamma > maxGammaValue) || - ret != XA_RESULT_SUCCESS) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_SetGamma"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageControlsItfImpl_SetGamma"); - return ret; - } - ret = XAImageControlsItfAdapt_SetGamma((XAAdaptationGstCtx*)impl->adapCtx, gamma); - - if(ret == XA_RESULT_SUCCESS) - { - impl->gamma = gamma; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageControlsItfImpl_SetGamma"); - return ret; -} - -/** - * XAresult XAImageControlsItfImpl_GetGamma(XAImageControlsItf self, - * XApermille *pGamma) - * Description: Gets the gamma level. - **/ -XAresult XAImageControlsItfImpl_GetGamma(XAImageControlsItf self, - XApermille *pGamma) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageControlsItfImpl_GetGamma"); - - if(!impl || !pGamma) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_GetGamma"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pGamma = impl->gamma; - - DEBUG_API("<-XAImageControlsItfImpl_GetGamma"); - return ret; -} - -/** - * XAresult XAImageControlsItfImpl_GetSupportedGammaSettings(XAImageControlsItf self, - * XApermille *pMinValue, - * XApermille *pMaxValue, - * XAuint32 *pNumSettings, - * XApermille **ppSettings) - * Description: This method gets the supported gamma settings. - **/ -XAresult XAImageControlsItfImpl_GetSupportedGammaSettings(XAImageControlsItf self, - XApermille *pMinValue, - XApermille *pMaxValue, - XAuint32 *pNumSettings, - XApermille **ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageControlsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageControlsItfImpl_GetSupportedGammaSettings"); - - if(!impl || !pMinValue || !pMaxValue || !pNumSettings) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfImpl_GetSupportedGammaSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageControlsItfImpl_GetSupportedGammaSettings"); - return ret; - } - /* if ppSettings is non-null and non-continuos from min and max gamma value is - * supported then pnunSettings is length of the ppSettings array. Else - * pNumSettings returns the number of supported gamma settings. */ - if( ppSettings && pNumSettings != 0 ) - { - /* solve array of supported gamma settings */ - ret = XAImageControlsItfAdapt_GetSupportedGammaSettings((XAAdaptationGstCtx*)impl->adapCtx, - pMinValue, pMaxValue, - pNumSettings, ppSettings); - } - else - { - /* Solve min and max values and numSettings */ - ret = XAImageControlsItfAdapt_GetSupportedGammaSettings((XAAdaptationGstCtx*)impl->adapCtx, - pMinValue, pMaxValue, - pNumSettings, NULL); - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageControlsItfImpl_GetSupportedGammaSettings"); - return ret; -} - -/** - * XAImageControlsItfImpl -specific methods - **/ - -/** - * XAImageControlsItfImplImpl* XAImageControlsItfImpl_Create() - * @return XAImageControlsItfImplImpl* - Pointer to ImageControlsItf interface implementation - **/ -XAImageControlsItfImpl* XAImageControlsItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XAImageControlsItfImpl* self = (XAImageControlsItfImpl*) - calloc(1,sizeof(XAImageControlsItfImpl)); - DEBUG_API("->XAImageControlsItfImpl_Create"); - - if(self) - { - /* init itf default implementation */ - self->itf.GetBrightness = XAImageControlsItfImpl_GetBrightness; - self->itf.GetContrast = XAImageControlsItfImpl_GetContrast; - self->itf.GetGamma = XAImageControlsItfImpl_GetGamma; - self->itf.GetSupportedGammaSettings = XAImageControlsItfImpl_GetSupportedGammaSettings; - self->itf.SetBrightness = XAImageControlsItfImpl_SetBrightness; - self->itf.SetContrast = XAImageControlsItfImpl_SetContrast; - self->itf.SetGamma = XAImageControlsItfImpl_SetGamma; - - /* init variables */ - self->brightness = DEFAULT_BRIGHTNESS_VALUE; - self->contrast = DEFAULT_CONTRAST_VALUE; - self->gamma = DEFAULT_GAMMA_VALUE; - - self->adapCtx = adapCtx; - - self->self = self; - } - DEBUG_API("<-XAImageControlsItfImpl_Create"); - return self; -} - -/** - * void XAImageControlsItfImpl_Free(XAImageControlsItfImpl* self) - * @param XAImageControlsItfImpl* self - - **/ -void XAImageControlsItfImpl_Free(XAImageControlsItfImpl* self) -{ - DEBUG_API("->XAImageControlsItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAImageControlsItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaimagecontrolsitf.h --- a/khronosfws/openmax_al/src/common/xaimagecontrolsitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGECONTROLSITF_H -#define XAIMAGECONTROLSITF_H - -#include "xaadptbasectx.h" - - -/** MACROS **/ -#define DEFAULT_BRIGHTNESS_VALUE 50 -#define DEFAULT_CONTRAST_VALUE 0 -#define DEFAULT_GAMMA_VALUE 1000 -#define MAX_BRIGHTNESS_VALUE 100 -#define MAX_CONTRAST_VALUE 100 -#define MIN_CONTRAST_VALUE -100 - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAImageControlsItf implementation */ -typedef struct XAImageControlsItfImpl_ -{ - /* parent interface */ - struct XAImageControlsItf_ itf; - /* pointer to self */ - struct XAImageControlsItfImpl_* self; - - /* variables */ - XAuint32 brightness; - XAint32 contrast; - XApermille gamma; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - - -} XAImageControlsItfImpl; - -/** METHODS **/ - -XAresult XAImageControlsItfImpl_SetBrightness(XAImageControlsItf self, - XAuint32 brightness); - -XAresult XAImageControlsItfImpl_GetBrightness(XAImageControlsItf self, - XAuint32 *pBrightness); - -XAresult XAImageControlsItfImpl_SetContrast(XAImageControlsItf self, - XAint32 contrast); - -XAresult XAImageControlsItfImpl_GetContrast(XAImageControlsItf self, - XAint32 *pContrast); - -XAresult XAImageControlsItfImpl_SetGamma(XAImageControlsItf self, - XApermille gamma); - -XAresult XAImageControlsItfImpl_GetGamma(XAImageControlsItf self, - XApermille *pGamma); - -XAresult XAImageControlsItfImpl_GetSupportedGammaSettings(XAImageControlsItf self, - XApermille *pMinValue, - XApermille *pMaxValue, - XAuint32 *pNumSettings, - XApermille **ppSettings); - -/* XAImageControlsItfImpl -specific methods */ -XAImageControlsItfImpl* XAImageControlsItfImpl_Create(XAAdaptationBaseCtx *adapCtx); -void XAImageControlsItfImpl_Free(XAImageControlsItfImpl* self); - -#endif /* XAIMAGECONTROLSITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaimageeffectsitf.c --- a/khronosfws/openmax_al/src/common/xaimageeffectsitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,249 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaimageeffectsitf.h" - -#include "xaimageeffectsitfadaptation.h" - -static XAImageEffectsItfImpl* GetImpl(XAImageEffectsItf self) -{ - if(self) - { - XAImageEffectsItfImpl* impl = (XAImageEffectsItfImpl*)(*self); - if(impl && (impl == impl->self)) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAImageEffectsItf implementation - */ - -/** - * XAresult XAImageEffectsItfImpl_QuerySupportedImageEffects(XAImageEffectsItf self, - * XAuint32 index, - * XAuint32 *pImageEffectId) - * Description: Queries image effects supported. - **/ -XAresult XAImageEffectsItfImpl_QuerySupportedImageEffects(XAImageEffectsItf self, - XAuint32 index, - XAuint32 *pImageEffectId) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageEffectsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageEffectsItfImpl_QuerySupportedImageEffects"); - - if(!impl || !pImageEffectId) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageEffectsItfImpl_QuerySupportedImageEffects"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageEffectsItfImpl_QuerySupportedImageEffects"); - return ret; - } - - ret = XAImageEffectsItfAdapt_QuerySupportedImageEffects((XAAdaptationGstCtx*)impl->adapCtx, index, - pImageEffectId); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->index = index; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageEffectsItfImpl_QuerySupportedImageEffects"); - return ret; -} - -/** - * XAresult XAImageEffectsItfImpl_EnableImageEffect(XAImageEffectsItf self, - * XAuint32 imageEffectID - * Description: Enables an image effect. - **/ -XAresult XAImageEffectsItfImpl_EnableImageEffect(XAImageEffectsItf self, - XAuint32 imageEffectID) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageEffectsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageEffectsItfImpl_EnableImageEffect"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageEffectsItfImpl_EnableImageEffect"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageEffectsItfImpl_EnableImageEffect"); - return ret; - } - - ret = XAImageEffectsItfAdapt_EnableImageEffect((XAAdaptationGstCtx*)impl->adapCtx, imageEffectID); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->imageEffectID = imageEffectID; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageEffectsItfImpl_EnableImageEffect"); - return ret; -} - -/** - * XAresult XAImageEffectsItfImpl_DisableImageEffect(XAImageEffectsItf self, - * XAuint32 imageEffectID) - * Description: Disable an image effect. - **/ -XAresult XAImageEffectsItfImpl_DisableImageEffect(XAImageEffectsItf self, - XAuint32 imageEffectID) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageEffectsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageEffectsItfImpl_DisableImageEffect"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageEffectsItfImpl_DisableImageEffect"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageEffectsItfImpl_DisableImageEffect"); - return ret; - } - - ret = XAImageEffectsItfAdapt_DisableImageEffect((XAAdaptationGstCtx*)impl->adapCtx, imageEffectID); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->imageEffectID = NO_IMAGE_EFFECTS; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageEffectsItfImpl_DisableImageEffect"); - return ret; -} - -/** - * XAresult XAImageEffectsItfImpl_IsImageEffectEnabled(XAImageEffectsItf self, - * XAuint32 imageEffectID, - * XAboolean *pEnabled) - * Description: Checks to see if an image effect is enabled. - **/ -XAresult XAImageEffectsItfImpl_IsImageEffectEnabled(XAImageEffectsItf self, - XAuint32 imageEffectID, - XAboolean *pEnabled) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAImageEffectsItfImpl* impl = GetImpl(self); - DEBUG_API("->XAImageEffectsItfImpl_IsImageEffectEnabled"); - - if(!impl || !pEnabled) - { - DEBUG_ERR("XA_RESUT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageEffectsItfImpl_IsImageEffectEnabled"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAImageEffectsItfImpl_IsImageEffectEnabled"); - return ret; - } - - ret = XAImageEffectsItfAdapt_IsImageEffectEnabled((XAAdaptationGstCtx*)impl->adapCtx, imageEffectID, - pEnabled); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAImageEffectsItfImpl_IsImageEffectEnabled"); - return ret; -} - -/** - * XAImageEffectsItfImpl -specific methods - **/ - -/** - * XAImageEffectsItfImplImpl* XAImageEffectsItfImpl_Create() - * @return XAImageEffectsItfImplImpl* - Pointer to ImageEffectsItf interface implementation - **/ -XAImageEffectsItfImpl* XAImageEffectsItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XAImageEffectsItfImpl* self = (XAImageEffectsItfImpl*) - calloc(1,sizeof(XAImageEffectsItfImpl)); - DEBUG_API("->XAImageEffectsItfImpl_Create"); - if(self) - { - /* init itf default implementation */ - self->itf.DisableImageEffect = XAImageEffectsItfImpl_DisableImageEffect; - self->itf.EnableImageEffect = XAImageEffectsItfImpl_EnableImageEffect; - self->itf.IsImageEffectEnabled = XAImageEffectsItfImpl_IsImageEffectEnabled; - self->itf.QuerySupportedImageEffects = XAImageEffectsItfImpl_QuerySupportedImageEffects; - - /* init variables */ - self->enabled = XA_BOOLEAN_FALSE; - self->index = 0; - self->imageEffectID = NO_IMAGE_EFFECTS; - self->adapCtx = adapCtx; - - self->self = self; - } - DEBUG_API("<-XAImageEffectsItfImpl_Create"); - return self; -} - -/** - * void XAImageEffectsItfImpl_Free(XAImageEffectsItfImpl* self) - * @param XAImageEffectsItfImpl* self - - **/ -void XAImageEffectsItfImpl_Free(XAImageEffectsItfImpl* self) -{ - DEBUG_API("->XAImageEffectsItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAImageEffectsItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaimageeffectsitf.h --- a/khronosfws/openmax_al/src/common/xaimageeffectsitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGEEFFECTSITF_H -#define XAIMAGEEFFECTSITF_H - -#include "xaadptbasectx.h" - -/** MACROS **/ -#define NO_IMAGE_EFFECTS 0 - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAImageEffectsItf implementation */ -typedef struct XAImageEffectsItfImpl_ -{ - /* parent interface */ - struct XAImageEffectsItf_ itf; - /* pointer to self */ - struct XAImageEffectsItfImpl_* self; - - /* variables */ - XAuint32 index; - XAboolean enabled; - XAuint32 imageEffectID; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - - -} XAImageEffectsItfImpl; - -/** METHODS **/ - -/* Base interface XAImageEffectsItf implementation */ -XAresult XAImageEffectsItfImpl_QuerySupportedImageEffects(XAImageEffectsItf self, - XAuint32 index, - XAuint32 *pImageEffectId); - -XAresult XAImageEffectsItfImpl_EnableImageEffect(XAImageEffectsItf self, - XAuint32 imageEffectID); - -XAresult XAImageEffectsItfImpl_DisableImageEffect(XAImageEffectsItf self, - XAuint32 imageEffectID); - -XAresult XAImageEffectsItfImpl_IsImageEffectEnabled(XAImageEffectsItf self, - XAuint32 imageEffectID, - XAboolean *pEnabled); - - -/* XAImageEffectsItfImpl -specific methods */ -XAImageEffectsItfImpl* XAImageEffectsItfImpl_Create(XAAdaptationBaseCtx *adapCtx); -void XAImageEffectsItfImpl_Free(XAImageEffectsItfImpl* self); -#endif /* XAIMAGEEFFECTSITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xametadataextractionitf.c --- a/khronosfws/openmax_al/src/common/xametadataextractionitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xametadataextractionitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -150,7 +150,8 @@ impl = GetImpl(self); if (!impl || !pKeySize) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetKeySize"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetKeySize"); return XA_RESULT_PARAMETER_INVALID; } *pKeySize = 0; @@ -173,7 +174,8 @@ /* check index and return unfiltered index */ if (CheckAndUnfilterIndex(impl, index, &newidx) != XA_RESULT_SUCCESS) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetKeySize"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetKeySize"); return XA_RESULT_PARAMETER_INVALID; } @@ -210,7 +212,8 @@ impl = GetImpl(self); if (!impl || !pKey) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetKey"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetKey"); return XA_RESULT_PARAMETER_INVALID; } @@ -235,7 +238,8 @@ /* check index and return unfiltered index */ if (CheckAndUnfilterIndex(impl, index, &newidx) != XA_RESULT_SUCCESS) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetKey"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetKey"); return XA_RESULT_PARAMETER_INVALID; } @@ -284,7 +288,8 @@ impl = GetImpl(self); if (!impl || !pValueSize) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetValueSize"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetValueSize"); return XA_RESULT_PARAMETER_INVALID; } *pValueSize = 0; @@ -307,7 +312,8 @@ /* check index and return unfiltered index */ if (CheckAndUnfilterIndex(impl, index, &newidx) != XA_RESULT_SUCCESS) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetValueSize"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetValueSize"); return XA_RESULT_PARAMETER_INVALID; } @@ -344,7 +350,8 @@ impl = GetImpl(self); if (!impl || !pValue) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetValue"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetValue"); return XA_RESULT_PARAMETER_INVALID; } @@ -368,7 +375,8 @@ /* check index and return unfiltered index */ if (CheckAndUnfilterIndex(impl, index, &newidx) != XA_RESULT_SUCCESS) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_GetValue"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_GetValue"); return XA_RESULT_PARAMETER_INVALID; } @@ -433,7 +441,8 @@ if (!impl) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAMetadataExtractionItfImpl_AddKeyFilter"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAMetadataExtractionItfImpl_AddKeyFilter"); return XA_RESULT_PARAMETER_INVALID; } else @@ -495,7 +504,8 @@ matchMask = 0; } } - }DEBUG_API_A1("<-XAMetadataExtractionItfImpl_AddKeyFilter (%d)", (int)res); + } + DEBUG_API_A1("<-XAMetadataExtractionItfImpl_AddKeyFilter (%d)", (int)res); return res; } @@ -627,7 +637,8 @@ impl = (XAMetadataExtractionItfImpl*) pHandlerCtx; if (!impl) { - DEBUG_ERR("XAMetadataExtractionItfImp_AdaptCb, invalid context pointer!");DEBUG_API("<-XAMetadataExtractionItfImp_AdaptCb"); + DEBUG_ERR("XAMetadataExtractionItfImp_AdaptCb, invalid context pointer!"); + DEBUG_API("<-XAMetadataExtractionItfImp_AdaptCb"); return; } if (event && event->eventid == XA_ADAPT_MDE_TAGS_AVAILABLE) @@ -646,7 +657,8 @@ else { DEBUG_INFO("unhandled"); - }DEBUG_API("<-XAMetadataExtractionItfImp_AdaptCb"); + } + DEBUG_API("<-XAMetadataExtractionItfImp_AdaptCb"); } /* For given index over filtered array, return index over whole array @@ -661,7 +673,8 @@ XAint16 i = -1; if (oldidx >= impl->filteredcount) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-CheckAndUnfilterIndex"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-CheckAndUnfilterIndex"); return XA_RESULT_PARAMETER_INVALID; } *newidx = 0; @@ -678,7 +691,8 @@ { /* should not end up here */ *newidx = 0; - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-CheckAndUnfilterIndex"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-CheckAndUnfilterIndex"); return XA_RESULT_PARAMETER_INVALID; } } @@ -686,7 +700,8 @@ { if (oldidx >= impl->currentTags.itemcount) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-CheckAndUnfilterIndex"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-CheckAndUnfilterIndex"); return XA_RESULT_PARAMETER_INVALID; } *newidx = oldidx; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xametadatatraversalitf.c --- a/khronosfws/openmax_al/src/common/xametadatatraversalitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,303 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include - -#include "xametadatatraversalitf.h" - -#include "xametadataadaptation.h" - -/* XAMetadataTraversalImpl* GetImpl(XAMetadataTraversalItf self) - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAMetadataTraversalImpl* GetImpl(XAMetadataTraversalItf self) -{ - if( self ) - { - XAMetadataTraversalImpl* impl = (XAMetadataTraversalImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/***************************************************************************** - * Base interface XAMetadataTraversalItf implementation - *****************************************************************************/ - -/* XAresult XAMetadataTraversalItfImpl_SetMode - * Description: Sets the metadata traversal mode - */ -XAresult XAMetadataTraversalItfImpl_SetMode(XAMetadataTraversalItf self, - XAuint32 mode) -{ - XAMetadataTraversalImpl *impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAMetadataTraversalItfImpl_SetMode"); - impl = GetImpl(self); - /* check parameters */ - if( !impl || - (mode!=XA_METADATATRAVERSALMODE_NODE && - mode!=XA_METADATATRAVERSALMODE_ALL)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else if(impl->traversemode != mode) - { - - res =XAMetadataTraversalItfAdapt_SetMode((XAAdaptationGstCtx*)impl->adaptCtx, mode); - - if( res == XA_RESULT_SUCCESS ) - { - impl->traversemode = mode; - } - } - else - { - /* do nothing */ - } - - DEBUG_API("<-XAMetadataTraversalItfImpl_SetMode"); - return res; -} - -/* XAresult XAMetadataTraversalItfImpl_GetChildCount - * Description: Returns the number of children (nodes, streams, etc.) within the current scope - */ -XAresult XAMetadataTraversalItfImpl_GetChildCount(XAMetadataTraversalItf self, - XAuint32 *pCount) -{ - XAMetadataTraversalImpl *impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAMetadataTraversalItfImpl_GetChildCount"); - impl = GetImpl(self); - if( !impl || !pCount ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if(impl->traversemode==XA_METADATATRAVERSALMODE_ALL) - { - /* for this mode, child count is always 0 */ - *pCount = 0; - res = XA_RESULT_SUCCESS; - } - else - { - - res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, pCount); - - } - } - - DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildCount"); - return res; -} - -/* XAresult XAMetadataTraversalItfImpl_GetChildMIMETypeSize - * Description: Returns the size in bytes needed to store the MIME type of a child - */ -XAresult XAMetadataTraversalItfImpl_GetChildMIMETypeSize(XAMetadataTraversalItf self, - XAuint32 index, - XAuint32 *pSize) -{ - XAMetadataTraversalImpl *impl = NULL; - - XAuint32 chCount = 0; - - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAMetadataTraversalItfImpl_GetChildMIMETypeSize"); - impl = GetImpl(self); - - if( !impl || !pSize) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, &chCount); - if(index >= chCount || res != XA_RESULT_SUCCESS) - { - /* out of bounds */ - res = XA_RESULT_PARAMETER_INVALID; - } - res = XAMetadataTraversalItfAdapt_GetChildMIMETypeSize((XAAdaptationGstCtx*)impl->adaptCtx, index, pSize); - - } - - DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildMIMETypeSize"); - return res; -} - -/* XAresult XAMetadataTraversalItfImpl_GetChildInfo - * Description: Returns information about a child - */ -XAresult XAMetadataTraversalItfImpl_GetChildInfo(XAMetadataTraversalItf self, - XAuint32 index, - XAint32 *pNodeID, - XAuint32 *pType, - XAuint32 size, - XAchar *pMimeType) -{ - XAMetadataTraversalImpl *impl = NULL; - - XAuint32 chCount = 0; - - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAMetadataTraversalItfImpl_GetChildInfo"); - impl = GetImpl(self); - if( !impl || !pNodeID || !pType ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, &chCount); - if(index >= chCount || res != XA_RESULT_SUCCESS) - { - /* out of bounds */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildInfo"); - return XA_RESULT_PARAMETER_INVALID; - } - res = XAMetadataTraversalItfAdapt_GetChildInfo((XAAdaptationGstCtx*)impl->adaptCtx, index, - pNodeID, pType, size, pMimeType); - - } - - DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildInfo"); - return res; -} - -/* XAresult XAMetadataTraversalItfImpl_SetActiveNode - * Description: Sets the scope to a child node - */ -XAresult XAMetadataTraversalItfImpl_SetActiveNode(XAMetadataTraversalItf self, - XAuint32 index) -{ - XAMetadataTraversalImpl *impl = NULL; - - XAuint32 chCount = 0; - - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAMetadataTraversalItfImpl_SetActiveNode"); - impl = GetImpl(self); - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, &chCount); - if( res == XA_RESULT_SUCCESS ) - { - if((impl->nodedepth==0 && index==XA_NODE_PARENT) || - (index >= chCount && index!=XA_NODE_PARENT)) - { - /* try to ascend from root or descend to nonexistend child node */ - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - /* update node and childs */ - res = XAMetadataTraversalItfAdapt_SetActiveNode((XAAdaptationGstCtx*)impl->adaptCtx, index); - if( res == XA_RESULT_SUCCESS ) - { - if(index==XA_NODE_PARENT) - { - impl->nodedepth++; - } - else - { - impl->nodedepth--; - } - } - } - } - else - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAMetadataTraversalItfImpl_SetActiveNode"); - return XA_RESULT_INTERNAL_ERROR; - } - - } - - DEBUG_API("<-XAMetadataTraversalItfImpl_SetActiveNode"); - return res; -} - -/***************************************************************************** - * XAMetadataTraversalImpl -specific methods - *****************************************************************************/ - -/* XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create() - * Description: Allocate and initialize XAMetadataTraversalImpl - */ -XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create( XAAdaptationBaseCtx *adaptCtx ) -{ - XAMetadataTraversalImpl *self = NULL; - DEBUG_API("->XAMetadataTraversalItfImpl_Create"); - - self = (XAMetadataTraversalImpl*) calloc(1,sizeof(XAMetadataTraversalImpl)); - - if( self ) - { - /* init itf default implementation */ - self->itf.SetMode = XAMetadataTraversalItfImpl_SetMode; - self->itf.GetChildCount = XAMetadataTraversalItfImpl_GetChildCount; - self->itf.GetChildMIMETypeSize = XAMetadataTraversalItfImpl_GetChildMIMETypeSize; - self->itf.GetChildInfo = XAMetadataTraversalItfImpl_GetChildInfo; - self->itf.SetActiveNode = XAMetadataTraversalItfImpl_SetActiveNode; - - /* init variables */ - self->adaptCtx = adaptCtx; - - self->self = self; - } - DEBUG_API("<-XAMetadataTraversalItfImpl_Create"); - return self; -} - -/* void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self) - * Description: Free all resources reserved at XAMetadataTraversalItfImpl_Create - */ -void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self) -{ - DEBUG_API("->XAMetadataTraversalItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAMetadataTraversalItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xametadatatraversalitf.h --- a/khronosfws/openmax_al/src/common/xametadatatraversalitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAMETADATATRAVERSALITF_H -#define XAMETADATATRAVERSALITF_H - -#include "xaadptbasectx.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAMetadataTraversalItf implementation */ -typedef struct XAMetadataTraversalImpl_ -{ - /* parent interface */ - struct XAMetadataTraversalItf_ itf; - /* pointer to self */ - struct XAMetadataTraversalImpl_* self; - - /* pointer to metadata variables */ - XAuint32 traversemode; - XAuint32 index; - XAuint32 nodedepth; - - - XAAdaptationBaseCtx *adaptCtx; - -} XAMetadataTraversalImpl; - -/** METHODS **/ - -/* Base interface XAMetadataTraversalItf implementation */ -XAresult XAMetadataTraversalItfImpl_SetMode(XAMetadataTraversalItf self, - XAuint32 mode); - -XAresult XAMetadataTraversalItfImpl_GetChildCount(XAMetadataTraversalItf self, - XAuint32 *pCount); - -XAresult XAMetadataTraversalItfImpl_GetChildMIMETypeSize(XAMetadataTraversalItf self, - XAuint32 index, - XAuint32 *pSize); - -XAresult XAMetadataTraversalItfImpl_GetChildInfo(XAMetadataTraversalItf self, - XAuint32 index, - XAint32 *pNodeID, - XAuint32 *pType, - XAuint32 size, - XAchar *pMimeType); - -XAresult XAMetadataTraversalItfImpl_SetActiveNode(XAMetadataTraversalItf self, - XAuint32 index); - - -/* XAMetadataExtractionItfImpl -specific methods */ -XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create(XAAdaptationBaseCtx *adapCtx); -void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self); - -#endif /* XAMETADATATRAVERSALITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xanokialinearvolumeitf.c --- a/khronosfws/openmax_al/src/common/xanokialinearvolumeitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xanokialinearvolumeitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -126,7 +126,8 @@ if (!impl || !percentage) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaLinearVolumeItfImpl_GetVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaLinearVolumeItfImpl_GetVolumeLevel"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -163,7 +164,8 @@ if (!impl || !pStepCount) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaLinearVolumeItfImpl_GetMaxVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaLinearVolumeItfImpl_GetMaxVolumeLevel"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -294,7 +296,8 @@ if (!impl && !event) { - DEBUG_ERR("XANokiaLinearVolumeItfImpl_AdaptCb, invalid context pointer!");DEBUG_API("<-XANokiaLinearVolumeItfImpl_AdaptCb"); + DEBUG_ERR("XANokiaLinearVolumeItfImpl_AdaptCb, invalid context pointer!"); + DEBUG_API("<-XANokiaLinearVolumeItfImpl_AdaptCb"); return; } @@ -312,5 +315,6 @@ else { /* do nothing */ - }DEBUG_API("<-XANokiaLinearVolumeItfimpl_AdaptCb"); + } + DEBUG_API("<-XANokiaLinearVolumeItfimpl_AdaptCb"); } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xanokiavolumeextitf.c --- a/khronosfws/openmax_al/src/common/xanokiavolumeextitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xanokiavolumeextitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -91,14 +91,16 @@ if (XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(self, &maximumLevel) != XA_RESULT_SUCCESS) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); /* cannot solve maximum volume level */ return XA_RESULT_PARAMETER_INVALID; } if (!impl || level > maximumLevel) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -122,7 +124,8 @@ if (!impl || !pLevel) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -146,7 +149,8 @@ if (!impl || !pMaxLevel) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -170,7 +174,8 @@ if (!impl) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -211,7 +216,8 @@ if (!impl || !pMute) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -235,7 +241,8 @@ if (!impl) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -281,7 +288,8 @@ if (!impl || !pEnable) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -307,7 +315,8 @@ if (!impl || (stereoPosition < STEREO_POSITION_LEFT) || (stereoPosition > STEREO_POSITION_RIGHT)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -351,7 +360,8 @@ if (!impl || !pStereoPosition) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -486,7 +496,8 @@ if (!impl) { - DEBUG_ERR("XANokiaVolumeExtItfImpl_AdaptCb, invalid context pointer!");DEBUG_API("<-XANokiaVolumeExtItfImpl_AdaptCb"); + DEBUG_ERR("XANokiaVolumeExtItfImpl_AdaptCb, invalid context pointer!"); + DEBUG_API("<-XANokiaVolumeExtItfImpl_AdaptCb"); return; } assert(event); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xaobjectitf.c --- a/khronosfws/openmax_al/src/common/xaobjectitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xaobjectitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -80,7 +80,8 @@ { retval = pObjImp->DoRealizeImpl(self); } - }DEBUG_API("<-XAObjectItfImpl_Realize"); + } + DEBUG_API("<-XAObjectItfImpl_Realize"); return retval; } @@ -132,7 +133,8 @@ { retval = pObjImp->DoResumeImpl(self); } - }DEBUG_API("<-XAObjectItfImpl_Resume"); + } + DEBUG_API("<-XAObjectItfImpl_Resume"); return retval; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xastreaminformationitf.c --- a/khronosfws/openmax_al/src/common/xastreaminformationitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xastreaminformationitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -18,7 +18,7 @@ #include #include "xastreaminformationitf.h" -#include "xastreaminformationitfadaptation.h" + #include "xastreaminformationitfadaptationmmf.h" /* XAStreamInformationItfImpl* GetImpl @@ -56,20 +56,7 @@ return XA_RESULT_PARAMETER_INVALID; } - if (impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if (ret == XA_RESULT_PARAMETER_INVALID) - { - DEBUG_API("<-XAStreamInformationItfImpl_QueryMediaContainerInformation"); - return ret; - } - ret = XAStreamInformationItfAdapt_QueryMediaContainerInformation( - impl->adapCtx, &(info->containerType), - &(info->mediaDuration), &(info->numStreams)); - XAAdaptationBase_ThreadExit(impl->adapCtx); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); if (ret == XA_RESULT_PARAMETER_INVALID) @@ -81,7 +68,6 @@ impl->adapCtx, &(info->containerType), &(info->mediaDuration), &(info->numStreams)); XAAdaptationBase_ThreadExit(impl->adapCtx); - ; } DEBUG_API("-adapCtx->fwtype == FWMgrFWGST) - { - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if (ret == XA_RESULT_PARAMETER_INVALID) - { - DEBUG_API("<-XAStreamInformationItfImpl_QueryStreamType"); - return ret; - } - - ret = XAStreamInformationItfAdapt_QueryStreamType(impl->adapCtx, - streamIndex, domain); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); if (ret == XA_RESULT_PARAMETER_INVALID) @@ -128,8 +100,8 @@ streamIndex, domain); XAAdaptationBase_ThreadExit(impl->adapCtx); - ; - }DEBUG_API("-adapCtx->fwtype == FWMgrFWGST) - { - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if (ret == XA_RESULT_PARAMETER_INVALID) - { - DEBUG_API("<-XAStreamInformationItfImpl_QueryStreamInformation"); - return ret; - } - - ret = XAStreamInformationItfAdapt_QueryStreamInformation( - impl->adapCtx, streamIndex, info); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); if (ret == XA_RESULT_PARAMETER_INVALID) @@ -174,7 +132,6 @@ impl->adapCtx, streamIndex, info); XAAdaptationBase_ThreadExit(impl->adapCtx); - ; } DEBUG_API("-adapCtx->fwtype == FWMgrFWGST) - { - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if (ret == XA_RESULT_PARAMETER_INVALID) - { - DEBUG_API("<-XAStreamInformationItfImpl_QueryStreamName"); - return ret; - } - - ret = XAStreamInformationItfAdapt_QueryStreamName(impl->adapCtx, - streamIndex, pNameSize, pName); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); if (ret == XA_RESULT_PARAMETER_INVALID) @@ -223,8 +166,8 @@ streamIndex, pNameSize, pName); XAAdaptationBase_ThreadExit(impl->adapCtx); - ; - }DEBUG_API("-adapCtx, - numStreams, activeStreams); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - } - else - { - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if (ret == XA_RESULT_PARAMETER_INVALID) - { - DEBUG_API("<-XAStreamInformationItfImpl_QueryActiveStreams"); - return ret; - } - ret = XAStreamInformationItfAdaptMMF_QueryActiveStreams( impl->adapCtx, numStreams, activeStreams); XAAdaptationBase_ThreadExit(impl->adapCtx); - ; } DEBUG_API("-adapCtx->fwtype == FWMgrFWGST) - { - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if (ret == XA_RESULT_PARAMETER_INVALID) - { - DEBUG_API("<-XAStreamInformationItfImpl_SetActiveStream"); - return ret; - } - - ret = XAStreamInformationItfAdapt_SetActiveStream(impl->adapCtx, - streamNum, active, commitNow); - - XAAdaptationBase_ThreadExit(impl->adapCtx); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); if (ret == XA_RESULT_PARAMETER_INVALID) @@ -343,7 +257,6 @@ streamNum, active, commitNow); XAAdaptationBase_ThreadExit(impl->adapCtx); - ; } DEBUG_API("-mutexTable[i] ); + } + DEBUG_INFO_A2("Created %s:%x",MEDIAOBJECTNAME(i), threadSafety->mutexTable[i] ); } } else @@ -129,7 +131,8 @@ else { DEBUG_INFO("Thread safety: disabled."); - }DEBUG_API("<-XAThreadSafety_Unlock"); + } + DEBUG_API("<-XAThreadSafety_Unlock"); return ret; } /* diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xathreadsafety.h --- a/khronosfws/openmax_al/src/common/xathreadsafety.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xathreadsafety.h Wed Aug 18 10:17:22 2010 +0300 @@ -25,16 +25,12 @@ #ifdef _DEBUG /*parse media object names for debug prints*/ -static const char* mediaobjectnames[9] = +static const char* mediaobjectnames[5] = { "XATSMediaPlayer", "XATSMediaRecorder", "XATSEngine", "XATSRadio", - "XATSCamera", - "XATSOutputMix", - "XATSVibra", - "XATSLEDArray", "XATSMetaDataExtractor" }; #define MEDIAOBJECTNAME(i) ((i -#include -#include -#include "xavideopostprocessingitf.h" - -#include "xavideopostprosessingitfadaptation.h" - -/** - * XAVideoPostProcessingItfImpl* GetImpl(XAVideoPostProcessingItf self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XAVideoPostProcessingItfImpl* GetImpl(XAVideoPostProcessingItf self) -{ - if(self) - { - XAVideoPostProcessingItfImpl* impl = (XAVideoPostProcessingItfImpl*)(*self); - if(impl && (impl == impl->self)) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAVideoPostProcessingItf implementation - */ - -/** - * XAresult XAVideoPostProcessingItfImpl_SetRotation(XAVideoPostProcessingItf self, - * XAmillidegree rotation) - * Description: Sets post-prosessing options for rotation. - **/ -XAresult XAVideoPostProcessingItfImpl_SetRotation(XAVideoPostProcessingItf self, - XAmillidegree rotation) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - XAboolean isSupported = XA_BOOLEAN_FALSE; - DEBUG_API("->XAVideoPostProcessingItfImpl_SetRotation"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetRotation"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - /* Check is arbitrary rotation supported */ - ret = XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported( self, &isSupported ); - - if(ret == XA_RESULT_SUCCESS) - { - if( isSupported == XA_BOOLEAN_FALSE ) - { - /* check that wanted angle is integer multiple of 90 degrees */ - if( rotation % 90000 != 0 ) - { - /* feature unsupported */ - ret = XA_RESULT_FEATURE_UNSUPPORTED; - return ret; - } - } - - impl->rotation = rotation; - impl->isRotate = XA_BOOLEAN_TRUE; - } - - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetRotation"); - return ret; -} - -/** - * XAresult XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported(XAVideoPostProcessingItf self, - * XAboolean *pSupported) - * Description: Determines if arbitrary rotation angles are supported by the implementation. - */ -XAresult XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported(XAVideoPostProcessingItf self, - XAboolean *pSupported) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported"); - if(!impl || !pSupported) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported"); - return ret; - } - - ret = XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported((XAAdaptationGstCtx*)impl->adapCtx, - pSupported); - - if(ret == XA_RESULT_SUCCESS) - { - impl->supported = *pSupported; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported"); - return ret; -} - -/** - * XAresult XAVideoPostProcessingItfImpl_SetScaleOptions(XAVideoPostProcessingItf self, - * XAuint32 scaleOptions, - * XAuint32 backgroundColor, - * XAuint32 renderingHints) - * Description: Sets the options for scaling - */ -XAresult XAVideoPostProcessingItfImpl_SetScaleOptions(XAVideoPostProcessingItf self, - XAuint32 scaleOptions, - XAuint32 backgroundColor, - XAuint32 renderingHints) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVideoPostProcessingItfImpl_SetScaleOptions"); - - if(!impl || (scaleOptions != XA_VIDEOSCALE_STRETCH && scaleOptions != XA_VIDEOSCALE_FIT - && scaleOptions != XA_VIDEOSCALE_CROP)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetScaleOptions"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - impl->scaleOptions = scaleOptions; - impl->backgroundColor = backgroundColor; - impl->renderingHints = renderingHints; - impl->isScaleOptions = XA_BOOLEAN_TRUE; - - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetScaleOptions"); - return ret; -} - -/** - * XAresult XAVideoPostProcessingItfImpl_SetSourceRectangle(XAVideoPostProcessingItf self, - * const XARectangle *pSrcRect) - * Description: Defines the rectangle in the original frame that is to be used for further processing - */ -XAresult XAVideoPostProcessingItfImpl_SetSourceRectangle(XAVideoPostProcessingItf self, - const XARectangle *pSrcRect) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVideoPostProcessingItfImpl_SetSourceRectangle"); - - if(!impl || !pSrcRect) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetSourceRectangle"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - impl->srcRect = *pSrcRect; - impl->isSrcRect = XA_BOOLEAN_TRUE; - - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetSourceRectangle"); - return ret; -} - -/** - * XAresult XAVideoPostProcessingItfImpl_SetDestinationRectangle(XAVideoPostProcessingItf self, - * const XARectangle *pDestRect) - * - * Description: Defines the destination rectangle for the processed frame. This rectangle, - * in conjunction with the scaling options used (fit, crop, stretch) determines - * the scaling applied to the frame. - */ -XAresult XAVideoPostProcessingItfImpl_SetDestinationRectangle(XAVideoPostProcessingItf self, - const XARectangle *pDestRect) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVideoPostProcessingItfImpl_SetDestinationRectangle"); - - if(!impl || !pDestRect) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetDestinationRectangle"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - impl->destRect = *pDestRect; - impl->isDestRect = XA_BOOLEAN_TRUE; - - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetDestinationRectangle"); - return ret; -} - -/** - * XAresult XAVideoPostProcessingItfImpl_SetMirror(XAVideoPostProcessingItf self, - * XAuint32 mirror) - * Description: Sets post-prosessing options for mirroring. - */ -XAresult XAVideoPostProcessingItfImpl_SetMirror(XAVideoPostProcessingItf self, - XAuint32 mirror) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVideoPostProcessingItfImpl_SetMirror"); - - if(!impl || (mirror != XA_VIDEOMIRROR_NONE && mirror != XA_VIDEOMIRROR_VERTICAL - && mirror != XA_VIDEOMIRROR_HORIZONTAL && mirror != XA_VIDEOMIRROR_BOTH )) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetMirror"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - impl->mirror = mirror; - impl->isMirror = XA_BOOLEAN_TRUE; - - DEBUG_API("<-XAVideoPostProcessingItfImpl_SetMirror"); - return ret; -} - -/** - * XAresult XAVideoPostProcessingItfImpl_Commit(XAVideoPostProcessingItf self) - * Description: Commit all video post-processing changes since the last Commit(). - */ -XAresult XAVideoPostProcessingItfImpl_Commit(XAVideoPostProcessingItf self) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVideoPostProcessingItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVideoPostProcessingItfImpl_Commit"); - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfImpl_Commit"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); - if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) - { - DEBUG_API("<-XAVideoPostProcessingItfImpl_Commit"); - return ret; - } - - ret = XAVideoPostProcessingItfAdapt_Commit((XAAdaptationGstCtx*)impl->adapCtx, - impl->rotation, - impl->scaleOptions, - impl->backgroundColor, - impl->renderingHints, - &impl->srcRect, - &impl->destRect, - impl->mirror, - impl->isMirror, - impl->isRotate, - impl->isDestRect, - impl->isSrcRect, - impl->isScaleOptions); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->isMirror = XA_BOOLEAN_FALSE; - impl->isRotate = XA_BOOLEAN_FALSE; - impl->isDestRect = XA_BOOLEAN_FALSE; - impl->isSrcRect = XA_BOOLEAN_FALSE; - impl->isScaleOptions = XA_BOOLEAN_FALSE; - } - - XAAdaptationBase_ThreadExit(impl->adapCtx); - - DEBUG_API("<-XAVideoPostProcessingItfImpl_Commit"); - return ret; -} - -/** - * XAVideoPostProcessingItfImpl -specific methods - **/ -/** - * XAVideoPostProcessingItfImpl* XAVideoPostProcessingItfImpl_Create() - * @return XAVideoPostProcessingItfImpl* - Pointer to VideoPostProcessingItf interface implementation - **/ -XAVideoPostProcessingItfImpl* XAVideoPostProcessingItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XAVideoPostProcessingItfImpl* self = (XAVideoPostProcessingItfImpl*) - calloc(1,sizeof(XAVideoPostProcessingItfImpl)); - DEBUG_API("->XAVideoPostProcessingItfImpl_Create"); - if(self) - { - XARectangle emptyRect = {0,0,0,0}; - /* init itf default implementation */ - self->itf.Commit = XAVideoPostProcessingItfImpl_Commit; - self->itf.IsArbitraryRotationSupported = XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported; - self->itf.SetDestinationRectangle = XAVideoPostProcessingItfImpl_SetDestinationRectangle; - self->itf.SetMirror = XAVideoPostProcessingItfImpl_SetMirror; - self->itf.SetRotation = XAVideoPostProcessingItfImpl_SetRotation; - self->itf.SetScaleOptions = XAVideoPostProcessingItfImpl_SetScaleOptions; - self->itf.SetSourceRectangle = XAVideoPostProcessingItfImpl_SetSourceRectangle; - - /* init variables */ - self->rotation = 0; - self->scaleOptions = XA_VIDEOSCALE_FIT; - self->mirror = XA_VIDEOMIRROR_NONE; - self->backgroundColor = 0; - self->renderingHints = XA_RENDERINGHINT_NONE; - self->adapCtx = adapCtx; - self->srcRect = emptyRect; - self->destRect = emptyRect; - self->isMirror = XA_BOOLEAN_FALSE; - self->isRotate = XA_BOOLEAN_FALSE; - self->isDestRect = XA_BOOLEAN_FALSE; - self->isSrcRect = XA_BOOLEAN_FALSE; - self->isScaleOptions = XA_BOOLEAN_FALSE; - - self->self = self; - } - DEBUG_API("<-XAVideoPostProcessingItfImpl_Create"); - return self; -} - -/** - * void XAVideoPostProcessingItfImpl_Free(XAVideoPostProcessingItfImpl* self); - * @param XAVideoPostProcessingItfImpl* self - - **/ -void XAVideoPostProcessingItfImpl_Free(XAVideoPostProcessingItfImpl* self) -{ - DEBUG_API("->XAVideoPostProcessingItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAVideoPostProcessingItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xavideopostprocessingitf.h --- a/khronosfws/openmax_al/src/common/xavideopostprocessingitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIDEOPOSTPROCESSINGITF_H -#define XAVIDEOPOSTPROCESSINGITF_H - -#include "xaadptbasectx.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAVideoPostProcessingItf implementation */ -typedef struct XAVideoPostProcessingItfImpl_ -{ - /* parent interface */ - struct XAVideoPostProcessingItf_ itf; - /* pointer to self */ - struct XAVideoPostProcessingItfImpl_* self; - - /* variables */ - XAboolean supported; - XARectangle srcRect; - XARectangle destRect; - XAuint32 scaleOptions; - XAuint32 backgroundColor; - XAuint32 renderingHints; - XAuint32 mirror; - XAmillidegree rotation; - XAboolean isRotate; - XAboolean isMirror; - XAboolean isDestRect; - XAboolean isSrcRect; - XAboolean isScaleOptions; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - -} XAVideoPostProcessingItfImpl; - -/** METHODS **/ - -/* Base interface XAVideoPostProcessingItf implementation */ -XAresult XAVideoPostProcessingItfImpl_SetRotation(XAVideoPostProcessingItf self, - XAmillidegree rotation); - -XAresult XAVideoPostProcessingItfImpl_IsArbitraryRotationSupported(XAVideoPostProcessingItf self, - XAboolean *pSupported); - -XAresult XAVideoPostProcessingItfImpl_SetScaleOptions(XAVideoPostProcessingItf self, - XAuint32 scaleOptions, - XAuint32 backgroundColor, - XAuint32 renderingHints); - -XAresult XAVideoPostProcessingItfImpl_SetSourceRectangle(XAVideoPostProcessingItf self, - const XARectangle *pSrcRect); - -XAresult XAVideoPostProcessingItfImpl_SetDestinationRectangle(XAVideoPostProcessingItf self, - const XARectangle *pDestRect); - -XAresult XAVideoPostProcessingItfImpl_SetMirror(XAVideoPostProcessingItf self, - XAuint32 mirror); - -XAresult XAVideoPostProcessingItfImpl_Commit(XAVideoPostProcessingItf self); - -/* XAVideoPostProcessingItfImpl -specific methods */ -XAVideoPostProcessingItfImpl* XAVideoPostProcessingItfImpl_Create(XAAdaptationBaseCtx *adapCtx); -void XAVideoPostProcessingItfImpl_Free(XAVideoPostProcessingItfImpl* self); - -#endif /* XAVIDEOPOSTPROCESSINGITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/common/xavolumeitf.c --- a/khronosfws/openmax_al/src/common/xavolumeitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/common/xavolumeitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -21,7 +21,6 @@ #include "xavolumeitf.h" -#include "xavolumeitfadaptation.h" #include "xanokiavolumeextitfadaptationmmf.h" /** * XAVolumeItfImpl* GetImpl(XAVolumeItf self) @@ -81,15 +80,6 @@ DEBUG_API("<-XAVolumeItfImpl_SetVolumeLevel"); return ret; } - if (impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XAVolumeItfAdapt_SetVolumeLevel( - (XAAdaptationGstCtx*) impl->adapCtx, level); - } - else - { - impl->volumeLevel = level; - } if (ret == XA_RESULT_SUCCESS) { @@ -152,15 +142,7 @@ DEBUG_API("<-XAVolumeItfImpl_GetMaxVolumeLevel"); return ret; } - if (impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XAVolumeItfAdapt_GetMaxVolumeLevel( - (XAAdaptationGstCtx*) impl->adapCtx, pMaxLevel); - } - else - { - *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL; - } + *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL; XAAdaptationBase_ThreadExit(impl->adapCtx); @@ -201,11 +183,6 @@ ret = XANokiaVolumeExtItfAdapt_SetMute( (XAAdaptationMMFCtx*) impl->adapCtx, mute); } - else - { - ret = XAVolumeItfAdapt_SetMute( - (XAAdaptationGstCtx*) impl->adapCtx, mute); - } if (ret == XA_RESULT_SUCCESS) { @@ -272,12 +249,7 @@ /* Check is stereo position state changed */ if (enable != impl->enableStereoPos) { - if (impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XAVolumeItfAdapt_EnableStereoPosition( - (XAAdaptationGstCtx*) impl->adapCtx, enable); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XANokiaVolumeExtItfAdapt_EnableStereoPosition( (XAAdaptationMMFCtx*) impl->adapCtx, enable); @@ -353,12 +325,7 @@ /* check is stereo position effect enabled if is then handle effect */ if (impl->enableStereoPos) { - if (impl->adapCtx->fwtype == FWMgrFWGST) - { - ret = XAVolumeItfAdapt_SetStereoPosition( - (XAAdaptationGstCtx*) impl->adapCtx, stereoPosition); - } - else + if (impl->adapCtx->fwtype == FWMgrFWMMF) { ret = XANokiaVolumeExtItfAdapt_SetStereoPosition( (XAAdaptationMMFCtx*) impl->adapCtx, stereoPosition); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaaudiodecodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xaaudiodecodercapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Audio Encoder Capabilities Interface Implementation - * - */ - -#include -#include -#include -#include - -#include "xaglobals.h" -#include "xaadptbasectx.h" -#include "xaaudiodecodercapabilitiesitf.h" -#include "xacapabilitiesmgr.h" -/* XAAudioDecoderCapabilitiesItfImpl* GetImpl - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAAudioDecoderCapabilitiesItfImpl* GetImpl( - XAAudioDecoderCapabilitiesItf self) - { - if (self) - { - XAAudioDecoderCapabilitiesItfImpl* impl = - (XAAudioDecoderCapabilitiesItfImpl*) (*self); - if (impl && (impl == impl->self)) - { - return impl; - } - } - return NULL; - } - -/***************************************************************************** - * Base interface XAAudioDecoderCapabilitiesItf implementation - *****************************************************************************/ - -/* XAresult XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoders - * Description: Retrieves the available audio decoders. - */ -XAresult XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoders( - XAAudioDecoderCapabilitiesItf self, XAuint32* pNumDecoders, - XAuint32* pDecoderIds) - { - XAAudioDecoderCapabilitiesItfImpl* impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoders"); - - if (!impl || !pNumDecoders) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if (pDecoderIds) - { /* query array of decoders */ - if (*pNumDecoders < impl->numCodecs) - { - DEBUG_ERR("XA_RESULT_BUFFER_INSUFFICIENT"); - res = XA_RESULT_BUFFER_INSUFFICIENT; - } - else - { - - XAuint32 i = 0; - XACapabilities temp; - for (i = 0; i < impl->numCodecs; i++) - { - /* query decoder id from adaptation using index value */ - XACapabilitiesMgr_GetCapsByIdx(NULL, - (XACapsType) (XACAP_DECODER | XACAP_AUDIO), i, - &temp); - pDecoderIds[i] = temp.xaid; - } - - } - } - /* return number of decoders */ - *pNumDecoders = impl->numCodecs; - }DEBUG_API("<-XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoders"); - return res; - } - -/* XAresult XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoderCapabilities - * Description: Queries for the audio decoder�s capabilities. - */ -XAresult XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoderCapabilities( - XAAudioDecoderCapabilitiesItf self, XAuint32 decoderId, - XAuint32* pIndex, XAAudioCodecDescriptor* pDescriptor) - { - XAAudioDecoderCapabilitiesItfImpl* impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoderCapabilities"); - - if (!impl || !pIndex) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if (!pDescriptor) - { /* query number of capa structures */ - *pIndex = 1; - } - else - { /* query capabilities */ - if (*pIndex >= 1) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - /* query capabilities from adaptation using codec id */ - XACapabilities temp; - memset(pDescriptor, 0, sizeof(XAAudioCodecDescriptor)); - res = XACapabilitiesMgr_GetCapsById(NULL, - (XACapsType) (XACAP_DECODER | XACAP_AUDIO), - decoderId, &temp); - if (res == XA_RESULT_SUCCESS) - { - XAAudioCodecDescriptor* desc = - ((XAAudioCodecDescriptor*) (temp.pEntry)); - /* map applicable values to XAAudioCodecCapabilities */ - pDescriptor->maxChannels = desc->maxChannels; - pDescriptor->minSampleRate = desc->minSampleRate; /* milliHz */ - if (desc->maxSampleRate < (0xFFFFFFFF)) - { - pDescriptor->maxSampleRate = desc->maxSampleRate; - } - else - { - pDescriptor->maxSampleRate = 0xFFFFFFFF; - } - pDescriptor->minBitsPerSample = desc->minBitsPerSample; - pDescriptor->maxBitsPerSample = desc->maxBitsPerSample; - pDescriptor->isFreqRangeContinuous=desc->isFreqRangeContinuous; - pDescriptor->minBitRate = desc->minBitRate; - pDescriptor->maxBitRate = desc->maxBitRate; - pDescriptor->numBitratesSupported - = desc->numBitratesSupported; - pDescriptor->isBitrateRangeContinuous=desc->isBitrateRangeContinuous; - pDescriptor->profileSetting=desc->profileSetting; - pDescriptor->modeSetting=desc->modeSetting; /* no chanmode for pcm defined */ - - } - else - { - /* do nothing */ - } - /*other caps undefined*/ - } - - } - } - - - DEBUG_API("<-XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoderCapabilities"); - return res; - } - -/***************************************************************************** - * XAAudioDecoderCapabilitiesItfImpl -specific methods - *****************************************************************************/ - -/* XAAudioDecoderCapabilitiesItfImpl_Create - * Description: Allocate and initialize XAAudioDecoderCapabilitiesItfImpl - */ -XAAudioDecoderCapabilitiesItfImpl* XAAudioDecoderCapabilitiesItfImpl_Create() - { - XAAudioDecoderCapabilitiesItfImpl* self = - (XAAudioDecoderCapabilitiesItfImpl*) calloc(1, - sizeof(XAAudioDecoderCapabilitiesItfImpl)); - - DEBUG_API("->XAAudioDecoderCapabilitiesItfImpl_Create"); - - if (self) - { - /* init itf default implementation */ - self->itf.GetAudioDecoders - = XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoders; - self->itf.GetAudioDecoderCapabilities - = XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoderCapabilities; - - /* init variables */ - - assert( XACapabilitiesMgr_GetCapsCount(NULL, (XACapsType)(XACAP_DECODER|XACAP_AUDIO), - &(self->numCodecs) ) == XA_RESULT_SUCCESS ); - - self->self = self; - }DEBUG_API("<-XAAudioDecoderCapabilitiesItfImpl_Create"); - return self; - } - -/* void XAAudioDecoderCapabilitiesItfImpl_Free - * Description: Free all resources reserved at XAAudioDecoderCapabilitiesItfImpl_Create - */ -void XAAudioDecoderCapabilitiesItfImpl_Free( - XAAudioDecoderCapabilitiesItfImpl* self) - { - DEBUG_API("->XAAudioDecoderCapabilitiesItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAAudioDecoderCapabilitiesItfImpl_Free"); - } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaaudiodecodercapabilitiesitf.h --- a/khronosfws/openmax_al/src/engine/xaaudiodecodercapabilitiesitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Audio Encoder Itf Header - * - */ - -#ifndef XAAUDIODECODERCAPABILITIESITF_H -#define XAAUDIODECODERCAPABILITIESITF_H - -#include "openmaxalwrapper.h" -#include "xaglobals.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAAudioDecoderCapabilitiesItf implementation */ -typedef struct XAAudioDecoderCapabilitiesItfImpl_ - { - /* parent interface */ - struct XAAudioDecoderCapabilitiesItf_ itf; - /* pointer to self */ - struct XAAudioDecoderCapabilitiesItfImpl_* self; - /* variables */ - XAuint32 numCodecs; - } XAAudioDecoderCapabilitiesItfImpl; - -/* Base interface XAAudioDecoderCapabilitiesItf implementation */ -XAresult XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoders( - XAAudioDecoderCapabilitiesItf self, XAuint32* pNumDecoders, - XAuint32* pDecoderIds); - -XAresult XAAudioDecoderCapabilitiesItfImpl_GetAudioDecoderCapabilities( - XAAudioDecoderCapabilitiesItf self, XAuint32 decoderId, - XAuint32* pIndex, XAAudioCodecDescriptor* pDescriptor); - -/* XAAudioDecoderCapabilitiesItfImpl -specific methods */ -XAAudioDecoderCapabilitiesItfImpl* XAAudioDecoderCapabilitiesItfImpl_Create( - void); -void XAAudioDecoderCapabilitiesItfImpl_Free( - XAAudioDecoderCapabilitiesItfImpl* self); - -#endif /* XAAUDIODECODERCAPABILITIESITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/engine/xaaudioencodercapabilitiesitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -94,7 +94,8 @@ /* return number of encoders */ *pNumEncoders = impl->numCodecs; - }DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders"); + } + DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_GetAudioEncoders"); return res; } @@ -205,7 +206,8 @@ self->numCodecs = 3; self->self = self; - }DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_Create"); + } + DEBUG_API("<-XAAudioEncoderCapabilitiesItfImpl_Create"); return self; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xacameracapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xacameracapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,330 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaglobals.h" -#include "xacameracapabilitiesitf.h" - - -#include "xastaticcameracapsadaptation.h" - - -static XACameraCapabilitiesItfImpl* GetImpl(XACameraCapabilitiesItf self) -{ - if( self ) - { - XACameraCapabilitiesItfImpl* impl = (XACameraCapabilitiesItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XACameraCapabilitiesItf implementation - */ -XAresult XACameraCapabilitiesItfImpl_GetCameraCapabilities( - XACameraCapabilitiesItf self, - XAuint32* pIndex, - XAuint32* pCameraDeviceID, - XACameraDescriptor* pDescriptor) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetCameraCapabilities"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetCameraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetCameraCapabilities(pIndex,pCameraDeviceID,pDescriptor); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetCameraCapabilities"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_QueryFocusRegionPatterns( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pPatternID, - XAuint32* pFocusPattern, - XAuint32* pCustomPoints1, - XAuint32* pCustomPoints2) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_QueryFocusRegionPatterns"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_QueryFocusRegionPatterns"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_QueryFocusRegionPatterns( - cameraDeviceID, pPatternID, pFocusPattern,pCustomPoints1,pCustomPoints2); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_QueryFocusRegionPatterns"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedAutoLocks( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pNumCombinations, - XAuint32** ppLocks) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedAutoLocks"); - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedAutoLocks"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedAutoLocks( - cameraDeviceID, pNumCombinations, ppLocks); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedAutoLocks"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedFocusManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAboolean macroEnabled, - XAmillimeter* pMinValue, - XAmillimeter* pMaxValue, - XAuint32* pNumSettings, - XAmillimeter** ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedFocusManualSettings"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedFocusManualSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedFocusManualSettings( - cameraDeviceID, macroEnabled,pMinValue, pMaxValue, pNumSettings, ppSettings); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedFocusManualSettings"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedISOSensitivitySettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedISOSensitivitySettings"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedISOSensitivitySettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedISOSensitivitySettings( - cameraDeviceID, pMinValue, pMaxValue, pNumSettings, ppSettings ); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedISOSensitivitySettings"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedApertureManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedApertureManualSettings"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedApertureManualSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedApertureManualSettings( - cameraDeviceID, pMinValue, pMaxValue, pNumSettings, ppSettings ); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedApertureManualSettings"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedShutterSpeedManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAmicrosecond* pMinValue, - XAmicrosecond* pMaxValue, - XAuint32* pNumSettings, - XAmicrosecond** ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedShutterSpeedManualSettings"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedShutterSpeedManualSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedShutterSpeedManualSettings( - cameraDeviceID, pMinValue, pMaxValue, pNumSettings, ppSettings); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedShutterSpeedManualSettings"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedWhiteBalanceManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedWhiteBalanceManualSettings"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedWhiteBalanceManualSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedWhiteBalanceManualSettings( - cameraDeviceID, pMinValue, pMaxValue, pNumSettings, ppSettings); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedWhiteBalanceManualSettings"); - return ret; -} - - -XAresult XACameraCapabilitiesItfImpl_GetSupportedZoomSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAboolean digitalEnabled, - XAboolean macroEnabled, - XApermille* pMaxValue, - XAuint32* pNumSettings, - XApermille** ppSettings, - XAboolean* pSpeedSupported) -{ - XAresult ret = XA_RESULT_SUCCESS; - XACameraCapabilitiesItfImpl* impl = GetImpl(self); - DEBUG_API("->XACameraCapabilitiesItfImpl_GetSupportedZoomSettings"); - - if( !impl ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedZoomSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XAStaticCameraCaps_GetSupportedZoomSettings( - cameraDeviceID, digitalEnabled, macroEnabled, pMaxValue, - pNumSettings, ppSettings, pSpeedSupported); - - DEBUG_API("<-XACameraCapabilitiesItfImpl_GetSupportedZoomSettings"); - return ret; -} - - -/** - * XACameraCapabilitiesItfImpl -specific methods - **/ -XACameraCapabilitiesItfImpl* XACameraCapabilitiesItfImpl_Create(void) -{ - XACameraCapabilitiesItfImpl* self = (XACameraCapabilitiesItfImpl*) - calloc(1,sizeof(XACameraCapabilitiesItfImpl)); - DEBUG_API("->XACameraCapabilitiesItfImpl_Create"); - - if( self ) - { - /* init itf default implementation */ - self->itf.GetCameraCapabilities = - XACameraCapabilitiesItfImpl_GetCameraCapabilities; - self->itf.QueryFocusRegionPatterns = - XACameraCapabilitiesItfImpl_QueryFocusRegionPatterns; - self->itf.GetSupportedAutoLocks = - XACameraCapabilitiesItfImpl_GetSupportedAutoLocks; - self->itf.GetSupportedFocusManualSettings = - XACameraCapabilitiesItfImpl_GetSupportedFocusManualSettings; - self->itf.GetSupportedISOSensitivitySettings = - XACameraCapabilitiesItfImpl_GetSupportedISOSensitivitySettings; - self->itf.GetSupportedApertureManualSettings = - XACameraCapabilitiesItfImpl_GetSupportedApertureManualSettings; - self->itf.GetSupportedShutterSpeedManualSettings = - XACameraCapabilitiesItfImpl_GetSupportedShutterSpeedManualSettings; - self->itf.GetSupportedWhiteBalanceManualSettings = - XACameraCapabilitiesItfImpl_GetSupportedWhiteBalanceManualSettings; - self->itf.GetSupportedZoomSettings = - XACameraCapabilitiesItfImpl_GetSupportedZoomSettings; - - self->self = self; - } - DEBUG_API("<-XACameraCapabilitiesItfImpl_Create"); - return self; -} - -void XACameraCapabilitiesItfImpl_Free(XACameraCapabilitiesItfImpl* self) -{ - DEBUG_API("->XACameraCapabilitiesItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XACameraCapabilitiesItfImpl_Free"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xacameracapabilitiesitf.h --- a/khronosfws/openmax_al/src/engine/xacameracapabilitiesitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XACAMERACAPABILITIESITF_H -#define XACAMERACAPABILITIESITF_H - -#include "openmaxalwrapper.h" -#include "xaglobals.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XACameraCapabilitiesItf implementation */ -typedef struct XACameraCapabilitiesItfImpl_ -{ - /* parent interface */ - struct XACameraCapabilitiesItf_ itf; - /* pointer to self */ - struct XACameraCapabilitiesItfImpl_* self; - /* variables */ -} XACameraCapabilitiesItfImpl; - -/* Base interface XACameraCapabilitiesItf implementation */ -XAresult XACameraCapabilitiesItfImpl_GetCameraCapabilities( - XACameraCapabilitiesItf self, - XAuint32* pIndex, - XAuint32* pCameraDeviceID, - XACameraDescriptor* pDescriptor); - -XAresult XACameraCapabilitiesItfImpl_QueryFocusRegionPatterns( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pPatternID, - XAuint32* pFocusPattern, - XAuint32* pCustomPoints1, - XAuint32* pCustomPoints2); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedAutoLocks( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pNumCombinations, - XAuint32** ppLocks); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedFocusManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAboolean macroEnabled, - XAmillimeter* pMinValue, - XAmillimeter* pMaxValue, - XAuint32* pNumSettings, - XAmillimeter** ppSettings); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedISOSensitivitySettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedApertureManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedShutterSpeedManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAmicrosecond* pMinValue, - XAmicrosecond* pMaxValue, - XAuint32* pNumSettings, - XAmicrosecond** ppSettings); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedWhiteBalanceManualSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings); - -XAresult XACameraCapabilitiesItfImpl_GetSupportedZoomSettings( - XACameraCapabilitiesItf self, - XAuint32 cameraDeviceID, - XAboolean digitalEnabled, - XAboolean macroEnabled, - XApermille* pMaxValue, - XAuint32* pNumSettings, - XApermille** ppSettings, - XAboolean* pSpeedSupported); - -/* XACameraCapabilitiesItfImpl -specific methods */ -XACameraCapabilitiesItfImpl* XACameraCapabilitiesItfImpl_Create(void); -void XACameraCapabilitiesItfImpl_Free(XACameraCapabilitiesItfImpl* self); - -#endif /* XACAMERACAPABILITIESITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xadevicevolumeitf.c --- a/khronosfws/openmax_al/src/engine/xadevicevolumeitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,211 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaglobals.h" -#include "xadevicevolumeitf.h" - -#include "xadevicevolumeitfadaptation.h" - - -static XADeviceVolumeItfImpl* GetImpl(XADeviceVolumeItf self) -{ - if( self ) - { - XADeviceVolumeItfImpl* impl = (XADeviceVolumeItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XADeviceVolumeItf implementation - */ - -/* XAresult XADeviceVolumeItfImpl_GetVolumeScale( XADeviceVolumeItf self, - * XAuint32 deviceID, - * XAint32* pMinValue, - * XAint32* pMaxValue, - * XAboolean* pIsMillibelScale) - * Description: Gets the properties of the volume scale supported by the given device. - */ -XAresult XADeviceVolumeItfImpl_GetVolumeScale( XADeviceVolumeItf self, - XAuint32 deviceID, - XAint32* pMinValue, - XAint32* pMaxValue, - XAboolean* pIsMillibelScale) -{ - XADeviceVolumeItfImpl* impl = GetImpl(self); - XAresult ret = XA_RESULT_SUCCESS; - XAboolean supported = XA_BOOLEAN_FALSE; - DEBUG_API("->XADeviceVolumeItfImpl_GetVolumeScale"); - if( !impl || !pMinValue || !pMaxValue || !pIsMillibelScale ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfImpl_GetVolumeScale"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XADeviceVolumeItfAdapt_IsDeviceIDSupported((XAAdaptationGstCtx*)impl->adapCtx, deviceID, &supported); - - if( ret != XA_RESULT_SUCCESS || supported != XA_BOOLEAN_TRUE ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfImpl_GetVolumeScale"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pMinValue = impl->minVolume; - *pMaxValue = impl->maxVolume; - *pIsMillibelScale = impl->ismBscale; - - DEBUG_API("<-XADeviceVolumeItfImpl_GetVolumeScale"); - return ret; -} - -/* XAresult XADeviceVolumeItfImpl_SetVolume( XADeviceVolumeItf self, - * XAuint32 deviceID, - * XAint32 volume) - * Description: Sets the device's volume. - */ -XAresult XADeviceVolumeItfImpl_SetVolume( XADeviceVolumeItf self, - XAuint32 deviceID, - XAint32 volume) -{ - XADeviceVolumeItfImpl* impl = GetImpl(self); - XAresult ret = XA_RESULT_SUCCESS; - - XAboolean supported = XA_BOOLEAN_FALSE; - - DEBUG_API("->XADeviceVolumeItfImpl_SetVolume"); - - if( !impl || volume < impl->minVolume || volume > impl->maxVolume ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfImpl_SetVolume"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XADeviceVolumeItfAdapt_IsDeviceIDSupported((XAAdaptationGstCtx*)impl->adapCtx, deviceID, &supported); - if( ret != XA_RESULT_SUCCESS || supported != XA_BOOLEAN_TRUE ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfImpl_SetVolume"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XADeviceVolumeItfAdapt_SetVolume((XAAdaptationGstCtx*)impl->adapCtx, deviceID, volume); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->curVolume = volume; - } - - DEBUG_API("<-XADeviceVolumeItfImpl_SetVolume"); - return ret; -} - -/* XAresult XADeviceVolumeItfImpl_GetVolume( XADeviceVolumeItf self, - * XAuint32 deviceID, - * XAint32 * pVolume) - * Description: Gets the device's volume. - */ -XAresult XADeviceVolumeItfImpl_GetVolume( XADeviceVolumeItf self, - XAuint32 deviceID, - XAint32 * pVolume) -{ - XADeviceVolumeItfImpl* impl = GetImpl(self); - XAresult ret = XA_RESULT_SUCCESS; - XAboolean supported = XA_BOOLEAN_FALSE; - DEBUG_API("->XADeviceVolumeItfImpl_GetVolume"); - - if( !impl || !pVolume ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfImpl_GetVolume"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XADeviceVolumeItfAdapt_IsDeviceIDSupported((XAAdaptationGstCtx*)impl->adapCtx, deviceID, &supported); - - if( ret != XA_RESULT_SUCCESS || supported != XA_BOOLEAN_TRUE ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfImpl_GetVolume"); - return XA_RESULT_PARAMETER_INVALID; - } - *pVolume = impl->curVolume; - DEBUG_API("<-XADeviceVolumeItfImpl_GetVolume"); - return XA_RESULT_SUCCESS; -} - -/** - * XADeviceVolumeItfImpl -specific methods - **/ - -/** - * XADeviceVolumeItfImpl* XADeviceVolumeItfImpl_Create(XAAdaptationBaseCtx *adapCtx) - * Description: Allocate and initialize DeviceVolumeImpl - **/ -XADeviceVolumeItfImpl* XADeviceVolumeItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XADeviceVolumeItfImpl* self = (XADeviceVolumeItfImpl*) - calloc(1,sizeof(XADeviceVolumeItfImpl)); - DEBUG_API("->XADeviceVolumeItfImpl_Create"); - - if(self) - { - /* init itf default implementation */ - self->itf.GetVolumeScale = - XADeviceVolumeItfImpl_GetVolumeScale; - self->itf.GetVolume = - XADeviceVolumeItfImpl_GetVolume; - self->itf.SetVolume = - XADeviceVolumeItfImpl_SetVolume; - - /* init variables */ - /* these values are replaced by adaptation in init phase */ - self->curVolume = DEFAULTDEVICEVOLUME; - self->minVolume = DEFAULTDEVICEMINVOLUME; - self->maxVolume = DEFAULTDEVICEMAXVOLUME; - self->ismBscale = DEFAULTSCALEISMILLIBEL; - - self->adapCtx = adapCtx; - self->self = self; - } - DEBUG_API("<-XADeviceVolumeItfImpl_Create"); - return self; -} - -/* void XADeviceVolumeItfImpl_Free(XADeviceVolumeItfImpl* self) - * Description: Free all resources reserved at XADeviceVolumeItfImpl_Create - */ -void XADeviceVolumeItfImpl_Free(XADeviceVolumeItfImpl* self) -{ - DEBUG_API("->XADeviceVolumeItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XADeviceVolumeItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xadevicevolumeitf.h --- a/khronosfws/openmax_al/src/engine/xadevicevolumeitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XADEVICEVOLUMEITF_H -#define XADEVICEVOLUMEITF_H - -#include "xaadptbasectx.h" - -/** MACROS **/ -#define DEFAULTDEVICEVOLUME 5 -#define DEFAULTDEVICEMINVOLUME 0 -#define DEFAULTDEVICEMAXVOLUME 10 -#define DEFAULTSCALEISMILLIBEL XA_BOOLEAN_FALSE -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XADeviceVolumeItf implementation */ -typedef struct XADeviceVolumeItfImpl_ -{ - /* parent interface */ - struct XADeviceVolumeItf_ itf; - /* pointer to self */ - struct XADeviceVolumeItfImpl_* self; - - /* variables */ - - XAint32 curVolume; - XAint32 minVolume; - XAint32 maxVolume; - XAboolean ismBscale; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - -} XADeviceVolumeItfImpl; - -/* Base interface XADeviceVolumeItf implementation */ -XAresult XADeviceVolumeItfImpl_GetVolumeScale( - XADeviceVolumeItf self, - XAuint32 deviceID, - XAint32 * pMinValue, - XAint32 * pMaxValue, - XAboolean * pIsMillibelScale); -XAresult XADeviceVolumeItfImpl_SetVolume( - XADeviceVolumeItf self, - XAuint32 deviceID, - XAint32 volume); -XAresult XADeviceVolumeItfImpl_GetVolume( - XADeviceVolumeItf self, - XAuint32 deviceID, - XAint32 * pVolume); - -/* XADeviceVolumeItfImpl -specific methods */ -XADeviceVolumeItfImpl* XADeviceVolumeItfImpl_Create(XAAdaptationBaseCtx *adapCtx); - -void XADeviceVolumeItfImpl_Free(XADeviceVolumeItfImpl* self); - -#endif /* XADEVICEVOLUMEITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaengine.c --- a/khronosfws/openmax_al/src/engine/xaengine.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/engine/xaengine.c Wed Aug 18 10:17:22 2010 +0300 @@ -25,18 +25,10 @@ #include "xathreadsyncitf.h" #include "xadynintmgmtitf.h" #include "xaaudioiodevicecapabilitiesitf.h" -#include "xaaudiodecodercapabilitiesitf.h" #include "xaaudioencodercapabilitiesitf.h" -#include "xaimagedecodercapabilitiesitf.h" -#include "xaimageencodercapabilitiesitf.h" -#include "xavideodecodercapabilitiesitf.h" -#include "xavideoencodercapabilitiesitf.h" -#include "xacameracapabilitiesitf.h" -#include "xadevicevolumeitf.h" #include "xaconfigextensionsitf.h" #include "xathreadsafety.h" #include "xaframeworkmgr.h" -#include "xastaticcameracapsadaptation.h" /* Static mapping of enumeration XAEngineInterfaces to interface iids */ static const XAInterfaceID* xaEngineItfIIDs[ENGINE_ITFCOUNT] = @@ -80,7 +72,8 @@ if (!pEngine) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineImpl_Create"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAEngineImpl_Create"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -107,7 +100,8 @@ pImpl = (XAEngineImpl*) calloc(1, sizeof(XAEngineImpl)); if (!pImpl) { - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");DEBUG_API("<-XAEngineImpl_Create"); + DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); + DEBUG_API("<-XAEngineImpl_Create"); /* memory allocation failed */ return XA_RESULT_MEMORY_FAILURE; } @@ -142,7 +136,8 @@ { /* required interface cannot be accommodated - fail creation */ XAObjectItfImpl_Destroy((XAObjectItf) &(pBaseObj)); - DEBUG_ERR("Required interface not found - abort creation!");DEBUG_API("<-XAEngineImpl_Create"); + DEBUG_ERR("Required interface not found - abort creation!"); + DEBUG_API("<-XAEngineImpl_Create"); return XA_RESULT_FEATURE_UNSUPPORTED; } else @@ -191,7 +186,8 @@ } else { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAEngineImpl_QueryNumSupportedInterfaces"); return XA_RESULT_PARAMETER_INVALID; } } @@ -293,41 +289,13 @@ pItf = XAAudioEncoderCapabilitiesItfImpl_Create( pObjImpl->capabilities); break; - /* - case ENGINE_AUDIODECODERCAPAITF: - pItf = XAAudioDecoderCapabilitiesItfImpl_Create(); - break; - case ENGINE_CONFIGEXTENSIONSITF: - pItf = XAConfigExtensionsItfImpl_Create(); - break; - case ENGINE_DEVICEVOLUMEITF: - pItf = XADeviceVolumeItfImpl_Create(pObjImpl->adaptationCtx); - break; - case ENGINE_CAMERACAPAITF: - - XAStaticCameraCaps_Init(); - pItf = XACameraCapabilitiesItfImpl_Create(); - - break; - case ENGINE_IMAGEDECODERCAPAITF: - pItf = XAImageDecoderCapabilitiesItfImpl_Create(); - break; - case ENGINE_IMAGEENCODERCAPAITF: - pItf = XAImageEncoderCapabilitiesItfImpl_Create(); - break; - case ENGINE_VIDEODECODERCAPAITF: - pItf = XAVideoDecoderCapabilitiesItfImpl_Create(); - break; - case ENGINE_VIDEOENCODERCAPAITF: - pItf = XAVideoEncoderCapabilitiesItfImpl_Create(); - break; - */ default: break; } if (!pItf) { - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE");DEBUG_API("<-XAEngineImpl_DoRealize"); + DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); + DEBUG_API("<-XAEngineImpl_DoRealize"); /* memory allocation failed */ return XA_RESULT_MEMORY_FAILURE; } @@ -348,7 +316,8 @@ */ XAresult XAEngineImpl_DoResume(XAObjectItf self) { - DEBUG_API("->XAEngineImpl_DoResume");DEBUG_API("<-XAEngineImpl_DoResume"); + DEBUG_API("->XAEngineImpl_DoResume"); + DEBUG_API("<-XAEngineImpl_DoResume"); return XA_RESULT_PRECONDITIONS_VIOLATED; } @@ -387,34 +356,6 @@ case ENGINE_AUDIOENCODERCAPAITF: XAAudioEncoderCapabilitiesItfImpl_Free(pItf); break; - /* - case ENGINE_AUDIODECODERCAPAITF: - XAAudioDecoderCapabilitiesItfImpl_Free(pItf); - break; - case ENGINE_CONFIGEXTENSIONSITF: - XAConfigExtensionsItfImpl_Free(pItf); - break; - case ENGINE_DEVICEVOLUMEITF: - XADeviceVolumeItfImpl_Free(pItf); - break; - case ENGINE_CAMERACAPAITF: - - XACameraCapabilitiesItfImpl_Free(pItf); - - break; - case ENGINE_IMAGEDECODERCAPAITF: - XAImageDecoderCapabilitiesItfImpl_Free(pItf); - break; - case ENGINE_IMAGEENCODERCAPAITF: - XAImageEncoderCapabilitiesItfImpl_Free(pItf); - break; - case ENGINE_VIDEODECODERCAPAITF: - XAVideoDecoderCapabilitiesItfImpl_Free(pItf); - break; - case ENGINE_VIDEOENCODERCAPAITF: - XAVideoEncoderCapabilitiesItfImpl_Free(pItf); - break; - */ default: break; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaengineitf.c --- a/khronosfws/openmax_al/src/engine/xaengineitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/engine/xaengineitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -19,8 +19,6 @@ #include #include #include "xaengineitf.h" -#include "xavibraitf.h" -#include "xaledarrayitf.h" #include "xaobjects.h" #include "xacapabilitiesmgr.h" /*static XAchar implementationText[] = "Implementation does not conform to AL Spec";*/ @@ -73,9 +71,7 @@ const XAInterfaceID *pInterfaceIds, const XAboolean *pInterfaceRequired) { - return XALEDArrayDeviceImpl_CreateLEDArrayDevice( - ((XAEngineItfImpl*) self)->mapper, pDevice, deviceID, - numInterfaces, pInterfaceIds, pInterfaceRequired); + return XA_RESULT_FEATURE_UNSUPPORTED; } XAresult XAEngineItfImpl_CreateVibraDevice(XAEngineItf self, @@ -83,9 +79,7 @@ const XAInterfaceID *pInterfaceIds, const XAboolean *pInterfaceRequired) { - return XAVibraDeviceImpl_CreateVibraDevice( - ((XAEngineItfImpl*) self)->mapper, pDevice, deviceID, - numInterfaces, pInterfaceIds, pInterfaceRequired); + return XA_RESULT_FEATURE_UNSUPPORTED; } XAresult XAEngineItfImpl_CreateMediaPlayer(XAEngineItf self, @@ -118,9 +112,7 @@ XAuint32 numInterfaces, const XAInterfaceID *pInterfaceIds, const XAboolean *pInterfaceRequired) { - XAEngineItfImpl* impl = GetImpl(self); - return XAOMixImpl_CreateOutputMix(impl->mapper, impl->capabilities, pMix, - numInterfaces, pInterfaceIds, pInterfaceRequired); + return XA_RESULT_FEATURE_UNSUPPORTED; } XAresult XAEngineItfImpl_CreateMetadataExtractor(XAEngineItf self, @@ -153,7 +145,8 @@ if (!pMajor || !pMinor || !pStep) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineItfImpl_GetImplementationInfo"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAEngineItfImpl_GetImplementationInfo"); return XA_RESULT_PARAMETER_INVALID; } /* OpenMAX AL API ver 1.0.1 */ @@ -197,7 +190,8 @@ if (!pNumSupportedInterfaces) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAEngineItfImpl_QueryNumSupportedInterfaces"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAEngineItfImpl_QueryNumSupportedInterfaces"); return XA_RESULT_PARAMETER_INVALID; } *pNumSupportedInterfaces = 0; @@ -215,28 +209,10 @@ res = XAMediaRecorderImpl_QueryNumSupportedInterfaces( pNumSupportedInterfaces); break; - case XA_OBJECTID_OUTPUTMIX: - res = XAOMixImpl_QueryNumSupportedInterfaces( - pNumSupportedInterfaces); - break; -#ifdef OMAX_CAMERABIN - case XA_OBJECTID_CAMERADEVICE: - res = XACameraDeviceImpl_QueryNumSupportedInterfaces( - pNumSupportedInterfaces); - break; -#endif case XA_OBJECTID_RADIODEVICE: res = XARadioDeviceImpl_QueryNumSupportedInterfaces( pNumSupportedInterfaces); break; - case XA_OBJECTID_LEDDEVICE: - res = XALEDArrayDeviceImpl_QueryNumSupportedInterfaces( - pNumSupportedInterfaces); - break; - case XA_OBJECTID_VIBRADEVICE: - res = XAVibraDeviceImpl_QueryNumSupportedInterfaces( - pNumSupportedInterfaces); - break; case XA_OBJECTID_METADATAEXTRACTOR: res = XAMetadataExtractorImpl_QueryNumSupportedInterfaces( pNumSupportedInterfaces); @@ -276,27 +252,10 @@ res = XAMediaRecorderImpl_QuerySupportedInterfaces(index, pInterfaceId); break; - case XA_OBJECTID_OUTPUTMIX: - res = XAOMixImpl_QuerySupportedInterfaces(index, pInterfaceId); - break; -#ifdef OMAX_CAMERABIN - case XA_OBJECTID_CAMERADEVICE: - res = XACameraDeviceImpl_QuerySupportedInterfaces( - index, pInterfaceId ); - break; -#endif case XA_OBJECTID_RADIODEVICE: res = XARadioDeviceImpl_QuerySupportedInterfaces(index, pInterfaceId); break; - case XA_OBJECTID_LEDDEVICE: - res = XALEDArrayDeviceImpl_QuerySupportedInterfaces(index, - pInterfaceId); - break; - case XA_OBJECTID_VIBRADEVICE: - res = XAVibraDeviceImpl_QuerySupportedInterfaces(index, - pInterfaceId); - break; case XA_OBJECTID_METADATAEXTRACTOR: res = XAMetadataExtractorImpl_QuerySupportedInterfaces(index, pInterfaceId); @@ -313,9 +272,7 @@ XAuint32 *pIndex, XAuint32 *pLEDDeviceID, XALEDDescriptor *pDescriptor) { - - XALEDDescriptor descriptor; - + XAresult res = XA_RESULT_SUCCESS; DEBUG_API("->XAEngineItfImpl_QueryLEDCapabilities"); if (!pDescriptor) @@ -326,52 +283,26 @@ DEBUG_API("<-XAEngineItfImpl_QueryLEDCapabilities"); return XA_RESULT_PARAMETER_INVALID; } - /* Number of devices */ - *pIndex = 1; + else + { + /* Number of devices */ + *pIndex = 0; + } } else { - - /* query device capabilities */ - if (pIndex) - { - if (*pIndex == 0) - { - if (!pLEDDeviceID) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEngineItfImpl_QueryLEDCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - *pLEDDeviceID = XA_ADAPTID_LEDARRAY; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEngineItfImpl_QueryLEDCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - } - - if (*pLEDDeviceID == XA_ADAPTID_LEDARRAY) - { - descriptor.colorMask = COLOR_MASK; - descriptor.ledCount = LED_COUNT; - descriptor.primaryLED = PRIMARY_LED; - *pDescriptor = descriptor; - } - - }DEBUG_API("<-XAEngineItfImpl_QueryLEDCapabilities"); - return XA_RESULT_SUCCESS; + // return NotSupported below + res = XA_RESULT_FEATURE_UNSUPPORTED; + } + DEBUG_API("<-XAEngineItfImpl_QueryLEDCapabilities"); + return res; } XAresult XAEngineItfImpl_QueryVibraCapabilities(XAEngineItf self, XAuint32 *pIndex, XAuint32 *pVibraDeviceID, XAVibraDescriptor *pDescriptor) { - - XAVibraDescriptor descriptor; - + XAresult res = XA_RESULT_SUCCESS; DEBUG_API("->XAEngineItfImpl_QueryVibraCapabilities"); if (!pDescriptor) @@ -380,49 +311,22 @@ { DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); DEBUG_API("<-XAEngineItfImpl_QueryVibraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; + res = XA_RESULT_PARAMETER_INVALID; } - /* Number of devices */ - *pIndex = 1; + else + { + /* Number of devices */ + *pIndex = 0; + } } else { - - /* query device capabilities */ - if (pIndex) - { - if (*pIndex == 0) - { - if (!pVibraDeviceID) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEngineItfImpl_QueryVibraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pVibraDeviceID = XA_ADAPTID_VIBRA; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAEngineItfImpl_QueryVibraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - } - - if (*pVibraDeviceID == XA_ADAPTID_VIBRA) - { - descriptor.minFrequency = MIN_FREQUENCY; - descriptor.maxFrequency = MAX_FREQUENCY; - descriptor.supportsFrequency = XA_BOOLEAN_TRUE; - descriptor.supportsIntensity = XA_BOOLEAN_TRUE; - *pDescriptor = descriptor; - } - + // return NotSupported below + res = XA_RESULT_FEATURE_UNSUPPORTED; } DEBUG_API("<-XAEngineItfImpl_QueryVibraCapabilities"); - return XA_RESULT_SUCCESS; + return res; } XAresult XAEngineItfImpl_QueryNumSupportedExtensions(XAEngineItf self, diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaimagedecodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xaimagedecodercapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include - -#include "xaglobals.h" -#include "xaimagedecodercapabilitiesitf.h" - -#include "xacapabilitiesmgr.h" - -/* XAImageDecoderCapabilitiesItfImpl* GetImpl - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAImageDecoderCapabilitiesItfImpl* GetImpl(XAImageDecoderCapabilitiesItf self) -{ - if( self ) - { - XAImageDecoderCapabilitiesItfImpl* impl = (XAImageDecoderCapabilitiesItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAImageDecoderCapabilitiesItf implementation - **/ - -/* XAresult XAImageDecoderCapabilitiesItfImpl_GetImageDecoderCapabilities - * Description: Retrieves image decoder capabilities. - */ -XAresult XAImageDecoderCapabilitiesItfImpl_GetImageDecoderCapabilities( - XAImageDecoderCapabilitiesItf self, - XAuint32* pDecoderId, - XAImageCodecDescriptor* pDescriptor) -{ - XAImageDecoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - DEBUG_API("->XAImageDecoderCapabilitiesItfImpl_GetImageDecoderCapabilities"); - - impl = GetImpl(self); - if( !impl || !pDecoderId ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if( !pDescriptor ) - { /* query number of image decoders */ - *pDecoderId = impl->numCodecs; - } - else - { - /* query capabilities from adaptation using codec id */ - - XACapabilities temp; - memset(pDescriptor,0,sizeof(XAImageCodecDescriptor)); - /* here pEncoderId refers to index rather than codec id */ - res = XACapabilitiesMgr_GetCapsByIdx(NULL, (XACapsType)(XACAP_DECODER|XACAP_IMAGE), *pDecoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { - XAImageCodecDescriptor* desc = (XAImageCodecDescriptor*)(&temp.pEntry); - /* map applicable values to XAAudioCodecCapabilities */ - pDescriptor->codecId = temp.xaid; - pDescriptor->maxWidth = desc->maxWidth; - pDescriptor->maxHeight = desc->maxHeight; - } - - } - } - - DEBUG_API("<-XAImageDecoderCapabilitiesItfImpl_GetImageDecoderCapabilities"); - return res; -} - -/* XAresult XAImageDecoderCapabilitiesItfImpl_QueryColorFormats - * Description: This method is used to query the color formats supported - * by the image decoder. - */ -XAresult XAImageDecoderCapabilitiesItfImpl_QueryColorFormats( - const XAImageDecoderCapabilitiesItf self, - XAuint32* pIndex, - XAuint32* pColorFormats) -{ - XAImageDecoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - DEBUG_API("->XAImageDecoderCapabilitiesItfImpl_QueryColorFormats"); - impl = GetImpl(self); - if( !impl || !pIndex ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - res = XACapabilitiesMgr_QueryColorFormats(NULL, pIndex, pColorFormats); - - } - DEBUG_API("<-XAImageDecoderCapabilitiesItfImpl_QueryColorFormats"); - return res; -} - -/** - * XAImageDecoderCapabilitiesItfImpl -specific methods - **/ - -/* XAImageDecoderCapabilitiesItfImpl_Create - * Description: Allocate and initialize XAImageDecoderCapabilitiesItfImpl - */ -XAImageDecoderCapabilitiesItfImpl* XAImageDecoderCapabilitiesItfImpl_Create() -{ - XAImageDecoderCapabilitiesItfImpl* self = (XAImageDecoderCapabilitiesItfImpl*) - calloc(1,sizeof(XAImageDecoderCapabilitiesItfImpl)); - DEBUG_API("->XAImageDecoderCapabilitiesItfImpl_Create"); - - if( self ) - { - /* init itf default implementation */ - self->itf.GetImageDecoderCapabilities = - XAImageDecoderCapabilitiesItfImpl_GetImageDecoderCapabilities; - self->itf.QueryColorFormats = - XAImageDecoderCapabilitiesItfImpl_QueryColorFormats; - - - /* init variables */ - assert( XACapabilitiesMgr_GetCapsCount( NULL, (XACapsType)(XACAP_DECODER|XACAP_IMAGE), - &(self->numCodecs) ) == XA_RESULT_SUCCESS ); - - self->self = self; - } - DEBUG_API("<-XAImageDecoderCapabilitiesItfImpl_Create"); - return self; -} - -/* void XAImageDecoderCapabilitiesItfImpl_Free - * Description: Free all resources reserved at XAImageDecoderCapabilitiesItfImpl - */ -void XAImageDecoderCapabilitiesItfImpl_Free(XAImageDecoderCapabilitiesItfImpl* self) -{ - DEBUG_API("->XAImageDecoderCapabilitiesItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAImageDecoderCapabilitiesItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaimagedecodercapabilitiesitf.h --- a/khronosfws/openmax_al/src/engine/xaimagedecodercapabilitiesitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGEDECODERCAPABILITIESITF_H -#define XAIMAGEDECODERCAPABILITIESITF_H - -#include "openmaxalwrapper.h" -#include "xaglobals.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAImageDecoderCapabilitiesItf implementation */ -typedef struct XAImageDecoderCapabilitiesItfImpl_ -{ - /* parent interface */ - struct XAImageDecoderCapabilitiesItf_ itf; - /* pointer to self */ - struct XAImageDecoderCapabilitiesItfImpl_* self; - /* variables */ - XAuint32 numCodecs; -} XAImageDecoderCapabilitiesItfImpl; - -/* Base interface XAImageDecoderCapabilitiesItf implementation */ -XAresult XAImageDecoderCapabilitiesItfImpl_GetImageDecoderCapabilities( - XAImageDecoderCapabilitiesItf self, - XAuint32* pDecoderId, - XAImageCodecDescriptor* pDescriptor); - -XAresult XAImageDecoderCapabilitiesItfImpl_QueryColorFormats( - const XAImageDecoderCapabilitiesItf self, - XAuint32* pIndex, - XAuint32* pColorFormats); - -/* XAImageDecoderCapabilitiesItfImpl -specific methods */ -XAImageDecoderCapabilitiesItfImpl* XAImageDecoderCapabilitiesItfImpl_Create(void); -void XAImageDecoderCapabilitiesItfImpl_Free(XAImageDecoderCapabilitiesItfImpl* self); - -#endif /* XAIMAGEDECODERCAPABILITIESITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaimageencodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xaimageencodercapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xaglobals.h" -#include "xaimageencodercapabilitiesitf.h" -#include "xacapabilitiesmgr.h" -/* XAImageEncoderCapabilitiesItfImpl* GetImpl - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAImageEncoderCapabilitiesItfImpl* GetImpl(XAImageEncoderCapabilitiesItf self) -{ - if( self ) - { - XAImageEncoderCapabilitiesItfImpl* impl = (XAImageEncoderCapabilitiesItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAImageEncoderCapabilitiesItf implementation - **/ - -/* XAresult XAImageEncoderCapabilitiesItfImpl_GetImageEncoderCapabilities - * Description: Retrieves image encoder capabilities. - */ -XAresult XAImageEncoderCapabilitiesItfImpl_GetImageEncoderCapabilities( - XAImageEncoderCapabilitiesItf self, - XAuint32* pEncoderId, - XAImageCodecDescriptor* pDescriptor) -{ - XAImageEncoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - DEBUG_API("->XAImageEncoderCapabilitiesItfImpl_GetImageEncoderCapabilities"); - - impl = GetImpl(self); - - if( !impl || !pEncoderId ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if( !pDescriptor ) - { /* query number of image encoders */ - *pEncoderId = impl->numCodecs; - } - else - { - /* query capabilities from adaptation using codec id */ - - XACapabilities temp; - memset(pDescriptor,0,sizeof(XAImageCodecDescriptor)); - /* here pEncoderId refers to index rather than codec id */ - res = XACapabilitiesMgr_GetCapsByIdx(NULL, (XACapsType)(XACAP_ENCODER|XACAP_IMAGE), *pEncoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { - XAImageCodecDescriptor* desc = (XAImageCodecDescriptor*)(&temp.pEntry); - /* map applicable values to XAAudioCodecCapabilities */ - pDescriptor->codecId = temp.xaid; - pDescriptor->maxWidth = desc->maxWidth; - pDescriptor->maxHeight = desc->maxHeight; - } - - } - } - - DEBUG_API("<-XAImageEncoderCapabilitiesItfImpl_GetImageEncoderCapabilities"); - return res; -} - -/* XAresult XAImageEncoderCapabilitiesItfImpl_QueryColorFormats - * Description: This method is used to query the color formats supported - * by the image encoder. - */ -XAresult XAImageEncoderCapabilitiesItfImpl_QueryColorFormats( - const XAImageEncoderCapabilitiesItf self, - XAuint32* pIndex, - XAuint32* pColorFormats) -{ - XAImageEncoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - DEBUG_API("->XAImageEncoderCapabilitiesItfImpl_QueryColorFormats"); - - impl = GetImpl(self); - if( !impl || !pIndex ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - res = XACapabilitiesMgr_QueryColorFormats(NULL, pIndex, pColorFormats); - - } - DEBUG_API("<-XAImageEncoderCapabilitiesItfImpl_QueryColorFormats"); - return res; -} - -/** - * XAImageEncoderCapabilitiesItfImpl -specific methods - **/ - -/* XAImageEncoderCapabilitiesItfImpl_Create - * Description: Allocate and initialize XAImageEncoderCapabilitiesItfImpl - */ -XAImageEncoderCapabilitiesItfImpl* XAImageEncoderCapabilitiesItfImpl_Create() -{ - XAImageEncoderCapabilitiesItfImpl* self = (XAImageEncoderCapabilitiesItfImpl*) - calloc(1,sizeof(XAImageEncoderCapabilitiesItfImpl)); - DEBUG_API("->XAImageEncoderCapabilitiesItfImpl_Create"); - - if( self ) - { - /* init itf default implementation */ - self->itf.GetImageEncoderCapabilities = - XAImageEncoderCapabilitiesItfImpl_GetImageEncoderCapabilities; - self->itf.QueryColorFormats = - XAImageEncoderCapabilitiesItfImpl_QueryColorFormats; - - - /* init variables */ - assert( XACapabilitiesMgr_GetCapsCount( NULL, (XACapsType)(XACAP_ENCODER|XACAP_IMAGE), - &(self->numCodecs) ) == XA_RESULT_SUCCESS ); - - self->self = self; - } - DEBUG_API("<-XAImageEncoderCapabilitiesItfImpl_Create"); - return self; -} - -/* void XAImageEncoderCapabilitiesItfImpl_Free - * Description: Free all resources reserved at XAImageEncoderCapabilitiesItfImpl - */ -void XAImageEncoderCapabilitiesItfImpl_Free(XAImageEncoderCapabilitiesItfImpl* self) -{ - DEBUG_API("->XAImageEncoderCapabilitiesItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAImageEncoderCapabilitiesItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xaimageencodercapabilitiesitf.h --- a/khronosfws/openmax_al/src/engine/xaimageencodercapabilitiesitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGEENCODERCAPABILITIESITF_H -#define XAIMAGEENCODERCAPABILITIESITF_H - -#include "openmaxalwrapper.h" -#include "xaglobals.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAImageEncoderCapabilitiesItf implementation */ -typedef struct XAImageEncoderCapabilitiesItfImpl_ -{ - /* parent interface */ - struct XAImageEncoderCapabilitiesItf_ itf; - /* pointer to self */ - struct XAImageEncoderCapabilitiesItfImpl_* self; - /* variables */ - XAuint32 numCodecs; -} XAImageEncoderCapabilitiesItfImpl; - -/* Base interface XAImageEncoderCapabilitiesItf implementation */ -XAresult XAImageEncoderCapabilitiesItfImpl_GetImageEncoderCapabilities( - XAImageEncoderCapabilitiesItf self, - XAuint32* pEncoderId, - XAImageCodecDescriptor* pDescriptor); - -XAresult XAImageEncoderCapabilitiesItfImpl_QueryColorFormats( - const XAImageEncoderCapabilitiesItf self, - XAuint32* pIndex, - XAuint32* pColorFormats); - -/* XAImageEncoderCapabilitiesItfImpl -specific methods */ -XAImageEncoderCapabilitiesItfImpl* XAImageEncoderCapabilitiesItfImpl_Create(void); -void XAImageEncoderCapabilitiesItfImpl_Free(XAImageEncoderCapabilitiesItfImpl* self); - -#endif /* XAIMAGEENCODERCAPABILITIESITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xathreadsyncitf.c --- a/khronosfws/openmax_al/src/engine/xathreadsyncitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/engine/xathreadsyncitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -53,7 +53,8 @@ { impl->engInCritical = XA_BOOLEAN_TRUE; } - }DEBUG_API("<-XAThreadSyncItfImpl_EnterCriticalSection"); + } + DEBUG_API("<-XAThreadSyncItfImpl_EnterCriticalSection"); return ret; } @@ -85,7 +86,8 @@ /* The engine must be in critical section state */ DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED"); ret = XA_RESULT_PRECONDITIONS_VIOLATED; - }DEBUG_API("<-XAThreadSyncItfImpl_ExitCriticalSection"); + } + DEBUG_API("<-XAThreadSyncItfImpl_ExitCriticalSection"); return ret; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xavideodecodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xavideodecodercapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include - - -#include "xaglobals.h" -#include "xavideodecodercapabilitiesitf.h" -#include "xacapabilitiesmgr.h" - - -/* XAVideoDecoderCapabilitiesItfImpl* GetImpl - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAVideoDecoderCapabilitiesItfImpl* GetImpl(XAVideoDecoderCapabilitiesItf self) -{ - if( self ) - { - XAVideoDecoderCapabilitiesItfImpl* impl = (XAVideoDecoderCapabilitiesItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAVideoDecoderCapabilitiesItf implementation - **/ - -/* XAresult XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders - * Description: Retrieves available video decoders. - */ -XAresult XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders( - XAVideoDecoderCapabilitiesItf self, - XAuint32* pNumDecoders, - XAuint32* pDecoderIds) -{ - XAVideoDecoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders"); - - impl = GetImpl(self); - if( !impl || !pNumDecoders ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if( pDecoderIds ) - { /* query array of decoders */ - if( *pNumDecoders < impl->numCodecs ) - { - DEBUG_ERR("XA_RESULT_BUFFER_INSUFFICIENT"); - res = XA_RESULT_BUFFER_INSUFFICIENT; - } - else - { - - - XAuint32 i = 0; - XACapabilities temp; - for( i=0; inumCodecs; i++ ) - { - /* query decoder id from adaptation using index value */ - XACapabilitiesMgr_GetCapsByIdx(NULL, (XACapsType)(XACAP_DECODER|XACAP_VIDEO), i, &temp); - pDecoderIds[i] = temp.xaid; - } - - } - } - /* return number of decoders */ - *pNumDecoders = impl->numCodecs; - } - - DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders"); - return res; -} - -/* XAresult XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoderCapabilities - * Description: Retrieves video decoder capabilities. - */ -XAresult XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoderCapabilities( - XAVideoDecoderCapabilitiesItf self, - XAuint32 decoderId, - XAuint32* pIndex, - XAVideoCodecDescriptor* pDescriptor) -{ - XAVideoDecoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - DEBUG_API("->XAVideoDecoderCapabilitiesItfImpl_GetDecoderCapabilities"); - impl = GetImpl(self); - - if( !impl || !pIndex ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if( !pDescriptor ) - { /* query number of capa structures */ - *pIndex = 1; - } - else - { /* query capabilities */ - if( *pIndex >= 1 ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - /* query capabilities from adaptation using codec id */ - - XACapabilities temp; - memset(pDescriptor,0,sizeof(XAVideoCodecDescriptor)); - res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_DECODER|XACAP_VIDEO), decoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { - XAVideoCodecDescriptor* desc = (XAVideoCodecDescriptor*)(&temp.pEntry); - /* map applicable values to XAVideoCodecCapabilities */ - pDescriptor->codecId = temp.xaid; - pDescriptor->maxWidth = desc->maxWidth; - pDescriptor->maxHeight = desc->maxHeight; - pDescriptor->maxFrameRate = (desc->maxFrameRate & 0xffff)<<16; - pDescriptor->maxBitRate = desc->maxBitRate; - /*other caps undefined*/ - pDescriptor->rateControlSupported = 0; /* reserved in decoders */ - pDescriptor->profileSetting = 0; /* unknown for theora or motionjpeg */ - pDescriptor->levelSetting = 0; /* unknown for theora or motionjpeg */ - } - - } - } - } - - DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_GetDecoderCapabilities"); - return res; -} - -/** - * XAVideoDecoderCapabilitiesItfImpl -specific methods - **/ - -/* XAVideoDecoderCapabilitiesItfImpl_Create - * Description: Allocate and initialize XAVideoDecoderCapabilitiesItfImpl - */ -XAVideoDecoderCapabilitiesItfImpl* XAVideoDecoderCapabilitiesItfImpl_Create() -{ - XAVideoDecoderCapabilitiesItfImpl* self = (XAVideoDecoderCapabilitiesItfImpl*) - calloc(1,sizeof(XAVideoDecoderCapabilitiesItfImpl)); - DEBUG_API("->XAVideoDecoderCapabilitiesItfImpl_Create"); - - if( self ) - { - /* init itf default implementation */ - self->itf.GetVideoDecoders = - XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders; - self->itf.GetVideoDecoderCapabilities = - XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoderCapabilities; - - - /* init variables */ - assert( XACapabilitiesMgr_GetCapsCount( NULL, (XACapsType)(XACAP_DECODER|XACAP_VIDEO), - &(self->numCodecs) ) == XA_RESULT_SUCCESS ); - - self->self = self; - } - DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_Create"); - return self; -} - -/* void XAVideoDecoderCapabilitiesItfImpl_Free - * Description: Free all resources reserved at XAVideoDecoderCapabilitiesItfImpl_Create - */ -void XAVideoDecoderCapabilitiesItfImpl_Free(XAVideoDecoderCapabilitiesItfImpl* self) -{ - DEBUG_API("->XAVideoDecoderCapabilitiesItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xavideodecodercapabilitiesitf.h --- a/khronosfws/openmax_al/src/engine/xavideodecodercapabilitiesitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIDEODECODERCAPABILITIESITF_H -#define XAVIDEODECODERCAPABILITIESITF_H - -#include "openmaxalwrapper.h" -#include "xaglobals.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAVideoDecoderCapabilitiesItf implementation */ -typedef struct XAVideoDecoderCapabilitiesItfImpl_ -{ - /* parent interface */ - struct XAVideoDecoderCapabilitiesItf_ itf; - /* pointer to self */ - struct XAVideoDecoderCapabilitiesItfImpl_* self; - /* variables */ - XAuint32 numCodecs; -} XAVideoDecoderCapabilitiesItfImpl; - -/* Base interface XAVideoDecoderCapabilitiesItf implementation */ -XAresult XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders( - XAVideoDecoderCapabilitiesItf self, - XAuint32* pNumDecoders, - XAuint32* pDecoderIds); - -XAresult XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoderCapabilities( - XAVideoDecoderCapabilitiesItf self, - XAuint32 decoderId, - XAuint32* pIndex, - XAVideoCodecDescriptor* pDescriptor); - -/* XAVideoDecoderCapabilitiesItfImpl -specific methods */ -XAVideoDecoderCapabilitiesItfImpl* XAVideoDecoderCapabilitiesItfImpl_Create(void); -void XAVideoDecoderCapabilitiesItfImpl_Free(XAVideoDecoderCapabilitiesItfImpl* self); - -#endif /* XAVIDEODECODERCAPABILITIESITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xavideoencodercapabilitiesitf.c --- a/khronosfws/openmax_al/src/engine/xavideoencodercapabilitiesitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,200 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include - -#include "xaglobals.h" -#include "xavideoencodercapabilitiesitf.h" - -#include "xacapabilitiesmgr.h" - -/* XAVideoEncoderCapabilitiesItfImpl* GetImpl - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAVideoEncoderCapabilitiesItfImpl* GetImpl(XAVideoEncoderCapabilitiesItf self) -{ - if( self ) - { - XAVideoEncoderCapabilitiesItfImpl* impl = (XAVideoEncoderCapabilitiesItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAVideoEncoderCapabilitiesItf implementation - **/ - -/* XAresult XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders - * Description: Retrieves available video encoders. - */ -XAresult XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders( - XAVideoEncoderCapabilitiesItf self, - XAuint32* pNumEncoders, - XAuint32* pEncoderIds) -{ - XAVideoEncoderCapabilitiesItfImpl* impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - DEBUG_API("->XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders"); - - if( !impl || !pNumEncoders ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if( pEncoderIds ) - { /* query array of encoders */ - if( *pNumEncoders < impl->numCodecs ) - { - DEBUG_ERR("XA_RESULT_BUFFER_INSUFFICIENT"); - res = XA_RESULT_BUFFER_INSUFFICIENT; - } - else - { - - - XAuint32 i = 0; - XACapabilities temp; - for( i=0; inumCodecs; i++ ) - { - /* query encoder id from adaptation using index value */ - XACapabilitiesMgr_GetCapsByIdx(NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO), i, &temp); - pEncoderIds[i] = temp.xaid; - } - - } - } - /* return number of encoders */ - *pNumEncoders = impl->numCodecs; - } - - DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders"); - return res; -} - -/* XAresult XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoderCapabilities - * Description: Retrieves video encoder capabilities. - */ -XAresult XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoderCapabilities( - XAVideoEncoderCapabilitiesItf self, - XAuint32 encoderId, - XAuint32* pIndex, - XAVideoCodecDescriptor* pDescriptor) -{ - XAVideoEncoderCapabilitiesItfImpl* impl = NULL; - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XAVideoEncoderCapabilitiesItfImpl_GetEncoderCapabilities"); - impl = GetImpl(self); - if( !impl || !pIndex ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - if( !pDescriptor ) - { /* query number of capa structures */ - *pIndex = 1; - } - else - { /* query capabilities */ - if( *pIndex >= 1 ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - res = XA_RESULT_PARAMETER_INVALID; - } - else - { - - /* query capabilities from adaptation using codec id */ - XACapabilities temp; - memset(pDescriptor,0,sizeof(XAVideoCodecDescriptor)); - res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO), encoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { - XAVideoCodecDescriptor* desc = (XAVideoCodecDescriptor*)(&temp.pEntry); - /* map applicable values to XAVideoCodecCapabilities */ - pDescriptor->codecId = temp.xaid; - pDescriptor->maxWidth = desc->maxWidth; - pDescriptor->maxHeight = desc->maxHeight; - pDescriptor->maxFrameRate = (desc->maxFrameRate & 0xffff)<<16; - pDescriptor->maxBitRate = desc->maxBitRate; - /*other caps undefined*/ - pDescriptor->rateControlSupported = XA_RATECONTROLMODE_CONSTANTBITRATE; - pDescriptor->profileSetting = 0; /* unknown for theora or motionjpeg */ - pDescriptor->levelSetting = 0; /* unknown for theora or motionjpeg */ - } - - } - } - } - - DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_GetEncoderCapabilities"); - return res; -} - -/** - * XAVideoEncoderCapabilitiesItfImpl -specific methods - **/ - -/* XAVideoEncoderCapabilitiesItfImpl_Create - * Description: Allocate and initialize XAVideoEncoderCapabilitiesItfImpl - */ -XAVideoEncoderCapabilitiesItfImpl* XAVideoEncoderCapabilitiesItfImpl_Create() -{ - XAVideoEncoderCapabilitiesItfImpl* self = (XAVideoEncoderCapabilitiesItfImpl*) - calloc(1,sizeof(XAVideoEncoderCapabilitiesItfImpl)); - DEBUG_API("->XAVideoEncoderCapabilitiesItfImpl_Create"); - - if( self ) - { - /* init itf default implementation */ - self->itf.GetVideoEncoders = - XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders; - self->itf.GetVideoEncoderCapabilities = - XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoderCapabilities; - - - /* init variables */ - assert( XACapabilitiesMgr_GetCapsCount( NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO), - &(self->numCodecs) ) == XA_RESULT_SUCCESS ); - - self->self = self; - } - DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_Create"); - return self; -} - -/* void XAVideoEncoderCapabilitiesItfImpl_Free - * Description: Free all resources reserved at XAVideoEncoderCapabilitiesItfImpl_Create - */ -void XAVideoEncoderCapabilitiesItfImpl_Free(XAVideoEncoderCapabilitiesItfImpl* self) -{ - DEBUG_API("->XAVideoEncoderCapabilitiesItfImpl_Free"); - assert(self==self->self); - free(self); - DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/engine/xavideoencodercapabilitiesitf.h --- a/khronosfws/openmax_al/src/engine/xavideoencodercapabilitiesitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIDEOENCODERCAPABILITIESITF_H -#define XAVIDEOENCODERCAPABILITIESITF_H - -#include "openmaxalwrapper.h" -#include "xaglobals.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAVideoEncoderCapabilitiesItf implementation */ -typedef struct XAVideoEncoderCapabilitiesItfImpl_ -{ - /* parent interface */ - struct XAVideoEncoderCapabilitiesItf_ itf; - /* pointer to self */ - struct XAVideoEncoderCapabilitiesItfImpl_* self; - /* variables */ - XAuint32 numCodecs; -} XAVideoEncoderCapabilitiesItfImpl; - -/* Base interface XAVideoEncoderCapabilitiesItf implementation */ -XAresult XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders( - XAVideoEncoderCapabilitiesItf self, - XAuint32* pNumEncoders, - XAuint32* pEncoderIds); - -XAresult XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoderCapabilities( - XAVideoEncoderCapabilitiesItf self, - XAuint32 decoderId, - XAuint32* pIndex, - XAVideoCodecDescriptor* pDescriptor); - -/* XAVideoEncoderCapabilitiesItfImpl -specific methods */ -XAVideoEncoderCapabilitiesItfImpl* XAVideoEncoderCapabilitiesItfImpl_Create(void); -void XAVideoEncoderCapabilitiesItfImpl_Free(XAVideoEncoderCapabilitiesItfImpl* self); - -#endif /* XAVIDEOENCODERCAPABILITIESITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaadaptationgst.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaadaptationgst.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xaadaptationgst.c Wed Aug 18 10:17:22 2010 +0300 @@ -20,21 +20,9 @@ #include #include #include "xaobjectitf.h" -#include "xacameradevice.h" #include "xaradiodevice.h" -#include "xaoutputmix.h" -#include "xamediaplayeradaptctx.h" -#include "xacameraadaptctx.h" #include - -#ifdef OMAX_CAMERABIN -extern XAboolean cameraRealized; - -extern XACameraAdaptationCtx_* cameraCtx; -#else -XAboolean cameraRealized = XA_BOOLEAN_FALSE; -XACameraAdaptationCtx_* cameraCtx = NULL; -#endif +#include "xaadaptationgst.h" /* * XAAdaptationGstCtx* XAAdaptationGst_Create() * 1st phase initialization function for Adaptation Base context structure. @@ -55,6 +43,7 @@ } else { + GError* gerror = 0; /* Add default handler for Gst-bus messages */ pSelf->busCb = XAAdaptationGst_GstBusCb; @@ -63,6 +52,12 @@ // VASU MOD ENDS sem_init(&(pSelf->semAsyncWait), 0, 0); +//cross check + if ( !gst_init_check( NULL, NULL, &gerror ) ) + { + DEBUG_ERR("Gst Initalization failure."); + return XA_RESULT_INTERNAL_ERROR; + } } } else @@ -220,7 +215,8 @@ DEBUG_INFO("Unhandled Gst-Bus message") ; break; - }DEBUG_API("<-XAAdaptationGst_GstBusCb"); + } + DEBUG_API("<-XAAdaptationGst_GstBusCb"); return TRUE; } @@ -252,7 +248,8 @@ { DEBUG_ERR_A1("could not create thread!! (%d)",ret) return XA_RESULT_INTERNAL_ERROR; - }DEBUG_API("<-XAAdaptationGst_InitGstListener"); + } + DEBUG_API("<-XAAdaptationGst_InitGstListener"); return XA_RESULT_SUCCESS; } @@ -298,7 +295,8 @@ { gst_object_unref(ctx->bus); ctx->bus = NULL; - }DEBUG_API("<-XAAdaptationGst_StopGstListener"); + } + DEBUG_API("<-XAAdaptationGst_StopGstListener"); } /* @@ -363,7 +361,8 @@ GST_STATE(bCtx->bin), GST_STATE_TARGET(bCtx->bin), bCtx->binWantedState); bCtx->waitingasyncop = XA_BOOLEAN_FALSE; sem_post(&(bCtx->semAsyncWait)); - }DEBUG_API("<-XAAdaptationGst_CancelAsyncWait"); + } + DEBUG_API("<-XAAdaptationGst_CancelAsyncWait"); /* return false to remove timer */ return FALSE; } @@ -385,7 +384,8 @@ { /* should not be, reset semaphore */ sem_init(&(ctx->semAsyncWait), 0, 0); } - }DEBUG_API("<-XAAdaptationGst_CompleteAsyncWait"); + } + DEBUG_API("<-XAAdaptationGst_CompleteAsyncWait"); } /** @@ -699,43 +699,8 @@ NULL); break; case XA_DATALOCATOR_OUTPUTMIX: - DEBUG_INFO("Sink locator type - XA_DATALOCATOR_OUTPUTMIX") - ; + DEBUG_INFO("Sink locator type - XA_DATALOCATOR_OUTPUTMIX"); { - /* Get OutputMix adaptation from data locator */ - XADataLocator_OutputMix* omix = - (XADataLocator_OutputMix*) (xaSnk->pLocator); - if (omix->outputMix) - { - XAOMixImpl* omixDevice = - (XAOMixImpl*) (*omix->outputMix); - - if (omixDevice) - { - /*TODO we had to remove this line below since adaptationCtx - * was not a member of structure*/ - - /*gstSnk = XAOutputMixAdapt_GetSink(omixDevice->adaptationCtx);*/ - if (!gstSnk) - { - DEBUG_ERR("Cannot create sink!"); - return NULL; - } - *isobj = XA_BOOLEAN_TRUE; - } - else - { - DEBUG_ERR("Warning - NULL outputmix object - default audio output used"); - gstSnk = gst_element_factory_make("alsasink", - name); - } - } - else - { - DEBUG_ERR("Warning - NULL outputmix object - default audio output used"); - gstSnk = gst_element_factory_make("alsasink", name); - } - } break; @@ -761,7 +726,8 @@ if (gstSnk) { DEBUG_INFO_A1("Created gstreamer sink element at %x", gstSnk); - }DEBUG_API("<-XAAdaptationGst_CreateGstSink"); + } + DEBUG_API("<-XAAdaptationGst_CreateGstSink"); return gstSnk; } @@ -947,7 +913,8 @@ gst_object_unref(vpp); vpp = NULL; } - }DEBUG_API("<-XAAdaptationGst_CreateVideoPP"); + } + DEBUG_API("<-XAAdaptationGst_CreateVideoPP"); return vpp; } @@ -1095,7 +1062,8 @@ gst_object_unref(vpp); vpp = NULL; } - }DEBUG_API("<-XAAdaptationGst_CreateFixedSizeVideoPP"); + } + DEBUG_API("<-XAAdaptationGst_CreateFixedSizeVideoPP"); return vpp; } @@ -1148,7 +1116,8 @@ gst_object_unref(vppBScr); vppBScr = NULL; } - }DEBUG_API("<-XAAdaptationGst_CreateVideoPPBlackScr"); + } + DEBUG_API("<-XAAdaptationGst_CreateVideoPPBlackScr"); return vppBScr; } @@ -1166,7 +1135,8 @@ if (inputSelector) { g_object_set(G_OBJECT(inputSelector), "select-all", TRUE, NULL); - }DEBUG_API("<-XAAdaptationGst_CreateInputSelector"); + } + DEBUG_API("<-XAAdaptationGst_CreateInputSelector"); return inputSelector; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaaudioencoderitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaaudioencoderitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xaaudioencoderitfadaptation.c Wed Aug 18 10:17:22 2010 +0300 @@ -52,7 +52,8 @@ mCtx->encodingchanged = XA_BOOLEAN_TRUE; memcpy(&mCtx->audioEncSettings, pSettings, sizeof(XAAudioEncoderSettings)); - }DEBUG_API("<-XAAudioEncoderItfAdapt_SetEncoderSettings"); + } + DEBUG_API("<-XAAudioEncoderItfAdapt_SetEncoderSettings"); return ret; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,294 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xacameraadaptctx.h" -#include "xaadaptationgst.h" -#include -//#include "XAStaticCapsAdaptation.h" - - -XAboolean cameraRealized = XA_BOOLEAN_FALSE; -XACameraAdaptationCtx_* cameraCtx = NULL; - -/* - * gboolean XACameraAdapt_GstBusCb( GstBus *bus, GstMessage *message, gpointer data ) - * MediaPlayer Gst-bus message handler (Callback) - */ -gboolean XACameraAdapt_GstBusCb( GstBus *bus, GstMessage *message, gpointer data ) -{ - XACameraAdaptationCtx* mCtx = (XACameraAdaptationCtx*)data; - XAAdaptEvent event = {XA_CAMERAITFEVENTS,XA_CAMERACBEVENT_FOCUSSTATUS,1,NULL}; - XAuint32 status; - - /* only listen to pipeline messages */ - if(GST_MESSAGE_SRC(message)==(GstObject*)(mCtx->baseObj.bin) ) - { - DEBUG_API_A2("->XACameraAdapt_GstBusCb:\"%s\" from object \"%s\"", - GST_MESSAGE_TYPE_NAME(message), GST_OBJECT_NAME(GST_MESSAGE_SRC(message))); - - if ( GST_MESSAGE_TYPE(message)== GST_MESSAGE_ASYNC_DONE ) - { - /* some async sequence ended */ - XAAdaptationGst_CompleteAsyncWait((&mCtx->baseObj)); - } - else if (strncmp(GST_MESSAGE_TYPE_NAME(message), GST_PHOTOGRAPHY_AUTOFOCUS_DONE, - strlen(GST_PHOTOGRAPHY_AUTOFOCUS_DONE))==0 ) - { - DEBUG_INFO("Autofocus done!.") - status = XA_CAMERA_FOCUSMODESTATUS_REACHED; - event.data = &status; - XAAdaptationBase_SendAdaptEvents(&(mCtx->baseObj.baseObj), &event ); - } - else if ( strncmp(GST_MESSAGE_TYPE_NAME(message), GST_PHOTOGRAPHY_SHAKE_RISK, - strlen(GST_PHOTOGRAPHY_SHAKE_RISK)) ==0 ) - { - DEBUG_INFO("Camera shake risk!") - } - DEBUG_API("<-XACameraAdapt_GstBusCb"); - } - return TRUE; -} - -/* - * XAAdaptationGstCtx* XACameraAdapt_Create() - * Allocates memory for Camera Adaptation Context and makes 1st phase initialization - * @returns XACameraAdaptationCtx* - Pointer to created context - */ -XAAdaptationBaseCtx* XACameraAdapt_Create(XAuint32 deviceID) -{ - XACameraAdaptationCtx *pSelf = (XACameraAdaptationCtx*) calloc(1, sizeof(XACameraAdaptationCtx)); - DEBUG_API("->XACameraAdapt_Create"); - if ( pSelf) - { - if( XAAdaptationGst_Init(&(pSelf->baseObj),XACameraAdaptation) - != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to init base context!!!"); - free(pSelf); - pSelf = NULL; - } - else - { - pSelf->deviceID = deviceID; - pSelf->curMirror = XA_VIDEOMIRROR_NONE; - pSelf->curRotation = 0; - pSelf->recording = XA_BOOLEAN_FALSE; - pSelf->playing = XA_BOOLEAN_FALSE; - pSelf->snapshotting = XA_BOOLEAN_FALSE; - cameraCtx = pSelf; /* Store global pointer */ - DEBUG_INFO_A1("Stored global camera ponter to %x", cameraCtx); - cameraRealized = XA_BOOLEAN_FALSE; - } - } - - DEBUG_API("<-XACameraAdapt_Create"); - return (XAAdaptationBaseCtx*)&pSelf->baseObj; -} - -/* - * XAresult XACameraAdapt_PostInit() - * 2nd phase initialization of Camera Adaptation Context - */ -XAresult XACameraAdapt_PostInit(XAAdaptationBaseCtx* bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - - XACameraAdaptationCtx* ctx = NULL; - DEBUG_API("->XACameraAdapt_PostInit"); - if(bCtx == NULL || bCtx->ctxId != XACameraAdaptation) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XACameraAdapt_PostInit"); - return XA_RESULT_PARAMETER_INVALID; - } - ctx = (XACameraAdaptationCtx*)bCtx; - - if ( !ctx ) - { - return XA_RESULT_INTERNAL_ERROR; - } - - XAAdaptationGst_PostInit( &(ctx->baseObj) ); - - ctx->baseObj.bin = gst_element_factory_make( "camerabin", "camera"); - if ( !ctx->baseObj.bin ) - { - DEBUG_ERR("Failed to create CameraBin"); - return XA_RESULT_INTERNAL_ERROR; - } - - /* Create Gst bus listener. */ - ret = XAAdaptationGst_InitGstListener(&(ctx->baseObj)); - if( ret!=XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Bus listener creation failed!!"); - return ret; - } - /* Add Camera specific handler */ - if(ctx->baseObj.bus) - { - ctx->baseObj.busCb = XACameraAdapt_GstBusCb; - gst_bus_add_signal_watch( ctx->baseObj.bus); - g_signal_connect(ctx->baseObj.bus, "message::autofocus-done", G_CALLBACK(ctx->baseObj.busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::shake-risk", G_CALLBACK(ctx->baseObj.busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::async-done", G_CALLBACK(ctx->baseObj.busCb), ctx ); - } - else - { - DEBUG_ERR("Failed to create message bus"); - return XA_RESULT_INTERNAL_ERROR; - } - - - /* SET UP CAMERABIN */ - - /* use test video source if set, camerabin default (v4l2src) otherwise */ -#ifdef XA_USE_TEST_PLUGINS - if(ctx->deviceID == XA_ADAPTID_VIDEOTESTSRC || ctx->deviceID == XA_DEFAULTDEVICEID_CAMERA ) -#else - if(ctx->deviceID == XA_ADAPTID_VIDEOTESTSRC ) -#endif - { - g_object_set( G_OBJECT(ctx->baseObj.bin), "videosrc", gst_element_factory_make("videotestsrc", "videotestsrc"), NULL ); - } - - /* set viewfinder element to be fake for the time of preroll.. if ghost pad added now, - * stupid camerabin makes circular linking... - */ - g_object_set( G_OBJECT(ctx->baseObj.bin), "vfsink" ,gst_element_factory_make("fakesink", "fakevfsink"), NULL ); - - /* Setup camerabin to produce raw video */ - g_object_set( G_OBJECT(ctx->baseObj.bin), "videomux",NULL, NULL ); - g_object_set( G_OBJECT(ctx->baseObj.bin), "videoenc",NULL, NULL ); - g_object_set( G_OBJECT(ctx->baseObj.bin), "mute", TRUE, NULL ); - g_object_set( G_OBJECT(ctx->baseObj.bin), "async-handling", FALSE, NULL); - g_object_set( G_OBJECT(ctx->baseObj.bin), "mode",(gint)1, NULL); - - - /* drive camerabin to READY to create the elements inside bin */ - gst_element_set_state( GST_ELEMENT(ctx->baseObj.bin), GST_STATE_READY); - - if(ctx->deviceID == XA_ADAPTID_VIDEOTESTSRC) - { /* set properties for videotestsrc */ - GstElement *testsrc = gst_bin_get_by_name(GST_BIN(ctx->baseObj.bin), "videotestsrc"); - g_object_set( G_OBJECT(testsrc),"is-live", TRUE, NULL); - g_object_set( G_OBJECT(testsrc),"do-timestamp", TRUE, NULL); - gst_object_unref(G_OBJECT(testsrc)); - } - - /* do some filter optimization */ -#ifdef XA_USE_TEST_PLUGINS - g_object_set( G_OBJECT(ctx->baseObj.bin), "filter-caps", - gst_caps_new_simple("video/x-raw-yuv", - "format", GST_TYPE_FOURCC,GST_MAKE_FOURCC('I','4','2','0'), - "framerate",GST_TYPE_FRACTION_RANGE,0,1,30,1, NULL) - ,NULL ); -#else - g_object_set( G_OBJECT(ctx->baseObj.bin), "filter-caps", - gst_caps_new_simple("video/x-raw-yuv", - "format", GST_TYPE_FOURCC,GST_MAKE_FOURCC('Y','U','Y','2'), - "framerate",GST_TYPE_FRACTION_RANGE,0,1,30,1, NULL) - ,NULL ); - -#endif - - /* now, unlink fake sink, create camera post processing pipeline and create ghost pad from it */ - { - GstElement *fakesink = gst_bin_get_by_name(GST_BIN(ctx->baseObj.bin),"fakevfsink"); - GstPad *fakepad = gst_element_get_static_pad(fakesink,"sink"); - GstPad *linkedpad = gst_pad_get_peer(fakepad); - GstElement *linkedelement = gst_pad_get_parent_element(linkedpad); - GstElement * cameraPP = NULL; - GstElement * camfilter = NULL; - GstElement *tee = NULL; - - /* Unlink fakesink */ - gst_element_unlink(linkedelement,fakesink); - /* Create VideoPP pipeline for Camera object */ - cameraPP = XAAdaptationGst_CreateVideoPP(); - g_object_set( G_OBJECT(cameraPP),"name", "videopp_camera", NULL); - gst_bin_add( GST_BIN(ctx->baseObj.bin), cameraPP ); - /*Link videoPP into camera bin last element */ - if (! gst_element_link( linkedelement, cameraPP )) - { - DEBUG_ERR("Could not link VideoPP to Camera bin!!"); - return XA_RESULT_INTERNAL_ERROR; - } - - /* Add extra filter for caps negotiable after post processing*/ - camfilter = gst_element_factory_make("capsfilter", "camfilter"); - gst_bin_add( GST_BIN(ctx->baseObj.bin), camfilter ); - if(! gst_element_link( cameraPP, camfilter )) - { - DEBUG_ERR("Could not link camera bin to camerafilter!!"); - return XA_RESULT_INTERNAL_ERROR; - } - - /* Add tee element into camerabin */ - tee = gst_element_factory_make( "tee", "CamTee"); - gst_bin_add( GST_BIN(ctx->baseObj.bin), tee); - if (! gst_element_link( camfilter, tee )) - { - DEBUG_ERR("Could not link camera filter to tee element!!"); - return XA_RESULT_INTERNAL_ERROR; - } - /* Unref */ - gst_object_unref(linkedelement); - gst_object_unref(linkedpad); - gst_object_unref(fakepad); - gst_bin_remove(GST_BIN(ctx->baseObj.bin),fakesink); - gst_object_unparent(GST_OBJECT(fakesink)); - } - - if ( ret == XA_RESULT_SUCCESS ) - { - cameraRealized = XA_BOOLEAN_TRUE; - } - - DEBUG_API("<-XACameraAdapt_PostInit"); - return ret; -} - -/* - * void XACameraAdapt_Destroy(XACameraAdaptationCtx* ctx) - * Destroys Camera Adaptation Context - * @param ctx - Camera Adaptation context to be destroyed - */ -void XACameraAdapt_Destroy(XAAdaptationBaseCtx* bCtx) -{ - XACameraAdaptationCtx* ctx = NULL; - - DEBUG_API("->XACameraAdapt_Destroy"); - if(bCtx == NULL || bCtx->ctxId != XACameraAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XACameraAdapt_Destroy"); - return; - } - ctx = (XACameraAdaptationCtx*)bCtx; - - XAAdaptationGst_Free(&(ctx->baseObj)); - - free(ctx); - ctx = NULL; - cameraCtx = NULL; - cameraRealized = XA_BOOLEAN_FALSE; - DEBUG_API("<-XACameraAdapt_Destroy"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XACAMERAADAPTCTX_H -#define XACAMERAADAPTCTX_H - -#include "xaadaptationgst.h" -#ifdef OMAX_CAMERABIN -#include -#endif -/* TYPEDEFS */ - -typedef struct XACameraAdaptationCtx_ XACameraAdaptationCtx; - -/* - * Structure for Camera specific gst-adaptation variables - */ -typedef struct XACameraAdaptationCtx_ { - - /* Parent*/ - XAAdaptationGstCtx_ baseObj; - - /* OMX-AL Variables */ - XAuint32 deviceID; - XAuint32 imageEffectID; - XAmillidegree curRotation; - XAuint32 curMirror; - - /* GST Variables */ -#ifdef OMAX_CAMERABIN - GstFocusStatus focusStatus; -#endif - /* Internals */ - XAboolean recording; - XAboolean playing; - XAboolean snapshotting; -} XACameraAdaptationCtx_; - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XACameraAdapt_Create(XAuint32 deviceID); -XAresult XACameraAdapt_PostInit(XAAdaptationBaseCtx* bCtx); -void XACameraAdapt_Destroy(XAAdaptationBaseCtx* bCtx); - -#endif /* XACAMERAADAPTCTX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xacameraitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xacameraitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,429 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xacameraadaptctx.h" -#include "xacameraitfadaptation.h" -#include "xaadaptationgst.h" - - -/* - * XAresult XACameraItfAdapt_SetFlashMode( XAAdaptationGstCtx *bCtx, XAuint32 flashMode ); - */ -XAresult XACameraItfAdapt_SetFlashMode( XAAdaptationGstCtx *bCtx, XAuint32 flashMode ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAAdaptEvent event = {XA_CAMERAITFEVENTS,XA_CAMERACBEVENT_FLASHREADY,0,0}; - GstFlashMode gstFlashmode; - - DEBUG_API_A1("->XACameraItfAdapt_SetFlashMode 0x%x",(int)flashMode); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - switch( flashMode ) - { - case XA_CAMERA_FLASHMODE_OFF: - gstFlashmode = GST_PHOTOGRAPHY_FLASH_MODE_OFF; - break; - case XA_CAMERA_FLASHMODE_ON: - gstFlashmode = GST_PHOTOGRAPHY_FLASH_MODE_ON; - break; - case XA_CAMERA_FLASHMODE_AUTO: - gstFlashmode = GST_PHOTOGRAPHY_FLASH_MODE_AUTO; - break; - case XA_CAMERA_FLASHMODE_REDEYEREDUCTION: - gstFlashmode = GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE; - break; - case XA_CAMERA_FLASHMODE_FILLIN: - gstFlashmode = GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN; - break; - case XA_CAMERA_FLASHMODE_TORCH: - case XA_CAMERA_FLASHMODE_REDEYEREDUCTION_AUTO: - default: - DEBUG_INFO("Mode not supported in GstPhotography!"); - ret = XA_RESULT_PARAMETER_INVALID; - break; - } - - if(ret == XA_RESULT_SUCCESS && GST_IS_PHOTOGRAPHY(bCtx->bin)) - { - if ( !gst_photography_set_flash_mode( GST_PHOTOGRAPHY(bCtx->bin), gstFlashmode ) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - if(ret == XA_RESULT_SUCCESS) - { - /* no gst event, senc cb now */ - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - - DEBUG_API("<-XACameraItfAdapt_SetFlashMode"); - return ret; -} - -/* - * XAresult XACameraItfAdapt_SetFocusMode( XAAdaptationGstCtx *bCtx, XAuint32 focusMode, - * XAmillimeter manualSetting, - * XAboolean macroEnabled ) - */ -XAresult XACameraItfAdapt_SetFocusMode( XAAdaptationGstCtx *bCtx, XAuint32 focusMode, - XAmillimeter manualSetting, XAboolean macroEnabled ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAAdaptEvent event = {XA_CAMERAITFEVENTS,XA_CAMERACBEVENT_FOCUSSTATUS,1,NULL}; - XAuint32 status; - - DEBUG_API_A3("->XACameraItfAdapt_SetFocusMode - focusMode:%d, manualSetting:%d, macroEnabled:%d", - (int)focusMode, (int)manualSetting, (int)macroEnabled); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - if(GST_IS_PHOTOGRAPHY(bCtx->bin)) - { - if ( focusMode == XA_CAMERA_FOCUSMODE_AUTO ) - { - gst_photography_set_autofocus( GST_PHOTOGRAPHY(bCtx->bin), TRUE ); - status = XA_CAMERA_FOCUSMODESTATUS_REQUEST; - event.data = &status; - } - else - { - /* Only auto focus supported in GstPhotography, other modes sets auto focus off */ - DEBUG_INFO("No support in GstPhotography"); - gst_photography_set_autofocus( GST_PHOTOGRAPHY(bCtx->bin), FALSE ); - status = XA_CAMERA_FOCUSMODESTATUS_OFF; - event.data = &status; - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - } - else - { - status = XA_CAMERA_FOCUSMODESTATUS_OFF; - event.data = &status; - } - - if(event.data) - { - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - - DEBUG_API("<-XACameraItfAdapt_SetFocusMode"); - return ret; -} - -/* - * XAresult XACameraItfAdapt_SetFocusRegionPattern( XAAdaptationGstCtx *bCtx, - * XAuint32 focusPattern, - * XAuint32 activePoints1, - * XAuint32 activePoints2 ) - */ -XAresult XACameraItfAdapt_SetFocusRegionPattern( XAAdaptationGstCtx *bCtx, XAuint32 focusPattern, - XAuint32 activePoints1, XAuint32 activePoints2 ) -{ - DEBUG_API_A3("->XACameraItfAdapt_SetFocusRegionPattern - focusPattern:%d, activePoints1:%d, activePoints2:%d", - (int)focusPattern,(int)activePoints1,(int)activePoints2); - DEBUG_INFO("No support for focus region pattern in GstPhotography "); - DEBUG_API("<-XACameraItfAdapt_SetFocusRegionPattern"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* XAresult XACameraItfAdapt_GetFocusRegionPositions( XAAdaptationGstCtx *bCtx, XAuint32 *pNumPositionEntries, - * XAFocusPointPosition *pFocusPosition ) - */ -XAresult XACameraItfAdapt_GetFocusRegionPositions( XAAdaptationGstCtx *bCtx, XAuint32 *pNumPositionEntries, - XAFocusPointPosition *pFocusPosition ) -{ - DEBUG_API("->XACameraItfAdapt_GetFocusRegionPositions"); - DEBUG_INFO("No focus region support in GstPhotography"); - DEBUG_API("<-XACameraItfAdapt_GetFocusRegionPositions"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XACameraItfAdapt_SetMeteringMode( XAAdaptationGstCtx *bCtx, XAuint32 meteringMode ) - */ -XAresult XACameraItfAdapt_SetMeteringMode( XAAdaptationGstCtx *bCtx, XAuint32 meteringMode ) -{ - DEBUG_API_A1("->XACameraItfAdapt_SetMeteringMode - meteringMode:%d",(int)meteringMode); - DEBUG_INFO("No metering modes support in GstPhotography"); - DEBUG_API("<-XACameraItfAdapt_SetMeteringMode"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XACameraItfAdapt_SetExposureMode( XAAdaptationGstCtx *bCtx, XAuint32 exposure, XAuint32 compensation ) - */ -XAresult XACameraItfAdapt_SetExposureMode( XAAdaptationGstCtx *bCtx, XAuint32 exposure, XAuint32 compensation ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAAdaptEvent event = {XA_CAMERAITFEVENTS,XA_CAMERACBEVENT_EXPOSURESTATUS,1,NULL}; - GstSceneMode expmode = GST_PHOTOGRAPHY_SCENE_MODE_AUTO; - - DEBUG_API_A2("->XACameraItfAdapt_SetExposureMode - exposure:%d, compensation:%d", - (int)exposure, (int)compensation); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - switch(exposure) - { - case XA_CAMERA_EXPOSUREMODE_AUTO: - expmode = GST_PHOTOGRAPHY_SCENE_MODE_AUTO; - break; - case XA_CAMERA_EXPOSUREMODE_SPORTS: - expmode = GST_PHOTOGRAPHY_SCENE_MODE_SPORT; - break; - case XA_CAMERA_EXPOSUREMODE_PORTRAIT: - expmode = GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT; - break; - case XA_CAMERA_EXPOSUREMODE_NIGHT: - expmode = GST_PHOTOGRAPHY_SCENE_MODE_NIGHT; - break; - default: - DEBUG_INFO("GstPhotography doesn't support other than manual settings"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - - if(GST_IS_PHOTOGRAPHY(bCtx->bin)&&ret==XA_RESULT_SUCCESS) - { - if (!gst_photography_set_scene_mode( GST_PHOTOGRAPHY(bCtx->bin), expmode) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - else if (exposure == XA_CAMERA_EXPOSUREMODE_AUTO) - { - if (!gst_photography_set_ev_compensation( GST_PHOTOGRAPHY(bCtx->bin), compensation) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - } - if(ret == XA_RESULT_SUCCESS) - { - event.data = &exposure; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - - DEBUG_API("<-XACameraItfAdapt_SetExposureMode"); - return ret; -} - -/* - * XAresult XACameraItfAdapt_SetISOSensitivity( XAAdaptationGstCtx *bCtx, XAuint32 isoSensitivity, XAuint32 manualSetting ) - */ -XAresult XACameraItfAdapt_SetISOSensitivity( XAAdaptationGstCtx *bCtx, XAuint32 isoSensitivity, XAuint32 manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API_A2("->XACameraItfAdapt_SetISOSensitivity - isoSensitivity:%d, manualSetting:%d", - (int)isoSensitivity, (int)manualSetting); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - if ( isoSensitivity == XA_CAMERA_ISOSENSITIVITYMODE_MANUAL) - { - if(GST_IS_PHOTOGRAPHY(bCtx->bin)) - { - if ( !gst_photography_set_iso_speed (GST_PHOTOGRAPHY(bCtx->bin), manualSetting ) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - } - else - { - DEBUG_INFO("Iso sensitivity auto not supported in GstPhotography, stubbed value"); - ret = XA_RESULT_SUCCESS; - } - - DEBUG_API("<-XACameraItfAdapt_SetISOSensitivity"); - return ret; -} - -/* - * XAresult XACameraItfAdapt_SetAperture( XAAdaptationGstCtx *bCtx, XAuint32 aperture, XAuint32 manualSetting ) - */ -XAresult XACameraItfAdapt_SetAperture( XAAdaptationGstCtx *bCtx, XAuint32 aperture, XAuint32 manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API_A2("->XACameraItfAdapt_SetAperture - aperture:%d, manualSetting:%d", - (int)aperture, (int)manualSetting); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - if ( aperture == XA_CAMERA_APERTUREMODE_MANUAL ) - { - if(GST_IS_PHOTOGRAPHY(bCtx->bin)) - { - if (!gst_photography_set_aperture ( GST_PHOTOGRAPHY(bCtx->bin), manualSetting) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - } - else - { - DEBUG_INFO("GstPhotography doesn't support auto aperture settings"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - - DEBUG_API("<-XACameraItfAdapt_SetAperture"); - return ret; -} - -/* - * XAresult XACameraItfAdapt_SetShutterSpeed( XAAdaptationGstCtx *bCtx, XAuint32 shutterSpeed, XAmicrosecond manualSetting ) - */ -XAresult XACameraItfAdapt_SetShutterSpeed( XAAdaptationGstCtx *bCtx, XAuint32 shutterSpeed, XAmicrosecond manualSetting ) -{ - DEBUG_API_A2("->XACameraItfAdapt_SetShutterSpeed - shutterSpeed:%d, manualSetting:%d", - (int)shutterSpeed, (int)manualSetting); - DEBUG_INFO("Shutter speed setting not supported in GstPhotography"); - DEBUG_API("<-XACameraItfAdapt_SetShutterSpeed"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XACameraItfAdapt_SetWhiteBalance( XAAdaptationGstCtx *bCtx, XAuint32 whiteBalance, XAuint32 manualSetting ) - */ -XAresult XACameraItfAdapt_SetWhiteBalance( XAAdaptationGstCtx *bCtx, XAuint32 whiteBalance, XAuint32 manualSetting ) -{ - XAresult ret = XA_RESULT_SUCCESS; - GstWhiteBalanceMode gstWbMode = GST_PHOTOGRAPHY_WB_MODE_AUTO; - - DEBUG_API_A2("->XACameraItfAdapt_SetWhiteBalance - whiteBalance:%d, manualSetting:%d", - (int)whiteBalance, (int)manualSetting); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - switch ( whiteBalance ) - { - case XA_CAMERA_WHITEBALANCEMODE_AUTO: - gstWbMode = GST_PHOTOGRAPHY_WB_MODE_AUTO; - break; - case XA_CAMERA_WHITEBALANCEMODE_SUNLIGHT: - gstWbMode = GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT; - break; - case XA_CAMERA_WHITEBALANCEMODE_CLOUDY: - gstWbMode = GST_PHOTOGRAPHY_WB_MODE_CLOUDY; - break; - case XA_CAMERA_WHITEBALANCEMODE_TUNGSTEN: - gstWbMode = GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN; - break; - case XA_CAMERA_WHITEBALANCEMODE_FLUORESCENT: - gstWbMode = GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT; - break; - case XA_CAMERA_WHITEBALANCEMODE_SUNSET: - gstWbMode = GST_PHOTOGRAPHY_WB_MODE_SUNSET; - break; - case XA_CAMERA_WHITEBALANCEMODE_INCANDESCENT: - case XA_CAMERA_WHITEBALANCEMODE_FLASH: - case XA_CAMERA_WHITEBALANCEMODE_MANUAL: - case XA_CAMERA_WHITEBALANCEMODE_SHADE: - DEBUG_INFO("Wanted white balance mode not supported!"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - default: - break; - } - - if(ret == XA_RESULT_SUCCESS && GST_IS_PHOTOGRAPHY(bCtx->bin)) - { - if ( !gst_photography_set_white_balance_mode( GST_PHOTOGRAPHY(bCtx->bin), gstWbMode ) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - - DEBUG_API("<-XACameraItfAdapt_SetWhiteBalance"); - return ret; -} - -/* - * XAresult XACameraItfAdapt_SetAutoLocks( XAAdaptationGstCtx *bCtx, XAuint32 locks ) - */ -XAresult XACameraItfAdapt_SetAutoLocks( XAAdaptationGstCtx *bCtx, XAuint32 locks ) -{ - DEBUG_API_A1("->XACameraItfAdapt_SetAutoLocks - locks:%d", (int)locks); - DEBUG_INFO("No autolocks support in GstPhotography") - DEBUG_API("<-XACameraItfAdapt_SetAutoLocks"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XACameraItfAdapt_SetZoom( XAAdaptationGstCtx *bCtx, XAuint32 zoom, XAboolean digitalEnabled, XAuint32 speed, XAboolean async ) - */ -XAresult XACameraItfAdapt_SetZoom( XAAdaptationGstCtx *bCtx, XAuint32 zoom, XAboolean digitalEnabled, XAuint32 speed, XAboolean async ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAAdaptEvent event = {XA_CAMERAITFEVENTS,XA_CAMERACBEVENT_ZOOMSTATUS,1,NULL}; - gint gstZoom; - - DEBUG_API_A4("->XACameraItfAdapt_SetZoom - zoom:%d,digitalEnabled:%d,speed:%d,async:%d ", - (int)zoom,(int)digitalEnabled,(int)speed,(int)async); - if(!bCtx || bCtx->baseObj.ctxId != XACameraAdaptation || zoom < 1 ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - if ( zoom > 10 ) - { - gstZoom = MAX_ZOOM; - } - else - { - /* Gst Zoom range 100 - 1000, 100 = 1x, 200 = 2x, ...*/ - gstZoom = zoom * 100; - } - if(GST_IS_PHOTOGRAPHY(bCtx->bin)) - { - if ( !gst_photography_set_zoom( GST_PHOTOGRAPHY(bCtx->bin), gstZoom ) ) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - if( ret == XA_RESULT_SUCCESS && async ) - { - /* no gst event, send cb now*/ - event.data = &zoom; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - - DEBUG_API("<-XACameraItfAdapt_SetZoom"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xacameraitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xacameraitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XACAMERAITFADAPTATION_H_ -#define XACAMERAITFADAPTATION_H_ - -#include "xaadaptationgst.h" - -#define MAX_ZOOM 1000; - -/* FUNCTIONS */ - -XAresult XACameraItfAdapt_SetFlashMode( XAAdaptationGstCtx *bCtx, XAuint32 flashMode ); -XAresult XACameraItfAdapt_SetFocusMode( XAAdaptationGstCtx *bCtx, XAuint32 focusMode, XAmillimeter manualSetting, XAboolean macroEnabled ); -XAresult XACameraItfAdapt_SetFocusRegionPattern( XAAdaptationGstCtx *bCtx, XAuint32 focusPattern, XAuint32 activePoints1, XAuint32 activePoints2 ); -XAresult XACameraItfAdapt_GetFocusRegionPositions( XAAdaptationGstCtx *bCtx, XAuint32 *pNumPositionEntries, XAFocusPointPosition *pFocusPosition ); -XAresult XACameraItfAdapt_SetMeteringMode( XAAdaptationGstCtx *bCtx, XAuint32 meteringMode ); -XAresult XACameraItfAdapt_SetExposureMode( XAAdaptationGstCtx *bCtx, XAuint32 exposure, XAuint32 compensation ); -XAresult XACameraItfAdapt_SetISOSensitivity( XAAdaptationGstCtx *bCtx, XAuint32 isoSensitivity, XAuint32 manualSetting ); -XAresult XACameraItfAdapt_SetAperture( XAAdaptationGstCtx *bCtx, XAuint32 aperture, XAuint32 manualSetting ); -XAresult XACameraItfAdapt_SetShutterSpeed( XAAdaptationGstCtx *bCtx, XAuint32 shutterSpeed, XAmicrosecond manualSetting ); -XAresult XACameraItfAdapt_SetWhiteBalance( XAAdaptationGstCtx *bCtx, XAuint32 whiteBalance, XAuint32 manualSetting ); -XAresult XACameraItfAdapt_SetAutoLocks( XAAdaptationGstCtx *bCtx, XAuint32 locks ); -XAresult XACameraItfAdapt_SetZoom( XAAdaptationGstCtx *bCtx, XAuint32 zoom, XAboolean digitalEnabled, XAuint32 speed, XAboolean async ); - -#endif /* XACAMERAITFADAPTATION_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xadevicevolumeitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xadevicevolumeitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xadevicevolumeitfadaptation.h" -#include "xaengineadaptctx.h" -#include "xaadaptationgst.h" -//#include "XAStaticCapsAdaptation.h" - - -/* XAresult XADeviceVolumeItfAdapt_SetVolume - * Description: Sets the device's volume. - */ -XAresult XADeviceVolumeItfAdapt_SetVolume(XAAdaptationGstCtx *bCtx, XAuint32 deviceID, XAint32 volume) -{ - XAEngineAdaptationCtx* ctx = NULL; - GstElement* amixer = NULL; - GstMixerTrack *mixerTrack = NULL; - const GList *gList = NULL; - gint volumeIdx = 0; - - DEBUG_API("->XADeviceVolumeItfAdapt_SetVolume"); - - if(!bCtx ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfAdapt_SetVolume"); - return XA_RESULT_PARAMETER_INVALID; - } - - ctx = (XAEngineAdaptationCtx*) bCtx; - - amixer = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "alsamixer"); - if( !amixer ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XADeviceVolumeItfAdapt_SetVolume"); - return XA_RESULT_INTERNAL_ERROR; - } - - gList = gst_mixer_list_tracks( GST_MIXER(amixer) ); - if( !gList ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XADeviceVolumeItfAdapt_SetVolume"); - return XA_RESULT_INTERNAL_ERROR; - } - - while( gList ) - { - mixerTrack = (GstMixerTrack*)gList->data; - if( !mixerTrack ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XADeviceVolumeItfAdapt_SetVolume"); - return XA_RESULT_INTERNAL_ERROR; - } - - if( ((mixerTrack->flags & GST_MIXER_TRACK_INPUT ) && deviceID == XA_DEFAULTDEVICEID_AUDIOINPUT) || -// ((mixerTrack->flags & GST_MIXER_TRACK_INPUT ) && deviceID == XA_ADAPTID_ALSASRC) || //krishna - ((mixerTrack->flags & GST_MIXER_TRACK_INPUT ) && deviceID == XA_ADAPTID_DEVSOUNDSRC) || - ((mixerTrack->flags & GST_MIXER_TRACK_INPUT ) && deviceID == XA_ADAPTID_AUDIOTESTSRC) || - ((mixerTrack->flags & GST_MIXER_TRACK_OUTPUT ) && deviceID == XA_DEFAULTDEVICEID_AUDIOOUTPUT) || - ((mixerTrack->flags & GST_MIXER_TRACK_OUTPUT ) && deviceID == XA_ADAPTID_JACKSINK) || -// ((mixerTrack->flags & GST_MIXER_TRACK_OUTPUT ) && deviceID == XA_ADAPTID_ALSASINK) ) - ((mixerTrack->flags & GST_MIXER_TRACK_OUTPUT ) && deviceID == XA_ADAPTID_DEVSOUNDSINK) ) - { - gint *gVolume = (gint*) calloc(mixerTrack->num_channels, sizeof(gint) ); - if( !gVolume ) - { - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XADeviceVolumeItfAdapt_SetVolume"); - return XA_RESULT_MEMORY_FAILURE; - } - - for( volumeIdx = 0; volumeIdx < mixerTrack->num_channels; volumeIdx++ ) - { - /* Set same volume level for all channels */ - gVolume[volumeIdx] = (gint)volume; - } - - /* found master track */ - gst_mixer_set_volume( GST_MIXER(amixer), mixerTrack, gVolume ); - free( gVolume ); - gVolume = NULL; - break; - } - gList = g_list_next(gList); - } - if ( amixer ) - { - gst_object_unref( GST_OBJECT(amixer)); - } - - DEBUG_API("<-XADeviceVolumeItfAdapt_SetVolume"); - return XA_RESULT_SUCCESS; -} - -/* XAresult XADeviceVolumeItfAdapt_IsDeviceIDSupported - * Description: Check is request device ID supported. - */ -XAresult XADeviceVolumeItfAdapt_IsDeviceIDSupported(XAAdaptationGstCtx *bCtx, XAuint32 deviceID, XAboolean *isSupported) -{ - DEBUG_API("->XADeviceVolumeItfAdapt_IsDeviceIDSupported"); - - if(!bCtx || !isSupported ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XADeviceVolumeItfAdapt_IsDeviceIDSupported"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is device ID supported or not supported */ -// if( deviceID == XA_DEFAULTDEVICEID_AUDIOINPUT || deviceID == XA_ADAPTID_ALSASRC || - if( deviceID == XA_DEFAULTDEVICEID_AUDIOINPUT || deviceID == XA_ADAPTID_DEVSOUNDSRC || - deviceID == XA_ADAPTID_AUDIOTESTSRC || deviceID == XA_DEFAULTDEVICEID_AUDIOOUTPUT || -// deviceID == XA_ADAPTID_JACKSINK || deviceID == XA_ADAPTID_ALSASINK ) - deviceID == XA_ADAPTID_JACKSINK || deviceID == XA_ADAPTID_DEVSOUNDSINK ) - { - *isSupported = XA_BOOLEAN_TRUE; - } - else - { - *isSupported = XA_BOOLEAN_FALSE; - } - - DEBUG_API("<-XADeviceVolumeItfAdapt_IsDeviceIDSupported"); - return XA_RESULT_SUCCESS; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xadevicevolumeitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xadevicevolumeitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XADEVICEVOLUMEITFADAPTATION_H_ -#define XADEVICEVOLUMEITFADAPTATION_H_ - -#include "xaadaptationgst.h" - - -/* FUNCTIONS */ -XAresult XADeviceVolumeItfAdapt_SetVolume( XAAdaptationGstCtx *bCtx, XAuint32 deviceID, XAint32 volume); -XAresult XADeviceVolumeItfAdapt_IsDeviceIDSupported(XAAdaptationGstCtx *bCtx, XAuint32 deviceID, XAboolean *isSupported); -#endif /* XADEVICEVOLUMEITFADAPTATION_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xadynamicsourceitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xadynamicsourceitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xadynamicsourceitfadaptation.h" - -/* - * XAresult XADynamicSourceItfAdapt_SetSource(XAAdaptationGstCtx *bCtx, XADataSource *pDataSource) - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value - * @param XADataSource *pDataSource - new data source - * @return XAresult ret - Success value - */ -XAresult XADynamicSourceItfAdapt_SetSource(XAAdaptationGstCtx *bCtx, XADataSource *pDataSource) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XADynamicSourceItfAdapt_SetSource"); - if( !bCtx || !pDataSource || !pDataSource->pLocator ) - { - DEBUG_ERR("Invalid NULL parameter"); - ret = XA_RESULT_PARAMETER_INVALID; - } - else if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation || bCtx->baseObj.ctxId == XAMDAdaptation ) - { - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - GstStateChangeReturn gret; - GstState origState; - GstElement* newSource = XAAdaptationGst_CreateGstSource( pDataSource, "datasrc", &(mCtx->isobjsrc), NULL, NULL); - if(!newSource) - { - DEBUG_ERR("Could not create data source!!!"); - return XA_RESULT_CONTENT_NOT_FOUND; - } - DEBUG_INFO("Changing Playback Source"); - /* store current state */ - origState = GST_STATE(bCtx->bin); - /* unroll pipeline */ - bCtx->binWantedState = GST_STATE_NULL; - XAAdaptationGst_PrepareAsyncWait(bCtx); - gret = gst_element_set_state( GST_ELEMENT(bCtx->bin), bCtx->binWantedState); - if( gret == GST_STATE_CHANGE_ASYNC ) - { - DEBUG_INFO("Wait for unroll"); - XAAdaptationGst_StartAsyncWait(bCtx); - DEBUG_INFO("Unroll ready"); - } - else if( gret == GST_STATE_CHANGE_FAILURE ) - { /*not much we can do*/ - DEBUG_ERR("WARNING: Failed to unroll pipeline!!") - return XA_RESULT_INTERNAL_ERROR; - } - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - - /* set new source */ - gst_element_unlink(mCtx->source,mCtx->codecbin); - gst_bin_remove(GST_BIN(bCtx->bin), mCtx->source); - mCtx->source = newSource; - gst_bin_add(GST_BIN(bCtx->bin), mCtx->source); - if(! gst_element_link(mCtx->source, mCtx->codecbin)) - { - DEBUG_ERR("Could not link source to codecbin!!"); - return XA_RESULT_INTERNAL_ERROR; - } - mCtx->xaSource = pDataSource; - - /* restore pipeline state */ - bCtx->binWantedState = origState; - DEBUG_INFO_A1("Changing pipeline back to state %s",gst_element_state_get_name(origState)); - XAAdaptationGst_PrepareAsyncWait(bCtx); - gret = gst_element_set_state( GST_ELEMENT(bCtx->bin), bCtx->binWantedState); - if( gret == GST_STATE_CHANGE_ASYNC ) - { - DEBUG_INFO("Wait for state change"); - XAAdaptationGst_StartAsyncWait(bCtx); - } - else if( gret == GST_STATE_CHANGE_FAILURE ) - { - DEBUG_ERR("State change FAILED"); - return XA_RESULT_INTERNAL_ERROR; - } - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - DEBUG_INFO_A1("Pipeline in state %s",gst_element_state_get_name(GST_STATE(bCtx->bin))); - - if( GST_STATE(bCtx->bin) > GST_STATE_READY ) - { /* let (possible) extraction itf to know new tags */ - XAAdaptEvent event = {XA_METADATAEVENTS, XA_ADAPT_MDE_TAGS_AVAILABLE, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - } - DEBUG_API("<-XADynamicSourceItfAdapt_SetSource"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xadynamicsourceitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xadynamicsourceitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XADYNAMICSOURCEITFADAPTATION_H -#define XADYNAMICSOURCEITFADAPTATION_H - -#include "xaadaptationgst.h" - - -/* FUNCTIONS */ - -XAresult XADynamicSourceItfAdapt_SetSource(XAAdaptationGstCtx *bCtx, XADataSource *pDataSource); - -#endif /* XADYNAMICSOURCEITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaengineadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaengineadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xaengineadaptctx.c Wed Aug 18 10:17:22 2010 +0300 @@ -169,8 +169,6 @@ XAAdaptationBase_Free(&(ctx->baseObj.baseObj)); -/* gst_deinit(); */ - free(ctx); ctx = NULL; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaequalizeritfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaequalizeritfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,268 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xamediarecorderadaptctx.h" -#include "xaoutputmixadaptctx.h" -#include "xaequalizeritfadaptation.h" -//#include "XAStaticCapsAdaptation.h" - -static const XAmilliHertz centerFrequencies[EQUALIZER_NUM_OF_BANDS] = { - 29000, 59000, 119000, 227000, 474000, - 947000, 1889000, 3770000, 7523000, 15011000 }; - -static const char* band_names[EQUALIZER_NUM_OF_BANDS] = { - "band0", "band1", "band2", "band3", "band4", - "band5", "band6", "band7", "band8", "band9" }; - -/*static const XAmilliHertz bandFreqRangeMin = 0; -static const XAmilliHertz bandFreqRangeMax = 0;*/ -static const XAmillibel bandLevelRangeMin = -2400; -static const XAmillibel bandLevelRangeMax = 1200; - - -/* - * XAresult XAEqualizerItfAdapt_GetBandLevelRange(XAAdaptationGstCtx *bCtx, - * XAmillibel *pMin, - * XAmillibel *pMax) - */ -XAresult XAEqualizerItfAdapt_GetBandLevelRange(XAAdaptationGstCtx *bCtx, - XAmillibel *pMin, - XAmillibel *pMax) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAEqualizerItfAdapt_GetBandLevelRange"); - - if( (!pMin && !pMax) ) /* other may be NULL */ - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (pMin) - { - *pMin = bandLevelRangeMin; - } - if (pMax) - { - *pMax = bandLevelRangeMax; - } - - DEBUG_API("<-XAEqualizerItfAdapt_GetBandLevelRange"); - return ret; -} - -/* - * XAresult XAEqualizerItfAdapt_SetBandLevel(XAAdaptationGstCtx *bCtx, - * XAuint16 band, - * XAmillibel level) - */ -XAresult XAEqualizerItfAdapt_SetBandLevel(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmillibel level) -{ - XAresult ret = XA_RESULT_SUCCESS; - GstElement *equ=NULL, *audiopp=NULL; - DEBUG_API("->XAEqualizerItfAdapt_SetBandLevel"); - - if(!bCtx || - band >= EQUALIZER_NUM_OF_BANDS || - level < bandLevelRangeMin || - level > bandLevelRangeMax) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - else - { - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation || bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - audiopp = gst_bin_get_by_name( GST_BIN(bCtx->bin), "audiopp" ); - equ = gst_bin_get_by_name( GST_BIN(audiopp), "pp_equ" ); - if(equ) - { - g_object_set( G_OBJECT(equ), band_names[band], (gdouble)(level/1000), NULL ); - } - else - { - DEBUG_ERR("Media object equalizer element not found!!"); - } - } - else if( bCtx->baseObj.ctxId == XAOutputMixAdaptation ) - { - XAOutputMixAdaptationCtx* context = (XAOutputMixAdaptationCtx*) bCtx; - guint iterator; - for ( iterator = 0; iterator < context->connectedObjects->len; iterator++ ) - { - GstBin* basebin = GST_BIN(g_array_index(context->connectedObjects,XAOMixAdaptConnObj,iterator).ctx->bin); - equ=NULL; - audiopp=NULL; - audiopp = gst_bin_get_by_name( basebin, "audiopp" ); - if(audiopp) - { - equ = gst_bin_get_by_name( GST_BIN(audiopp), "pp_equ" ); - } - if(equ) - { - g_object_set( G_OBJECT(equ), band_names[band], (gdouble)(level/1000), NULL ); - } - else - { - DEBUG_ERR_A1("Could not find equalizer for player %u!!", iterator); - } - } - } - else - { - DEBUG_ERR_A1("Not supported adaptation element: %d", bCtx->baseObj.ctxId); - return XA_RESULT_PARAMETER_INVALID; - } - } - if(equ) - { - gst_object_unref(equ); - } - if(audiopp) - { - gst_object_unref(audiopp); - } - - DEBUG_API("<-XAEqualizerItfAdapt_SetBandLevel"); - return ret; -} - -/* - * XAresult XAEqualizerItfAdapt_GetCenterFreq(XAAdaptationGstCtx *bCtx, - * XAuint16 band, - * XAmilliHertz *pCenter) - */ - -XAresult XAEqualizerItfAdapt_GetCenterFreq(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmilliHertz *pCenter) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAEqualizerItfAdapt_GetCenterFreq"); - - if(!pCenter || band >= EQUALIZER_NUM_OF_BANDS) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pCenter = centerFrequencies[band]; - - DEBUG_API("<-XAEqualizerItfAdapt_GetCenterFreq"); - return ret; -} - -/* - * XAresult XAEqualizerItfAdapt_GetBandFreqRange(XAAdaptationGstCtx *bCtx, - * XAuint16 band, - * XAmilliHertz *pMin, - * XAmilliHerts *pMax) - */ -XAresult XAEqualizerItfAdapt_GetBandFreqRange(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmilliHertz *pMin, - XAmilliHertz *pMax) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAEqualizerItfAdapt_GetBandFreqRange"); - - /* pMin or pMax may be NULL */ - if((!pMin && !pMax) || band >= EQUALIZER_NUM_OF_BANDS) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* in this implementation there are no ranges */ - if (pMin) - { - *pMin = centerFrequencies[band]; - } - if (pMax) - { - *pMax = centerFrequencies[band]; - } - - DEBUG_API("<-XAEqualizerItfAdapt_GetBandFreqRange"); - return ret; -} - -/* - * XAresult XAEqualizerItfAdapt_GetBand(XAAdaptationGstCtx *bCtx, - * XAmilliHertz frequency, - * XAuint16 *pBand) - */ -XAresult XAEqualizerItfAdapt_GetBand(XAAdaptationGstCtx *bCtx, - XAmilliHertz frequency, - XAuint16 *pBand) -{ - XAuint16 index=0; - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAEqualizerItfAdapt_GetBand"); - - if(!pBand) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pBand = XA_EQUALIZER_UNDEFINED; - - /* as there are no ranges, it must match exactly */ - for (index = 0; index < EQUALIZER_NUM_OF_BANDS; index++) - { - if (frequency == centerFrequencies[index]) - { - *pBand = index; - break; - } - } - - DEBUG_API("<-XAEqualizerItfAdapt_GetBand"); - return ret; -} - -/* - * XAresult XAEqualizerItfAdapt_GetDefaultBandLevel(XAAdaptationGstCtx *bCtx, - * XAuint16 band, - * XAmillibel *pLevel) - */ -XAresult XAEqualizerItfAdapt_GetDefaultBandLevel(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmillibel *pLevel) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAEqualizerItfAdapt_GetDefaultBandLevel"); - - if(!pLevel) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - pLevel = EQUALIZER_DEFAULT_BAND_LEVEL; - - DEBUG_API("<-XAEqualizerItfAdapt_GetDefaultBandLevel"); - return ret; -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaequalizeritfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaequalizeritfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAEQUALIZERITFADAPTATION_H -#define XAEQUALIZERITFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xathreadsafety.h" - -/* MACROS */ -#define EQUALIZER_NUM_OF_BANDS 10 -#define EQUALIZER_DEFAULT_BAND_LEVEL 0 - -/* FUNCTIONS */ -XAresult XAEqualizerItfAdapt_GetBandLevelRange(XAAdaptationGstCtx *bCtx, - XAmillibel *pMin, - XAmillibel *pMax); - -XAresult XAEqualizerItfAdapt_SetBandLevel(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmillibel level); - -XAresult XAEqualizerItfAdapt_GetCenterFreq(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmilliHertz *pCenter); - -XAresult XAEqualizerItfAdapt_GetBandFreqRange(XAAdaptationGstCtx *bCtx, - XAuint16 band, - XAmilliHertz *pMin, - XAmilliHertz *pMax); - -XAresult XAEqualizerItfAdapt_GetBand(XAAdaptationGstCtx *bCtx, - XAmilliHertz frequency, - XAuint16 *pBand); - -XAresult XAEqualizerItfAdapt_GetDefaultBandLevel(XAAdaptationGstCtx *bCtx, - XAuint16 index, - XAint16 *pLevel); - -#endif /* XAEQUALIZERITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xagstcapabilitiesmgr.c --- a/khronosfws/openmax_al/src/gst_adaptation/xagstcapabilitiesmgr.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xagstcapabilitiesmgr.c Wed Aug 18 10:17:22 2010 +0300 @@ -364,7 +364,8 @@ if (!(*ppListHead)) { *ppListHead = firstNode; - }DEBUG_API("<-XAGSTCapabilitiesMgr_UpdateCapabilitieList"); + } + DEBUG_API("<-XAGSTCapabilitiesMgr_UpdateCapabilitieList"); return res; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaimagecontrolsitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaimagecontrolsitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,325 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xamediarecorderadaptctx.h" -#include "xacameraadaptctx.h" -#include "xaimagecontrolsitfadaptation.h" - -/* - * XAresult XAImageControlsItfAdapt_SetBrightness(XAAdaptationGstCtx *bCtx, - * XAuint32 brightness) - */ -XAresult XAImageControlsItfAdapt_SetBrightness(XAAdaptationGstCtx *bCtx, - XAuint32 brightness) -{ - XAresult ret = XA_RESULT_SUCCESS; - - gdouble gstBrightness = 0; - XAint32 tempBrightness = 0; - GstElement *balanceElement = NULL; - DEBUG_API("->XAImageControlsItfAdapt_SetBrightness") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageControlsItfAdapt_SetBrightness") - return XA_RESULT_PARAMETER_INVALID; - } - - if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance"); - } - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance"); - } - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - - GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera"); - if ( !videoPP ) - { - DEBUG_ERR("Could not receive videopp from camerabin!"); - } - else - { - /* Get camera balance element */ - balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance"); - } - } - - /* count gstBrightness from XA contrast. Allowed values for gst is -1 to 1 - * and allowed value for XA is 0 to 100 */ - tempBrightness = brightness; - - gstBrightness = ( ((gdouble)tempBrightness - SCALE_VALUE_BRIGHTNESS) / SCALE_VALUE_BRIGHTNESS ); - - if(balanceElement) - { - g_object_set(G_OBJECT(balanceElement), "brightness", gstBrightness, NULL); - - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation) - { - ret = XAImageControlsItfAdapt_HandleImageType(bCtx); - } - } - - if ( balanceElement ) - { - gst_object_unref(balanceElement); - } - - DEBUG_API("<-XAImageControlsItfAdapt_SetBrightness") - return ret; -} - -/* - * XAresult XAImageControlsItfAdapt_SetContrast(XAAdaptationGstCtx *bCtx, - * XAuint32 contrast) - */ -XAresult XAImageControlsItfAdapt_SetContrast(XAAdaptationGstCtx *bCtx, - XAint32 contrast) -{ - XAresult ret = XA_RESULT_SUCCESS; - - gdouble gstContrast = 1; - GstElement *balanceElement = NULL; - DEBUG_API("->XAImageControlsItfAdapt_SetContrast") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageControlsItfAdapt_SetContrast") - return XA_RESULT_PARAMETER_INVALID; - } - - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance"); - } - if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance"); - } - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - - GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera"); - if( !videoPP ) - { - DEBUG_ERR("Could not receive videopp from camerabin!"); - } - else - { - /* Get camera balance element */ - balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance"); - } - } - - /* count gstContrast from XA contrast. Allowed values for gst is 0 to 2 - * and allowed value for XA is -100 to 100 */ - gstContrast = (( (gdouble)contrast + SCALE_VALUE_CONTRAST ) / SCALE_VALUE_CONTRAST ); - - if(balanceElement) - { - g_object_set(G_OBJECT(balanceElement), "contrast", gstContrast, NULL); - - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation) - { - ret = XAImageControlsItfAdapt_HandleImageType(bCtx); - } - } - - if ( balanceElement ) - { - gst_object_unref(balanceElement); - } - - DEBUG_API("<-XAImageControlsItfAdapt_SetContrast") - return ret; -} - -/* - * XAresult XAImageControlsItfAdapt_SetGamma(XAAdaptationGstCtx *bCtx, - * XApermille gamma) - */ -XAresult XAImageControlsItfAdapt_SetGamma(XAAdaptationGstCtx *bCtx, - XApermille gamma) -{ - XAresult ret = XA_RESULT_SUCCESS; - - gdouble gstGamma=0; - GstElement *gammaElement = NULL; - DEBUG_API("->XAImageControlsItfAdapt_SetGamma") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageControlsItfAdapt_SetGamma") - return XA_RESULT_PARAMETER_INVALID; - } - - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx; - - gammaElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_gamma"); - } - - if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx; - - gammaElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_gamma"); - } - - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - - GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera"); - if( !videoPP ) - { - DEBUG_ERR("Could not receive videopp from camerabin!"); - } - else - { - /* Get camera gamma element */ - gammaElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_gamma"); - } - } - - /* count gstGamma from XA gamma */ - gstGamma = ( (gdouble)gamma / SCALE_VALUE_GAMMA ); - - if(gammaElement) - { - g_object_set(G_OBJECT(gammaElement), "gamma", gstGamma, NULL); - - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation) - { - ret = XAImageControlsItfAdapt_HandleImageType(bCtx); - } - } - - if ( gammaElement ) - { - gst_object_unref(gammaElement); - } - - DEBUG_API("<-XAImageControlsItfAdapt_SetGamma") - return ret; -} - -/* - * XAresult XAImageControlsItfAdapt_GetSupportedGammaSettings(XAAdaptationGstCtx *bCtx, - * XApermille *pMinValue, - * XApermille *pMaxValue, - * XAuint32 *pNumSettings, - * XApermille **ppSettings) - */ -XAresult XAImageControlsItfAdapt_GetSupportedGammaSettings(XAAdaptationGstCtx *bCtx, - XApermille *pMinValue, - XApermille *pMaxValue, - XAuint32 *pNumSettings, - XApermille **ppSettings) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAImageControlsItfAdapt_GetSupportedGammaSettings") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation) || !pMinValue || !pMaxValue || !pNumSettings) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XAImageControlsItfAdapt_GetSupportedGammaSettings") - return XA_RESULT_PARAMETER_INVALID; - } - - *pMinValue = MIN_GAMMA_VALUE; - *pMaxValue = MAX_GAMMA_VALUE; - - /* manual settings is continuous from min to max then pNumSetting return 0. */ - *pNumSettings = 0; - - DEBUG_API("<-XAImageControlsItfAdapt_GetSupportedGammaSettings") - return ret; -} -/* - * XAresult XAImageControlsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx) - * Description: this run gstreamer for image type - * - */ -XAresult XAImageControlsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XADataSource *dataSrc = NULL; - GstStateChangeReturn gstRet = GST_STATE_CHANGE_SUCCESS; - GstState gstOrigState = GST_STATE_PLAYING; - GstState gstTmpState = GST_STATE_PLAYING; - XAMediaPlayerAdaptationCtx* mCtx = NULL; - DEBUG_API("->XAImageControlsItfAdapt_HandleImageType"); - - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageControlsItfAdapt_HandleImageType") - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - - dataSrc = mCtx->xaSource; - - if( dataSrc ) - { - XAMediaType mediaType; - ret = XACommon_CheckDataSource(dataSrc, &mediaType); - if( ret == XA_RESULT_SUCCESS && mediaType == XA_MEDIATYPE_IMAGE ) - { - gstOrigState = GST_STATE(bCtx->bin); - - DEBUG_INFO_A1("Sending change state request to state %d", GST_STATE_READY); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), GST_STATE_READY); - gstTmpState = GST_STATE(bCtx->bin); - if(gstRet == GST_STATE_CHANGE_SUCCESS && gstTmpState == GST_STATE_READY) - { - DEBUG_INFO_A1("Sending change state request to state %d", gstOrigState); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), gstOrigState); - } - } - } - DEBUG_API("<-XAImageControlsItfAdapt_HandleImageType"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaimagecontrolsitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaimagecontrolsitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGECONTROLSITFADAPTATION_H -#define XAIMAGECONTROLSITFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xathreadsafety.h" - -/* MACROS */ -#define MIN_GAMMA_VALUE 10 -#define MAX_GAMMA_VALUE 10000 -#define SCALE_VALUE_BRIGHTNESS 50 -#define SCALE_VALUE_CONTRAST 100 -#define SCALE_VALUE_GAMMA 1000 - -/* FUNCTIONS */ -XAresult XAImageControlsItfAdapt_SetBrightness(XAAdaptationGstCtx *bCtx, - XAuint32 brightness); - -XAresult XAImageControlsItfAdapt_SetContrast(XAAdaptationGstCtx *bCtx, - XAint32 contrast); - -XAresult XAImageControlsItfAdapt_SetGamma(XAAdaptationGstCtx *bCtx, - XApermille gamma); - -XAresult XAImageControlsItfAdapt_GetSupportedGammaSettings(XAAdaptationGstCtx *bCtx, - XApermille *pMinValue, - XApermille *pMaxValue, - XAuint32 *pNumSettings, - XApermille **ppSettings); - -XAresult XAImageControlsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx); -#endif /* XAIMAGECONTROLSITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaimageeffectsitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaimageeffectsitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,661 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xamediarecorderadaptctx.h" -#include "xacameraadaptctx.h" -#include "xaimageeffectsitfadaptation.h" - -/* - * XAresult XAImageEffectsItfAdapt_QuerySupportedImageEffects(XAAdaptationGstCtx *bCtx, - * XAuint32 index, - * XAuint32 *pImageEffectId) - */ -XAresult XAImageEffectsItfAdapt_QuerySupportedImageEffects(XAAdaptationGstCtx *bCtx, - XAuint32 index, - XAuint32 *pImageEffectId) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAImageEffectsItfAdapt_QuerySupportedImageEffects") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation) || index > NUM_SUPPORTED_EFFECTS - 1 || !pImageEffectId) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEffectsItfAdapt_QuerySupportedImageEffects") - return XA_RESULT_PARAMETER_INVALID; - } - - /* check which effect is supported */ - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation || bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - switch( index ) - { - case 0: - *pImageEffectId = XA_IMAGEEFFECT_MONOCHROME; - break; - case 1: - *pImageEffectId = XA_IMAGEEFFECT_NEGATIVE; - break; - case 2: - *pImageEffectId = XA_IMAGEEFFECT_SEPIA; - break; - case 3: - *pImageEffectId = XA_IMAGEEFFECT_EMBOSS; - break; - case 4: - *pImageEffectId = XA_IMAGEEFFECT_PAINTBRUSH; - break; - case 5: - *pImageEffectId = XA_IMAGEEFFECT_SOLARIZE; - break; - case 6: - *pImageEffectId = XA_IMAGEEFFECT_CARTOON; - break; - default: - ret = XA_RESULT_PARAMETER_INVALID; - break; - } - } - if(bCtx->baseObj.ctxId == XACameraAdaptation) - { - XACameraAdaptationCtx* mCtx = (XACameraAdaptationCtx*) bCtx; - - if(GST_IS_PHOTOGRAPHY(mCtx->baseObj.bin)) - { - /* real image effects for camera */ - switch( index ) - { - case 0: - *pImageEffectId = XA_IMAGEEFFECT_NEGATIVE; - break; - case 1: - *pImageEffectId = XA_IMAGEEFFECT_SEPIA; - break; - case 3: - *pImageEffectId = XA_IMAGEEFFECT_SOLARIZE; - break; - default: - ret = XA_RESULT_PARAMETER_INVALID; - break; - } - } - else - { - /* Stubbed image effects for camera */ - switch( index ) - { - case 0: - *pImageEffectId = XA_IMAGEEFFECT_MONOCHROME; - break; - case 1: - *pImageEffectId = XA_IMAGEEFFECT_NEGATIVE; - break; - case 2: - *pImageEffectId = XA_IMAGEEFFECT_SEPIA; - break; - case 3: - *pImageEffectId = XA_IMAGEEFFECT_EMBOSS; - break; - case 4: - *pImageEffectId = XA_IMAGEEFFECT_PAINTBRUSH; - break; - case 5: - *pImageEffectId = XA_IMAGEEFFECT_SOLARIZE; - break; - case 6: - *pImageEffectId = XA_IMAGEEFFECT_CARTOON; - break; - default: - ret = XA_RESULT_PARAMETER_INVALID; - break; - } - } - } - - DEBUG_API("<-XAImageEffectsItfAdapt_QuerySupportedImageEffects") - return ret; -} - -/* - * XAresult XAImageEffectsItfAdapt_EnableImageEffect(XAAdaptationGstCtx *bCtx, - * XAuint32 imageEffectID) - */ -XAresult XAImageEffectsItfAdapt_EnableImageEffect(XAAdaptationGstCtx *bCtx, - XAuint32 imageEffectID) -{ - XAresult ret = XA_RESULT_SUCCESS; - gdouble tempImageEffect = 0; - GstElement *balanceElement = NULL; - DEBUG_API("->XAImageEffectsItfAdapt_EnableImageEffect") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return XA_RESULT_PARAMETER_INVALID; - } - - /* check which effect is enabled (STUB for player and recorder - all effect are done - * via videobalance plugin. Used different saturations values). */ - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation || bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_MONOCHROME: - tempImageEffect = IMAGEEFFECT_MONOCHROME; - break; - case XA_IMAGEEFFECT_NEGATIVE: - tempImageEffect = IMAGEEFFECT_NEGATIVE; - break; - case XA_IMAGEEFFECT_SEPIA: - tempImageEffect = IMAGEEFFECT_SEPIA; - break; - case XA_IMAGEEFFECT_EMBOSS: - tempImageEffect = IMAGEEFFECT_EMBOSS; - break; - case XA_IMAGEEFFECT_PAINTBRUSH: - tempImageEffect = IMAGEEFFECT_PAINTBRUSH; - break; - case XA_IMAGEEFFECT_SOLARIZE: - tempImageEffect = IMAGEEFFECT_SOLARIZE; - break; - case XA_IMAGEEFFECT_CARTOON: - tempImageEffect = IMAGEEFFECT_CARTOON; - break; - default: - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return XA_RESULT_FEATURE_UNSUPPORTED; - } - } - - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation) - { - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(mCtx->baseObj.bin), "pp_balance"); - - if( balanceElement && (imageEffectID != mCtx->imageEffectID) ) - { - g_object_set(G_OBJECT(balanceElement), "saturation", (gdouble)tempImageEffect, NULL); - mCtx->imageEffectID = imageEffectID; - ret = XAImageEffectsItfAdapt_HandleImageType(bCtx); - } - } - - if(bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(mCtx->baseObj.bin), "pp_balance"); - - if( balanceElement && (imageEffectID != mCtx->imageEffectID) ) - { - g_object_set(G_OBJECT(balanceElement), "saturation", (gdouble)tempImageEffect, NULL); - mCtx->imageEffectID = imageEffectID; - } - } - } - - if(bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* mCtx = (XACameraAdaptationCtx*) bCtx; - GstColourToneMode gstColorToneMode = GST_PHOTOGRAPHY_COLOUR_TONE_MODE_NORMAL; - - if(GST_IS_PHOTOGRAPHY(mCtx->baseObj.bin)) - { - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_NEGATIVE: - { - gstColorToneMode = GST_PHOTOGRAPHY_COLOUR_TONE_MODE_NEGATIVE; - break; - } - case XA_IMAGEEFFECT_SEPIA: - { - gstColorToneMode = GST_PHOTOGRAPHY_COLOUR_TONE_MODE_SEPIA; - break; - } - case XA_IMAGEEFFECT_SOLARIZE: - { - gstColorToneMode = GST_PHOTOGRAPHY_COLOUR_TONE_MODE_SOLARIZE; - break; - } - default: - { - mCtx->imageEffectID = 0; - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return XA_RESULT_FEATURE_UNSUPPORTED; - } - } - - if( imageEffectID != mCtx->imageEffectID ) - { - if( !gst_photography_set_colour_tone_mode( GST_PHOTOGRAPHY(mCtx->baseObj.bin), gstColorToneMode ) ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return XA_RESULT_INTERNAL_ERROR; - } - mCtx->imageEffectID = imageEffectID; - } - } - else - { - GstElement *videoPP = NULL; - /* Stubbed image effects for camera */ - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_MONOCHROME: - tempImageEffect = IMAGEEFFECT_MONOCHROME; - break; - case XA_IMAGEEFFECT_NEGATIVE: - tempImageEffect = IMAGEEFFECT_NEGATIVE; - break; - case XA_IMAGEEFFECT_SEPIA: - tempImageEffect = IMAGEEFFECT_SEPIA; - break; - case XA_IMAGEEFFECT_EMBOSS: - tempImageEffect = IMAGEEFFECT_EMBOSS; - break; - case XA_IMAGEEFFECT_PAINTBRUSH: - tempImageEffect = IMAGEEFFECT_PAINTBRUSH; - break; - case XA_IMAGEEFFECT_SOLARIZE: - tempImageEffect = IMAGEEFFECT_SOLARIZE; - break; - case XA_IMAGEEFFECT_CARTOON: - tempImageEffect = IMAGEEFFECT_CARTOON; - break; - default: - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return XA_RESULT_FEATURE_UNSUPPORTED; - } - } - - videoPP = gst_bin_get_by_name( GST_BIN(mCtx->baseObj.bin), "videopp_camera"); - if ( !videoPP ) - { - DEBUG_ERR("Could not receive videopp from camerabin!"); - } - else - { - /* Get camera balance element */ - balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance"); - - if( balanceElement && (imageEffectID != mCtx->imageEffectID) ) - { - g_object_set(G_OBJECT(balanceElement), "saturation", (gdouble)tempImageEffect, NULL); - mCtx->imageEffectID = imageEffectID; - } - } - - if ( videoPP ) - { - gst_object_unref( videoPP ); - } - } - } - - if ( balanceElement ) - { - gst_object_unref(balanceElement); - } - - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return ret; -} - -/* - * XAresult XAImageEffectsItfAdapt_DisableImageEffect(XAAdaptationGstCtx *bCtx, - * XAuint32 imageEffectID) - */ -XAresult XAImageEffectsItfAdapt_DisableImageEffect(XAAdaptationGstCtx *bCtx, - XAuint32 imageEffectID) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint32 tempImageEffect = 0; - GstElement *balanceElement = NULL; - DEBUG_API("->XAImageEffectsItfAdapt_DisableImageEffect") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEffectsItfAdapt_DisableImageEffect") - return XA_RESULT_PARAMETER_INVALID; - } - - /* check which effect is disabled (STUB for player and recorder - all effect are done - * via videobalance plugin. Used saturation default value to disabling effects). */ - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation || bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_MONOCHROME: - case XA_IMAGEEFFECT_NEGATIVE: - case XA_IMAGEEFFECT_SEPIA: - case XA_IMAGEEFFECT_EMBOSS: - case XA_IMAGEEFFECT_PAINTBRUSH: - case XA_IMAGEEFFECT_SOLARIZE: - case XA_IMAGEEFFECT_CARTOON: - tempImageEffect = NO_IMAGEEFFECT; - break; - default: - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED") - DEBUG_API("<-XAImageEffectsItfAdapt_DisableImageEffect") - return XA_RESULT_FEATURE_UNSUPPORTED; - } - } - - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation) - { - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(mCtx->baseObj.bin), "pp_balance"); - - if( balanceElement ) - { - g_object_set(G_OBJECT(balanceElement), "saturation", (gdouble)GST_NO_IMAGEEFFECT, NULL); - mCtx->imageEffectID = tempImageEffect; - ret = XAImageEffectsItfAdapt_HandleImageType(bCtx); - } - } - - if(bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - - balanceElement = gst_bin_get_by_name( GST_BIN(mCtx->baseObj.bin), "pp_balance"); - - if( balanceElement ) - { - g_object_set(G_OBJECT(balanceElement), "saturation", (gdouble)GST_NO_IMAGEEFFECT, NULL); - mCtx->imageEffectID = tempImageEffect; - } - } - } - - if(bCtx->baseObj.ctxId == XACameraAdaptation) - { - XACameraAdaptationCtx* mCtx = (XACameraAdaptationCtx*) bCtx; - - if(GST_IS_PHOTOGRAPHY(mCtx->baseObj.bin)) - { - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_NEGATIVE: - case XA_IMAGEEFFECT_SEPIA: - case XA_IMAGEEFFECT_SOLARIZE: - { - /* Set color tone to normal */ - if( !gst_photography_set_colour_tone_mode( GST_PHOTOGRAPHY(mCtx->baseObj.bin), - GST_PHOTOGRAPHY_COLOUR_TONE_MODE_NORMAL ) ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAImageEffectsItfAdapt_EnableImageEffect") - return XA_RESULT_INTERNAL_ERROR; - } - mCtx->imageEffectID = NO_IMAGEEFFECT; - break; - } - default: - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED") - DEBUG_API("<-XAImageEffectsItfAdapt_DisableImageEffect") - return XA_RESULT_FEATURE_UNSUPPORTED; - } - } - } - else - { - GstElement *videoPP = NULL; - /* stubbed camera values */ - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_MONOCHROME: - case XA_IMAGEEFFECT_NEGATIVE: - case XA_IMAGEEFFECT_SEPIA: - case XA_IMAGEEFFECT_EMBOSS: - case XA_IMAGEEFFECT_PAINTBRUSH: - case XA_IMAGEEFFECT_SOLARIZE: - case XA_IMAGEEFFECT_CARTOON: - mCtx->imageEffectID = NO_IMAGEEFFECT; - break; - default: - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED") - DEBUG_API("<-XAImageEffectsItfAdapt_DisableImageEffect") - return XA_RESULT_FEATURE_UNSUPPORTED; - } - } - - videoPP = gst_bin_get_by_name( GST_BIN(mCtx->baseObj.bin), "videopp_camera"); - if ( !videoPP ) - { - DEBUG_ERR("Could not receive videopp from camerabin!"); - } - else - { - /* Get camera balance element */ - balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance"); - - if( balanceElement && (imageEffectID != mCtx->imageEffectID) ) - { - g_object_set(G_OBJECT(balanceElement), "saturation", (gdouble)GST_NO_IMAGEEFFECT, NULL); - mCtx->imageEffectID = tempImageEffect; - } - } - if ( videoPP ) - { - gst_object_unref(videoPP); - } - } - } - - if ( balanceElement ) - { - gst_object_unref(balanceElement); - } - - DEBUG_API("<-XAImageEffectsItfAdapt_DisableImageEffect") - return ret; -} - -/* - * XAresult XAImageEffectsItfAdapt_IsImageEffectEnabled(XAAdaptationGstCtx *bCtx, - * XAuint32 imageEffectID, - * XAboolean *pEnabled) - */ -XAresult XAImageEffectsItfAdapt_IsImageEffectEnabled(XAAdaptationGstCtx *bCtx, - XAuint32 imageEffectID, - XAboolean *pEnabled) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint32 tempImageEffect = 0; - DEBUG_API("->XAImageEffectsItfAdapt_IsImageEffectEnabled") - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation) || !pEnabled) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEffectsItfAdapt_IsImageEffectEnabled") - return XA_RESULT_PARAMETER_INVALID; - } - - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation) - { - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - tempImageEffect = mCtx->imageEffectID; - } - - if(bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - tempImageEffect = mCtx->imageEffectID; - } - - /* check is effect enabled for player and recorder */ - if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation || bCtx->baseObj.ctxId == XAMediaRecorderAdaptation) - { - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_MONOCHROME: - case XA_IMAGEEFFECT_NEGATIVE: - case XA_IMAGEEFFECT_SEPIA: - case XA_IMAGEEFFECT_EMBOSS: - case XA_IMAGEEFFECT_PAINTBRUSH: - case XA_IMAGEEFFECT_SOLARIZE: - case XA_IMAGEEFFECT_CARTOON: - { - /* Check is wanted effect currently enabled */ - if( tempImageEffect == imageEffectID ) - { - *pEnabled = XA_BOOLEAN_TRUE; - } - else - { - *pEnabled = XA_BOOLEAN_FALSE; - } - break; - } - default: - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - } - - if(bCtx->baseObj.ctxId == XACameraAdaptation) - { - XACameraAdaptationCtx* mCtx = (XACameraAdaptationCtx*) bCtx; - - if(GST_IS_PHOTOGRAPHY(mCtx->baseObj.bin)) - { - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_NEGATIVE: - case XA_IMAGEEFFECT_SEPIA: - case XA_IMAGEEFFECT_SOLARIZE: - { - /* Check is wanted effect currently enabled */ - if( mCtx->imageEffectID == imageEffectID ) - { - *pEnabled = XA_BOOLEAN_TRUE; - } - else - { - *pEnabled = XA_BOOLEAN_FALSE; - } - break; - } - default: - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - } - else - { - /* stubbed camera values */ - switch( imageEffectID ) - { - case XA_IMAGEEFFECT_MONOCHROME: - case XA_IMAGEEFFECT_NEGATIVE: - case XA_IMAGEEFFECT_SEPIA: - case XA_IMAGEEFFECT_EMBOSS: - case XA_IMAGEEFFECT_PAINTBRUSH: - case XA_IMAGEEFFECT_SOLARIZE: - case XA_IMAGEEFFECT_CARTOON: - { - /* Check is wanted effect currently enabled */ - if( mCtx->imageEffectID == imageEffectID ) - { - *pEnabled = XA_BOOLEAN_TRUE; - } - else - { - *pEnabled = XA_BOOLEAN_FALSE; - } - break; - } - default: - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - } - } - - DEBUG_API("<-XAImageEffectsItfAdapt_IsImageEffectEnabled"); - return ret; -} -/* - * XAresult XAImageEffectsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx) - * Description: this run gstreamer for image type - * - */ -XAresult XAImageEffectsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XADataSource *dataSrc = NULL; - GstStateChangeReturn gstRet = GST_STATE_CHANGE_SUCCESS; - GstState gstOrigState = GST_STATE_PLAYING; - GstState gstTmpState = GST_STATE_PLAYING; - XAMediaPlayerAdaptationCtx* mCtx = NULL; - DEBUG_API("->XAImageEffectsItfAdapt_HandleImageType"); - - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEffectsItfAdapt_HandleImageType") - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - - dataSrc = mCtx->xaSource; - - if( dataSrc ) - { - XAMediaType mediaType; - ret = XACommon_CheckDataSource(dataSrc, &mediaType); - if( ret == XA_RESULT_SUCCESS && mediaType == XA_MEDIATYPE_IMAGE ) - { - gstOrigState = GST_STATE(bCtx->bin); - - DEBUG_INFO_A1("Sending change state request to state %d", GST_STATE_READY); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), GST_STATE_READY); - gstTmpState = GST_STATE(bCtx->bin); - if(gstRet == GST_STATE_CHANGE_SUCCESS && gstTmpState == GST_STATE_READY) - { - DEBUG_INFO_A1("Sending change state request to state %d", gstOrigState); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), gstOrigState); - } - } - } - DEBUG_API("<-XAImageEffectsItfAdapt_HandleImageType"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaimageeffectsitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaimageeffectsitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGEEFFECTSITFADAPTATION_H -#define XAIMAGEEFFECTSITFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xathreadsafety.h" - -/* MACROS */ -#define NUM_SUPPORTED_EFFECTS 7 -#define NO_IMAGEEFFECT 0 -#define GST_NO_IMAGEEFFECT 1 -#define IMAGEEFFECT_MONOCHROME 0 -#define IMAGEEFFECT_NEGATIVE 0.2 -#define IMAGEEFFECT_SEPIA 0.3 -#define IMAGEEFFECT_EMBOSS 1.4 -#define IMAGEEFFECT_PAINTBRUSH 1.5 -#define IMAGEEFFECT_SOLARIZE 1.6 -#define IMAGEEFFECT_CARTOON 2 - -/* FUNCTIONS */ -XAresult XAImageEffectsItfAdapt_QuerySupportedImageEffects(XAAdaptationGstCtx *bCtx, - XAuint32 index, - XAuint32 *pImageEffectId); - -XAresult XAImageEffectsItfAdapt_EnableImageEffect(XAAdaptationGstCtx *bCtx, - XAuint32 imageEffectID); - -XAresult XAImageEffectsItfAdapt_DisableImageEffect(XAAdaptationGstCtx *bCtx, - XAuint32 imageEffectID); - -XAresult XAImageEffectsItfAdapt_IsImageEffectEnabled(XAAdaptationGstCtx *bCtx, - XAuint32 imageEffectID, - XAboolean *pEnabled); - -XAresult XAImageEffectsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx); -#endif /* XAIMAGEEFFECTSITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaimageencoderitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaimageencoderitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "xamediarecorderadaptctx.h" -#include "xaimageencoderitfadaptation.h" -#include "xacapabilitiesmgr.h" - - -/* - * XAresult XAImageEncoderItfAdapt_SetImageSettings( XAAdaptationGstCtx *bCtx, - * XAImageSettings *pSettings ) - * @param XAAdaptationGstCtx *ctx - pointer to Media Recorer adaptation context - * @param XAImageSettings *pSettings - Settings for encoder - * @return XAresult ret - return success value - * Description: Sets preferred encoder settings for pipeline. - */ -XAresult XAImageEncoderItfAdapt_SetImageSettings( XAAdaptationGstCtx *bCtx, - const XAImageSettings *pSettings ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAMediaRecorderAdaptationCtx* mCtx = NULL; - XACapabilities temp; - - DEBUG_API("->XAImageEncoderAdapt_SetImageSettings"); - - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) || !pSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - if(XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_IMAGE), mCtx->imageEncSettings.encoderId, &temp) != XA_RESULT_SUCCESS) - { /* no such codec */ - return XA_RESULT_FEATURE_UNSUPPORTED; - } - /*Just copy - image settings are applied in InitiateSnapshot*/ - memcpy(&mCtx->imageEncSettings, pSettings, sizeof(XAImageSettings)); - - DEBUG_API("<-XAImageEncoderAdapt_SetImageSettings"); - return ret; -} - -XAresult XAImageEncoderItfAdapt_GetImageSettings( XAAdaptationGstCtx *bCtx, - XAImageSettings *pSettings ) -{ - XAMediaRecorderAdaptationCtx* mCtx = NULL; - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XAImageEncoderItfAdapt_GetImageSettings"); - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) || !pSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - memcpy(pSettings, &(mCtx->imageEncSettings), sizeof(XAImageSettings)); - DEBUG_API("<-XAImageEncoderItfAdapt_GetImageSettings"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaimageencoderitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaimageencoderitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGEENCODERITFADAPTATION_H -#define XAIMAGEENCODERITFADAPTATION_H - -#include "xaadaptationgst.h" - -/* FUNCTIONS */ -XAresult XAImageEncoderItfAdapt_SetImageSettings(XAAdaptationGstCtx *bCtx, - const XAImageSettings *pSettings); -XAresult XAImageEncoderItfAdapt_GetImageSettings(XAAdaptationGstCtx *bCtx, - XAImageSettings *pSettings); -#endif /* XAIMAGEENCODERITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaledarrayadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaledarrayadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaledarrayadaptctx.h" -#include "xaadaptationgst.h" - -/* - * XALEDArrayAdaptationCtx* XALEDArrayAdapt_Create() - * Allocates memory for LEDArray Adaptation Context and makes 1st phase initialization - * @returns XALEDArrayAdaptationCtx* - Pointer to created context - */ -XAAdaptationBaseCtx* XALEDArrayAdapt_Create(XAuint32 deviceID) -{ - XALEDArrayAdaptationCtx *pSelf = (XALEDArrayAdaptationCtx *)calloc(1, sizeof(XALEDArrayAdaptationCtx)); - DEBUG_API("->XALEDArrayAdapt_Create"); - - if ( pSelf) - { - if( XAAdaptationBase_Init(&(pSelf->baseObj.baseObj),XALedArrayAdaptation) - != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to init base context!!!"); - free(pSelf); - pSelf = NULL; - } - else - { - pSelf->deviceID = deviceID; - - } - } - - DEBUG_API("<-XALEDArrayAdapt_Create"); - return (XAAdaptationBaseCtx*)&pSelf->baseObj; -} - -/* - * XAresult XALEDArrayAdapt_PostInit() - * 2nd phase initialization of LEDArray Adaptation Context - */ -XAresult XALEDArrayAdapt_PostInit(XAAdaptationGstCtx* bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XALEDArrayAdaptationCtx* ctx = NULL; - DEBUG_API("->XALEDArrayAdapt_PostInit"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XALedArrayAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XALEDArrayAdapt_PostInit"); - return XA_RESULT_PARAMETER_INVALID; - } - ctx = (XALEDArrayAdaptationCtx*)bCtx; - if ( !ctx ) - { - return XA_RESULT_INTERNAL_ERROR; - } - - XAAdaptationBase_PostInit( &(ctx->baseObj.baseObj) ); - - DEBUG_API("<-XALEDArrayAdapt_PostInit"); - return ret; -} - -/* - * void XALEDArrayAdapt_Destroy(XALEDArrayAdaptationCtx* ctx) - * Destroys LEDArray Adaptation Context - * @param ctx - LEDArray Adaptation context to be destroyed - */ -void XALEDArrayAdapt_Destroy(XAAdaptationGstCtx* bCtx) -{ - XALEDArrayAdaptationCtx* ctx = NULL; - DEBUG_API("->XALEDArrayAdapt_Destroy"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XALedArrayAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XALEDArrayAdapt_Destroy"); - return; - } - ctx = (XALEDArrayAdaptationCtx*)bCtx; - DEBUG_API("->XALEDArrayAdapt_Destroy"); - - XAAdaptationBase_Free(&(ctx->baseObj.baseObj)); - - - free(ctx); - ctx = NULL; - - DEBUG_API("<-XALEDArrayAdapt_Destroy"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaledarrayadaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaledarrayadaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XALEDARRAYADAPTCTX_H -#define XALEDARRAYADAPTCTX_H - -#include "xaadaptationgst.h" - -/* TYPEDEFS */ - -typedef struct XALEDArrayAdaptationCtx_ XALEDArrayAdaptationCtx; - -/* - * Structure for Ledarray specific gst-adaptation variables - */ -typedef struct XALEDArrayAdaptationCtx_ { - - /* Parent*/ - XAAdaptationGstCtx_ baseObj; - - /* OMX-AL Variables */ - XAuint32 deviceID; - - /* GST Variables */ - -} XALedarrayAdaptationCtx_; - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XALEDArrayAdapt_Create(XAuint32 deviceID); -XAresult XALEDArrayAdapt_PostInit(XAAdaptationGstCtx* bCtx); -void XALEDArrayAdapt_Destroy(XAAdaptationGstCtx* bCtx); - -#endif /* XALEDARRAYADAPTCTX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaledarrayitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaledarrayitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "xaledarrayadaptctx.h" -#include "xaledarrayitfadaptation.h" -#include "xaadaptationgst.h" - -/* - * XAresult XALEDArrayItfAdapt_ActivateLEDArray ( XAAdaptationGstCtx *bCtx, XAuint32 lightMask ) - */ -XAresult XALEDArrayItfAdapt_ActivateLEDArray ( XAAdaptationGstCtx *bCtx, XAuint32 lightMask ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API_A1("->XALEDArrayItfAdapt_ActivateLEDArray %ld", lightMask); - - if(!bCtx || bCtx->baseObj.ctxId != XALedArrayAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_INFO("No support > stubbed."); - DEBUG_API("<-XALEDArrayItfAdapt_ActivateLEDArray"); - return ret; -} -/* - * XAresult XALEDArrayItfAdapt_SetColor ( XAAdaptationGstCtx *bCtx, XAuint8 index, const XAHSL * pColor ) - */ -XAresult XALEDArrayItfAdapt_SetColor ( XAAdaptationGstCtx *bCtx, XAuint8 index, const XAHSL * pColor ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XALEDArrayItfAdapt_SetColor"); - - if(!bCtx || bCtx->baseObj.ctxId != XALedArrayAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_INFO("No support > stubbed."); - DEBUG_API("<-XALEDArrayItfAdapt_SetColor"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaledarrayitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaledarrayitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XALEDARRAYITFADAPTATION_H_ -#define XALEDARRAYITFADAPTATION_H_ - -#include "xaadaptationgst.h" - - -/* FUNCTIONS */ -XAresult XALEDArrayItfAdapt_ActivateLEDArray ( XAAdaptationGstCtx *bCtx, XAuint32 lightMask ); -XAresult XALEDArrayItfAdapt_SetColor ( XAAdaptationGstCtx *bCtx, XAuint8 index, const XAHSL * pColor ); -#endif /* XALEDARRAYITFADAPTATION_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xamediaplayeradaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xamediaplayeradaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1114 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xamediaplayeradaptctx.h" -#include "xamediaplayeradaptctxmmf.h" -#include "xaadaptationgst.h" -#include "xaobjectitf.h" -#include "xacameradevice.h" -#include "xaoutputmix.h" -#include "xametadataadaptation.h" -/*#include "xangavideosink.h"*/ -#include "xacameraadaptctx.h" -#include "xaoutputmixadaptctx.h" - -/* forward declarations */ -XAresult XAMediaPlayerAdapt_CreatePipeline( XAMediaPlayerAdaptationCtx* ctx ); - -void* ngaVideoSinkPtr = NULL; - - -extern XAboolean cameraRealized; -extern XACameraAdaptationCtx_* cameraCtx; - -/* - * static void XAMediaPlayerAdapt_NewPadCb (GstElement *element, GstPad *pad, gpointer data) - * Listen to codec bin dynamic pads - */ -static void XAMediaPlayerAdapt_NewPadCb (GstElement *element, GstPad *pad, gpointer data) -{ - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*)data; - gchar *name = gst_pad_get_name (pad); - DEBUG_API_A1("->XAMediaPlayerAdapt_NewPadCb: A new pad %s was created", name); - /*try first newly created pad to video pipe*/ - if( mCtx->videoppbin && !(gst_pad_is_linked(gst_element_get_static_pad(mCtx->videoppbin, "videopp_sink"))) ) - { - if(gst_element_link_pads (mCtx->codecbin, name, mCtx->videoppbin, "videopp_sink")) - { - DEBUG_INFO_A1("Pads linked, codecbin:%s to videopp:sink", name); - g_free (name); - DEBUG_API("<-XAMediaPlayerAdapt_NewPadCb"); - return; - } - } - /*..and then to audio pipe*/ - if( mCtx->audioppbin && !(gst_pad_is_linked(gst_element_get_static_pad(mCtx->audioppbin, "sink"))) ) - { - if(gst_element_link_pads (mCtx->codecbin, name, mCtx->audioppbin, "sink")) - { - DEBUG_INFO_A1("Pads linked, codecbin:%s to audiopp:sink", name); - g_free (name); - DEBUG_API("<-XAMediaPlayerAdapt_NewPadCb"); - return; - } - } - - g_free (name); - DEBUG_INFO("Warning: Could not find anything to link to new pad."); - DEBUG_API("<-XAMediaPlayerAdapt_NewPadCb"); -} - -/* - * void push_data_for_prerolling (GstElement * pipeline, GstBuffer *buffer, XAMediaPlayerAdaptationCtx* ctx) - * Called when "push-buffer" signal is emitted - */ -void push_data_for_prerolling (GstElement * pipeline, GstBuffer *buffer, XAMediaPlayerAdaptationCtx* ctx) -{ - DEBUG_API("->push_data_for_prerolling"); - gst_app_src_push_buffer( GST_APP_SRC(ctx->source), GST_BUFFER(buffer) ); - /*GstPad* prerollPad = NULL; - prerollPad = gst_element_get_static_pad(GST_ELEMENT(ctx->source),"src"); - gst_pad_push (prerollPad, buffer); - gst_element_send_event(GST_ELEMENT(ctx->source),gst_event_new_flush_start()); - gst_element_send_event(GST_ELEMENT(ctx->source),gst_event_new_flush_stop());*/ - DEBUG_API("<-push_data_for_prerolling"); -} - - -/* - * gboolean XAMediaPlayerAdapt_GstBusCb( GstBus *bus, GstMessage *message, gpointer data ) - * MediaPlayer Gst-bus message handler (Callback) - */ -gboolean XAMediaPlayerAdapt_GstBusCb( GstBus *bus, GstMessage *message, gpointer data ) -{ - XAAdaptationGstCtx* bCtx = (XAAdaptationGstCtx*)data; - /* only listen to bin messages */ - if(GST_MESSAGE_SRC(message)==(GstObject*)(bCtx->bin)) - { - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*)data; - DEBUG_API_A2("->XAMediaPlayerAdapt_GstBusCb:\"%s\" from object \"%s\"", - GST_MESSAGE_TYPE_NAME(message), GST_OBJECT_NAME(GST_MESSAGE_SRC(message))); - - switch( GST_MESSAGE_TYPE(message)) - { - case GST_MESSAGE_EOS: - { - if( mCtx && mCtx->loopingenabled && mCtx->loopend == GST_CLOCK_TIME_NONE) - { - DEBUG_INFO_A2("Restart loop from %"GST_TIME_FORMAT" to %"GST_TIME_FORMAT, - GST_TIME_ARGS(mCtx->loopstart), GST_TIME_ARGS(mCtx->loopend)); - gst_element_seek( bCtx->bin, mCtx->playrate, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH|GST_SEEK_FLAG_ACCURATE), - GST_SEEK_TYPE_SET, mCtx->loopstart, - GST_SEEK_TYPE_NONE, (gint64)GST_CLOCK_TIME_NONE ); - gst_element_get_state(bCtx->bin,NULL,NULL,XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - mCtx->lastpos = mCtx->loopstart; - if( mCtx && mCtx->trackpositionenabled ) - { - XAmillisecond posMsec = GST_TIME_AS_MSECONDS(mCtx->lastpos);/*Warning ok due to used API specification*/ - XAAdaptEvent event = {XA_PLAYITFEVENTS, XA_ADAPT_POSITION_UPDATE_EVT, 1, NULL}; - event.data = &posMsec; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - } - else - { - /* stop position tracking */ - if(mCtx->runpositiontimer > 0) - { - g_source_remove(mCtx->runpositiontimer); - mCtx->runpositiontimer=0; - } - - /* complete any ongoing client async operations */ - XAAdaptationGst_CompleteAsyncWait(bCtx); - - /* send needed events */ - { - XAMediaType mediatype; -/* - if( mCtx->baseObj.pipeSrcThrCtx.pipe ) - { - XACommon_CheckDataSource((XADataSource*)mCtx->xaAudioSink, &mediatype); - } - else -*/ - { - XACommon_CheckDataSource(mCtx->xaSource, &mediatype); - } - if(mediatype!=XA_MEDIATYPE_IMAGE) - { - XAAdaptEvent event = { XA_PLAYITFEVENTS, XA_PLAYEVENT_HEADATEND, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - } - if(mCtx->positionCb) - { - mCtx->positionCb(bCtx); - } - bCtx->binWantedState = GST_STATE_PAUSED; - } - break; - } - - case GST_MESSAGE_STATE_CHANGED: - { - GstState oldstate, newstate, pendingstate, gsttargetstate; - gst_message_parse_state_changed(message, &oldstate, &newstate, &pendingstate); - gsttargetstate = GST_STATE_TARGET(bCtx->bin); - DEBUG_INFO_A4("old %s -> new %s ( pending %s, gsttarget %s )", - gst_element_state_get_name(oldstate), - gst_element_state_get_name(newstate), - gst_element_state_get_name(pendingstate), - gst_element_state_get_name(gsttargetstate) ); - if(gsttargetstate!=bCtx->binWantedState) - { - DEBUG_ERR_A1("WARNING: Gst target is not wanted target [%s]!!!", - gst_element_state_get_name(bCtx->binWantedState)); - } - /* print out some more info */ - if( pendingstate == GST_STATE_VOID_PENDING ) - { - if( newstate != bCtx->binWantedState ) - { - DEBUG_INFO_A2("Gst in intermediate state transition (curr %s, target %s)", - gst_element_state_get_name(newstate), - gst_element_state_get_name(bCtx->binWantedState)); - break; // TL: add to avoid extra event sent below in this case... - } - else - { - DEBUG_INFO_A1("Gst in wanted target state (%s)", - gst_element_state_get_name(newstate)); - } - } - if( oldstate!=GST_STATE_PLAYING && newstate==GST_STATE_PLAYING ) - { - /* send needed events */ - XAAdaptEvent event = {XA_PLAYITFEVENTS, XA_PLAYEVENT_HEADMOVING, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - /* enable position tracking if needed */ - XAMediaPlayerAdapt_UpdatePositionCbTimer(mCtx); - } - if ( oldstate== GST_STATE_READY && newstate==GST_STATE_PAUSED) - { -/* if ( mCtx->baseObj.pipeSinkThrCtx.dataHandle ) - { - mCtx->baseObj.pipeSrcThrCtx.state = CPStateInitialized; - }*/ - } - break; - } - - case GST_MESSAGE_ASYNC_DONE: - { - /* some async sequence ended */ - XAAdaptationGst_CompleteAsyncWait(bCtx); - break; - } - - case GST_MESSAGE_ERROR: - { - GError* error; - gchar* debug; - gst_message_parse_error(message, &error, &debug); - DEBUG_ERR_A1("Gst reports error \"%s\"", debug); - /* stop waiting any ongoing async operations */ - XAAdaptationGst_CompleteAsyncWait(bCtx); - break; - } - case GST_MESSAGE_BUFFERING: - { - gint percent; - gst_message_parse_buffering(message, &percent); - DEBUG_INFO_A1("Gst message buffering %d", percent); - mCtx->buffering = percent; - { - XAAdaptEvent event = {XA_PREFETCHITFEVENTS, XA_ADAPT_BUFFERING, 1, NULL }; - event.data = &mCtx->buffering; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - break; - } - case GST_MESSAGE_ELEMENT: - { - DEBUG_INFO("GST_MESSAGE_ELEMENT"); - if ((gst_structure_has_name(message->structure, "graphics-surface-created")) || - (gst_structure_has_name(message->structure, "graphics-surface-updated"))) - { - DEBUG_INFO("graphics-surface-created message recived"); - } - break; - } - default: - break; - } - } - else //if (GST_MESSAGE_SRC(message)==(GstObject*)(bCtx->videosink)) - { - switch( GST_MESSAGE_TYPE(message)) - { - case GST_MESSAGE_ELEMENT: - { - DEBUG_INFO("GST_MESSAGE_ELEMENT"); - if ((gst_structure_has_name(message->structure, "graphics-surface-created")) || - (gst_structure_has_name(message->structure, "graphics-surface-updated"))) - { - guint32 surfaceid0, surfaceid1, surfaceid2, surfaceid3; - gint crop_rect_tl_x, crop_rect_tl_y, crop_rect_br_x, crop_rect_br_y; - gint aspect_ratio_num, aspect_ratio_denom; - - GstObject *sink= GST_MESSAGE_SRC(message); - - g_object_get(sink, "surfaceid0", &surfaceid0, NULL); - g_object_get(sink, "surfaceid1", &surfaceid1,NULL); - g_object_get(sink, "surfaceid2", &surfaceid2,NULL); - g_object_get(sink, "surfaceid3", &surfaceid3,NULL); - g_object_get(sink, "croprect_tl_x", &crop_rect_tl_x, NULL); - g_object_get(sink, "croprect_tl_y", &crop_rect_tl_y, NULL); - g_object_get(sink, "croprect_br_x", &crop_rect_br_x, NULL); - g_object_get(sink, "croprect_br_y", &crop_rect_br_y, NULL); - g_object_get(sink, "aspectratio_num", &aspect_ratio_num, NULL); - g_object_get(sink, "aspectratio_denom", &aspect_ratio_denom, NULL); -/* - surface_created(ngaVideoSinkPtr, surfaceid0,surfaceid1,surfaceid2,surfaceid3,crop_rect_tl_x, - crop_rect_tl_y,crop_rect_br_x,crop_rect_br_y,aspect_ratio_num,aspect_ratio_denom); -*/ - } - break; - } - default: - break; - } - } - DEBUG_API("<-XAMediaPlayerAdapt_GstBusCb"); - return TRUE; -} - -/* - * XAMediaPlayerAdaptationCtx* XAMediaPlayerAdapt_Create() - * Allocates memory for Media Player Adaptation Context and makes 1st phase initialization - * @param XADataSource *pDataSrc - pointer to OMX-AL data source - * @param XADataSource *pBankSrc - pointer to instrument bank structure in Mobile DLS, if NULL default will be used. - * @param XADataSink *pAudioSnk - pointer to OMX-AL audio sink definition - * @param XADataSink *pImageVideoSnk - pointer to OMX-AL image and video sink definition - * @returns XAMediaPlayerAdaptationCtx* - Pointer to created context, NULL if error occurs. - */ -XAAdaptationBaseCtx* XAMediaPlayerAdapt_Create(XADataSource *pDataSrc, XADataSource *pBankSrc, - XADataSink *pAudioSnk, XADataSink *pImageVideoSnk, - XADataSink *pVibra, XADataSink *pLEDArray) -{ - XAMediaPlayerAdaptationCtx *pSelf = NULL; - XAuint32 locType = 0; - XADataLocator_IODevice *ioDevice; - - DEBUG_API("->XAMediaPlayerAdapt_Create"); - - //Create NGA Video Sink class -/* if(pImageVideoSnk) - { - ngaVideoSinkPtr = nga_video_sink_init(); - }*/ - - pSelf = calloc(1, sizeof(XAMediaPlayerAdaptationCtx)); - if ( pSelf) - { - if( XAAdaptationBase_Init(&(pSelf->baseObj.baseObj),XAMediaPlayerAdaptation) - != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to init base context!!!"); - free(pSelf); - pSelf = NULL; - return NULL; - } - else - { - pSelf->xaSource = pDataSrc; - pSelf->xaBankSrc = pBankSrc; - pSelf->xaAudioSink = pAudioSnk; - pSelf->xaVideoSink = pImageVideoSnk; - pSelf->xaLEDArray = pLEDArray; - pSelf->xaVibra = pVibra; - pSelf->loopstart = 0; - pSelf->loopend = (gint64)GST_CLOCK_TIME_NONE; - pSelf->playrate = 1.0; - pSelf->rateprops = (XA_RATEPROP_SMOOTHVIDEO | XA_RATEPROP_SILENTAUDIO); - pSelf->curMirror = XA_VIDEOMIRROR_NONE; - pSelf->curRotation = 0; - pSelf->isobjsrc = XA_BOOLEAN_FALSE; - pSelf->cameraSinkSynced = XA_BOOLEAN_FALSE; -/* if(pImageVideoSnk && ngaVideoSinkPtr) - { - setup_native_display(ngaVideoSinkPtr, pImageVideoSnk); - }*/ - } - - if ( pDataSrc ) - { - locType = *((XAuint32*)(pDataSrc->pLocator)); - if ( locType == XA_DATALOCATOR_IODEVICE ) - { - ioDevice = (XADataLocator_IODevice*)(pDataSrc->pLocator); - if ( ioDevice->deviceType == XA_IODEVICE_CAMERA && !cameraRealized ) - { - DEBUG_ERR("Preconditions violated - Camera object not realized"); - XAAdaptationBase_Free(&pSelf->baseObj.baseObj); - free(pSelf); - pSelf = NULL; - } - } - } - } - - DEBUG_API("<-XAMediaPlayerAdapt_Create"); - return (XAAdaptationBaseCtx*)(&pSelf->baseObj); -} - - - -/* - * XAresult XAMediaPlayerAdapt_PostInit() - * 2nd phase initialization of Media Player Adaptation Context - * @param XAMediaPlayerAdaptationCtx* ctx - pointer to Media Player adaptation context - * @return XAresult - Success value - */ -XAresult XAMediaPlayerAdapt_PostInit( XAAdaptationGstCtx* bCtx ) -{ - XAresult ret = XA_RESULT_SUCCESS; - GstStateChangeReturn gret; - - XAMediaPlayerAdaptationCtx* ctx = NULL; - GstElement *videotest=NULL; - - DEBUG_API("->XAMediaPlayerAdapt_PostInit"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XAMediaPlayerAdapt_PostInit"); - return XA_RESULT_PARAMETER_INVALID; - } - ctx = (XAMediaPlayerAdaptationCtx*)bCtx; - assert(ctx); - ret = XAAdaptationBase_PostInit( &bCtx->baseObj ); - if( ret!=XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Base context postinit failed!!"); - return ret; - } - - /* top level bin for media player */ - ctx->baseObj.bin = gst_pipeline_new("media_player"); - /* Create Gst bus listener. */ - ret = XAAdaptationGst_InitGstListener(bCtx); - if( ret!=XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Bus listener creation failed!!"); - return ret; - } - /* Add Media Player specific handler */ - if(ctx->baseObj.bus) - { - ctx->baseObj.busCb = XAMediaPlayerAdapt_GstBusCb; - gst_bus_add_signal_watch( ctx->baseObj.bus ); - gst_bus_enable_sync_message_emission( ctx->baseObj.bus ); - g_signal_connect(ctx->baseObj.bus, "message::eos", G_CALLBACK(bCtx->busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::error", G_CALLBACK(bCtx->busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::warning", G_CALLBACK(bCtx->busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::state-changed", G_CALLBACK(bCtx->busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::segment-done", G_CALLBACK(bCtx->busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::async-done", G_CALLBACK(bCtx->busCb), ctx ); - g_signal_connect(ctx->baseObj.bus, "message::element", G_CALLBACK(bCtx->busCb), ctx ); - } - else - { - DEBUG_ERR("Failed to create message bus"); - return XA_RESULT_INTERNAL_ERROR; - } - - XAMetadataAdapt_PreInit(bCtx); - - /* create pipeline */ - ret = XAMediaPlayerAdapt_CreatePipeline(ctx); - if ( ret != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to create Media Player pipeline"); - return ret; - } - -#ifdef XA_IMPL_MEASURE_GST_DELAY - ctx->baseObj.startTime = clock(); -#endif /* XA_IMPL_MEASURE_GST_DELAY */ - /* roll up bin */ - ctx->baseObj.binWantedState = GST_STATE_PAUSED; - - XAAdaptationGst_PrepareAsyncWait(bCtx); - gret = gst_element_set_state( GST_ELEMENT(ctx->baseObj.bin), bCtx->binWantedState); - if( gret == GST_STATE_CHANGE_ASYNC ) - { - DEBUG_INFO("Wait for preroll"); - XAAdaptationGst_StartAsyncWait(bCtx); - DEBUG_INFO("Preroll ready"); - } - else if( gret == GST_STATE_CHANGE_FAILURE ) - { - DEBUG_ERR("Preroll FAILED"); - ret = XA_RESULT_INTERNAL_ERROR; - } - - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - - gret = gst_element_get_state( GST_ELEMENT(bCtx->bin), NULL, NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - if(GST_STATE(bCtx->bin)audioppbin && !(gst_pad_is_linked(gst_element_get_static_pad(ctx->audioppbin, "sink"))) ) - {/*could not find suitable pad for audiopipeline - remove it*/ - DEBUG_INFO("Warning! No suitable decodebin pad for audio pipeline!"); - gst_element_set_state( GST_ELEMENT(ctx->audioppbin), GST_STATE_NULL); - gst_bin_remove(GST_BIN(bCtx->bin), ctx->audioppbin); - gst_element_set_state( GST_ELEMENT(ctx->audiosink), GST_STATE_NULL); - gst_bin_remove(GST_BIN(bCtx->bin), ctx->audiosink); - } - else if( ctx->videoppbin && !(gst_pad_is_linked(gst_element_get_static_pad(ctx->videoppbin, "videopp_sink"))) ) - {/*could not find suitable pad for videopipeline - remove it*/ - DEBUG_INFO("Warning! No suitable decodebin pad for video pipeline!"); - gst_element_set_state( GST_ELEMENT(ctx->videoppbin), GST_STATE_NULL); - gst_bin_remove(GST_BIN(bCtx->bin), ctx->videoppbin); - gst_element_set_state( GST_ELEMENT(ctx->videosink), GST_STATE_NULL); - gst_bin_remove(GST_BIN(bCtx->bin), ctx->videosink); - } - gst_element_set_state( GST_ELEMENT(bCtx->bin), bCtx->binWantedState); - gst_element_get_state( GST_ELEMENT(bCtx->bin), NULL, NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - if(GST_STATE(bCtx->bin)==GST_STATE_PAUSED) - { - DEBUG_INFO("Retry preroll successful!") - ret = XA_RESULT_SUCCESS; - } - } - else - { - DEBUG_INFO("Preroll ready"); - } - -#ifdef XA_IMPL_MEASURE_GST_DELAY - bCtx->endTime = clock(); - double diff = bCtx->endTime - bCtx->startTime ; - diff = diff / CLOCKS_PER_SEC; - DEBUG_API_A1( "Starting up bin took %.4lf secs",diff); -#endif /* XA_IMPL_MEASURE_GST_DELAY */ - videotest = gst_bin_get_by_name(GST_BIN(bCtx->bin), "videotest"); - if ( videotest && !ctx->isobjsrc ) - { - gst_element_set_state( GST_ELEMENT(videotest),GST_STATE_PLAYING); - } - - XAMetadataAdapt_PostInit(bCtx); - - if ( videotest ) - { - gst_object_unref(videotest); - } - - DEBUG_API("<-XAMediaPlayerAdapt_PostInit"); - return ret; -} - -/* - * void XAMediaPlayerAdapt_Destroy( XAMediaPlayerAdaptationCtx* ctx ) - * Destroys Media Player Adaptation Context - * @param ctx - Media Player Adaptation context to be destroyed - */ -void XAMediaPlayerAdapt_Destroy( XAAdaptationGstCtx* bCtx ) -{ - XAMediaPlayerAdaptationCtx* ctx = NULL; - - DEBUG_API("->XAMediaPlayerAdapt_Destroy"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XAMediaPlayerAdapt_Destroy"); - return; - } - ctx = (XAMediaPlayerAdaptationCtx*)bCtx; - - if( ctx->isobjsrc ) - { /* external source, unlink and remove now */ - /*gst_object_unparent( GST_OBJECT(ctx->source) );*/ - gst_element_unlink( ctx->source, ctx->codecbin ); - /*gst_bin_remove( GST_BIN(bCtx->bin), ctx->source );*/ - GST_OBJECT_FLAG_SET(GST_OBJECT(ctx->source),GST_OBJECT_FLOATING); - } -#if 0 - if ( ctx->xaSource ) - { - XAuint32 locType = *(XAuint32*)(ctx->xaSource->pLocator); - switch (locType ) - { - case XA_DATALOCATOR_IODEVICE: - { - XADataLocator_IODevice* ioDevice = (XADataLocator_IODevice*)(ctx->xaSource->pLocator); - if ( ioDevice->deviceType == XA_IODEVICE_RADIO ) - { - gst_object_unparent( GST_OBJECT(ctx->source) ); - gst_element_unlink( ctx->source, ctx->codecbin ); - gst_bin_remove( GST_BIN(bCtx->bin), ctx->source ); - GST_OBJECT_FLAG_SET(GST_OBJECT(ctx->source),GST_OBJECT_FLOATING); - } - } - default: - break; - } - } -#endif - - if( ctx->isobjasink && ctx->xaAudioSink && ctx->xaAudioSink->pLocator ) - { - XAuint32 locType = *(XAuint32*)(ctx->xaAudioSink->pLocator); - switch ( locType ) - { - case XA_DATALOCATOR_OUTPUTMIX: - { - XADataLocator_OutputMix* omix = (XADataLocator_OutputMix*)(ctx->xaAudioSink->pLocator); - XAOMixImpl* omixDevice = (XAOMixImpl*)(*omix->outputMix); - if(omixDevice) - { - XAOutputMixAdapt_DisconnectObject((XAAdaptationGstCtx*)omixDevice->adaptationCtx, bCtx); - } - break; - } - default: - /* Vibra and LED need no handling */ - break; - } - - } - - if( bCtx->bus ) - { - gst_bus_remove_signal_watch( bCtx->bus ); - gst_bus_disable_sync_message_emission ( bCtx->bus ); - } - XAAdaptationGst_CancelAsyncWait(bCtx); - - if( ctx->runpositiontimer ) - { - g_source_remove(ctx->runpositiontimer); - } - XAMetadataAdapt_FreeVars(ctx->metadatavars); - XAAdaptationBase_Free( &bCtx->baseObj ); - free(ctx); - ctx = NULL; - - DEBUG_API("<-XAMediaPlayerAdapt_Destroy"); -} - - -/* - * void XAMediaPlayerAdapt_CreatePipeline( XAMediaPlayerAdaptationCtx* ctx ); - */ -XAresult XAMediaPlayerAdapt_CreatePipeline( XAMediaPlayerAdaptationCtx* ctx ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAboolean delayedlink = XA_BOOLEAN_FALSE; - XAboolean isPCM = XA_BOOLEAN_FALSE; - XAboolean isRawImage = XA_BOOLEAN_FALSE; - XAMediaType mediatype; - XAuint32 locType = 0; - GstCaps* encSrcCaps = NULL; - DEBUG_API("->XAMediaPlayerAdapt_CreatePipeline"); - - /* create and add data source */ - XACommon_CheckDataSource(ctx->xaSource, &mediatype); - ctx->source = XAAdaptationGst_CreateGstSource( ctx->xaSource, "datasrc", &(ctx->isobjsrc), &isPCM, &isRawImage); - if( !(ctx->source) ) - { - DEBUG_ERR("Could not create data source!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - else - { - if(mediatype != XA_MEDIATYPE_AUDIO) - { - //temporary work around for video - encSrcCaps = gst_caps_new_simple ("video/h263-2000", - "framerate", GST_TYPE_FRACTION, 25, 1, - "pixel-aspect-ratio", GST_TYPE_FRACTION, 16, 9, - "width", G_TYPE_INT, 176, - "height", G_TYPE_INT, 144, - NULL); - g_object_set(G_OBJECT(ctx->source), "caps", encSrcCaps, NULL); - } - - //boolRetVal = gst_bin_add(GST_BIN(pipeline), appsrc); - - - } - - if ( !ctx->isobjsrc ) - { /* Add other than camera source to media player bin */ - DEBUG_INFO("No camera source"); - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->source); - } - else - { - GstCaps* encSrcCaps; - encSrcCaps = gst_caps_new_simple("video/x-raw-yuv", - "format", GST_TYPE_FOURCC,GST_MAKE_FOURCC('I','4','2','0'), - "framerate", GST_TYPE_FRACTION, 30, 1, - NULL); - DEBUG_INFO_A1("new camera encoding filter: %s",gst_caps_to_string(encSrcCaps)); - g_object_set( G_OBJECT(ctx->source), "filter-caps",encSrcCaps,NULL); - gst_caps_unref(encSrcCaps); - } - - /* create and add codec bin */ - if( !(ctx->isobjsrc || isPCM) ) - { - DEBUG_INFO("Create decodebin"); - if(mediatype == XA_MEDIATYPE_AUDIO) - { - ctx->codecbin = gst_element_factory_make( "decodebin" , "mpcodecbin" ); - } - else - { - ctx->codecbin = gst_element_factory_make( "identity" , "mpcodecbin" ); - } - } - else if(ctx->isobjsrc ) - { /* object sources produce framed raw data, decodebin only causes trouble */ //shyward - DEBUG_INFO("Create identity") - ctx->codecbin = gst_element_factory_make( "identity" , "mpcodecbin" ); - } - else if(isPCM) - { /* decodebin does not know how to handle PCM files */ - DEBUG_INFO("Create audioparse") - ctx->codecbin = gst_element_factory_make( "audioparse" , "mpcodecbin" ); - } - else if ( isRawImage) - { /* decodebin does not know how to handle raw unframed video data */ - DEBUG_INFO("Create videoparse") - ctx->codecbin = gst_element_factory_make( "videoparse", "mpcodecbin" ); - } - - if( ctx->codecbin ) - { - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->codecbin); - if ( !ctx->isobjsrc ) - { - if(mediatype == XA_MEDIATYPE_AUDIO) - { - if( !gst_element_link(ctx->source, ctx->codecbin) ) - { - DEBUG_ERR("Could not link source to decodebin!!"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - if( !gst_element_link_filtered(ctx->source, ctx->codecbin, encSrcCaps ) ) - { - DEBUG_ERR("Could not link source to decodebin!!"); - return XA_RESULT_INTERNAL_ERROR; - } - } - } - else - { /* Link camera source by using ghost-pads, because elements are in different bins */ - - GstPad *cameraBinGhostPad=NULL; - GstPad* ghost=NULL; - GstElement *camTee=NULL; - GstStateChangeReturn gret; - GstPad *mpGhostSink=NULL; - - /* Set external camera source to ready for pipeline manipulation */ - DEBUG_INFO("Set ext-source PAUSED for pipeline manipulation"); - gret = gst_element_set_state( GST_ELEMENT(ctx->source), GST_STATE_READY); - if(gret == GST_STATE_CHANGE_SUCCESS) - { - gret = gst_element_get_state( GST_ELEMENT(ctx->source), NULL,NULL,XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - } - - /* Add new ghost-pad to external camera source */ - camTee = gst_bin_get_by_name( GST_BIN(ctx->source), "CamTee"); - if ( !camTee ) - { - DEBUG_ERR("Could not get tee-element from camera"); - } - cameraBinGhostPad = gst_element_get_request_pad( camTee, "src%d" ); - if ( !cameraBinGhostPad ) - { - DEBUG_ERR("Could not get new src-pad from CamTee element"); - } - gst_element_add_pad(ctx->source, gst_ghost_pad_new("MPObjSrc",cameraBinGhostPad)); - ghost = gst_element_get_static_pad( GST_ELEMENT(ctx->source), "MPObjSrc" ); - DEBUG_INFO_A2("Setting element:%s pad:%s to blocking.", - gst_element_get_name(ctx->baseObj.bin), - gst_pad_get_name(ghost)); - /* Set newly created pad to blocking */ - gst_pad_set_blocked_async(ghost, TRUE, XAAdaptationGst_PadBlockCb, NULL); - - - /* Create new ghost-pad to media player pipeline where external camera is connected */ - mpGhostSink = gst_element_get_static_pad( GST_ELEMENT(ctx->codecbin), "sink"); - gst_element_add_pad(ctx->baseObj.bin, gst_ghost_pad_new("MPObjSink",mpGhostSink)); - - if ( !gst_element_link_pads( GST_ELEMENT(ctx->source), "MPObjSrc", - GST_ELEMENT(ctx->baseObj.bin), "MPObjSink") ) - { - DEBUG_ERR("Could not link camera:MPObjSrc to videofilter:MPObjSink"); - return XA_RESULT_INTERNAL_ERROR; - } - - if ( cameraBinGhostPad ) - { - gst_object_unref( cameraBinGhostPad ); - } - if ( ghost ) - { - gst_object_unref( ghost ); - } - if ( mpGhostSink ) - { - gst_object_unref( mpGhostSink ); - } - if ( camTee ) - { - gst_object_unref( camTee ); - } - } - } - else - { - DEBUG_ERR("Could not create decoder bin!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - - /* create and add video stream pipeline */ - if(!ctx->xaLEDArray && !ctx->xaVibra && mediatype!=XA_MEDIATYPE_AUDIO) /*no video for these*/ - { - /* create video processing pipeline */ - ctx->videoppbin = XAAdaptationGst_CreateVideoPP( ); - if( ctx->videoppbin ) - { - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->videoppbin); - //shyward ---link filtered??? - // boolRetVal = gst_element_link_filtered(appsrc, videosink, caps); - //if(!gst_element_link(ctx->codecbin, ctx->videoppbin)) - if(!gst_element_link_filtered(ctx->codecbin, ctx->videoppbin,encSrcCaps)) - { - /* probably dynamic pads in codecbin */ - DEBUG_INFO("Could not link codec to videopp, trying delayed link"); - delayedlink = XA_BOOLEAN_TRUE; - } - ctx->videoScrSrcPad = gst_element_get_static_pad(ctx->videoppbin, "videopp_src"); - } - else - { - DEBUG_ERR("Could not create video pp bin!!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - //shyward - /* Black screen pipeline not needed under Symbian. May need to revist for acceptance testing - ctx->videoppBScrbin = XAAdaptationBase_CreateVideoPPBlackScr( ); - if( ctx->videoppBScrbin ) - { - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->videoppBScrbin); - ctx->blackScrSrcPad = gst_element_get_static_pad(ctx->videoppBScrbin, "videoppBSrc_src"); - } - else - { - DEBUG_ERR("Could not create video pp bin for black screen!!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - */ - ctx->inputSelector = XAAdaptationGst_CreateInputSelector( ); - if( ctx->inputSelector ) - { - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->inputSelector); - ctx->videoScrSinkPad = gst_element_get_request_pad(ctx->inputSelector, "sink%d"); - ctx->blackScrSinkPad = gst_element_get_request_pad(ctx->inputSelector, "sink%d"); - gst_pad_link(ctx->blackScrSrcPad, ctx->blackScrSinkPad); - gst_pad_link(ctx->videoScrSrcPad, ctx->videoScrSinkPad); - } - - //shyward - We have no video filter at this time - /* - ctx->filter = gst_element_factory_make("ffmpegcolorspace", "videofilter"); - gst_bin_add( GST_BIN(ctx->baseObj.bin), ctx->filter); - if ( !gst_element_link( ctx->inputSelector, ctx->filter ) ) - { - DEBUG_ERR("Could not link ctx->filter <-> ctx->inputSelector"); - return XA_RESULT_INTERNAL_ERROR; - } - */ - /* create video pipe sink */ - ctx->videosink = XAAdaptationGst_CreateGstSink( ctx->xaVideoSink, "videosink", &(ctx->isobjvsink) ); - /* NOTE: no valid object sinks for video output available */ - if( ctx->videosink ) - { - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->videosink); - - //shyward - //if(!gst_element_link(ctx->filter, ctx->videosink)) - if(!gst_element_link_filtered(ctx->videoppbin, ctx->videosink,encSrcCaps)) - { - DEBUG_ERR("Could not link videopp to videosink!!"); - return XA_RESULT_INTERNAL_ERROR; - } - else - { - gst_caps_unref(encSrcCaps); - } - } - else - { - DEBUG_ERR("Could not create video sink!!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_INFO("Media does not contain video!"); - } - - /* create and add audio stream pipeline */ - - if(!ctx->xaLEDArray && !ctx->xaVibra && mediatype!=XA_MEDIATYPE_IMAGE) /*no audio for these*/ - { - /* create audio post processing pipeline */ - ctx->audioppbin = XAAdaptationGst_CreateAudioPP( ); - if( ctx->audioppbin ) - { - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->audioppbin); - if(!gst_element_link(ctx->codecbin, ctx->audioppbin)) - { - DEBUG_INFO("Could not link codec to audiopp, trying delayed link"); - delayedlink = XA_BOOLEAN_TRUE; - } - } - else - { - DEBUG_ERR("Could not create audio pp bin!!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - /* create audio pipe sink */ - ctx->audiosink = XAAdaptationGst_CreateGstSink( ctx->xaAudioSink, "audiosink", &(ctx->isobjasink) ); - if( ctx->audiosink ) - { - if( ctx->isobjasink && ctx->xaAudioSink && ctx->xaAudioSink->pLocator ) - { - locType = *(XAuint32*)(ctx->xaAudioSink->pLocator); - switch ( locType ) - { - case XA_DATALOCATOR_OUTPUTMIX: - { - XADataLocator_OutputMix* omix = (XADataLocator_OutputMix*)(ctx->xaAudioSink->pLocator); - XAOMixImpl* omixDevice = (XAOMixImpl*)(*omix->outputMix); - if(omixDevice) - { - XAOutputMixAdapt_ConnectObject((XAAdaptationGstCtx*)omixDevice->adaptationCtx, &(ctx->baseObj), ctx->audiosink); - } - break; - } - default: - /* Vibra and LED need no handling */ - break; - } - } - gst_bin_add(GST_BIN(ctx->baseObj.bin), ctx->audiosink); - if(!gst_element_link(ctx->audioppbin, ctx->audiosink)) - { - DEBUG_ERR("Could not link audiopp to audiosink!!"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_ERR("Could not create audio sink!!!!"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_INFO("Media does not contain audio!"); - } - - if(delayedlink) - { - /* listen for dynamically created pads */ - g_signal_connect (ctx->codecbin, "pad-added", G_CALLBACK (XAMediaPlayerAdapt_NewPadCb), ctx); - } - locType = *((XAuint32*)(ctx->xaSource->pLocator)); - - DEBUG_API("<-XAMediaPlayerAdapt_CreatePipeline"); - return ret; -} - -/* - * gboolean XAMediaPlayerAdapt_PositionUpdate(gpointer ctx) - * callback. - * If position tracking enabled, periodic timer calls this method every XA_ADAPT_PU_INTERVAL msecs - * @return false to stop periodic calls - */ -gboolean XAMediaPlayerAdapt_PositionUpdate(gpointer ctx) -{ - XAAdaptationGstCtx *bCtx = (XAAdaptationGstCtx*) ctx; - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) ctx; - gint64 position; - XAmillisecond posMsec; - GstFormat format = GST_FORMAT_TIME; - XAAdaptEvent event = {XA_PLAYITFEVENTS, XA_ADAPT_POSITION_UPDATE_EVT, 1, NULL}; - - DEBUG_API("->XAMediaPlayerAdapt_PositionUpdate"); - if ( !gst_element_query_position( GST_ELEMENT(bCtx->bin), &format, &position ) ) - { - DEBUG_ERR("Gst: Failed to get position"); - return( mCtx->runpositiontimer ); - } - DEBUG_INFO_A1("Current position %"GST_TIME_FORMAT, GST_TIME_ARGS(position)); - if( mCtx && mCtx->trackpositionenabled ) - { - posMsec = GST_TIME_AS_MSECONDS(position);/*Warning ok due to used API specification*/ - DEBUG_INFO_A1("mCtx->trackpositionenabled sending update, position:&ld ", posMsec); - /* send needed events */ - event.data=&posMsec; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - if( mCtx && mCtx->loopingenabled) - { - DEBUG_INFO_A2("mCtx->loopingenabled, current position:%lu, loopend:%lu ", position, mCtx->loopend); - if( (position >= mCtx->loopend) && - (mCtx->lastpos < mCtx->loopend) ) - { - DEBUG_INFO_A2("Restart loop from %"GST_TIME_FORMAT" to %"GST_TIME_FORMAT, - GST_TIME_ARGS(mCtx->loopstart), GST_TIME_ARGS(mCtx->loopend)); - gst_element_seek( bCtx->bin, mCtx->playrate, GST_FORMAT_TIME, (GstSeekFlags)(GST_SEEK_FLAG_FLUSH|GST_SEEK_FLAG_ACCURATE), - GST_SEEK_TYPE_SET, mCtx->loopstart, - GST_SEEK_TYPE_NONE, (gint64)GST_CLOCK_TIME_NONE ); - mCtx->lastpos = mCtx->loopstart; - if( mCtx && mCtx->trackpositionenabled ) - { - DEBUG_INFO_A1("mCtx->trackpositionenabled sending looping update, position:%&u ", posMsec); - posMsec = GST_TIME_AS_MSECONDS(mCtx->lastpos);/*Warning ok due to used API specification*/ - /* send needed events */ - event.data=&posMsec; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - } - else - { - mCtx->lastpos = position; - } - } - DEBUG_API("<-XAMediaPlayerAdapt_PositionUpdate"); - /* return false to stop timer */ - return( mCtx->runpositiontimer ); -} - -/* - * XAresult XAMediaPlayerAdapt_UpdatePositionCbTimer - * Enable/disable periodic position tracking callback timer - */ -XAresult XAMediaPlayerAdapt_UpdatePositionCbTimer(XAMediaPlayerAdaptationCtx* mCtx) -{ - DEBUG_API_A2("->XAMediaPlayerAdapt_UpdatePositionCbTimer: trackposition %u, tracklooping %u", - mCtx->trackpositionenabled, mCtx->loopingenabled); - - if(mCtx->runpositiontimer==0 && (mCtx->trackpositionenabled || mCtx->loopingenabled)) - { - DEBUG_INFO("Start position tracking timer"); - mCtx->positionCb = &XAMediaPlayerAdapt_PositionUpdate; - /* if play is already on, create a timer to track position of playback */ - if( GST_STATE(mCtx->baseObj.bin) == GST_STATE_PLAYING ) - { - mCtx->runpositiontimer = g_timeout_add(XA_ADAPT_PU_INTERVAL, mCtx->positionCb, mCtx); - } - } - else if (mCtx->runpositiontimer!=0 && !(mCtx->trackpositionenabled || mCtx->loopingenabled)) - { - DEBUG_INFO("Stop position tracking timer"); - mCtx->trackpositionenabled = XA_BOOLEAN_FALSE; - if(mCtx->runpositiontimer > 0) - { - g_source_remove(mCtx->runpositiontimer); - mCtx->runpositiontimer=0; - } - } - DEBUG_API("<-XAMediaPlayerAdapt_UpdatePositionCbTimer"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAMediaPlayerAdapt_InitContentPipeSrc(ctx) - * CP code: can be moved to context base - */ -/*XAresult XAMediaPlayerAdapt_InitContentPipeSrc(XAMediaPlayerAdaptationCtx* ctx) -{ - XAresult ret = XA_RESULT_SUCCESS; - CPresult res; - GstStateChangeReturn gstRet = GST_STATE_CHANGE_SUCCESS; - DEBUG_API("->XAMediaPlayerAdapt_InitContentPipeSrc"); - ctx->baseObj.pipeSrcThrCtx.appSrc = GST_APP_SRC(ctx->source); - ctx->baseObj.pipeSrcThrCtx.pipe = (XADataLocator_ContentPipe*)(ctx->xaSource->pLocator); - - Create thread for content pipe source - ret = XAImpl_CreateThreadHandle( &(ctx->baseObj.pipeSrcThr) ); - if ( ret != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Could not create thread for content pipe source!"); - DEBUG_API("<-XAMediaPlayerAdapt_InitContentPipeSrc"); - return ret; - } - - Create semaphore for content pipe source - ret = XAImpl_CreateSemaphore( &(ctx->baseObj.pipeSrcThrCtx.stateSem)); - if ( ret != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Could not create semaphore for content pipe source!"); - DEBUG_API("<-XAMediaPlayerAdapt_InitContentPipeSrc"); - return ret; - } - - Open content pipe - res = ctx->baseObj.pipeSrcThrCtx.pipe->pContentPipe->Open(&(ctx->baseObj.pipeSrcThrCtx.dataHandle), - (CPstring)(ctx->baseObj.pipeSrcThrCtx.pipe->URI), - CP_AccessRead ); - if ( res == EXIT_FAILURE ) - { - DEBUG_ERR("Could not open Content Pipe!") - return XA_RESULT_INTERNAL_ERROR; - } - - res = ctx->baseObj.pipeSrcThrCtx.pipe->pContentPipe->RegisterCallback( &(ctx->baseObj.pipeSrcThrCtx.dataHandle), &XAAdaptationBase_ContentPipeSrcCb); - if ( res == EXIT_FAILURE ) - { - DEBUG_ERR("Could not register content pipe callbacks!") - return XA_RESULT_INTERNAL_ERROR; - } - - gstRet = gst_element_set_state( GST_ELEMENT(ctx->source), GST_STATE_PAUSED); - gst_element_sync_state_with_parent( GST_ELEMENT( ctx->source)); - - XAImpl_StartThread( &(ctx->baseObj.pipeSrcThr), NULL, &XAAdaptationBase_ContentPipeScrThrFunc, &(ctx->baseObj.pipeSrcThrCtx) ); - - DEBUG_API("<-XAMediaPlayerAdapt_InitContentPipeSrc"); - return ret; -}*/ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xamediaplayeradaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xamediaplayeradaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAMEDIAPLAYERADAPTCTX_H -#define XAMEDIAPLAYERADAPTCTX_H - -#include "xaadaptationgst.h" -#include "xametadataadaptation.h" -/* TYPEDEFS */ - -typedef struct XAMediaPlayerAdaptationCtx_ XAMediaPlayerAdaptationCtx; - -/* - * Structure for Media Player specific gst-adaptation. - */ -typedef struct XAMediaPlayerAdaptationCtx_ -{ - /* Parent*/ - XAAdaptationGstCtx_ baseObj; - - /* OMX-AL Variables */ - XADataSource *xaSource, *xaBankSrc; - XADataSink *xaAudioSink, *xaVideoSink, *xaLEDArray, *xaVibra; - - /* GST elements */ - GstElement *source; - XAboolean isobjsrc; /*is source another XA object?*/ - GstElement *codecbin; - GstElement *audioppbin; - GstElement *videoppbin; - GstElement *filter; - GstElement *videoppBScrbin; - GstElement *inputSelector; - GstPad *blackScrSrcPad; - GstPad *videoScrSrcPad; - GstPad *blackScrSinkPad; - GstPad *videoScrSinkPad; - GstElement *audiosink; - XAboolean isobjasink; /*is audio sink another XA object?*/ - GstElement *videosink; - XAboolean isobjvsink; /*is video sink another XA object?*/ - - XAboolean mute; - XAuint32 imageEffectID; - XAboolean isStereoPosition; - XAmillidegree curRotation; - XAuint32 curMirror; - - XAint32 buffering; - - /* internals */ - XAboolean trackpositionenabled; - guint runpositiontimer; - GSourceFunc positionCb; - gint64 lastpos; - - XAboolean loopingenabled; - gint64 loopstart; - gint64 loopend; - - gdouble playrate; - guint32 rateprops; - - XAboolean cameraSinkSynced; - - XAMetadataAdaptVars *metadatavars; - -} XAMediaPlayerAdaptationCtx_; - - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XAMediaPlayerAdapt_Create( XADataSource *pDataSrc, XADataSource *pBankSrc, - XADataSink *pAudioSnk, XADataSink *pImageVideoSnk, - XADataSink *pVibra, XADataSink *pLEDArray); -XAresult XAMediaPlayerAdapt_PostInit( XAAdaptationGstCtx* bCtx ); -void XAMediaPlayerAdapt_Destroy( XAAdaptationGstCtx* bCtx ); -XAresult XAMediaPlayerAdapt_UpdatePositionCbTimer(XAMediaPlayerAdaptationCtx_* mCtx); - -XAresult XAMediaPlayerAdapt_InitContentPipeSrc(XAMediaPlayerAdaptationCtx* ctx); -#endif /*XAMEDIAPLAYERADAPTCTX_H*/ - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xamediarecorderadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xamediarecorderadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xamediarecorderadaptctx.c Wed Aug 18 10:17:22 2010 +0300 @@ -21,11 +21,6 @@ #include #include "xacapabilitiesmgr.h" #include "xamediarecorderadaptctx.h" -#include "xacameraadaptctx.h" - - -extern XAboolean cameraRealized; -extern XACameraAdaptationCtx_* cameraCtx; /*forward declarations*/ GstElement* XAMediaRecorderAdapt_CreateEncodeBin( @@ -165,8 +160,6 @@ XADataSource* pImageVideoSrc, XADataSink* pDataSnk, XAuint8 recModes) { XAMediaRecorderAdaptationCtx *pSelf = NULL; - XAuint32 locType = 0; - XADataLocator_IODevice *ioDevice; DEBUG_API("->XAMediaRecorderAdapt_Create"); pSelf = (XAMediaRecorderAdaptationCtx*)calloc(1, sizeof(XAMediaRecorderAdaptationCtx)); @@ -219,26 +212,6 @@ pSelf->audioEncSettings.encodeOptions = 0; pSelf->audioEncSettings.blockAlignment = 0; } - - if (pImageVideoSrc) - { - locType = *((XAuint32*) (pImageVideoSrc->pLocator)); - if (locType == XA_DATALOCATOR_IODEVICE) - { - ioDevice - = (XADataLocator_IODevice*) (pImageVideoSrc->pLocator); - if (ioDevice->deviceType == XA_IODEVICE_CAMERA - && !cameraRealized) - { - DEBUG_ERR("Preconditions violated - Camera object not realized"); - XAAdaptationBase_Free(&pSelf->baseObj.baseObj); - free(pSelf); - pSelf = NULL; - DEBUG_API("<-XAMediaRecorderAdapt_Create"); - return NULL; - } - } - } } DEBUG_API("<-XAMediaRecorderAdapt_Create"); @@ -260,7 +233,8 @@ DEBUG_API("->XAMediaRecorderAdapt_PostInit"); if (bCtx == NULL || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) { - DEBUG_ERR("Invalid parameter!!");DEBUG_API("<-XAMediaRecorderAdapt_PostInit"); + DEBUG_ERR("Invalid parameter!!"); + DEBUG_API("<-XAMediaRecorderAdapt_PostInit"); return XA_RESULT_PARAMETER_INVALID; } ctx = (XAMediaRecorderAdaptationCtx*) bCtx; @@ -354,7 +328,8 @@ if (bCtx == NULL || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) { - DEBUG_ERR("Invalid parameter!!");DEBUG_API("<-XAMediaRecorderAdapt_Destroy"); + DEBUG_ERR("Invalid parameter!!"); + DEBUG_API("<-XAMediaRecorderAdapt_Destroy"); return; } ctx = (XAMediaRecorderAdaptationCtx*) bCtx; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xametadataadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xametadataadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xametadataadaptation.c Wed Aug 18 10:17:22 2010 +0300 @@ -18,8 +18,7 @@ #include #include #include "xaadaptationgst.h" -#include "xametadataadaptctx.h" -#include "xamediaplayeradaptctx.h" + #include "xamediarecorderadaptctx.h" #include "xametadataadaptation.h" @@ -111,16 +110,8 @@ XAresult ret = XA_RESULT_SUCCESS; XAMetadataAdaptVars* mdv; DEBUG_API("->XAMetadataAdapt_PreInit"); - if( bCtx->baseObj.ctxId == XAMDAdaptation || - bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - mdv = (XAMetadataAdaptVars*) calloc(1, sizeof(XAMetadataAdaptVars)); - mdv->currentchild = &(mdv->generaltags); - mdv->traversemode=XA_METADATATRAVERSALMODE_NODE; - ((XAMediaPlayerAdaptationCtx*)bCtx)->metadatavars = mdv; - - } - else if ( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) + + if ( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) { mdv = (XAMetadataAdaptVars*) calloc(1, sizeof(XAMetadataAdaptVars)); mdv->currentchild = &(mdv->generaltags); @@ -155,97 +146,7 @@ XAresult XAMetadataAdapt_PostInit(XAAdaptationGstCtx *bCtx) { XAresult ret = XA_RESULT_SUCCESS; - XAMetadataAdaptVars* mdv=NULL; - XAMediaPlayerAdaptationCtx* mCtx=NULL; - GstPad* tmppad=NULL; - GstCaps* tmpcaps=NULL; - GstElement* tmpelement=NULL; - XAAdaptEvent event = {XA_METADATAEVENTS, XA_ADAPT_MDE_TAGS_AVAILABLE, 0, NULL }; - DEBUG_API("->XAMetadataAdapt_PostInit"); - if( bCtx->baseObj.ctxId == XAMDAdaptation || - bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - mdv = XAMetadataAdapt_GetMetadataVars(bCtx); - if( mdv ) - { - mdv->childcount = 0; - /* try to dig out audio and video pads from decodebin for stream info tags */ - /* NOTE: currently no good deterministic way to dig out undecoded pads - * from decodebin's internal demuxer, this is just ugly way to try to cope - * with most demuxers. - */ - mCtx = ((XAMediaPlayerAdaptationCtx*)bCtx); - if(GST_IS_BIN(mCtx->codecbin)) - { - tmpelement=gst_bin_get_by_name(GST_BIN(mCtx->codecbin),"typefind"); - if(tmpelement) - { - tmppad = gst_element_get_static_pad(GST_ELEMENT(tmpelement),"src"); - tmpelement=NULL; - if(tmppad) - { - tmppad = gst_pad_get_peer(tmppad); - if(tmppad) - { - tmpelement = gst_pad_get_parent_element(tmppad); - } - } - /* now we have demuxer, if existing */ - if(tmpelement) - { - tmppad = gst_element_get_pad( tmpelement, "audio_00"); - if(tmppad) - { - tmpcaps = gst_pad_get_negotiated_caps( GST_PAD(tmppad) ); - if(tmpcaps==NULL || gst_caps_is_any(tmpcaps) || gst_caps_is_empty(tmpcaps)) - { - mdv->audiotags = NULL; - DEBUG_INFO("no usable audio properties found from pad !"); - } - else - { - mdv->audiotags = gst_caps_get_structure(tmpcaps,0); - mdv->childcount++; - DEBUG_INFO_A1("found audio node: %s",gst_caps_to_string(tmpcaps)); - } - } - tmppad = gst_element_get_pad( tmpelement, "video_00"); - if(tmppad) - { - tmpcaps = gst_pad_get_negotiated_caps( GST_PAD(tmppad) ); - if(tmpcaps==NULL || gst_caps_is_any(tmpcaps) || gst_caps_is_empty(tmpcaps)) - { - mdv->videotags = NULL; - DEBUG_INFO("no usable video properties found from pad !"); - } - else - { - mdv->videotags = gst_caps_get_structure(tmpcaps,0); - mdv->childcount++; - DEBUG_INFO_A1("found video node: %s",gst_caps_to_string(tmpcaps)); - } - } - } - } - } - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - } - - if ( tmpelement ) - { - gst_object_unref( tmpelement ); - } - if ( tmppad ) - { - gst_object_unref( tmppad ); - } - if ( tmpcaps ) - { - gst_object_unref( tmpcaps ); - } - DEBUG_API_A1("<-XAMetadataAdapt_PostInit (%d)", (int)ret); return ret; } @@ -621,7 +522,8 @@ DEBUG_ERR("Nodetype not supported!"); ret = XA_RESULT_CONTENT_UNSUPPORTED; DEBUG_API_A1("<-XAMetadataInsertionItfAdapt_CreateChildNode (%d)", (int)ret); - return ret; } + return ret; + } mdv = mCtx->metadatavars; if(!mdv) @@ -956,12 +858,8 @@ */ XAMetadataAdaptVars* XAMetadataAdapt_GetMetadataVars(XAAdaptationGstCtx *bCtx) { - if( bCtx->baseObj.ctxId == XAMDAdaptation || - bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - return ((XAMediaPlayerAdaptationCtx*)bCtx)->metadatavars; - } - else if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) + + if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) { return ((XAMediaRecorderAdaptationCtx*)bCtx)->metadatavars; } @@ -1087,13 +985,8 @@ GST_MESSAGE_TYPE_NAME(message), GST_OBJECT_NAME(GST_MESSAGE_SRC(message))); gst_message_parse_tag (message, &new_tags); /* NOTE: only general tags received this way (not child nodes)*/ - if( bCtx->baseObj.ctxId == XAMDAdaptation || - bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - old_tags = &((XAMediaPlayerAdaptationCtx*)bCtx)->metadatavars->generaltags; - mode = GST_TAG_MERGE_REPLACE; - } - else if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) + + if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) { old_tags = &((XAMediaRecorderAdaptationCtx*)bCtx)->metadatavars->generaltags; /* keep user's tags */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xametadataadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xametadataadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xametadataadaptctx.h" -#include "xaadaptationgst.h" - -/* - * XAAdaptationGstCtx* XAMetadataAdapt_Create() - * Allocates memory for Metadata Adaptation Context and makes 1st phase initialization - * @returns XAMetadataAdaptationCtx* - Pointer to created context - */ -XAAdaptationBaseCtx* XAMetadataAdaptCtx_Create(XADataSource* pDataSrc) -{ - /* use media player context with NULL sinks - * (no specific MDE context needed, because in GStreamer, - * playback resources are needed for getting stream tags) - **/ - return XAMediaPlayerAdapt_Create(pDataSrc,NULL,NULL,NULL,NULL,NULL); -} - -/* - * XAresult XAMetadataAdapt_PostInit() - * 2nd phase initialization of Metadata Adaptation Context - */ -XAresult XAMetadataAdaptCtx_PostInit(XAAdaptationGstCtx* bCtx) -{ - /* pipe to media player adaptation */ - return XAMediaPlayerAdapt_PostInit(bCtx); -} - -/* - * void XAMetadataAdapt_Destroy(XAMetadataAdaptationCtx* ctx) - * Destroys Metadata Adaptation Context - * @param ctx - Metadata Adaptation context to be destroyed - */ -void XAMetadataAdaptCtx_Destroy(XAAdaptationGstCtx* bCtx) -{ - /* pipe to media player adaptation */ - XAMediaPlayerAdapt_Destroy(bCtx); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xametadataadaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xametadataadaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAMETADATAADAPTCTX_H -#define XAMETADATAADAPTCTX_H - -#include "xamediaplayeradaptctx.h" -/* TYPEDEFS */ - -/* use media player context with NULL sinks - * (no specific MDE context needed, because in GStreamer, - * playback resources are needed for getting stream tags) - */ -typedef struct XAMediaPlayerAdaptationCtx_ XAMetadataAdaptationCtx; - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XAMetadataAdaptCtx_Create(XADataSource* pDataSource); -XAresult XAMetadataAdaptCtx_PostInit(XAAdaptationGstCtx* bCtx); -void XAMetadataAdaptCtx_Destroy(XAAdaptationGstCtx* bCtx); - - -#endif /* XAMETADATAADAPTCTX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaoutputmixadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaoutputmixadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,226 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaoutputmixadaptctx.h" -#include "xaadaptationgst.h" -#include "xacapabilitiesmgr.h" - - -/* - * XAAdaptationGstCtx* XAOutputMixAdapt_Create() - * @returns XAOutputMixAdaptationCtx* - Pointer to created context - * Description: Allocates memory for Output Mix Adaptation Context and makes 1st phase initialization - */ -XAAdaptationBaseCtx* XAOutputMixAdapt_Create() -{ - XAOutputMixAdaptationCtx *pSelf = (XAOutputMixAdaptationCtx*)calloc(1, sizeof(XAOutputMixAdaptationCtx)); - - DEBUG_API("->XAOutputMixAdapt_Create"); - if ( pSelf) - { - if( XAAdaptationBase_Init(&(pSelf->baseObj.baseObj),XAOutputMixAdaptation) - != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to init base context!!!"); - free(pSelf); - pSelf = NULL; - } - else - { - XAuint32 devId; - pSelf->connectedObjects = g_array_new (FALSE, TRUE, sizeof (XAOMixAdaptConnObj)); - pSelf->availableDevices = g_array_new (FALSE, TRUE, sizeof (XAuint32)); - /*initially, only alsasink available*/ -// devId = XA_ADAPTID_ALSASINK; - devId = XA_ADAPTID_DEVSOUNDSINK; - g_array_append_val(pSelf->availableDevices, devId); - pSelf->currentrouting = devId; - } - } - DEBUG_API("<-XAOutputMixAdapt_Create"); - return (XAAdaptationBaseCtx* )&pSelf->baseObj; -} - -/* - * XAresult XAOutputMixAdapt_PostInit(XAAdaptationGstCtx* bCtx) - * 2nd phase initialization of Output Mix Adaptation Context - */ -XAresult XAOutputMixAdapt_PostInit(XAAdaptationGstCtx* bCtx) -{ - DEBUG_API("->XAOutputMixAdapt_PostInit"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XAOutputMixAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XAOutputMixAdapt_PostInit"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check and add devices to pSelf->availableDevices if such detection can be done */ - DEBUG_API("<-XAOutputMixAdapt_PostInit"); - return XA_RESULT_SUCCESS; -} - -/* - * void XAOutputMixAdapt_Destroy(XAAdaptationGstCtx* bCtx) - * Destroys Output Mix Adaptation Context - * @param ctx - Output Mix Adaptation context to be destroyed - */ -void XAOutputMixAdapt_Destroy(XAAdaptationGstCtx* bCtx) -{ - XAOutputMixAdaptationCtx* ctx = NULL; - DEBUG_API("->XAOutputMixAdapt_Destroy"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XAOutputMixAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XAOutputMixAdapt_Destroy"); - return; - } - ctx = (XAOutputMixAdaptationCtx*)bCtx; - g_array_free(ctx->connectedObjects, TRUE); - g_array_free(ctx->availableDevices, TRUE); - - XAAdaptationBase_Free( &(ctx->baseObj.baseObj) ); - free(ctx); - DEBUG_API("<-XAOutputMixAdapt_Destroy"); -} - -/* - * GstElement* XAOutputMixAdapt_GetSink(XAAdaptationGstCtx* bCtx) - */ -GstElement* XAOutputMixAdapt_GetSink(XAAdaptationGstCtx* bCtx) -{ - XAOutputMixAdaptationCtx* mixCtx = NULL; - /* create sink for current routing */ - GstElement* newsink=NULL; - XACapabilities temp; - - DEBUG_API("->XAOutputMixAdapt_GetSink"); - if(bCtx == NULL || bCtx->baseObj.ctxId != XAOutputMixAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XAOutputMixAdapt_GetSink"); - return NULL; - } - mixCtx = (XAOutputMixAdaptationCtx*)bCtx; - - if(!mixCtx) - { - DEBUG_ERR("NULL context!"); - return NULL; - } - - if( XA_RESULT_SUCCESS == - XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)((XACapsType)(XACAP_DEVSNK|XACAP_AUDIO)), mixCtx->currentrouting, &temp) ) - { - newsink = gst_element_factory_make((char*)temp.adaptId,(char*)temp.adaptId); - if(!newsink) - { - DEBUG_ERR_A1("Could not create sink \"%s\"!", (char*)temp.adaptId); - } - } - else - { - DEBUG_ERR_A1("Could not find audio device by id 0x%x", (int)mixCtx->currentrouting); - } - DEBUG_API("<-XAOutputMixAdapt_GetSink"); - return newsink; - -} - -/* - * XAresult XAOutputMixAdapt_ConnectObject(XAAdaptationGstCtx* omCtx, XAAdaptationGstCtx* bCtx, GstElement* usedMix) - */ -XAresult XAOutputMixAdapt_ConnectObject(XAAdaptationGstCtx* omCtx, XAAdaptationGstCtx* bCtx, GstElement* usedMix) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint32 i=0; - XAOutputMixAdaptationCtx* mixCtx =NULL; - DEBUG_API("->XAOutputMixAdapt_ConnectObject"); - if( !omCtx || omCtx->baseObj.ctxId!=XAOutputMixAdaptation || !bCtx || !usedMix ) - { - DEBUG_ERR("Invalid attribute!!"); - DEBUG_API("<-XAOutputMixAdapt_ConnectObject"); - return XA_RESULT_PARAMETER_INVALID; - } - mixCtx = (XAOutputMixAdaptationCtx*)omCtx; - if( !mixCtx || !bCtx || !usedMix ) - { - DEBUG_ERR("Invalid attribute!!"); - DEBUG_API("<-XAOutputMixAdapt_DisconnectObject"); - return XA_RESULT_PARAMETER_INVALID; - } - for(i=0; iconnectedObjects->len; i++) - { - if( (g_array_index(mixCtx->connectedObjects, XAOMixAdaptConnObj, i)).ctx == bCtx ) - { - /*item found already*/ - ret = XA_RESULT_PARAMETER_INVALID; - break; - } - } - if(i==mixCtx->connectedObjects->len) - { - XAOMixAdaptConnObj tmp; - tmp.ctx= bCtx; - tmp.currentSink = usedMix; - g_array_append_val(mixCtx->connectedObjects, tmp); - } - - DEBUG_API("<-XAOutputMixAdapt_ConnectObject"); - return ret; -} - -/* - * XAresult XAOutputMixAdapt_DisconnectObject(XAAdaptationGstCtx* omCtx, XAAdaptationGstCtx* bCtx) - */ -XAresult XAOutputMixAdapt_DisconnectObject(XAAdaptationGstCtx* omCtx, XAAdaptationGstCtx* bCtx) -{ - XAuint32 i=0; - XAOutputMixAdaptationCtx* mixCtx =NULL; - DEBUG_API("->XAOutputMixAdapt_DisconnectObject"); - - if( !omCtx || omCtx->baseObj.ctxId!=XAOutputMixAdaptation || !bCtx ) - { - DEBUG_ERR("Invalid attribute!!"); - DEBUG_API("<-XAOutputMixAdapt_DisconnectObject"); - return XA_RESULT_PARAMETER_INVALID; - } - mixCtx = (XAOutputMixAdaptationCtx*)omCtx; - - if( !mixCtx || !bCtx ) - { - DEBUG_ERR("Invalid attribute!!"); - DEBUG_API("<-XAOutputMixAdapt_DisconnectObject"); - return XA_RESULT_PARAMETER_INVALID; - } - for(i=0; iconnectedObjects->len; i++) - { - XAOMixAdaptConnObj* tmp = &(g_array_index(mixCtx->connectedObjects, XAOMixAdaptConnObj, i)); - if( tmp->ctx == bCtx ) - { - g_array_remove_index(mixCtx->connectedObjects, i); - DEBUG_API("<-XAOutputMixAdapt_DisconnectObject"); - return XA_RESULT_SUCCESS; - } - } - /*did not find, return error*/ - DEBUG_ERR("Object not found!"); - DEBUG_API("<-XAOutputMixAdapt_DisconnectObject"); - return XA_RESULT_PARAMETER_INVALID; -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaoutputmixadaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaoutputmixadaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAOUTPUTMIXADAPTCTX_H -#define XAOUTPUTMIXADAPTCTX_H - -#include "xaadaptationgst.h" - -/* TYPEDEFS */ - -typedef struct XAOutputMixAdaptationCtx_ XAOutputMixAdaptationCtx; - -typedef struct XAOutputMixAdaptationCtx_ -{ - /* Parent*/ - XAAdaptationGstCtx_ baseObj; - /* Internal variables */ - XAboolean isStereoPosition; - XAboolean mute; - - XAuint32 currentrouting; - - GArray* availableDevices; - GArray* connectedObjects; -} XAOutputMixAdaptationCtx_; - -typedef struct XAOMixAdaptConnObj_ -{ - /*pointer to connected context*/ - XAAdaptationGstCtx* ctx; - /*pointer to sink currently used by connected ctx*/ - GstElement* currentSink; -} XAOMixAdaptConnObj; - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XAOutputMixAdapt_Create(void); -XAresult XAOutputMixAdapt_PostInit(XAAdaptationGstCtx* bCtx); -void XAOutputMixAdapt_Destroy(XAAdaptationGstCtx* bCtx); - - -GstElement* XAOutputMixAdapt_GetSink(XAAdaptationGstCtx* bCtx); -XAresult XAOutputMixAdapt_ConnectObject(XAAdaptationGstCtx* omCtx, XAAdaptationGstCtx* bCtx, GstElement* usedMix); -XAresult XAOutputMixAdapt_DisconnectObject(XAAdaptationGstCtx* omCtx, XAAdaptationGstCtx* bCtx); - -#endif /* XAOUTPUTMIXADAPTCTX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaoutputmixitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaoutputmixitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xaoutputmixadaptctx.h" -#include "xaoutputmixitfadaptation.h" -#include "xaadaptationgst.h" -#include "xacapabilitiesmgr.h" - -/* - * XAresult XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs( XAAdaptationGstCtx *bCtx, - * XAint32 * pNumDevices, - * XAuint32 * pDeviceIDs ) - * @param XAAdaptationGstCtx *bCtx - Pointer to OutputMix adaptation context - * @param XAint32 * pNumDevices - [in] Length of pDeviceIDs array - * [out] number of destination devices - * @param XAuint32 * pDeviceIDs - List of DeviceIDs - * @return XAresult success value - * Description: Returns audio output deviceIDs that are currently connected - */ -XAresult XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs( XAAdaptationGstCtx *bCtx, XAint32 * pNumDevices, XAuint32 * pDeviceIDs ) -{ - XAOutputMixAdaptationCtx* mCtx = NULL; - XAint32 iterator = 0; - DEBUG_API_A1("->XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs pNumDevices:%ld",*pNumDevices); - if(!bCtx || bCtx->baseObj.ctxId != XAOutputMixAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAOutputMixAdaptationCtx*) bCtx; - if(!mCtx) - { - DEBUG_ERR("NULL context!"); - return XA_RESULT_PARAMETER_INVALID; - } - - if ( pNumDevices ) - { - *pNumDevices = mCtx->availableDevices->len; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs"); - return XA_RESULT_PARAMETER_INVALID; - } - - if(pDeviceIDs) - { /*query devices*/ - if ( *pNumDevices < mCtx->availableDevices->len ) - { /* Lenght of pDeviceIDs is insufficient for all connected audio devices */ - DEBUG_ERR("XA_RESULT_BUFFER_INSUFFICIENT"); - DEBUG_API("<-XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs"); - return XA_RESULT_BUFFER_INSUFFICIENT; - } - - for ( iterator = 0; iterator < mCtx->availableDevices->len; iterator++ ) - { - pDeviceIDs[iterator] = g_array_index(mCtx->availableDevices,XAuint32,iterator); - } - } - - DEBUG_API("<-XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs"); - return XA_RESULT_SUCCESS; -} - - -/* - * XAresult XAOutputMixItfAdapt_ReRoute( XAAdaptationGstCtx *bCtx, - * XAint32 numOutputDevices, - * XAuint32 * pOutputDeviceIDs) - * @param XAAdaptationGstCtx *bCtx - Ponter to OutputMix adaptation context - * @param XAint32 numOutputDevices - Length of pOutputDeviceIDs - * @param XAuint32 * pOutputDeviceIDs - List of requested audio output device IDs - * @return XAresult success value - * Description: Reroutes audio output to requested destination devices - */ -XAresult XAOutputMixItfAdapt_ReRoute( XAAdaptationGstCtx *bCtx, XAint32 numOutputDevices, XAuint32 * pOutputDeviceIDs) -{ - XAresult ret = XA_RESULT_SUCCESS; - gint32 idx = 0; - XAOutputMixAdaptationCtx* mCtx = NULL; - XAuint32 devId=0; - GstElement* newsink = NULL; - GstElement* current = NULL; - gchar* currentname= NULL; - XACapabilities temp; - - DEBUG_API_A1("->XAOutputMixItfAdapt_ReRoute numOutputDevices:%ld",numOutputDevices); - if(!bCtx || - bCtx->baseObj.ctxId != XAOutputMixAdaptation || - !pOutputDeviceIDs ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XAOutputMixAdaptationCtx*) bCtx; - - if( numOutputDevices > 1 ) - { - /* currently, only routing to single output at time supported */ - return XA_RESULT_FEATURE_UNSUPPORTED; - } - devId = pOutputDeviceIDs[0]; - - for ( idx = 0; idx < mCtx->connectedObjects->len; idx++ ) - { - /*find wanted output plugin name*/ - if( XA_RESULT_SUCCESS == - XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_DEVSNK|XACAP_AUDIO), devId, &temp) ) - { - XAAdaptationGstCtx* ctx = g_array_index(mCtx->connectedObjects,XAOMixAdaptConnObj,idx).ctx; - if(!ctx) - { - DEBUG_ERR_A1("Context in connected objects array (index %u) is NULL!", idx); - return XA_RESULT_INTERNAL_ERROR; - } - /*check current output plugin name*/ - current = g_array_index(mCtx->connectedObjects,XAOMixAdaptConnObj,idx).currentSink; - currentname = gst_element_get_name(current); - DEBUG_INFO_A2("OMix pl%d - current output: \"%s\"", (int)idx, (char*)currentname); - DEBUG_INFO_A3("OMix pl%d - wanted output: \"%s\" (id 0x%x)", (int)idx, (char*)temp.adaptId, (int)devId); - if(strcmp(currentname,(char*)temp.adaptId)!=0) - { - if(ret==XA_RESULT_SUCCESS) - { - mCtx->currentrouting = devId; - g_array_index(mCtx->connectedObjects,XAOMixAdaptConnObj,idx).currentSink = newsink; - } - newsink = gst_bin_get_by_name(GST_BIN(ctx->bin), (char*)temp.adaptId); - if(!newsink) - { /*not existing yet, create*/ - newsink = gst_element_factory_make((char*)temp.adaptId,(char*)temp.adaptId); - gst_bin_add(GST_BIN(ctx->bin), newsink); - } - if(!newsink) - { - DEBUG_ERR_A1("Could not create wanted sink \"%s\"!", (char*)temp.adaptId); - ret = XA_RESULT_PARAMETER_INVALID; - } - else - { - /* switch routing: pause, block, unlink old, link new, unblock pipe, play*/ - GstPad *sinkpad=NULL, *blockpad=NULL; - sinkpad = gst_element_get_static_pad(current,"sink"); - if(sinkpad) - { - blockpad = gst_pad_get_peer(sinkpad); - } - if(blockpad && gst_pad_is_active(blockpad)) - { - DEBUG_INFO("block pad"); - gst_pad_set_blocked_async(blockpad,TRUE,XAAdaptationGst_PadBlockCb,NULL); - } - gst_pad_unlink(blockpad, sinkpad); - sinkpad = gst_element_get_static_pad(newsink,"sink"); - gst_pad_link(blockpad, sinkpad); - if(gst_pad_is_blocked(blockpad)) - { - DEBUG_INFO("unblock pad"); - gst_pad_set_blocked_async(blockpad,FALSE,XAAdaptationGst_PadBlockCb,NULL); - } - /*set sink to same state as the mp bin*/ - gst_element_sync_state_with_parent(newsink); - mCtx->currentrouting = devId; - g_array_index(mCtx->connectedObjects,XAOMixAdaptConnObj,idx).currentSink = newsink; - } - } - else - { - DEBUG_INFO("No routing switch needed"); - } - } - else - { - DEBUG_ERR_A1("Could not find audio device by id 0x%x", (int)devId); - ret = XA_RESULT_PARAMETER_INVALID; - } - } - - DEBUG_API("<-XAOutputMixItfAdapt_ReRoute"); - return ret; -} - - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaoutputmixitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaoutputmixitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef OUTPUTMIXITFADAPTATION_H_ -#define OUTPUTMIXITFADAPTATION_H_ - -#include "xaadaptationgst.h" - - -XAresult XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs( XAAdaptationGstCtx *bCtx, XAint32 * pNumDevices, XAuint32 * pDeviceIDs ); -XAresult XAOutputMixItfAdapt_ReRoute( XAAdaptationGstCtx *bCtx, XAint32 numOutputDevices, XAuint32 * pOutputDeviceIDs); - -#endif /* OUTPUTMIXITFADAPTATION_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaplaybackrateitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaplaybackrateitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xaplaybackrateitfadaptation.h" -#include "xaplayitfadaptation.h" - -/*XA_RATEPROP_STAGGEREDVIDEO,XA_RATEPROP_SMOOTHVIDEO,XA_RATEPROP_SILENTAUDIO, - XA_RATEPROP_STAGGEREDAUDIO,XA_RATEPROP_NOPITCHCORAUDIO,XA_RATEPROP_PITCHCORAUDIO*/ -#define SUPPORTEDPROPS (XA_RATEPROP_SMOOTHVIDEO | XA_RATEPROP_SILENTAUDIO) -/* NOTE: currently rewind rates do not seem to work */ -#define MINRATE (100) -#define MAXRATE 8000 -/* - * XAresult XAPlaybackRateItfAdapt_SetRate(XAAdaptationGstCtx *bCtx, XApermille rate) - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value - * @param XApermille rate - new playback rate in permilles of original speed - * @return XAresult ret - Success value - */ -XAresult XAPlaybackRateItfAdapt_SetRate(XAAdaptationGstCtx *bCtx, XApermille rate) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - DEBUG_API_A1("->XAPlaybackRateItfAdapt_SetRate %d permilles", rate); - - if( !bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid context!"); - return XA_RESULT_PARAMETER_INVALID; - } - if( rateMAXRATE ) - { - DEBUG_ERR("Invalid rate!"); - return XA_RESULT_PARAMETER_INVALID; - } - if(rate != 0) - { - mCtx->playrate = ((gdouble)rate)/1000; - if( GST_STATE(bCtx->bin) < GST_STATE_PAUSED ) - { /* This should not happen */ - DEBUG_ERR("WARNING: Gst not prerolled yet!"); - } - else - { - /* apply immediately */ - XAAdaptationGst_PrepareAsyncWait(bCtx); - DEBUG_INFO_A1("Apply new playrate %f.", mCtx->playrate); - if(!gst_element_seek( bCtx->bin, mCtx->playrate, GST_FORMAT_TIME, - (GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE), - GST_SEEK_TYPE_NONE, 0, - GST_SEEK_TYPE_NONE, -1)) - { - DEBUG_ERR("WARN: gst reports seek not handled"); - } - /* flushed seeks always asynchronous */ - XAAdaptationGst_StartAsyncWait(bCtx); - DEBUG_INFO("New playrate handled.") - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - } - } - else - { /* Gst do not accept rate of 0, pause instead */ - mCtx->playrate = 1.0; - if( GST_STATE(bCtx->bin) > GST_STATE_PAUSED ) - { - DEBUG_ERR("Pause playback"); - XAPlayItfAdaptGST_SetPlayState((XAAdaptationBaseCtx *)bCtx, XA_PLAYSTATE_PAUSED); - } - - } - - DEBUG_API("<-XAPlaybackRateItfAdapt_SetRate"); - return ret; -} - -/* - * XAresult XAPlaybackRateItfAdapt_SetPropertyConstraints(XAAdaptationGstCtx *bCtx, - * XAuint32 constraints) - */ -XAresult XAPlaybackRateItfAdapt_SetPropertyConstraints(XAAdaptationGstCtx *bCtx, - XAuint32 constraints) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAMediaPlayerAdaptationCtx* mCtx = NULL; - DEBUG_API("->XAPlaybackRateItfAdapt_SetPropertyConstraints"); - - if( !bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid context!"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - if( (constraints & SUPPORTEDPROPS ) == 0 ) - { - DEBUG_ERR("constraints cannot be satisfied!!"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - else - { - mCtx->rateprops = SUPPORTEDPROPS & constraints; - } - DEBUG_API("<-XAPlaybackRateItfAdapt_SetPropertyConstraints"); - return ret; -} - -/* - * XAresult XAPlaybackRateItfAdapt_GetProperties(XAAdaptationGstCtx *bCtx, - * XAuint32 *pProperties) - */ -XAresult XAPlaybackRateItfAdapt_GetProperties(XAAdaptationGstCtx *bCtx, - XAuint32 *pProperties) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAMediaPlayerAdaptationCtx* mCtx = NULL; - DEBUG_API("->XAPlaybackRateItfAdapt_GetProperties"); - - if( !bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid context!"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - *pProperties = mCtx->rateprops; - - DEBUG_API("<-XAPlaybackRateItfAdapt_GetProperties"); - return ret; -} - - -XAresult XAPlaybackRateItfAdapt_GetCapabilitiesOfRate(XAAdaptationGstCtx *bCtx, - XApermille rate, - XAuint32 *pCapabilities) -{ - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XAPlaybackRateItfAdapt_GetCapabilitiesOfRate"); - if( !bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid context!"); - return XA_RESULT_PARAMETER_INVALID; - } - - if( rateMAXRATE ) - { - DEBUG_ERR("Invalid rate!"); - *pCapabilities = 0; - ret = XA_RESULT_PARAMETER_INVALID; - } - else - { - *pCapabilities = SUPPORTEDPROPS; - } - - DEBUG_API("<-XAPlaybackRateItfAdapt_GetCapabilitiesOfRate"); - return ret; -} - - -XAresult XAPlaybackRateItfAdapt_GetRateRange(XAAdaptationGstCtx *bCtx, - XAuint8 index, - XApermille *pMinRate, - XApermille *pMaxRate, - XApermille *pStepSize, - XAuint32 *pCapabilities) -{ - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XAPlaybackRateItfAdapt_GetRateRange"); - - if( !bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation ) - { - DEBUG_ERR("Invalid context!"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* NOTE: hardcoded values, cannot be queried from gst */ - /* only one range supported */ - if( index>0 ) - { - ret = XA_RESULT_PARAMETER_INVALID; - } - else - { - *pMinRate = MINRATE; - *pMaxRate = MAXRATE; - *pStepSize = 0; /* continuous range */ - *pCapabilities = SUPPORTEDPROPS; - } - - DEBUG_API("<-XAPlaybackRateItfAdapt_GetRateRange"); - return ret; -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaplaybackrateitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaplaybackrateitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XADYNAMICSOURCEITFADAPTATION_H -#define XADYNAMICSOURCEITFADAPTATION_H - -#include "xaadaptationgst.h" - - -/* FUNCTIONS */ - -XAresult XAPlaybackRateItfAdapt_SetRate(XAAdaptationGstCtx *bCtx, XApermille rate); - -XAresult XAPlaybackRateItfAdapt_SetPropertyConstraints(XAAdaptationGstCtx *bCtx, - XAuint32 constraints); - -XAresult XAPlaybackRateItfAdapt_GetProperties(XAAdaptationGstCtx *bCtx, - XAuint32 *pProperties); - -XAresult XAPlaybackRateItfAdapt_GetCapabilitiesOfRate(XAAdaptationGstCtx *bCtx, - XApermille rate, - XAuint32 *pCapabilities); - -XAresult XAPlaybackRateItfAdapt_GetRateRange(XAAdaptationGstCtx *bCtx, - XAuint8 index, - XApermille *pMinRate, - XApermille *pMaxRate, - XApermille *pStepSize, - XAuint32 *pCapabilities); - -#endif /* XADYNAMICSOURCEITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaplayitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaplayitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,499 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "unistd.h" -#include -#include "xamediaplayeradaptctx.h" -#include "xaplayitfadaptation.h" -#include "xaadaptationgst.h" -#include "xacameraadaptctx.h" - -extern XAboolean cameraRealized; -extern XACameraAdaptationCtx_* cameraCtx; - -/*forward declaration of position updater callback*/ -gboolean XAPlayItfAdapt_PositionUpdate(gpointer ctx); - -/* - * XAresult XAPlayItfAdaptGST_SetPlayState(XAAdaptationGstCtx *bCtx, XAuint32 state) - * Sets play state to GStreamer. - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID - * XAuint32 state - Play state to be set - * @return XAresult ret - Success value - */ -XAresult XAPlayItfAdaptGST_SetPlayState(XAAdaptationBaseCtx *ctx, XAuint32 state) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAboolean requestStateChange = XA_BOOLEAN_FALSE; - GstStateChangeReturn gstRet = GST_STATE_CHANGE_SUCCESS; - XAMediaPlayerAdaptationCtx* mCtx = NULL; - XAuint32 locType = 0; - GstState gstOrigState = GST_STATE_PLAYING; - XADataLocator_Address *address = NULL; - XAboolean playing = XA_BOOLEAN_FALSE; - XAAdaptationGstCtx *bCtx = (XAAdaptationGstCtx *)ctx; - - DEBUG_API_A1("->XAPlayItfAdaptGST_SetPlayState %s",PLAYSTATENAME(state)); - - - if(!bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - switch ( state ) - { - case XA_PLAYSTATE_STOPPED: - { - if ( cameraCtx && cameraRealized && mCtx->isobjsrc && mCtx->source ) - { - cameraCtx->playing = XA_BOOLEAN_FALSE; - if(!cameraCtx->recording && !cameraCtx->snapshotting) - { - /* Future improvement: We could block MPObjSrc pad from tee-eleement here, when - * tee-element supports sending stream to one pad when others are blocked */ - - /* Neither view finder or recorder is running -> pause camera */ - if ( GST_STATE( GST_ELEMENT(mCtx->source)) == GST_STATE_PLAYING ) - { - GstStateChangeReturn gret; - DEBUG_INFO("Stop camera source"); - gret = gst_element_set_state( GST_ELEMENT(mCtx->source), GST_STATE_PAUSED ); - if(gret == GST_STATE_CHANGE_SUCCESS) - gret = gst_element_get_state( GST_ELEMENT(mCtx->source), NULL,NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC ); - } - } - } - - gstOrigState = GST_STATE(bCtx->bin); - if ( gstOrigState != GST_STATE_READY ) - { - DEBUG_INFO("Set gst-bin to GST_STATE_READY"); - bCtx->binWantedState = GST_STATE_READY; - XAAdaptationGst_PrepareAsyncWait(bCtx); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), GST_STATE_READY); - switch ( gstRet ) - { - case GST_STATE_CHANGE_FAILURE: - DEBUG_ERR_A1("FAILED to change state (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - bCtx->binWantedState = GST_STATE(bCtx->bin); - ret = XA_RESULT_INTERNAL_ERROR; - break; - case GST_STATE_CHANGE_ASYNC: - DEBUG_INFO_A1("Change state will happen asyncronously (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - XAAdaptationGst_StartAsyncWait(bCtx); - ret = XA_RESULT_SUCCESS; - break; - case GST_STATE_CHANGE_SUCCESS: - DEBUG_INFO_A1("Successfully changed state (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - break; - default: - DEBUG_ERR_A1("Unhandled error (%d)",gstRet); - break; - } - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - DEBUG_INFO_A1("Setted gst-bin to state %s", gst_element_state_get_name(GST_STATE(bCtx->bin))); - - DEBUG_INFO_A1("Restoring gst-bin state to state %s", gst_element_state_get_name(gstOrigState)); - bCtx->binWantedState = gstOrigState; - XAAdaptationGst_PrepareAsyncWait(bCtx); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), gstOrigState); - switch ( gstRet ) - { - case GST_STATE_CHANGE_FAILURE: - DEBUG_ERR_A1("FAILED to change state (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - bCtx->binWantedState = GST_STATE(bCtx->bin); - ret = XA_RESULT_INTERNAL_ERROR; - break; - case GST_STATE_CHANGE_ASYNC: - DEBUG_INFO_A1("Change state will happen asyncronously (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - XAAdaptationGst_StartAsyncWait(bCtx); - ret = XA_RESULT_SUCCESS; - break; - case GST_STATE_CHANGE_SUCCESS: - DEBUG_INFO_A1("Successfully changed state (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - break; - default: - DEBUG_ERR_A1("Unhandled error (%d)",gstRet); - break; - } - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - gstOrigState = GST_STATE(bCtx->bin); - DEBUG_INFO_A1("Restored gst-bin to state %s", gst_element_state_get_name(gstOrigState)); - } - - -/* if( bCtx->pipeSrcThrCtx.dataHandle ) - { - XAresult retVal = XA_RESULT_SUCCESS; - if ( bCtx->pipeSrcThrCtx.state != CPStateNull ) - { - bCtx->pipeSrcThrCtx.state = CPStateStopped; - } - - retVal = XAImpl_PostSemaphore( bCtx->pipeSrcThrCtx.stateSem ); - if ( retVal != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Could not post content pipe semaphore!"); - } - - }*/ - /* stop head and drive head to beginning */ - bCtx->binWantedState = GST_STATE_PAUSED; - if(mCtx->runpositiontimer > 0) - { - g_source_remove(mCtx->runpositiontimer); - mCtx->runpositiontimer=0; - } - - gst_element_send_event(bCtx->bin,gst_event_new_flush_start()); - gst_element_send_event(bCtx->bin,gst_event_new_flush_stop()); - - locType = *((XAuint32*)( mCtx->xaSource->pLocator )); - if( locType == XA_DATALOCATOR_ADDRESS ) - { - address = (XADataLocator_Address*)(mCtx->xaSource->pLocator); - - /* init gst buffer from datalocator */ - if( mCtx->source ) - { - GstBuffer* userBuf = NULL; - - /* init GST buffer from XADataLocator*/ - userBuf = gst_buffer_new(); - if( userBuf ) - { - userBuf->size = address->length; - userBuf->data = address->pAddress; - /* push the whole buffer to appsrc so it is ready for preroll */ - DEBUG_INFO("Pushing buffer"); - gst_app_src_push_buffer( GST_APP_SRC(mCtx->source), userBuf ); - DEBUG_INFO_A1("Sent buffer at 0x%x to appsrc", userBuf ); - gst_app_src_end_of_stream( GST_APP_SRC(mCtx->source) ); - } - else - { - DEBUG_ERR("Failure allocating buffer!"); - } - } - } - break; - } - case XA_PLAYSTATE_PAUSED: - - if ( cameraCtx && cameraRealized && mCtx->isobjsrc && mCtx->source ) - { - cameraCtx->playing = XA_BOOLEAN_FALSE; - - /* Future improvement: We could block MPObjSrc pad from tee-eleement here, when - * tee-element supports sending stream to one pad when others are blocked */ - - if(!cameraCtx->recording && !cameraCtx->snapshotting) - { - /* Neither view finder or recorder is running -> pause camera */ - if ( GST_STATE( GST_ELEMENT(mCtx->source)) == GST_STATE_PLAYING ) - { - GstStateChangeReturn gret; - DEBUG_INFO("Stop camera source"); - gret = gst_element_set_state( GST_ELEMENT(mCtx->source), GST_STATE_PAUSED ); - if(gret == GST_STATE_CHANGE_SUCCESS) - gret = gst_element_get_state( GST_ELEMENT(mCtx->source), NULL,NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC ); - } - } - } - -/* if ( bCtx->pipeSrcThrCtx.state != CPStateNull ) - { - bCtx->pipeSrcThrCtx.state = CPStatePaused; - }*/ - bCtx->binWantedState = GST_STATE_PAUSED; - if(mCtx->runpositiontimer > 0) - { - g_source_remove(mCtx->runpositiontimer); - mCtx->runpositiontimer=0; - } - break; - case XA_PLAYSTATE_PLAYING: - { - if ( cameraCtx && mCtx->isobjsrc ) - { - cameraCtx->playing = XA_BOOLEAN_TRUE; - } - - if ( mCtx->videoppBScrbin ) - { - gst_element_set_state( GST_ELEMENT(mCtx->videoppBScrbin), GST_STATE_PAUSED); - } - if (mCtx->isobjsrc && !mCtx->cameraSinkSynced && cameraCtx ) - { /* create videosink now */ - mCtx->cameraSinkSynced = XA_BOOLEAN_TRUE; - if ( mCtx->videosink ) - { - gst_element_unlink( mCtx->filter,mCtx->videosink ); - gst_element_set_state( GST_ELEMENT(mCtx->videosink), GST_STATE_NULL); - gst_bin_remove( GST_BIN(mCtx->baseObj.bin), mCtx->videosink); - mCtx->videosink = XAAdaptationGst_CreateGstSink( mCtx->xaVideoSink, "videosink", &(mCtx->isobjvsink) ); - gst_bin_add(GST_BIN(mCtx->baseObj.bin), mCtx->videosink); - if (! gst_element_link(mCtx->filter, mCtx->videosink)) - { - DEBUG_ERR("Could not link Filter to videosink!!"); - return XA_RESULT_INTERNAL_ERROR; - } - } - } - -/* if ( bCtx->pipeSrcThrCtx.state != CPStateNull ) - { - XAresult retVal = XA_RESULT_SUCCESS; - - if ( bCtx->pipeSrcThrCtx.state == CPStateInitialized ) - { Start thread if it's not running - retVal = XAImpl_StartThread( &(bCtx->pipeSrcThr), NULL, &XAAdaptationGst_ContentPipeScrThrFunc, &(bCtx->pipeSrcThrCtx) ); - if ( retVal != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Could not start content pipe thread!"); - } - } - if ( bCtx->pipeSrcThrCtx.state == CPStatePaused || - bCtx->pipeSrcThrCtx.state == CPStateInitialized || - bCtx->pipeSrcThrCtx.state == CPStateStarted ) - retVal = XAImpl_PostSemaphore( bCtx->pipeSrcThrCtx.stateSem ); - if ( retVal != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Could not post content pipe semaphore!"); - } - }*/ - - bCtx->binWantedState = GST_STATE_PLAYING; - if(mCtx->playrate!=1 && !mCtx->isobjsrc) - { /*set seek element for ff, rew and slow*/ - XAAdaptationGst_PrepareAsyncWait(bCtx); - DEBUG_INFO_A1("Apply new playrate %f.", mCtx->playrate); - if(!gst_element_seek( bCtx->bin, mCtx->playrate, GST_FORMAT_TIME, - (GstSeekFlags)(GST_SEEK_FLAG_FLUSH|GST_SEEK_FLAG_ACCURATE), - GST_SEEK_TYPE_NONE, 0, - GST_SEEK_TYPE_NONE, -1)) - { - DEBUG_ERR("WARN: gst reports seek not handled"); - } - /* flushed seeks always asynchronous */ - XAAdaptationGst_StartAsyncWait(bCtx); - DEBUG_INFO("New playrate handled."); - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - } - - playing = XA_BOOLEAN_TRUE; - break; - } - default: - ret = XA_RESULT_PARAMETER_INVALID; - break; - } - /* launch Gstreamer state change only if necessary */ - if( GST_STATE_TARGET(bCtx->bin) == bCtx->binWantedState ) - { - DEBUG_INFO("Gst already in or transitioning to wanted state"); - requestStateChange = XA_BOOLEAN_FALSE; - } - else - { - if( (GST_STATE(bCtx->bin) == bCtx->binWantedState) && - (GST_STATE_PENDING(bCtx->bin) == GST_STATE_VOID_PENDING) ) - { - DEBUG_ERR_A3("WARNING : gststate %d == wanted %d != gsttarget %d and no statechange pending", - GST_STATE(bCtx->bin), bCtx->binWantedState, GST_STATE_TARGET(bCtx->bin)); - } - requestStateChange = XA_BOOLEAN_TRUE; - } - - if( requestStateChange ) - { - XAAdaptationGst_PrepareAsyncWait(bCtx); - DEBUG_INFO_A1("Sending change state request to state %d", bCtx->binWantedState); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), bCtx->binWantedState); - switch ( gstRet ) - { - case GST_STATE_CHANGE_FAILURE: - DEBUG_ERR_A1("FAILED to change state (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - bCtx->binWantedState = GST_STATE(bCtx->bin); - ret = XA_RESULT_INTERNAL_ERROR; - break; - case GST_STATE_CHANGE_ASYNC: - DEBUG_INFO_A1("Change state will happen asyncronously (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - XAAdaptationGst_StartAsyncWait(bCtx); - ret = XA_RESULT_SUCCESS; - break; - case GST_STATE_CHANGE_NO_PREROLL: - DEBUG_INFO("GST_STATE_CHANGE_NO_PREROLL"); - /* deliberate fall-through */ - case GST_STATE_CHANGE_SUCCESS: - DEBUG_INFO_A1("Successfully changed state (target %s)", - gst_element_state_get_name(bCtx->binWantedState)); - ret = XA_RESULT_SUCCESS; - break; - default: - DEBUG_ERR_A1("Unhandled error (%d)",gstRet); - ret = XA_RESULT_UNKNOWN_ERROR; - break; - } - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - } - - if (playing && mCtx->isobjsrc && cameraCtx ) - { - GstPad* moSrc=NULL ; - - playing = XA_BOOLEAN_FALSE; - moSrc = gst_element_get_static_pad( mCtx->source, "MPObjSrc"); - if( moSrc && gst_pad_is_linked(moSrc) ) - { - DEBUG_INFO_A2("unblock element:%s pad:%s", - gst_element_get_name( mCtx->source), - gst_pad_get_name(moSrc)); - gst_pad_set_blocked_async(moSrc, FALSE, XAAdaptationGst_PadBlockCb, NULL); - } - - if ( GST_STATE( GST_ELEMENT(mCtx->source)) != GST_STATE_PLAYING ) - { - GstStateChangeReturn gret; - DEBUG_INFO("Start camera source"); - gret = gst_element_set_state( GST_ELEMENT(mCtx->source), GST_STATE_PLAYING ); - if(gret == GST_STATE_CHANGE_SUCCESS) - gret = gst_element_get_state( GST_ELEMENT(mCtx->source), NULL,NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC ); - } - } - DEBUG_API("<-XAPlayItfAdaptGST_SetPlayState"); - return ret; -} - -/* - * XAresult XAPlayItfAdaptGST_GetDuration(XAAdaptationGstCtx *bCtx, XAmillisecond *pMsec) - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID - * XAmillisecond *pMsec - Pointer where to store duration of stream. - * @return XAresult ret - Success value - */ -XAresult XAPlayItfAdaptGST_GetDuration(XAAdaptationGstCtx *bCtx, XAmillisecond *pMsec) -{ - XAresult ret = XA_RESULT_SUCCESS; - GstFormat format = GST_FORMAT_TIME; - gint64 duration; - DEBUG_API("->XAPlayItfAdaptGST_GetDuration"); - - if(!bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation || !pMsec) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if( gst_element_query_duration( GST_ELEMENT(bCtx->bin), &format, &duration ) ) - { - DEBUG_INFO_A1("Duration: %"GST_TIME_FORMAT, GST_TIME_ARGS(duration)); - ret = XA_RESULT_SUCCESS; - *pMsec = GST_TIME_AS_MSECONDS(duration);/*Warning ok due to used API specification*/ - } - else - { - DEBUG_ERR("WARNING: Gst: could not get duration"); - *pMsec = XA_TIME_UNKNOWN; - ret = XA_RESULT_SUCCESS; - } - - DEBUG_API("<-XAPlayItfAdaptGST_GetDuration"); - return ret; -} - -/* - * XAresult XAPlayItfAdaptGST_GetPosition(XAAdaptationGstCtx *bCtx, XAmillisecond *pMsec) - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value - * XAmillisecond *pMsec - Pointer where to store current position in stream. - * @return XAresult ret - Success value - */ -XAresult XAPlayItfAdaptGST_GetPosition(XAAdaptationGstCtx *bCtx, XAmillisecond *pMsec) -{ - XAresult ret = XA_RESULT_SUCCESS; - gint64 position; - GstFormat format = GST_FORMAT_TIME; - DEBUG_API("->XAPlayItfAdapGSTt_GetPosition"); - - if(!bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if ( gst_element_query_position( GST_ELEMENT(bCtx->bin), &format, &position ) ) - { - DEBUG_INFO_A1("Current position %"GST_TIME_FORMAT, GST_TIME_ARGS(position)); - ret = XA_RESULT_SUCCESS; - *pMsec = GST_TIME_AS_MSECONDS(position);/*Warning ok due to used API specification*/ - } - else - { - DEBUG_ERR("WARNING: Gst: could not get position"); - /* probably not fully prerolled - safe assumption for position = 0 */ - *pMsec = 0; - ret = XA_RESULT_SUCCESS; - } - - DEBUG_API("<-XAPlayItfAdaptGST_GetPosition"); - return ret; -} - -/* - * XAresult XAPlayItfAdapt_EnablePositionTracking - * Enable/disable periodic position tracking callbacks - */ -XAresult XAPlayItfAdapt_EnablePositionTracking(XAAdaptationGstCtx *bCtx, XAboolean enable) -{ - XAMediaPlayerAdaptationCtx* mCtx; - - DEBUG_API_A1("->XAPlayItfAdapt_EnablePositionTracking (enable: %d)", (int)enable); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - if(enable && !(mCtx->trackpositionenabled)) - { - mCtx->trackpositionenabled = XA_BOOLEAN_TRUE; - XAMediaPlayerAdapt_UpdatePositionCbTimer(mCtx); - } - else if (!enable && (mCtx->trackpositionenabled)) - { - mCtx->trackpositionenabled = XA_BOOLEAN_FALSE; - XAMediaPlayerAdapt_UpdatePositionCbTimer(mCtx); - } - - DEBUG_API("<-XAPlayItfAdapt_EnablePositionTracking"); - return XA_RESULT_SUCCESS; -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaplayitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaplayitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAPLAYITFADAPTATION_H -#define XAPLAYITFADAPTATION_H - -#include "xaadaptationgst.h" - -#ifdef _DEBUG -/*parse state names for debug prints*/ -static const char* playstatenames[3] = -{ - "XA_PLAYSTATE_STOPPED", - "XA_PLAYSTATE_PAUSED", - "XA_PLAYSTATE_PLAYING" -}; -#define PLAYSTATENAME(i) (const char*)((i>0&&i<4)?playstatenames[i-1]:"INVALID") -#endif /*_DEBUG*/ - - -/* FUNCTIONS */ - -XAresult XAPlayItfAdaptGST_SetPlayState(XAAdaptationBaseCtx *bCtx, XAuint32 state); -XAresult XAPlayItfAdaptGST_GetDuration(XAAdaptationGstCtx *bCtx, XAmillisecond *pMsec); -XAresult XAPlayItfAdaptGST_GetPosition(XAAdaptationGstCtx *bCtx, XAmillisecond *pMsec); -XAresult XAPlayItfAdapt_EnablePositionTracking(XAAdaptationGstCtx *bCtx, XAboolean enable); - - -#endif /* XAPLAYITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaradioadaptctx.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaradioadaptctx.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaradioadaptctx.h" -#include "xaadaptationgst.h" -#include "assert.h" - - -/* - * XAAdaptationGstCtx* XARadioAdapt_Create() - * Allocates memory for Radio Adaptation Context and makes 1st phase initialization - * @returns XARadioAdaptationCtx* - Pointer to created context - */ -XAAdaptationBaseCtx* XARadioAdapt_Create() -{ - XARadioAdaptationCtx *pSelf = (XARadioAdaptationCtx*)calloc(1, sizeof(XARadioAdaptationCtx)); - DEBUG_API("->XARadioAdapt_Create"); - - if ( pSelf) - { - if( XAAdaptationBase_Init(&(pSelf->baseObj.baseObj),XARadioAdaptation) - != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to init base context!!!"); - free(pSelf); - pSelf = NULL; - } - else - { - pSelf->state = XA_RADIO_IDLE; - pSelf->range = RADIO_DEFAULT_FREQ_RANGE; - pSelf->frequency = RADIO_DEFAULT_FREQ; - - pSelf->rdsEmulationThread = 0; - pSelf->emulationThread = 0; - } - } - - DEBUG_API("<-XARadioAdapt_Create"); - return (XAAdaptationBaseCtx*)&pSelf->baseObj; -} - -/* - * XAresult XARadioAdapt_PostInit() - * 2nd phase initialization of Radio Adaptation Context - */ -XAresult XARadioAdapt_PostInit(XAAdaptationBaseCtx* bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* ctx = NULL; - DEBUG_API("->XARadioAdapt_PostInit"); - if(bCtx == NULL || bCtx->ctxId != XARadioAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XARadioAdapt_PostInit"); - return XA_RESULT_PARAMETER_INVALID; - } - ctx = (XARadioAdaptationCtx*)bCtx; - - assert(ctx); - - ret = XAAdaptationBase_PostInit( &ctx->baseObj.baseObj ); - if( ret!=XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Base context postinit failed!!"); - DEBUG_API("<-XARadioAdapt_PostInit"); - return ret; - } - - ctx->baseObj.bin = gst_element_factory_make( "audiotestsrc", "audiosrc"); - if ( !ctx->baseObj.bin ) - { - DEBUG_ERR("Unable to create test audio source!"); - DEBUG_API("<-XARadioAdapt_PostInit"); - return XA_RESULT_INTERNAL_ERROR; - } - g_object_set( G_OBJECT(ctx->baseObj.bin), "wave", 0x5, NULL ); - - DEBUG_API("<-XARadioAdapt_PostInit"); - return ret; -} - -/* - * void XARadioAdapt_Destroy(XAAdaptationGstCtx* bCtx) - * Destroys Radio Adaptation Context - * @param ctx - Radio Adaptation context to be destroyed - */ -void XARadioAdapt_Destroy(XAAdaptationBaseCtx* bCtx) -{ - XARadioAdaptationCtx* ctx = NULL; - DEBUG_API("->XARadioAdapt_Destroy"); - - if(bCtx == NULL || bCtx->ctxId != XARadioAdaptation ) - { - DEBUG_ERR("Invalid parameter!!"); - DEBUG_API("<-XARadioAdapt_Destroy"); - return; - } - ctx = (XARadioAdaptationCtx*)bCtx; - XAAdaptationBase_Free(&(ctx->baseObj.baseObj)); - - free(ctx); - - DEBUG_API("<-XARadioAdapt_Destroy"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaradioadaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaradioadaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XARADIOADAPTCTX_H -#define XARADIOADAPTCTX_H - -#include "xaadaptationgst.h" - -typedef enum { - GST_AUDIO_TEST_SRC_WAVE_SINE, - GST_AUDIO_TEST_SRC_WAVE_SQUARE, - GST_AUDIO_TEST_SRC_WAVE_SAW, - GST_AUDIO_TEST_SRC_WAVE_TRIANGLE, - GST_AUDIO_TEST_SRC_WAVE_SILENCE, - GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE, - GST_AUDIO_TEST_SRC_WAVE_PINK_NOISE, - GST_AUDIO_TEST_SRC_WAVE_SINE_TAB, - GST_AUDIO_TEST_SRC_WAVE_TICKS -} GstAudioTestSrcWave; - -typedef enum -{ - XA_RADIO_IDLE, - XA_RADIO_SEEKING, - XA_RADIO_SETTING_FREQUENCY, - XA_RADIO_SETTING_FREQUENCY_RANGE -} XARadioState; - -typedef enum -{ - XA_RADIO_RDS_IDLE, - XA_RADIO_RDS_GETTING_ODA_GROUP -} XARadioRDSState; - -#define RADIO_DEFAULT_FREQ_RANGE XA_FREQRANGE_FMEUROAMERICA -#define RADIO_DEFAULT_FREQ 88000000 - -/* TYPEDEFS */ -typedef struct XARadioAdaptationCtx_ XARadioAdaptationCtx; - -/* - * Structure for Camera specific gst-adaptation variables - */ -typedef struct XARadioAdaptationCtx_ { - - /* Parent*/ - XAAdaptationGstCtx_ baseObj; - - /* OMX-AL Variables */ - XAuint32 frequency; - XAuint8 range; - - pthread_t emulationThread; - pthread_t rdsEmulationThread; - XARadioRDSState rdsState; - XARadioState state; - - /* GST Variables */ -} XARadioAdaptationCtx_; - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XARadioAdapt_Create(void); -XAresult XARadioAdapt_PostInit(XAAdaptationBaseCtx* bCtx); -void XARadioAdapt_Destroy(XAAdaptationBaseCtx* bCtx); - -#endif /* XARADIOADAPTCTX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaradioitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaradioitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,797 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xaadaptationgst.h" -#include "xaradioitfadaptation.h" -#include "xaradioadaptctx.h" - -#define NUM_OF_SUPPORTED_RANGES 2 -#define NUM_OF_CHANNELS 2 -const char* RadioPresetDefaultName = "Default"; - -/* emulated frequency range data */ -typedef struct FreqRange_ -{ - XAuint8 id; - XAuint32 minFreq; - XAuint32 maxFreq; - XAuint32 freqInterval; - XAuint32 stereoMode; -} FreqRange; - -/* emulated radio channel data */ -typedef struct Channel_ -{ - XAuint32 freq; - XAuint32 strength; -} Channel; - -/* emulated radio state */ -typedef enum -{ - RADIO_STATE_ON_CHANNEL, - RADIO_STATE_OFF_CHANNEL -} RadioState; - -/* data structure to pass onto async functions */ -typedef struct -{ - XAAdaptationGstCtx *bCtx; - XAuint32 value; -} ThreadArgs; - -/* emulation variables and constraints */ -static const FreqRange supportedFreqRanges[NUM_OF_SUPPORTED_RANGES] = { - { XA_FREQRANGE_FMEUROAMERICA, 87500000, 108000000, 100000, XA_STEREOMODE_MONO }, - {XA_FREQRANGE_FMJAPAN, 76000000, 90000000, 100000, XA_STEREOMODE_STEREO }}; - -static const Channel channels[NUM_OF_CHANNELS] = { {88500000, 80}, - {89300000, 60 }}; - -static XAuint8 freqRangeIndex = 0; -static XAboolean squelchMode = XA_BOOLEAN_FALSE; -static XAint32 currentChannel = -1; -static RadioState radioState = RADIO_STATE_OFF_CHANNEL; - -static void* asyncdata = NULL; - -/* FORWARD DECLARATIONS */ -void * XARadioItfAdapt_AsyncSetFrequencyRange(void* args); -XAresult XARadioItfAdapt_SyncSetFrequencyRange(XAAdaptationGstCtx *bCtx, XAuint8 range); -void * XARadioItfAdapt_AsyncSetFrequency(void* args); -XAresult XARadioItfAdapt_SyncSetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq); -void * XARadioItfAdapt_AsyncSeek(void* args); - -/* - * XAresult XARadioItfAdapt_SetFreqRange(XAAdaptationGstCtx *bCtx, XAuint8 range) - */ -XAresult XARadioItfAdapt_SetFreqRange(XAAdaptationGstCtx *bCtx, XAuint8 range) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint16 index=0; - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*) bCtx; - int pt_ret=0; - DEBUG_API("->XARadioItfAdapt_SetFreqRange"); - - if(!bCtx || range < XA_FREQRANGE_FMEUROAMERICA || range > XA_FREQRANGE_AMSW) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_SetFreqRange"); - return XA_RESULT_PARAMETER_INVALID; - } - - for (index = 0; index < NUM_OF_SUPPORTED_RANGES; index++) - { - if (supportedFreqRanges[index].id == range) - { - if (mCtx->range != range) - { - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - if (asyncdata) - { - free(asyncdata); - asyncdata = NULL; - } - mCtx->state = XA_RADIO_IDLE; - } - { - ThreadArgs* args = (ThreadArgs*)calloc(1, sizeof(ThreadArgs)); - if (!args) - { - DEBUG_ERR("Calloc failed") - DEBUG_API("<-XARadioItfAdapt_SetFreqRange"); - return XA_RESULT_INTERNAL_ERROR; - } - args->bCtx = bCtx; - args->value = range; - mCtx->state = XA_RADIO_SETTING_FREQUENCY_RANGE; - pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARadioItfAdapt_AsyncSetFrequencyRange),(void*)args); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret) - DEBUG_API("<-XARadioItfAdapt_SetFreqRange"); - return XA_RESULT_INTERNAL_ERROR; - } - } - } - break; - } - } - - DEBUG_API("<-XARadioItfAdapt_SetFreqRange"); - return ret; -} - -/* - * void * XARadioItfAdapt_AsyncSetFrequencyRange(void* args) - */ -void * XARadioItfAdapt_AsyncSetFrequencyRange(void* args) -{ - XAresult ret = XA_RESULT_SUCCESS; - ThreadArgs* tArgs = NULL; - XARadioAdaptationCtx* mCtx = NULL; - - DEBUG_API("->XARadioItfAdapt_AsyncSetFrequencyRange"); - asyncdata = args; - tArgs = args; - - mCtx = (XARadioAdaptationCtx*) tArgs->bCtx; - - DEBUG_INFO("Setting frequency async") - usleep(100000); /* 1/10 seconds */ - - ret = XARadioItfAdapt_SyncSetFrequencyRange(tArgs->bCtx, tArgs->value); - if (ret != XA_RESULT_SUCCESS) - { - DEBUG_ERR("XARadioItfAdapt_SyncSetFrequencyRange FAILED"); - } - - /* Send event to RadioItf */ - { - XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED, 0, NULL}; - XAAdaptationBase_SendAdaptEvents(&tArgs->bCtx->baseObj, &event ); - } - mCtx->state = XA_RADIO_IDLE; - - free(args); - asyncdata = NULL; - DEBUG_API("<-XARadioItfAdapt_AsyncSetFrequencyRange"); - pthread_exit(NULL); - return NULL; -} - -/* - * XAresult XARadioItfAdapt_SyncSetFrequencyRange(XAAdaptationGstCtx *bCtx, XAuint8 range) - */ -XAresult XARadioItfAdapt_SyncSetFrequencyRange(XAAdaptationGstCtx *bCtx, XAuint8 range) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* mCtx=NULL; - XAuint8 index=0; - DEBUG_API("->XARadioItfAdapt_SyncSetFrequencyRange"); - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_SyncSetFrequencyRange"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (range != mCtx->range) - { - DEBUG_INFO("Frequency range changed!") - - mCtx->range = range; - for(index = 0; index < NUM_OF_SUPPORTED_RANGES; index++) - { - if (supportedFreqRanges[index].id == mCtx->range) - { - freqRangeIndex = index; - } - } - - ret = XARadioItfAdapt_SyncSetFrequency( bCtx, RADIO_DEFAULT_FREQ ); - } - - DEBUG_API("<-XARadioItfAdapt_SyncSetFrequencyRange"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_GetFreqRange(XAAdaptationGstCtx *bCtx, - * XAuint8 * pFreqRange) - */ -XAresult XARadioItfAdapt_GetFreqRange(XAAdaptationGstCtx *bCtx, - XAuint8 * pFreqRange) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* mCtx=NULL; - DEBUG_API("->XARadioItfAdapt_GetFreqRange"); - - if(!bCtx || !pFreqRange) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_GetFreqRange"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - *pFreqRange = mCtx->range; - - DEBUG_API("<-XARadioItfAdapt_GetFreqRange"); - return ret; -} - - - -/* - * XAresult XARadioItfAdapt_IsFreqRangeSupported(XAAdaptationGstCtx *bCtx, - * XAuint8 range, - * XAboolean * pSupported) - */ -XAresult XARadioItfAdapt_IsFreqRangeSupported(XAAdaptationGstCtx *bCtx, - XAuint8 range, - XAboolean * pSupported) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint16 index=0; - DEBUG_API("->XARadioItfAdapt_IsFreqRangeSupported"); - - if(!bCtx || !pSupported || range < XA_FREQRANGE_FMEUROAMERICA || range > XA_FREQRANGE_AMSW) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_IsFreqRangeSupported"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pSupported = XA_BOOLEAN_FALSE; - for (index = 0; index < NUM_OF_SUPPORTED_RANGES; index++) - { - if (supportedFreqRanges[index].id == range) - { - *pSupported = XA_BOOLEAN_TRUE; - break; - } - } - - DEBUG_API("<-XARadioItfAdapt_IsFreqRangeSupported"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationGstCtx *bCtx, - * XAuint8 range, - * XAuint32 * pMinFreq, - * XAuint32 * pMaxFreq, - * XAuint32 * pFreqInterval) - */ -XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationGstCtx *bCtx, - XAuint8 range, - XAuint32 * pMinFreq, - XAuint32 * pMaxFreq, - XAuint32 * pFreqInterval) -{ - XAresult ret = XA_RESULT_SUCCESS; - - XAuint16 index=0; - DEBUG_API("->XARadioItfAdapt_GetFreqRangeProperties"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_GetFreqRangeProperties"); - return XA_RESULT_PARAMETER_INVALID; - } - - for (index = 0; index < NUM_OF_SUPPORTED_RANGES; index++) - { - if (supportedFreqRanges[index].id == range) - { - *pMinFreq = supportedFreqRanges[index].minFreq; - *pMaxFreq = supportedFreqRanges[index].maxFreq; - *pFreqInterval = supportedFreqRanges[index].freqInterval; - break; - } - } - - DEBUG_API("<-XARadioItfAdapt_GetFreqRangeProperties"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_SetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq) - */ -XAresult XARadioItfAdapt_SetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq) -{ - XAresult ret = XA_RESULT_SUCCESS; - int pt_ret=0; - XARadioAdaptationCtx* mCtx=NULL; - DEBUG_API("->XARadioItfAdapt_SetFrequency"); - - if(!bCtx || freq < supportedFreqRanges[freqRangeIndex].minFreq - || freq > supportedFreqRanges[freqRangeIndex].maxFreq - || ((freq - supportedFreqRanges[freqRangeIndex].minFreq) - % supportedFreqRanges[freqRangeIndex].freqInterval) != 0) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_SetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (freq != mCtx->frequency) - { - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - if (asyncdata) - { - free(asyncdata); - asyncdata = NULL; - } - } - - { - ThreadArgs* args = (ThreadArgs*)calloc(1, sizeof(ThreadArgs)); - if (!args) - { - DEBUG_ERR("Calloc failed") - DEBUG_API("<-XARadioItfAdapt_SetFrequency"); - return XA_RESULT_INTERNAL_ERROR; - } - args->bCtx = bCtx; - args->value = freq; - mCtx->state = XA_RADIO_SETTING_FREQUENCY; - pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARadioItfAdapt_AsyncSetFrequency),(void*)args); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret) - DEBUG_API("<-XARadioItfAdapt_SetFrequency"); - return XA_RESULT_INTERNAL_ERROR; - } - } - } /* else do nothing freq was same */ - - DEBUG_API("<-XARadioItfAdapt_SetFrequency"); - return ret; -} - -/* - * void * XARadioItfAdapt_AsyncSetFrequency(void* args) - */ -void * XARadioItfAdapt_AsyncSetFrequency(void* args) -{ - ThreadArgs* tArgs = NULL; - XARadioAdaptationCtx* mCtx = NULL; - asyncdata = args; - tArgs = args; - - mCtx = (XARadioAdaptationCtx*) tArgs->bCtx; - DEBUG_API("->XARadioItfAdapt_AsyncSetFrequency"); - DEBUG_INFO("Setting frequency async") - usleep(100000); /* 1/10 seconds */ - - XARadioItfAdapt_SyncSetFrequency(tArgs->bCtx, tArgs->value); - - /* Send event to RadioItf */ - { - XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_FREQUENCY_CHANGED, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(&tArgs->bCtx->baseObj, &event ); - } - mCtx->state = XA_RADIO_IDLE; - - free(args); - asyncdata = NULL; - DEBUG_API("<-XARadioItfAdapt_AsyncSetFrequency"); - pthread_exit(NULL); - return NULL; -} - -/* - * XAresult XARadioItfAdapt_SyncSetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq) - */ -XAresult XARadioItfAdapt_SyncSetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint8 index=0; - XAboolean channelFound = XA_BOOLEAN_FALSE; - XARadioAdaptationCtx* mCtx=NULL; - - DEBUG_API("->XARadioItfAdapt_SyncSetFrequency"); - - if(!bCtx || freq < supportedFreqRanges[freqRangeIndex].minFreq - || freq > supportedFreqRanges[freqRangeIndex].maxFreq - || ((freq - supportedFreqRanges[freqRangeIndex].minFreq) - % supportedFreqRanges[freqRangeIndex].freqInterval) != 0) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_SyncSetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (freq != mCtx->frequency) - { - for (index = 0; index < NUM_OF_CHANNELS; index++) - { - if (channels[index].freq == freq) - { - currentChannel = index; - channelFound = XA_BOOLEAN_TRUE; - break; - } - } - if ( channelFound == XA_BOOLEAN_FALSE && radioState == RADIO_STATE_ON_CHANNEL) - { - if (squelchMode == XA_BOOLEAN_FALSE) - { - DEBUG_API("Channel not found, squelch mode off, set radio to white noise"); - g_object_set( G_OBJECT(bCtx->bin), "wave", GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE, NULL ); - } - else - { - DEBUG_API("Channel not found, squelch mode off, set radio to silence"); - g_object_set( G_OBJECT(bCtx->bin), "wave", GST_AUDIO_TEST_SRC_WAVE_SILENCE, NULL ); - } - radioState = RADIO_STATE_OFF_CHANNEL; - } - else if ( channelFound == XA_BOOLEAN_TRUE && radioState == RADIO_STATE_OFF_CHANNEL ) - { - DEBUG_API("Channel found, set radio to sine wave"); - g_object_set( G_OBJECT(bCtx->bin), "wave", GST_AUDIO_TEST_SRC_WAVE_SINE, NULL ); - radioState = RADIO_STATE_ON_CHANNEL; - } - else - { - /* do nothing */ - } - - DEBUG_INFO("Frequency changed!") - - mCtx->frequency = freq; - } /* else frequency not changed do nothing */ - - DEBUG_API("<-XARadioItfAdapt_SyncSetFrequency"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_GetFrequency(XAAdaptationGstCtx *bCtx, - * XAuint32 * pFrequency) - */ -XAresult XARadioItfAdapt_GetFrequency(XAAdaptationGstCtx *bCtx, - XAuint32 * pFrequency) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* mCtx=NULL; - DEBUG_API("->XARadioItfAdapt_GetFrequency"); - - if(!bCtx || !pFrequency) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_GetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - *pFrequency = mCtx->frequency; - - DEBUG_API("<-XARadioItfAdapt_GetFrequency"); - return ret; -} - - -/* - * XAresult XARadioItfAdapt_CancelSetFrequency(XAAdaptationGstCtx *bCtx) - */ -XAresult XARadioItfAdapt_CancelSetFrequency(XAAdaptationGstCtx *bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* mCtx=NULL; - DEBUG_API("->XARadioItfAdapt_CancelSetFrequency"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_CancelSetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - - if (mCtx->state == XA_RADIO_SEEKING) - { - // pthread_cancel(mCtx->emulationThread); - mCtx->state = XA_RADIO_IDLE; - } - - DEBUG_API("<-XARadioItfAdapt_CancelSetFrequency"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_SetSquelch(XAAdaptationGstCtx *bCtx, XAboolean squelch) - */ -XAresult XARadioItfAdapt_SetSquelch(XAAdaptationGstCtx *bCtx, XAboolean squelch) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARadioItfAdapt_SetSquelch"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_SetSquelch"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (squelch != squelchMode) - { - if (radioState == RADIO_STATE_OFF_CHANNEL) - { - if (squelch == XA_BOOLEAN_FALSE) - { - DEBUG_API("Squelch untoggled, no channel, set radio to white noise") - g_object_set( G_OBJECT(bCtx->bin), "wave", GST_AUDIO_TEST_SRC_WAVE_WHITE_NOISE, NULL ); - } - else - { - DEBUG_API("Squelch toggled, no channel, set radio to silence") - g_object_set( G_OBJECT(bCtx->bin), "wave", GST_AUDIO_TEST_SRC_WAVE_SILENCE, NULL ); - } - } - else - { - DEBUG_API("Squelch toggled, radio on channel, radio not changed") - } - squelchMode = squelch; - } /* else do nothing as mode not changed */ - - DEBUG_API("<-XARadioItfAdapt_SetSquelch"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_SetStereoMode(XAAdaptationGstCtx *bCtx, XAuint32 mode) - */ -XAresult XARadioItfAdapt_SetStereoMode(XAAdaptationGstCtx *bCtx, XAuint32 mode) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARadioItfAdapt_SetStereoMode"); - - if(!bCtx || mode > XA_STEREOMODE_AUTO ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_SetStereoMode"); - return XA_RESULT_PARAMETER_INVALID; - } - - switch ( mode ) - { - case XA_STEREOMODE_MONO: - /* always works */ - break; - case XA_STEREOMODE_STEREO: - if ( supportedFreqRanges[freqRangeIndex].stereoMode == XA_STEREOMODE_MONO ) - { - DEBUG_ERR("StereoMode stereo unsupported"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - break; - case XA_STEREOMODE_AUTO: - if ( supportedFreqRanges[freqRangeIndex].stereoMode != XA_STEREOMODE_AUTO ) - { - DEBUG_ERR("StereoMode auto unsupported"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - } - break; - default : - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - ret = XA_RESULT_INTERNAL_ERROR; /* shouldn't come here */ - break; - } - - DEBUG_API("<-XARadioItfAdapt_SetStereoMode"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_GetSignalStrength(XAAdaptationGstCtx *bCtx, XAuint32 * pStrength) - */ -XAresult XARadioItfAdapt_GetSignalStrength(XAAdaptationGstCtx *bCtx, XAuint32 * pStrength) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARadioItfAdapt_GetSignalStrength"); - - if(!bCtx || !pStrength) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_GetSignalStrength"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (currentChannel != -1) - { - *pStrength = channels[currentChannel].strength; - } - else - { - *pStrength = 0; - } - - DEBUG_API("<-XARadioItfAdapt_GetSignalStrength"); - return ret; -} - -/* - * XAresult XARadioItfAdapt_Seek(XAAdaptationGstCtx *bCtx, XAboolean upwards) - */ -XAresult XARadioItfAdapt_Seek(XAAdaptationGstCtx *bCtx, XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* mCtx = NULL; - int pt_ret=0; - DEBUG_API("->XARadioItfAdapt_Seek"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_Seek"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - if (asyncdata) - { - free(asyncdata); - asyncdata = NULL; - } - mCtx->state = XA_RADIO_IDLE; - } - - mCtx->state = XA_RADIO_SEEKING; - pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARadioItfAdapt_AsyncSeek),(void*)bCtx); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret) - DEBUG_API("<-XARadioItfAdapt_Seek"); - return XA_RESULT_INTERNAL_ERROR; - } - - DEBUG_API("<-XARadioItfAdapt_Seek"); - return ret; -} - -/* - * void * XARadioItfAdapt_AsyncSeek(void* args) - */ -void * XARadioItfAdapt_AsyncSeek(void* args) -{ - XAresult ret = XA_RESULT_SUCCESS; - - XAAdaptationGstCtx *bCtx = (XAAdaptationGstCtx*)args; - - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*) bCtx; - - XAuint8 index=0; - XAint8 currentChannel = 0; - XAuint32 freq=0; - mCtx->state = XA_RADIO_SEEKING; - usleep(100000); /* 1/10 seconds */ - - DEBUG_INFO("Seek done!") - - for( index = 0; index < NUM_OF_CHANNELS; index++) - { - if (channels[index].freq == mCtx->frequency) - { - currentChannel = index; - break; - } - } - - freq = channels[(currentChannel + 1)%NUM_OF_CHANNELS].freq; - - ret = XARadioItfAdapt_SyncSetFrequency( bCtx, freq ); - if (ret != XA_RESULT_SUCCESS) - { - DEBUG_ERR("XARadioItfAdapt_SyncSetFrequency failed") - } - - /* Send event to RadioItf */ - { - XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_SEEK_COMPLETE, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - mCtx->state = XA_RADIO_IDLE; - - pthread_exit(NULL); - return NULL; -} - -/* - * XAresult XARadioItfAdapt_StopSeeking(XAAdaptationGstCtx *bCtx) - */ -XAresult XARadioItfAdapt_StopSeeking(XAAdaptationGstCtx *bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioAdaptationCtx* mCtx = NULL; - DEBUG_API("->XARadioItfAdapt_StopSeeking"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfAdapt_StopSeeking"); - return XA_RESULT_INTERNAL_ERROR; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (mCtx->state == XA_RADIO_SEEKING) - { - mCtx->state = XA_RADIO_IDLE; - // pthread_cancel(mCtx->emulationThread); - - /* just put some random non-channel freq */ - ret = XARadioItfAdapt_SyncSetFrequency( bCtx, channels[0].freq+supportedFreqRanges[freqRangeIndex].freqInterval); - if (ret != XA_RESULT_SUCCESS) - { - ret = XA_RESULT_INTERNAL_ERROR; - } - } - - DEBUG_API("<-XARadioItfAdapt_StopSeeking"); - return ret; -} - -/* - * void XARadioItfAdapt_Free(XAAdaptationGstCtx *bCtx) - */ -void XARadioItfAdapt_Free(XAAdaptationBaseCtx *bCtx) -{ - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*) bCtx; - DEBUG_API("->XARadioItfAdapt_Free"); - - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - if (asyncdata) - { - free(asyncdata); - asyncdata = NULL; - } - mCtx->state = XA_RADIO_IDLE; - } - - DEBUG_API("<-XARadioItfAdapt_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaradioitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaradioitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XARADIOITFFADAPTATION_H -#define XARADIOITFFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xadebug.h" - -/* MACROS */ -#define RADIO_DEFAULT_STEREO_MODE XA_STEREOMODE_AUTO -#define RADIO_NUM_OF_PRESETS 10 - -extern const char* RadioPresetDefaultName; - -/* FUNCTIONS */ -XAresult XARadioItfAdapt_SetFreqRange(XAAdaptationGstCtx *bCtx, XAuint8 range); - -XAresult XARadioItfAdapt_GetFreqRange(XAAdaptationGstCtx *bCtx, - XAuint8 * pFreqRange); - -XAresult XARadioItfAdapt_IsFreqRangeSupported(XAAdaptationGstCtx *bCtx, - XAuint8 range, - XAboolean * pSupported); - -XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationGstCtx *bCtx, - XAuint8 range, - XAuint32 * pMinFreq, - XAuint32 * pMaxFreq, - XAuint32 * pFreqInterval); - -XAresult XARadioItfAdapt_SetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq); - -XAresult XARadioItfAdapt_GetFrequency(XAAdaptationGstCtx *bCtx, - XAuint32 * pFrequency); - -XAresult XARadioItfAdapt_CancelSetFrequency(XAAdaptationGstCtx *bCtx); - -XAresult XARadioItfAdapt_SetSquelch(XAAdaptationGstCtx *bCtx, XAboolean squelch); - -XAresult XARadioItfAdapt_SetStereoMode(XAAdaptationGstCtx *bCtx, XAuint32 mode); - -XAresult XARadioItfAdapt_GetSignalStrength(XAAdaptationGstCtx *bCtx, XAuint32 * pStrength); - -XAresult XARadioItfAdapt_Seek(XAAdaptationGstCtx *bCtx, XAboolean upwards); - -XAresult XARadioItfAdapt_StopSeeking(XAAdaptationGstCtx *bCtx); - -void XARadioItfAdapt_Free(XAAdaptationBaseCtx *bCtx); - -#endif /* XARADIOITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,877 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include - -#include "xaadaptationgst.h" -#include "xaradioadaptctx.h" -#include "xardsitfadaptation.h" -#include "xaradioitfadaptation.h" - -/* emulated device data and constraints */ - -#define NUM_OF_CHANNELS 2 -#define MAX_PS_STRING_LENGHT 17 -#define MAX_RT_STRING_LENGHT 129 -#define MAX_ODA_GROUP_SUBSCRIPTIONS 100 -#define MAX_PTY_STRING_SHORT_LENGHT 17 -#define MAX_PTY_STRING_LONG_LENGHT 33 -#define NONE_STRING_LENGHT 4 - -/* emulated rds data structure */ -typedef struct -{ - XAuint32 frequency; - XAchar *progServiceName; - XAchar *radioText; - XAuint32 programmeType; - XAchar *ptyStringShort; - XAchar *ptyStringLong; - XAint16 programmeID; - XAboolean trafficAnnouncement; - XAboolean trafficProgramme; -} RDSData; - -#define TRAFFIC_PROGRAMME_CHANNEL 0 -#define TRAFFIC_ANNOUNCEMENT_CHANNEL 0 -#define POPMUSIC_CHANNEL 1 - -/* emulated rds data from channels */ -static const RDSData rdsData[NUM_OF_CHANNELS] = { - {88500000, (XAchar *)"Traffic", (XAchar *)"All your traffic needs", XA_RDSPROGRAMMETYPE_RDSPTY_NONE, - (XAchar *)"None", (XAchar *)"None", 0x0001, XA_BOOLEAN_TRUE, XA_BOOLEAN_TRUE }, - {89300000, (XAchar *)"Popular", (XAchar *)"For the populous", XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC, - (XAchar *)"Pop music", (XAchar *)"Pop music for the masses", 0x0002, XA_BOOLEAN_FALSE, XA_BOOLEAN_FALSE } -}; - -static const XAchar* noneString = (XAchar *)"None"; - -static XAint16 subscribedODAGroups[MAX_ODA_GROUP_SUBSCRIPTIONS]; -static XAuint16 subscribedODAGroupCount = 0; - -//static XAuint32 freqSetAfterSeek; - -const RDSData* GetCurrentRdsData( XAAdaptationGstCtx *bCtx ); -void * XARDSItfAdapt_AsyncSeek(void* args); -void * XARDSItfAdapt_AsyncGetODAGroup(void* args); - -/* exposing radio itf adaptation internal function here */ -//XAresult XARadioItfAdapt_SyncSetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq); - - -/* - * XAresult XARDSItfAdapt_QueryRDSSignal(XAAdaptationGstCtx *bCtx, XAboolean * isSignal) - */ -XAresult XARDSItfAdapt_QueryRDSSignal(XAAdaptationGstCtx *bCtx, XAboolean * isSignal) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARDSItfAdapt_QueryRDSSignal"); - - if(!bCtx || !isSignal) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_QueryRDSSignal"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (GetCurrentRdsData(bCtx)) - { - *isSignal = XA_BOOLEAN_TRUE; - } - else - { - *isSignal = XA_BOOLEAN_FALSE; - } - - DEBUG_API("<-XARDSItfAdapt_QueryRDSSignal"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetProgrammeServiceName(XAAdaptationGstCtx *bCtx, XAchar * ps) - */ -XAresult XARDSItfAdapt_GetProgrammeServiceName(XAAdaptationGstCtx *bCtx, XAchar * ps) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetProgrammeServiceName"); - - - if(!bCtx || !ps) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetProgrammeServiceName"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - strncpy( (char *)ps, (char *)data->progServiceName, MAX_PS_STRING_LENGHT ); - } - else - { - *ps = 0; - } - - DEBUG_API("<-XARDSItfAdapt_GetProgrammeServiceName"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetRadioText(XAAdaptationGstCtx *bCtx, XAchar * rt) - */ -XAresult XARDSItfAdapt_GetRadioText(XAAdaptationGstCtx *bCtx, XAchar * rt) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetRadioText"); - - if(!bCtx || !rt) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetRadioText"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - strncpy( (char *)rt, (char *)data->radioText, MAX_RT_STRING_LENGHT ); - } - else - { - *rt = 0; - } - - DEBUG_API("<-XARDSItfAdapt_GetRadioText"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetRadioTextPlus(XAAdaptationGstCtx *bCtx, - * XAuint8 contentType, - * XAchar * informationElement, - * XAchar * descriptor, - * XAuint8 * descriptorContentType) - */ -XAresult XARDSItfAdapt_GetRadioTextPlus(XAAdaptationGstCtx *bCtx, - XAuint8 contentType, - XAchar * informationElement, - XAchar * descriptor, - XAuint8 * descriptorContentType) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARDSItfAdapt_GetRadioTextPlus"); - - if(!bCtx || contentType < XA_RDSRTPLUS_ITEMTITLE || contentType > XA_RDSRTPLUS_GETDATA - || !informationElement || !descriptor || !descriptorContentType) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetRadioTextPlus"); - return XA_RESULT_PARAMETER_INVALID; - } - - *informationElement = 0; - *descriptorContentType = 0; - - DEBUG_API("<-XARDSItfAdapt_GetRadioTextPlus"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetProgrammeType(XAAdaptationGstCtx *bCtx, XAuint32 * pty) - */ -XAresult XARDSItfAdapt_GetProgrammeType(XAAdaptationGstCtx *bCtx, XAuint32 * pty) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetProgrammeType"); - - if(!bCtx || !pty) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetProgrammeType"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - *pty = data->programmeType; - } - else - { - *pty = 0; - } - - DEBUG_API("<-XARDSItfAdapt_GetProgrammeType"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetProgrammeTypeString(XAAdaptationGstCtx *bCtx, - * XAboolean isLengthMax16, - * XAchar * pty) - * - */ -XAresult XARDSItfAdapt_GetProgrammeTypeString(XAAdaptationGstCtx *bCtx, - XAboolean isLengthMax16, - XAchar * pty) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetProgrammeTypeString"); - - if(!bCtx || !pty) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetProgrammeTypeString"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - if (isLengthMax16) - { - DEBUG_API_A1("Programme type string %s", data->ptyStringLong); - strncpy( (char *)pty, (char *)data->ptyStringLong, MAX_PTY_STRING_LONG_LENGHT ); - } - else - { - DEBUG_API_A1("Programme type string %s", data->ptyStringShort); - strncpy( (char *)pty, (char *)data->ptyStringShort, MAX_PTY_STRING_SHORT_LENGHT ); - } - } - else - { - DEBUG_API_A1("Programme type string %s", noneString); - strncpy( (char *)pty, (char *)noneString, NONE_STRING_LENGHT ); - } - - DEBUG_API("<-XARDSItfAdapt_GetProgrammeTypeString"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetProgrammeIdentificationCode(XAAdaptationGstCtx *bCtx, XAint16 * pi) - */ -XAresult XARDSItfAdapt_GetProgrammeIdentificationCode(XAAdaptationGstCtx *bCtx, XAint16 * pi) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetProgrammeIdentificationCode"); - - if(!bCtx || !pi) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetProgrammeIdentificationCode"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - *pi = data->programmeID; - } - else - { - *pi = 0; - } - - DEBUG_API("<-XARDSItfAdapt_GetProgrammeIdentificationCode"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetClockTime(XAAdaptationGstCtx *bCtx, XAtime * dateAndTime) - */ -XAresult XARDSItfAdapt_GetClockTime(XAAdaptationGstCtx *bCtx, XAtime * dateAndTime) -{ - XAresult ret = XA_RESULT_SUCCESS; - time_t timeRet=0; - DEBUG_API("->XARDSItfAdapt_GetClockTime"); - - if(!bCtx || !dateAndTime) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetClockTime"); - return XA_RESULT_PARAMETER_INVALID; - } - - timeRet = time(NULL); - - if (timeRet == -1) /* could not get time for some reason */ - { - ret = XA_RESULT_INTERNAL_ERROR; - } - else - { - *dateAndTime = timeRet; - } - - DEBUG_API("<-XARDSItfAdapt_GetClockTime"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean * ta) - */ -XAresult XARDSItfAdapt_GetTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean * ta) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetTrafficAnnouncement"); - - if(!bCtx || !ta) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - *ta = data->trafficAnnouncement; - } - else - { - *ta = XA_BOOLEAN_FALSE; - } - - DEBUG_API("<-XARDSItfAdapt_GetTrafficAnnouncement"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetTrafficProgramme(XAAdaptationGstCtx *bCtx, XAboolean * tp) - */ -XAresult XARDSItfAdapt_GetTrafficProgramme(XAAdaptationGstCtx *bCtx, XAboolean * tp) -{ - XAresult ret = XA_RESULT_SUCCESS; - const RDSData* data; - DEBUG_API("->XARDSItfAdapt_GetTrafficProgramme"); - - if(!bCtx || !tp) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetTrafficProgramme"); - return XA_RESULT_PARAMETER_INVALID; - } - - data = GetCurrentRdsData( bCtx ); - - if (data) - { - *tp = data->trafficProgramme; - } - else - { - *tp = XA_BOOLEAN_FALSE; - } - - DEBUG_API("<-XARDSItfAdapt_GetTrafficProgramme"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_SeekByProgrammeType(XAAdaptationGstCtx *bCtx, - * XAuint32 pty, - * XAboolean upwards) - */ -XAresult XARDSItfAdapt_SeekByProgrammeType(XAAdaptationGstCtx *bCtx, - XAuint32 pty, - XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - int pt_ret=0; - XARadioAdaptationCtx* mCtx = NULL; - DEBUG_API("->XARDSItfAdapt_SeekByProgrammeType"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_SeekByProgrammeType"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - mCtx->state = XA_RADIO_IDLE; - } - - if (pty == XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC) - { - //freqSetAfterSeek = rdsData[POPMUSIC_CHANNEL].frequency; - } - else - { - //freqSetAfterSeek = mCtx->frequency; - } - - mCtx->state = XA_RADIO_SEEKING; - pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARDSItfAdapt_AsyncSeek),(void*)bCtx); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret); - DEBUG_API("<-XARDSItfAdapt_SeekByProgrammeType"); - return XA_RESULT_INTERNAL_ERROR; - } - - DEBUG_API("<-XARDSItfAdapt_SeekByProgrammeType"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_SeekTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean upwards) - */ -XAresult XARDSItfAdapt_SeekTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - int pt_ret=0; - XARadioAdaptationCtx* mCtx = NULL; - DEBUG_API("->XARDSItfAdapt_SeekTrafficAnnouncement"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_SeekTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - mCtx->state = XA_RADIO_IDLE; - } - - //freqSetAfterSeek = rdsData[TRAFFIC_ANNOUNCEMENT_CHANNEL].frequency; - - mCtx->state = XA_RADIO_SEEKING; - pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARDSItfAdapt_AsyncSeek),(void*)bCtx); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret); - DEBUG_API("<-XARDSItfAdapt_SeekTrafficAnnouncement"); - return XA_RESULT_INTERNAL_ERROR; - } - - DEBUG_API("<-XARDSItfAdapt_SeekTrafficAnnouncement"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_SeekTrafficProgramme(XAAdaptationGstCtx *bCtx, XAboolean upwards) - */ -XAresult XARDSItfAdapt_SeekTrafficProgramme(XAAdaptationGstCtx *bCtx, XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - int pt_ret=0; - XARadioAdaptationCtx* mCtx = NULL; - DEBUG_API("->XARDSItfAdapt_SeekTrafficProgramme"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_SeekTrafficProgramme"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - mCtx->state = XA_RADIO_IDLE; - } - - //freqSetAfterSeek = rdsData[TRAFFIC_PROGRAMME_CHANNEL].frequency; - - mCtx->state = XA_RADIO_SEEKING; - pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARDSItfAdapt_AsyncSeek),(void*)bCtx); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret); - DEBUG_API("<-XARDSItfAdapt_SeekTrafficProgramme"); - return XA_RESULT_INTERNAL_ERROR; - } - - DEBUG_API("<-XARDSItfAdapt_SeekTrafficProgramme"); - return ret; -} - -/* - * void * XARadioItfAdapt_AsyncSeek(void* args) - */ -void * XARDSItfAdapt_AsyncSeek(void* args) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAAdaptationGstCtx *bCtx = (XAAdaptationGstCtx*)args; - - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*) bCtx; - - DEBUG_API("->XARDSItfAdapt_AsyncSeek"); - - usleep(100000); /* 1/10 seconds */ - - DEBUG_INFO("Seek done!"); - - //ret = XARadioItfAdapt_SyncSetFrequency( bCtx, freqSetAfterSeek ); - if (ret != XA_RESULT_SUCCESS) - { - DEBUG_ERR("XARadioItfAdapt_SyncSetFrequency FAILED"); - } - - /* Send event to RadioItf */ - { - XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_SEEK_COMPLETE, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - mCtx->state = XA_RADIO_IDLE; - - DEBUG_API("<-XARDSItfAdapt_AsyncSeek"); - pthread_exit(NULL); - return NULL; -} - -/* - * XAresult XARDSItfAdapt_SetAutomaticSwitching(XAAdaptationGstCtx *bCtx, XAboolean automatic) - */ -XAresult XARDSItfAdapt_SetAutomaticSwitching(XAAdaptationGstCtx *bCtx, XAboolean automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARDSItfAdapt_SetAutomaticSwitching"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_SetAutomaticSwitching"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XA_RESULT_FEATURE_UNSUPPORTED; - - DEBUG_API("<-XARDSItfAdapt_SetAutomaticSwitching"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetAutomaticSwitching(XAAdaptationGstCtx *bCtx, XAboolean * automatic) - */ -XAresult XARDSItfAdapt_GetAutomaticSwitching(XAAdaptationGstCtx *bCtx, XAboolean * automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARDSItfAdapt_GetAutomaticSwitching"); - - if(!bCtx || !automatic) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetAutomaticSwitching"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* Feature not supported */ - *automatic = XA_BOOLEAN_FALSE; - - DEBUG_API("<-XARDSItfAdapt_GetAutomaticSwitching"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_SetAutomaticTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean automatic) - */ -XAresult XARDSItfAdapt_SetAutomaticTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARDSItfAdapt_SetAutomaticTrafficAnnouncement"); - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_SetAutomaticTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XA_RESULT_FEATURE_UNSUPPORTED; - - DEBUG_API("<-XARDSItfAdapt_SetAutomaticTrafficAnnouncement"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetAutomaticTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean * automatic) - */ -XAresult XARDSItfAdapt_GetAutomaticTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean * automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XARDSItfAdapt_GetAutomaticTrafficAnnouncement"); - - if(!bCtx || !automatic) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetAutomaticTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - *automatic = XA_BOOLEAN_FALSE; - - DEBUG_API("<-XARDSItfAdapt_GetAutomaticTrafficAnnouncement"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_GetODAGroup(XAAdaptationGstCtx *bCtx, - * XAint16 AID) - */ -XAresult XARDSItfAdapt_GetODAGroup(XAAdaptationGstCtx *bCtx, XAint16 AID) -{ - XAresult ret = XA_RESULT_SUCCESS; - int pt_ret=0; - XARadioAdaptationCtx* mCtx=NULL; - DEBUG_API("->XARDSItfAdapt_GetODAGroup"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_GetODAGroup"); - return XA_RESULT_PARAMETER_INVALID; - } - - mCtx = (XARadioAdaptationCtx*) bCtx; - - if (mCtx->rdsState != XA_RADIO_RDS_IDLE) - { - // pthread_cancel(mCtx->rdsEmulationThread); - mCtx->rdsState = XA_RADIO_RDS_IDLE; - DEBUG_INFO("Previous getodagroup async call cancelled") - } - - pt_ret = pthread_create(&(mCtx->rdsEmulationThread), NULL, (XARDSItfAdapt_AsyncGetODAGroup),(void*)bCtx); - - if(pt_ret) - { - DEBUG_ERR_A1("could not create thread!! (%d)",ret); - DEBUG_API("<-XARDSItfAdapt_GetODAGroup"); - return XA_RESULT_INTERNAL_ERROR; - } - - DEBUG_API("<-XARDSItfAdapt_GetODAGroup"); - return ret; -} - -/* - * void * XARDSItfAdapt_AsyncGetODAGroup(void* args) - */ -void * XARDSItfAdapt_AsyncGetODAGroup(void* args) -{ - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*)args; - - DEBUG_API("->XARDSItfAdapt_AsyncGetODAGroup"); - mCtx->rdsState = XA_RADIO_RDS_GETTING_ODA_GROUP; - - DEBUG_INFO("Get oda group async wait") - usleep(100000); /* 1/10 seconds */ - - /* Send event */ - { - XAAdaptEvent event = {XA_RDSITFEVENTS, XA_ADAPT_RDS_GET_ODA_GROUP_DONE, 0, NULL }; - XAAdaptationBase_SendAdaptEvents(args, &event ); - } - mCtx->rdsState = XA_RADIO_RDS_IDLE; - DEBUG_API("<-XARDSItfAdapt_AsyncGetODAGroup"); - pthread_exit(NULL); - return NULL; -} - -/* - * XAresult XARDSItfAdapt_SubscribeODAGroup(XAAdaptationGstCtx *bCtx, - * XAint16 group, - * XAboolean useErrorCorrection) - */ -XAresult XARDSItfAdapt_SubscribeODAGroup(XAAdaptationGstCtx *bCtx, - XAint16 group, - XAboolean useErrorCorrection) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint8 index=0; - XAboolean groupFound = XA_BOOLEAN_FALSE; - DEBUG_API("->XARDSItfAdapt_SubscribeODAGroup"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_SubscribeODAGroup"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* Look for group in list, if not there add it */ - if (subscribedODAGroupCount < MAX_ODA_GROUP_SUBSCRIPTIONS) - { - for (index = 0; index < subscribedODAGroupCount; index++) - { - if (subscribedODAGroups[index] == group) - { - groupFound = XA_BOOLEAN_TRUE; - } - } - if (!groupFound) - { - subscribedODAGroups[subscribedODAGroupCount] = group; - subscribedODAGroupCount++; - } - } - else - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XARDSItfAdapt_SubscribeODAGroup"); - return XA_RESULT_INTERNAL_ERROR; - } - - DEBUG_API("<-XARDSItfAdapt_SubscribeODAGroup"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_UnsubscribeODAGroup(XAAdaptationGstCtx *bCtx, XAint16 group) - */ -XAresult XARDSItfAdapt_UnsubscribeODAGroup(XAAdaptationGstCtx *bCtx, XAint16 group) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint8 index=0; - DEBUG_API("->XARDSItfAdapt_UnsubscribeODAGroup"); - - if(!bCtx) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_UnsubscribeODAGroup"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* Look for group in list, if found, remove it */ - for (index = 0; index < subscribedODAGroupCount; index++) - { - if (subscribedODAGroups[index] == group) - { - subscribedODAGroups[index] = subscribedODAGroups[subscribedODAGroupCount-1]; - subscribedODAGroupCount--; - } - } - - DEBUG_API("<-XARDSItfAdapt_UnsubscribeODAGroup"); - return ret; -} - -/* - * XAresult XARDSItfAdapt_ListODAGroupSubscriptions(XAAdaptationGstCtx *bCtx, - * XAint16* pGroups, - * XAuint32* pLength) - */ -XAresult XARDSItfAdapt_ListODAGroupSubscriptions(XAAdaptationGstCtx *bCtx, - XAint16* pGroups, - XAuint32* pLength) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint8 index=0; - DEBUG_API("->XARDSItfAdapt_ListODAGroupSubscriptions"); - - if(!bCtx || !pLength) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARDSItfAdapt_ListODAGroupSubscriptions"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (!pGroups) - { - *pLength = subscribedODAGroupCount; - } - else - { - if (*pLength < subscribedODAGroupCount) - { - ret = XA_RESULT_BUFFER_INSUFFICIENT; - } - for (index = 0; index < *pLength; index++) - { - pGroups[index] = subscribedODAGroups[index]; - } - } - - DEBUG_API("<-XARDSItfAdapt_ListODAGroupSubscriptions"); - return ret; -} - -/* - * const RDSData* GetCurrentRdsData( XAAdaptationGstCtx *bCtx ) - */ -const RDSData* GetCurrentRdsData( XAAdaptationGstCtx *bCtx ) -{ - XAuint8 index=0; - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*) bCtx; - - for (index = 0; index < NUM_OF_CHANNELS; index++ ) - { - if (rdsData[index].frequency == mCtx->frequency) - { - DEBUG_API("<-GetCurrentRdsData"); - return &(rdsData[index]); - } - } - DEBUG_API("<-GetCurrentRdsData"); - return NULL; -} - - -/* - * void XARDSItfAdapt_Free(XAAdaptationGstCtx *bCtx) - */ -void XARDSItfAdapt_Free(XAAdaptationBaseCtx *bCtx) -{ - XARadioAdaptationCtx* mCtx = (XARadioAdaptationCtx*) bCtx; - DEBUG_API("->XARDSItfAdapt_Free"); - - if (mCtx->state != XA_RADIO_IDLE) - { - // pthread_cancel(mCtx->emulationThread); - mCtx->state = XA_RADIO_IDLE; - } - - if (mCtx->rdsState != XA_RADIO_RDS_IDLE) - { - // pthread_cancel(mCtx->rdsEmulationThread); - mCtx->rdsState = XA_RADIO_RDS_IDLE; - } - - DEBUG_API("<-XARDSItfAdapt_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XARDSITFFADAPTATION_H -#define XARDSOITFFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xadebug.h" - -/* MACROS */ - -/* FUNCTIONS */ - -XAresult XARDSItfAdapt_QueryRDSSignal(XAAdaptationGstCtx *bCtx, XAboolean * isSignal); - -XAresult XARDSItfAdapt_GetProgrammeServiceName(XAAdaptationGstCtx *bCtx, XAchar * ps); - -XAresult XARDSItfAdapt_GetRadioText(XAAdaptationGstCtx *bCtx, XAchar * rt); - -XAresult XARDSItfAdapt_GetRadioTextPlus(XAAdaptationGstCtx *bCtx, - XAuint8 contentType, - XAchar * informationElement, - XAchar * descriptor, - XAuint8 * descriptorContentType); - -XAresult XARDSItfAdapt_GetProgrammeType(XAAdaptationGstCtx *bCtx, XAuint32 * pty); - -XAresult XARDSItfAdapt_GetProgrammeTypeString(XAAdaptationGstCtx *bCtx, - XAboolean isLengthMax16, - XAchar * pty); - -XAresult XARDSItfAdapt_GetProgrammeIdentificationCode(XAAdaptationGstCtx *bCtx, XAint16 * pi); - -XAresult XARDSItfAdapt_GetClockTime(XAAdaptationGstCtx *bCtx, XAtime * dateAndTime); - -XAresult XARDSItfAdapt_GetTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean * ta); - -XAresult XARDSItfAdapt_GetTrafficProgramme(XAAdaptationGstCtx *bCtx, XAboolean * tp); - -XAresult XARDSItfAdapt_SeekByProgrammeType(XAAdaptationGstCtx *bCtx, - XAuint32 pty, - XAboolean upwards); - -XAresult XARDSItfAdapt_SeekTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean upwards); - -XAresult XARDSItfAdapt_SeekTrafficProgramme(XAAdaptationGstCtx *bCtx, XAboolean upwards); - -XAresult XARDSItfAdapt_SetAutomaticSwitching(XAAdaptationGstCtx *bCtx, XAboolean automatic); - -XAresult XARDSItfAdapt_GetAutomaticSwitching(XAAdaptationGstCtx *bCtx, XAboolean * automatic); - -XAresult XARDSItfAdapt_SetAutomaticTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean automatic); - -XAresult XARDSItfAdapt_GetAutomaticTrafficAnnouncement(XAAdaptationGstCtx *bCtx, XAboolean * automatic); - -XAresult XARDSItfAdapt_GetODAGroup(XAAdaptationGstCtx *bCtx, XAint16 AID); - -XAresult XARDSItfAdapt_SubscribeODAGroup(XAAdaptationGstCtx *bCtx, - XAint16 group, - XAboolean useErrorCorrection); - -XAresult XARDSItfAdapt_UnsubscribeODAGroup(XAAdaptationGstCtx *bCtx, XAint16 group); - -XAresult XARDSItfAdapt_ListODAGroupSubscriptions(XAAdaptationGstCtx *bCtx, - XAint16* pGroups, - XAuint32* pLength); - -void XARDSItfAdapt_Free(XAAdaptationBaseCtx *bCtx); - -#endif /* XARDSITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xarecorditfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xarecorditfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/gst_adaptation/xarecorditfadaptation.c Wed Aug 18 10:17:22 2010 +0300 @@ -20,14 +20,11 @@ #include "xamediarecorderadaptctx.h" #include "xarecorditfadaptation.h" #include "xaadaptationgst.h" -#include "xacameraadaptctx.h" + /*forward declaration of position updater callback*/ gboolean XARecordItfAdapt_PositionUpdate(gpointer ctx); -extern XAboolean cameraRealized; -extern XACameraAdaptationCtx_* cameraCtx; - /* * XAresult XARecordItfAdapt_SetRecordState(XAAdaptationGstCtx *ctx, XAuint32 state) * Sets record state to GStreamer. @@ -74,30 +71,6 @@ } } - if (cameraCtx && cameraRealized && mCtx->isobjvsrc - && mCtx->videosource) - { - cameraCtx->recording = XA_BOOLEAN_FALSE; - - if (!cameraCtx->playing && !cameraCtx->snapshotting) - { - /* Neither view finder or recorder is running -> pause camera */ - if (GST_STATE( GST_ELEMENT(mCtx->videosource)) - == GST_STATE_PLAYING) - { - GstStateChangeReturn gret; - DEBUG_INFO("Stop camera source"); - gret = gst_element_set_state( - GST_ELEMENT(mCtx->videosource), - GST_STATE_PAUSED); - if (gret == GST_STATE_CHANGE_SUCCESS) - gret = gst_element_get_state( - GST_ELEMENT(mCtx->videosource), NULL, - NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - } - } - } - bCtx->binWantedState = GST_STATE_PAUSED; closeSink = XA_BOOLEAN_TRUE; if (mCtx->runpositiontimer > 0) @@ -120,29 +93,6 @@ } case XA_RECORDSTATE_PAUSED: { - if (cameraCtx && cameraRealized && mCtx->isobjvsrc - && mCtx->videosource) - { - cameraCtx->recording = XA_BOOLEAN_FALSE; - if (!cameraCtx->playing && !cameraCtx->snapshotting) - { - /* Neither view finder or recorder is running -> pause camera */ - if (GST_STATE( GST_ELEMENT(mCtx->videosource)) - == GST_STATE_PLAYING) - { - GstStateChangeReturn gret; - DEBUG_INFO("Stop camera source"); - gret = gst_element_set_state( - GST_ELEMENT(mCtx->videosource), - GST_STATE_PAUSED); - if (gret == GST_STATE_CHANGE_SUCCESS) - gret = gst_element_get_state( - GST_ELEMENT(mCtx->videosource), NULL, - NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - } - } - } - if (mCtx->xaRecordState == XA_RECORDSTATE_STOPPED && mCtx->encodingchanged) { @@ -163,11 +113,6 @@ } case XA_RECORDSTATE_RECORDING: { - if (cameraCtx && mCtx->isobjvsrc) - { - cameraCtx->recording = XA_BOOLEAN_TRUE; - } - if (mCtx->xaRecordState == XA_RECORDSTATE_STOPPED && (mCtx->encodingchanged)) { @@ -288,7 +233,8 @@ gret = gst_element_get_state(GST_ELEMENT(mCtx->videosource), NULL, NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); } - }DEBUG_API("<-XARecordItfAdapt_SetRecordState"); + } + DEBUG_API("<-XARecordItfAdapt_SetRecordState"); return ret; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaseekitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xaseekitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xaseekitfadaptation.h" - -/* - * XAresult XASeekItfAdapt_SetPosition(XAAdaptationGstCtx *bCtx, XAmillisecond pos, XAuint32 seekMode) - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value - * XAmillisecond pos - Position to be set in Milliseconds - * XAuint32 seekMode - Preferred seek mode - * @return XAresult ret - Success value - */ -XAresult XASeekItfAdapt_SetPosition(XAAdaptationGstCtx *bCtx, XAmillisecond pos, XAuint32 seekMode) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - gint64 gstSeekPos = pos * GST_MSECOND; - XAmillisecond newPosMs=0; - GstFormat format = GST_FORMAT_TIME; - GstSeekFlags seekFlags = GST_SEEK_FLAG_FLUSH; - DEBUG_API_A2("->XASeekItfAdapt_SetPosition (pos %ld ms, mode=%d)", pos, (int)seekMode); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfAdapt_SetPosition"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if( GST_STATE(bCtx->bin) < GST_STATE_PAUSED ) - { /* This should not happen */ - DEBUG_ERR("Gst not prerolled - can not seek!!"); - DEBUG_API("<-XASeekItfAdapt_SetPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - - if ( seekMode == XA_SEEKMODE_FAST ) - { - seekFlags |= GST_SEEK_FLAG_KEY_UNIT; - } - else - { - seekFlags |= GST_SEEK_FLAG_ACCURATE; - } - - XAAdaptationGst_PrepareAsyncWait(bCtx); - DEBUG_INFO("Send gst_element_seek"); - mCtx->lastpos = gstSeekPos; - if ( !gst_element_seek( bCtx->bin, mCtx->playrate, GST_FORMAT_TIME, seekFlags, - GST_SEEK_TYPE_SET, gstSeekPos, - GST_SEEK_TYPE_NONE, (gint64)GST_CLOCK_TIME_NONE ) ) - { - DEBUG_ERR("WARN: gst reports seek not handled"); - } - /* flushed seeks always asynchronous */ - XAAdaptationGst_StartAsyncWait(bCtx); - DEBUG_INFO("Seek handled.") - bCtx->waitingasyncop = XA_BOOLEAN_FALSE; - /* update new position to playitf */ - { - XAAdaptEvent event = {XA_PLAYITFEVENTS, XA_ADAPT_POSITION_UPDATE_EVT, 1, NULL}; - if ( !gst_element_query_position( GST_ELEMENT(bCtx->bin), &format, &mCtx->lastpos ) ) - { - DEBUG_ERR("WARNING: could not get position from GST") - } - DEBUG_INFO_A1("Current position %"GST_TIME_FORMAT, GST_TIME_ARGS(mCtx->lastpos)); - newPosMs = GST_TIME_AS_MSECONDS(mCtx->lastpos); - event.data = &newPosMs; - XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event ); - } - - ret = XA_RESULT_SUCCESS; - - DEBUG_API("<-XASeekItfAdapt_SetPosition"); - return ret; -} - -/* - * XAresult XASeekItfAdapt_SetLoop(void *bCtx, AdaptationContextIDS ctxIDs, XAboolean loopEnable, XAmillisecond startPos, - * XAmillisecond endPos) - * @param XAAdaptationGstCtx *bCtx - Adaptation context, this will be casted to correct type regarding to contextID value - * XAboolean loopEnable - Enable/Disable looping - * XAmillisecond startPos - Loop start position in milliseconds - * XAmillisecond endPos - Loop end position in milliseconds - * @return XAresult ret - Success value - */ -XAresult XASeekItfAdapt_SetLoop(XAAdaptationGstCtx *bCtx, XAboolean loopEnable, XAmillisecond startPos, - XAmillisecond endPos) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAMediaPlayerAdaptationCtx* mCtx = (XAMediaPlayerAdaptationCtx*) bCtx; - GstFormat format = GST_FORMAT_TIME; - - DEBUG_API_A3("->XASeekItfAdapt_SetLoop (enable=%d, start=%ld, stop=%ld)", (int)loopEnable, startPos, endPos); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfAdapt_SetLoop"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if( loopEnable ) - { - if(endPos==XA_TIME_UNKNOWN) - { - mCtx->loopend = (gint64)GST_CLOCK_TIME_NONE; - } - else - { - mCtx->loopend = (endPos*GST_MSECOND); - DEBUG_INFO_A1("Set looping to %ld", mCtx->loopend); - } - DEBUG_INFO_A2("Enable looping from %"GST_TIME_FORMAT" to %"GST_TIME_FORMAT, - GST_TIME_ARGS(mCtx->loopstart), GST_TIME_ARGS(mCtx->loopend)); - mCtx->loopstart = (startPos*GST_MSECOND); - if ( !gst_element_query_position( GST_ELEMENT(bCtx->bin), &format, &(mCtx->lastpos) ) ) - { - DEBUG_ERR("WARNING: could not get position from GST") - } - DEBUG_INFO_A1("current head position %"GST_TIME_FORMAT"",GST_TIME_ARGS(mCtx->lastpos)); - mCtx->loopingenabled = XA_BOOLEAN_TRUE; - XAMediaPlayerAdapt_UpdatePositionCbTimer(mCtx); - } - else - { - DEBUG_INFO("Disable looping"); - mCtx->loopstart = 0; - mCtx->loopend = (gint64)GST_CLOCK_TIME_NONE; - mCtx->loopingenabled = XA_BOOLEAN_FALSE; - XAMediaPlayerAdapt_UpdatePositionCbTimer(mCtx); - } - - DEBUG_API("<-XASeekItfAdapt_SetLoop"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xaseekitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xaseekitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XASEEKITFADAPTATION_H -#define XASEEKITFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xadebug.h" - -/* FUNCTIONS */ - -XAresult XASeekItfAdapt_SetPosition(XAAdaptationGstCtx *ctx, XAmillisecond pos, - XAuint32 seekMode); - -XAresult XASeekItfAdapt_SetLoop(XAAdaptationGstCtx *ctx, XAboolean loopEnable, - XAmillisecond startPos, XAmillisecond endPos); -#endif /* XASEEKITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xasnapshotitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xasnapshotitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,891 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xaadaptationgst.h" -#include "xasnapshotitfadaptation.h" -#include "xamediarecorderadaptctx.h" -#include "xametadataadaptation.h" -#include "xacameraadaptctx.h" -#include "xacapabilitiesmgr.h" - -#define SSMAXPIC 30 -#define SSMAXFPS 30 /*technically, same as FPS of video stream*/ -#define SSMINFPS 1 - -extern XAboolean cameraRealized; -extern XACameraAdaptationCtx_* cameraCtx; - -/* Forward declarations for internal methods */ -XAresult XASnapshotItfAdaptation_CreateSnapshotPipeline(XAAdaptationGstCtx* bCtx); -XAresult XASnapshotItfAdaptation_FreeSnapshot(XAAdaptationGstCtx* bCtx); -const char* XASnapshotItfAdaptation_GetFileSuffix(XADataFormat_MIME* format); -void XASnapshotItfAdaptation_AllocNextFilename(char** fname, const char* template); -void XASnapshotItfAdaptation_StopSnapshotting(XAAdaptationGstCtx* bCtx); - -/* callbacks */ -gboolean XASnapshotItfAdaptation_SnapshotBusCb( GstBus *bus, GstMessage *message, gpointer data ); -void XASnapshotItfAdaptation_BufferHandoffCb( GstElement *extract, GstBuffer *buffer, gpointer data); - -/********************************* - * SnapshotItf adaptation methods - *********************************/ - -/* - * XAresult XASnapshotItfAdaptation_InitiateSnapshot(XAAdaptationGstCtx* bCtx, - * XAuint32 numberOfPictures, - * XAuint32 fps, - * XAboolean freezeViewFinder, - * XADataSink* sink) - */ -XAresult XASnapshotItfAdaptation_InitiateSnapshot(XAAdaptationGstCtx* bCtx, - XAuint32 numberOfPictures, - XAuint32 fps, - XAboolean freezeViewFinder, - XADataSink* sink) -{ - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*)bCtx; - XADataLocator_URI* uri=NULL; - - DEBUG_API("->XASnapshotItfAdaptation_InitiateSnapshot"); - /* Store initialization variables */ - mCtx->snapshotVars.numpics = numberOfPictures; - mCtx->snapshotVars.fps = fps; - mCtx->snapshotVars.freeze =freezeViewFinder; - mCtx->snapshotVars.parsenegotiated = FALSE; - mCtx->snapshotVars.snapshotbuffer = NULL; - - if( sink ) - { /* parse file sink name*/ - if( sink->pLocator && *((XAuint32*)(sink->pLocator)) == XA_DATALOCATOR_URI ) - { - uri = (XADataLocator_URI*)sink->pLocator; - if ( uri->URI != NULL ) - { - /* parse filename template: */ - mCtx->snapshotVars.fnametemplate = (char*)calloc(1,strlen((char*)uri->URI)+10); - DEBUG_INFO_A1("URI: %s", uri->URI); - if(strncmp((char*)uri->URI, "file://", 7) == 0) - { - strcat(mCtx->snapshotVars.fnametemplate, (char*)&((uri->URI)[7])); - } - else - { - strcat(mCtx->snapshotVars.fnametemplate, (char*)uri->URI); - } - strcat(mCtx->snapshotVars.fnametemplate, "%04d."); - strcat(mCtx->snapshotVars.fnametemplate, - XASnapshotItfAdaptation_GetFileSuffix(sink->pFormat)); - DEBUG_INFO_A1("->template name %s", mCtx->snapshotVars.fnametemplate); - } - else - { - DEBUG_ERR("No uri specified."); - return XA_RESULT_PARAMETER_INVALID; - } - } - else - { /* take snapshot to memory buffer */ - if( mCtx->snapshotVars.fnametemplate ) - { - free( mCtx->snapshotVars.fnametemplate ); - } - mCtx->snapshotVars.fnametemplate = NULL; - } - if( sink->pFormat && *((XAuint32*)(sink->pFormat)) == XA_DATAFORMAT_RAWIMAGE ) - { - XADataFormat_RawImage* img = ((XADataFormat_RawImage*)sink->pFormat); - /*set needed image settings from the sink structure*/ - mCtx->imageEncSettings.encoderId = XA_IMAGECODEC_RAW; - mCtx->imageEncSettings.width = img->width; - mCtx->imageEncSettings.height = img->height; - mCtx->imageEncSettings.colorFormat = img->colorFormat; - } - } - else - { - DEBUG_ERR("XASnapshotItfAdaptation_InitiateSnapshot, invalid data sink!"); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_InitiateSnapshot"); - return XA_RESULT_PARAMETER_INVALID; - } - - - if( mCtx->snapshotVars.sspipeline ) - { - XASnapshotItfAdaptation_FreeSnapshot(bCtx); - } - if( XASnapshotItfAdaptation_CreateSnapshotPipeline(bCtx) != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to create pipeline!!"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XASnapshotItfAdaptation_InitiateSnapshot"); - return XA_RESULT_INTERNAL_ERROR; - } - DEBUG_API("<-XASnapshotItfAdaptation_InitiateSnapshot"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XASnapshotItfAdaptation_TakeSnapshot(XAAdaptationGstCtx* bCtx) - */ -XAresult XASnapshotItfAdaptation_TakeSnapshot(XAAdaptationGstCtx* bCtx) -{ - XAMediaRecorderAdaptationCtx* mCtx = NULL; - - DEBUG_API("->XASnapshotItfAdaptation_TakeSnapshot"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_TakeSnapshot"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaRecorderAdaptationCtx*)bCtx; - /*to get buffer, base pipeline must be playing...*/ - if( GST_STATE(mCtx->baseObj.bin) != GST_STATE_PLAYING ) - { - DEBUG_INFO_A1("Parent bin in state %d, set to PLAYING", GST_STATE(mCtx->baseObj.bin)); - gst_element_set_state( GST_ELEMENT(mCtx->baseObj.bin), GST_STATE_PLAYING ); - gst_element_get_state( GST_ELEMENT(mCtx->baseObj.bin), NULL,NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - } - if ( mCtx->isobjvsrc && mCtx->videosource && cameraCtx && cameraRealized ) - { - GstPad *pad=NULL; - GstPad *pad1=NULL; - - cameraCtx->snapshotting = XA_BOOLEAN_TRUE; - pad = gst_element_get_static_pad( GST_ELEMENT(cameraCtx->baseObj.bin), "MRObjSrc"); - if( pad && gst_pad_is_linked(pad) ) - { - DEBUG_INFO_A2("unblock element:%s pad:%s", - gst_element_get_name(cameraCtx->baseObj.bin), - gst_pad_get_name(pad)); - gst_pad_set_blocked_async(pad, FALSE, XAAdaptationGst_PadBlockCb, NULL); - } - - pad1 = gst_element_get_static_pad( GST_ELEMENT(cameraCtx->baseObj.bin), "MPObjSrc"); - if( pad1 && gst_pad_is_linked(pad1) ) - { - DEBUG_INFO_A2("unblock element:%s pad:%s", - gst_element_get_name(cameraCtx->baseObj.bin), - gst_pad_get_name(pad1)); - gst_pad_set_blocked_async(pad, FALSE, XAAdaptationGst_PadBlockCb, NULL); - } - - DEBUG_INFO_A1("Using camera from global pointer %x", cameraCtx); - if ( GST_STATE( GST_ELEMENT(cameraCtx->baseObj.bin)) != GST_STATE_PLAYING ) - { - cameraCtx->baseObj.binWantedState = GST_STATE(cameraCtx->baseObj.bin); - DEBUG_INFO_A1("Camerabin state %d, set to PLAYING", GST_STATE(GST_ELEMENT(cameraCtx->baseObj.bin))); - gst_element_set_state( GST_ELEMENT(cameraCtx->baseObj.bin), GST_STATE_PLAYING ); - gst_element_get_state( GST_ELEMENT(cameraCtx->baseObj.bin), NULL,NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - } - } - - /* Connect signal for getting current buffer from video pipeline*/ - mCtx->snapshotVars.numpicstaken = 0; - mCtx->snapshotVars.waitforbuffer = TRUE; - if(mCtx->videoextract) - { - mCtx->snapshotVars.sighandler = g_signal_connect(mCtx->videoextract, "handoff", - G_CALLBACK (XASnapshotItfAdaptation_BufferHandoffCb),mCtx); - } - if( mCtx->snapshotVars.sighandler==0 ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XASnapshotItfAdaptation_TakeSnapshot"); - return XA_RESULT_INTERNAL_ERROR; - } - DEBUG_API("<-XASnapshotItfAdaptation_TakeSnapshot"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XASnapshotItfAdaptation_CancelSnapshot(XAAdaptationGstCtx* bCtx) - */ -XAresult XASnapshotItfAdaptation_CancelSnapshot(XAAdaptationGstCtx* bCtx) -{ - DEBUG_API("->XASnapshotItfAdaptation_CancelSnapshot"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_CancelSnapshot"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - XASnapshotItfAdaptation_FreeSnapshot(bCtx); - - DEBUG_API("<-XASnapshotItfAdaptation_CancelSnapshot"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XASnapshotItfAdaptation_GetMaxPicsPerBurst(XAAdaptationGstCtx* bCtx, - * XAuint32 *maxNumberOfPictures) - */ -XAresult XASnapshotItfAdaptation_GetMaxPicsPerBurst(XAAdaptationGstCtx* bCtx, - XAuint32 *maxNumberOfPictures) -{ - DEBUG_API("->XASnapshotItfAdaptation_GetMaxPicsPerBurst"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_GetMaxPicsPerBurst"); - return XA_RESULT_PARAMETER_INVALID; - } - *maxNumberOfPictures = SSMAXPIC; - DEBUG_API("<-XASnapshotItfAdaptation_GetMaxPicsPerBurst"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XASnapshotItfAdaptation_GetBurstFPSRange(XAAdaptationGstCtx* bCtx, - * XAuint32 *minFPS, - * XAuint32 *maxFPS) - */ -XAresult XASnapshotItfAdaptation_GetBurstFPSRange(XAAdaptationGstCtx* bCtx, - XAuint32 *minFPS, - XAuint32 *maxFPS) -{ - DEBUG_API("->XASnapshotItfAdaptation_GetBurstFPSRange"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_GetBurstFPSRange"); - return XA_RESULT_PARAMETER_INVALID; - } - *minFPS = SSMINFPS; - *maxFPS = SSMAXFPS; - - DEBUG_API("<-XASnapshotItfAdaptation_GetBurstFPSRange"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XASnapshotItfAdaptation_SetShutterFeedback(XAAdaptationGstCtx* bCtx, - * XAboolean enabled) - */ -XAresult XASnapshotItfAdaptation_SetShutterFeedback(XAAdaptationGstCtx* bCtx, - XAboolean enabled) -{ - DEBUG_API("->XASnapshotItfAdaptation_SetShutterFeedback"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_SetShutterFeedback"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - /* stubbed, no implementation */ - DEBUG_API("<-XASnapshotItfAdaptation_SetShutterFeedback"); - return XA_RESULT_SUCCESS; -} - -/******************** - * Internal methods - ********************/ - -/* - * void XASnapshotItfAdaptation_StopSnapshotting(XAAdaptationGstCtx* bCtx) - */ -void XASnapshotItfAdaptation_StopSnapshotting(XAAdaptationGstCtx* bCtx) -{ - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - DEBUG_API("->XASnapshotItfAdaptation_StopSnapshotting"); - mCtx->snapshotVars.waitforbuffer = FALSE; - mCtx->snapshotVars.snapshotbuffer = NULL; - if(mCtx->snapshotVars.sighandler) - { - if(mCtx->videoextract) - { - g_signal_handler_disconnect(mCtx->videoextract,mCtx->snapshotVars.sighandler); - } - mCtx->snapshotVars.sighandler = 0; - } - /* did we change the state of parent pipeline?*/ - if( mCtx->baseObj.bin && (GST_STATE(mCtx->baseObj.bin) != mCtx->baseObj.binWantedState) ) - { - gst_element_set_state( GST_ELEMENT(mCtx->baseObj.bin), mCtx->baseObj.binWantedState ); - } - - if ( cameraCtx && (GST_STATE(cameraCtx->baseObj.bin) != cameraCtx->baseObj.binWantedState) ) - { - cameraCtx->snapshotting = XA_BOOLEAN_FALSE; - DEBUG_INFO_A2("Camerabin state %d, restored to %d", GST_STATE(cameraCtx->baseObj.bin), cameraCtx->baseObj.binWantedState ); - gst_element_set_state( GST_ELEMENT(cameraCtx->baseObj.bin), cameraCtx->baseObj.binWantedState ); - gst_element_get_state( GST_ELEMENT(cameraCtx->baseObj.bin), NULL,NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - } - DEBUG_API("<-XASnapshotItfAdaptation_StopSnapshotting"); -} - -/* - * XAresult XASnapshotItfAdaptation_FreeSnapshot(XAAdaptationGstCtx* bCtx) - */ -XAresult XASnapshotItfAdaptation_FreeSnapshot(XAAdaptationGstCtx* bCtx) -{ - XAMediaRecorderAdaptationCtx* mCtx = NULL; - DEBUG_API("->XASnapshotItfAdaptation_FreeSnapshot"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfAdaptation_FreeSnapshot"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - XASnapshotItfAdaptation_StopSnapshotting(bCtx); - /* Clean up pipeline and set current pipeline state to null*/ - if( mCtx->snapshotVars.sspipeline ) - { - gst_element_set_state( GST_ELEMENT(mCtx->snapshotVars.sspipeline), GST_STATE_NULL ); - gst_object_unref( GST_OBJECT(mCtx->snapshotVars.sspipeline) ); - mCtx->snapshotVars.sspipeline = NULL; - } - if( mCtx->snapshotVars.ssbus ) - { - gst_object_unref( GST_OBJECT(mCtx->snapshotVars.ssbus) ); - mCtx->snapshotVars.ssbus = NULL; - } - if( mCtx->snapshotVars.fnametemplate ) - { - free(mCtx->snapshotVars.fnametemplate); - mCtx->snapshotVars.fnametemplate=NULL; - } - DEBUG_API("<-XASnapshotItfAdaptation_FreeSnapshot"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XASnapshotItfAdaptation_CreateSnapshotPipeline(XAAdaptationGstCtx* bCtx) - */ -XAresult XASnapshotItfAdaptation_CreateSnapshotPipeline(XAAdaptationGstCtx* bCtx) -{ - XAMediaRecorderAdaptationCtx* mCtx = NULL; - - XACapabilities temp; - GstCaps *imageCaps=NULL; - - DEBUG_API("->XASnapshotItfAdaptation_CreateSnapshotPipeline"); - if(!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - - /*Create snapshotpipeline*/ - mCtx->snapshotVars.sspipeline = gst_pipeline_new ("sspipeline"); - if( mCtx->snapshotVars.sspipeline ) - { - /*add listener*/ - mCtx->snapshotVars.ssbus = gst_pipeline_get_bus(GST_PIPELINE( mCtx->snapshotVars.sspipeline ) ); - if( ! mCtx->snapshotVars.ssbus ) - { - DEBUG_API("Cannot create snapshotbus"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - gst_bus_add_signal_watch( mCtx->snapshotVars.ssbus ); - g_signal_connect(mCtx->snapshotVars.ssbus, "message::eos", - G_CALLBACK(XASnapshotItfAdaptation_SnapshotBusCb), bCtx ); - g_signal_connect(mCtx->snapshotVars.ssbus, "message::state-changed", - G_CALLBACK(XASnapshotItfAdaptation_SnapshotBusCb), bCtx ); - g_signal_connect(mCtx->snapshotVars.ssbus, "message::async-done", - G_CALLBACK(XASnapshotItfAdaptation_SnapshotBusCb), bCtx ); - - /*Create snapshotsource element*/ - mCtx->snapshotVars.ssbuffersrc = gst_element_factory_make("appsrc", "ssbuffersrc"); - if( !mCtx->snapshotVars.ssbuffersrc ) - { - DEBUG_ERR("Cannot create ssbuffersrc!"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - /*Frame parser*/ - mCtx->snapshotVars.ssparser = - gst_element_factory_make("videoparse","ssparser"); - if( !mCtx->snapshotVars.ssparser ) - { - DEBUG_ERR("Could not create snapshotparse"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - - /*Scaler and filter for XAImageSettings width&height*/ - mCtx->snapshotVars.ssscaler = - gst_element_factory_make("videoscale","ssscaler"); - if( !mCtx->snapshotVars.ssscaler ) - { - DEBUG_ERR("Could not create ssscaler"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - mCtx->snapshotVars.ssfilter = - gst_element_factory_make("capsfilter","ssfilter"); - if( !mCtx->snapshotVars.ssfilter ) - { - DEBUG_ERR("Could not create ssfilter"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - - /*Create imageencoder */ - if(XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_IMAGE), mCtx->imageEncSettings.encoderId, &temp) == XA_RESULT_SUCCESS) - { - if(temp.adaptId != NULL) - { - mCtx->snapshotVars.ssencoder = gst_element_factory_make((char*)temp.adaptId, "ssencoder"); - } - else if(mCtx->imageEncSettings.encoderId == XA_IMAGECODEC_RAW) - { - /* raw frames are internal format, so no codec needed. just insert identity for linking*/ - mCtx->snapshotVars.ssencoder = gst_element_factory_make("identity", "ssencoder"); - } - } - if( !mCtx->snapshotVars.ssencoder ) - { - DEBUG_API("Cannot create image encoder"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - - /* Create also tag setter for JPG */ - if(mCtx->imageEncSettings.encoderId == XA_IMAGECODEC_JPEG) - { - mCtx->snapshotVars.sstagger = gst_element_factory_make("metadatamux", "sstagger"); - if( !mCtx->snapshotVars.sstagger || !gst_bin_add(GST_BIN(mCtx->snapshotVars.sspipeline),mCtx->snapshotVars.sstagger)) - { - DEBUG_API("Cannot create metadatamux"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - } - g_object_set( G_OBJECT(mCtx->snapshotVars.sstagger), "xmp", TRUE, "exif", TRUE, "iptc", TRUE, NULL ); - } - - /*Create sink*/ - if(mCtx->snapshotVars.fnametemplate) - { - DEBUG_INFO("RECORD SNAPSHOT TO FILE"); - mCtx->snapshotVars.sssink = gst_element_factory_make("filesink","ssfilesink"); - g_object_set( G_OBJECT(mCtx->snapshotVars.sssink), "location", "temp", - "async", FALSE, - "qos", FALSE, - "max-lateness", (gint64)(-1), - "buffer-mode", 2, - NULL ); - } - else - { - DEBUG_INFO("RECORD SNAPSHOT TO MEMORY"); - mCtx->snapshotVars.sssink = gst_element_factory_make("appsink","ssbuffersink"); - } - if( !mCtx->snapshotVars.sssink ) - { - DEBUG_ERR("Could not create sssink!!"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - g_object_set( G_OBJECT(mCtx->snapshotVars.sssink), "async", FALSE, NULL ); - - /*Add elements to bin*/ - gst_bin_add_many (GST_BIN (mCtx->snapshotVars.sspipeline), - mCtx->snapshotVars.ssbuffersrc, - mCtx->snapshotVars.ssparser, - mCtx->snapshotVars.ssscaler, - mCtx->snapshotVars.ssfilter, - mCtx->snapshotVars.ssencoder, - mCtx->snapshotVars.sssink, - NULL); - - /* set needed XAImageSettings properties*/ - /* set caps from imagesettings */ - imageCaps = gst_caps_new_simple("video/x-raw-yuv", - "width", G_TYPE_INT, mCtx->imageEncSettings.width, - "height", G_TYPE_INT, mCtx->imageEncSettings.height, NULL); - g_object_set( G_OBJECT(mCtx->snapshotVars.ssfilter), "caps", imageCaps, NULL ); - DEBUG_INFO_A1("new caps: %s",gst_caps_to_string(imageCaps)); - gst_caps_unref(imageCaps); - - /* set compression level */ - if(mCtx->imageEncSettings.encoderId == XA_IMAGECODEC_JPEG) - { - g_object_set( G_OBJECT(mCtx->snapshotVars.ssencoder), "quality", (gint)(1000 - mCtx->imageEncSettings.compressionLevel)/10, NULL ); - } - - /*Chain elements together*/ - if(mCtx->snapshotVars.sstagger) - { - if( !gst_element_link_many( - mCtx->snapshotVars.ssbuffersrc, - mCtx->snapshotVars.ssparser, - mCtx->snapshotVars.ssscaler, - mCtx->snapshotVars.ssfilter, - mCtx->snapshotVars.ssencoder, - mCtx->snapshotVars.sstagger, - mCtx->snapshotVars.sssink, - NULL) ) - { - DEBUG_ERR("Could not link pipeline") - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - if( !gst_element_link_many( - mCtx->snapshotVars.ssbuffersrc, - mCtx->snapshotVars.ssparser, - mCtx->snapshotVars.ssscaler, - mCtx->snapshotVars.ssfilter, - mCtx->snapshotVars.ssencoder, - mCtx->snapshotVars.sssink, - NULL) ) - { - DEBUG_ERR("Could not link pipeline") - return XA_RESULT_INTERNAL_ERROR; - } - } - gst_element_set_state(GST_ELEMENT(mCtx->snapshotVars.sspipeline), GST_STATE_READY); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline"); - return XA_RESULT_SUCCESS; - - } - else - { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline"); - return XA_RESULT_PRECONDITIONS_VIOLATED; - } -} - -/* - * gboolean XASnapshotItfAdaptation_SnapshotBusCb( GstBus *bus, GstMessage *message, gpointer data ) - */ -gboolean XASnapshotItfAdaptation_SnapshotBusCb( GstBus *bus, GstMessage *message, gpointer data ) -{ - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*)data; - - GstState oldstate = GST_STATE_NULL , newstate = GST_STATE_NULL , pendingstate = GST_STATE_NULL; - - /* only interested in messages from snapshot pipeline */ - if( GST_MESSAGE_SRC(message) == GST_OBJECT(mCtx->snapshotVars.sspipeline) ) - { - DEBUG_API_A2("->XASnapshotItfAdaptation_SnapshotBusCb:\"%s\" from object \"%s\"", - GST_MESSAGE_TYPE_NAME(message), GST_OBJECT_NAME(GST_MESSAGE_SRC(message))); - - switch( GST_MESSAGE_TYPE(message)) - { - case GST_MESSAGE_EOS: - { - if( gst_element_set_state(GST_ELEMENT(mCtx->snapshotVars.sspipeline), GST_STATE_READY) - == GST_STATE_CHANGE_FAILURE ) - { - DEBUG_ERR("Error stopping snapshot pipeline!!!"); - } - gst_element_get_state(mCtx->snapshotVars.sspipeline, NULL, NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - - DEBUG_INFO_A2("Requested %lu snapshots, taked %lu",mCtx->snapshotVars.numpics,mCtx->snapshotVars.numpicstaken+1); - if( ++mCtx->snapshotVars.numpicstaken >= mCtx->snapshotVars.numpics ) - { - XAAdaptEvent takenevent = {XA_SNAPSHOTITFEVENTS, XA_ADAPT_SNAPSHOT_TAKEN, 0, NULL }; - DEBUG_INFO("Snapshot burst finished"); - XASnapshotItfAdaptation_StopSnapshotting(&(mCtx->baseObj)); - if( mCtx->snapshotVars.fnametemplate == NULL ) - { /* non-datasink snapshot, return buffer */ - GstBuffer* pullBuffer = NULL; - XADataSink* pullSink = NULL; - XADataLocator_Address* pullSinkLoc = NULL; - DEBUG_INFO("Get buffer from appsink"); - pullBuffer = gst_app_sink_pull_preroll( GST_APP_SINK(mCtx->snapshotVars.sssink) ); - /* allocate XADataSink, client should release this later*/ - pullSink = (XADataSink*)calloc(1, sizeof(XADataSink)); - pullSinkLoc = (XADataLocator_Address*)calloc(1, sizeof(XADataLocator_Address)); - pullSinkLoc->length = pullBuffer->size; - pullSinkLoc->pAddress = (XADataLocator_Address*)calloc(1, pullBuffer->size); - memcpy(pullSinkLoc->pAddress, pullBuffer->data, pullBuffer->size); - pullSinkLoc->locatorType = XA_DATALOCATOR_ADDRESS; - pullSink->pLocator = pullSinkLoc; - pullSink->pFormat = NULL; - takenevent.data = pullSink; - } - /* send needed events */ - takenevent.datasize = mCtx->snapshotVars.numpicstaken; - XAAdaptationBase_SendAdaptEvents(&(mCtx->baseObj.baseObj), &takenevent ); - } - else - { - /* videoparse element can not handle renegotiation of stream for new buffer - * after EOS, so recreate it */ - gst_element_unlink_many( - mCtx->snapshotVars.ssbuffersrc, - mCtx->snapshotVars.ssparser, - mCtx->snapshotVars.ssscaler, - NULL); - gst_element_set_state(GST_ELEMENT(mCtx->snapshotVars.ssparser), GST_STATE_NULL); - gst_bin_remove(GST_BIN (mCtx->snapshotVars.sspipeline),mCtx->snapshotVars.ssparser); - mCtx->snapshotVars.ssparser = gst_element_factory_make("videoparse", "ssparser"); - if( !mCtx->snapshotVars.ssparser ) - { - DEBUG_ERR("Cannot create ssparser!"); - DEBUG_API("<-XASnapshotItfAdaptation_CreateSnapshotPipeline - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - gst_bin_add(GST_BIN (mCtx->snapshotVars.sspipeline),mCtx->snapshotVars.ssparser); - if( !gst_element_link_many( - mCtx->snapshotVars.ssbuffersrc, - mCtx->snapshotVars.ssparser, - mCtx->snapshotVars.ssscaler, - NULL) ) - { - DEBUG_ERR("Could not link pipeline") - return XA_RESULT_INTERNAL_ERROR; - } - mCtx->snapshotVars.parsenegotiated = FALSE; - - /*now, wait for new buffer to arrive*/ - DEBUG_INFO("Wait for more pictures"); - mCtx->snapshotVars.waitforbuffer = TRUE; - mCtx->snapshotVars.sighandler = g_signal_connect(mCtx->videoextract, "handoff", - G_CALLBACK (XASnapshotItfAdaptation_BufferHandoffCb),mCtx); - } - break; - } - case GST_MESSAGE_STATE_CHANGED: - { - gst_message_parse_state_changed(message, &oldstate, &newstate, &pendingstate); - DEBUG_INFO_A4("old %s -> new %s ( pending %s, gsttarget %s )", - gst_element_state_get_name(oldstate), - gst_element_state_get_name(newstate), - gst_element_state_get_name(pendingstate), - gst_element_state_get_name(GST_STATE_TARGET(mCtx->snapshotVars.sspipeline)) ); - if( newstate==GST_STATE_READY && oldstate==GST_STATE_NULL ) - { - XAAdaptEvent initevent = {XA_SNAPSHOTITFEVENTS, XA_ADAPT_SNAPSHOT_INITIATED,0, NULL }; - DEBUG_INFO("Init complete"); - /* send needed events */ - XAAdaptationBase_SendAdaptEvents( &(mCtx->baseObj.baseObj), &initevent); - } - else if( newstate==GST_STATE_PLAYING && oldstate==GST_STATE_PAUSED && mCtx->snapshotVars.snapshotbuffer ) - { - DEBUG_INFO("Pushing buffer"); - gst_app_src_push_buffer( GST_APP_SRC(mCtx->snapshotVars.ssbuffersrc), - mCtx->snapshotVars.snapshotbuffer ); - DEBUG_INFO_A1("Sent buffer at 0x%x to ssbuffersrc", (int)mCtx->snapshotVars.snapshotbuffer ); - gst_app_src_end_of_stream( GST_APP_SRC(mCtx->snapshotVars.ssbuffersrc) ); - mCtx->snapshotVars.snapshotbuffer = NULL; - DEBUG_INFO("Sent EOS ssbuffersrc"); - } - - break; - } - default: - break; - } - DEBUG_API("<-XASnapshotItfAdaptation_SnapshotBusCb"); - } - return TRUE; -} - -/* - * void XASnapshotItfAdaptation_BufferHandoffCb( GstElement *extract, GstBuffer *buffer, gpointer data ) - */ -void XASnapshotItfAdaptation_BufferHandoffCb( GstElement *extract, GstBuffer *buffer, gpointer data ) -{ - XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*)data; - gint32 width=0, height=0; - guint32 fourcc=0, formatnum=0; - GstPad* srcPad=NULL; - GstCaps* srcPadCaps=NULL; - GstStructure* capS=NULL; - XAAdaptEvent event = {XA_SNAPSHOTITFEVENTS, XA_ADAPT_SNAPSHOT_TAKEN, 0, NULL }; - char* fname=NULL; - - DEBUG_API("->XASnapshotItfAdaptation_BufferHandoffCb"); - if( !mCtx->snapshotVars.waitforbuffer || - !GST_IS_BUFFER(buffer) ) - { /* pass on... */ - DEBUG_API("<-XASnapshotItfAdaptation_BufferHandoffCb"); - return; - } - - if(mCtx->snapshotVars.snapshotbuffer) - { - DEBUG_INFO("WARNING: snapshotbuffer already exists!!"); - gst_buffer_unref(GST_BUFFER(mCtx->snapshotVars.snapshotbuffer)); - } - DEBUG_INFO("Receiced snapshotbuffer"); - mCtx->snapshotVars.snapshotbuffer = gst_buffer_copy(buffer); - mCtx->snapshotVars.waitforbuffer = FALSE; - g_signal_handler_disconnect(mCtx->videoextract,mCtx->snapshotVars.sighandler); - mCtx->snapshotVars.sighandler = 0; - - if( GST_STATE(mCtx->snapshotVars.sspipeline)==GST_STATE_READY ) - { - if( !(mCtx->snapshotVars.parsenegotiated) ) - { - /*read relevant caps of extraction source and set them to videoparse*/ - srcPad = gst_element_get_pad( GST_ELEMENT(extract), "src"); - srcPadCaps = gst_pad_get_negotiated_caps( GST_PAD(srcPad) ); - capS = gst_caps_get_structure(srcPadCaps,0); - DEBUG_INFO_A1("buffer caps from extraction source: %s",gst_caps_to_string(srcPadCaps)); - if( !gst_structure_get_int(capS,"width",&width) || - !gst_structure_get_int(capS,"height",&height) || - !gst_structure_get_fourcc(capS,"format",&fourcc) ) - { - DEBUG_ERR("ERROR! Missing crucial capabilities for buffer!!"); - DEBUG_API("<-XASnapshotItfAdaptation_BufferHandoffCb"); - return; - } - /* convert fourcc to videoparse enumeration */ - switch(fourcc) - { - case GST_MAKE_FOURCC('I','4','2','0'): - formatnum = 0; - break; - case GST_MAKE_FOURCC('Y','V','1','2'): - formatnum = 1; - break; - case GST_MAKE_FOURCC('Y','U','Y','2'): - formatnum = 2; - break; - case GST_MAKE_FOURCC('U','Y','V','Y'): - formatnum = 3; - break; - case GST_MAKE_FOURCC('R','G','B',' '): - formatnum = 10; - break; - case GST_MAKE_FOURCC('G','R','A','Y'): - formatnum = 11; - break; - default: - formatnum = 0; - break; - } - /* set source width and height for parser */ - g_object_set(mCtx->snapshotVars.ssparser,"width",width,"height",height,"format",formatnum,NULL); - mCtx->snapshotVars.parsenegotiated = TRUE; - } - if(mCtx->snapshotVars.fnametemplate) - { /* get actual filename from template */ - XASnapshotItfAdaptation_AllocNextFilename(&fname, mCtx->snapshotVars.fnametemplate); - DEBUG_INFO_A1("start taking snapshot (%s)", fname); - gst_element_set_state(GST_ELEMENT(mCtx->snapshotVars.sssink), GST_STATE_NULL); - g_object_set( G_OBJECT(mCtx->snapshotVars.sssink), "location", fname, - "async", FALSE, - "qos", FALSE, - "max-lateness", (gint64)(-1), - NULL ); - gst_element_sync_state_with_parent(mCtx->snapshotVars.sssink); - gst_element_get_state(mCtx->snapshotVars.sssink, NULL, NULL, XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC); - free(fname); - } - else - { /* take snapshot to buffer */ - DEBUG_INFO("start taking snapshot (memory buffer used)"); - } - /* write metadata, if any */ - XAMetadataAdapt_TryWriteTags(&(mCtx->baseObj), GST_BIN(mCtx->snapshotVars.sspipeline)); - /* start buffering */ - if( gst_element_set_state(GST_ELEMENT(mCtx->snapshotVars.sspipeline), GST_STATE_PLAYING ) - == GST_STATE_CHANGE_FAILURE ) - { - DEBUG_ERR("Error taking picture!!!"); - /* NOTE: no event for errors in snapshotitf!!! */ - event.datasize = mCtx->snapshotVars.numpicstaken; - XAAdaptationBase_SendAdaptEvents(&(mCtx->baseObj.baseObj), &event ); - } - } - else - { - DEBUG_INFO_A1("warning: sspipeline in wrong state (%d)", - GST_STATE(mCtx->snapshotVars.sspipeline)); - } - DEBUG_API("<-XASnapshotItfAdaptation_BufferHandoffCb"); -} - -/* - * const char* XASnapshotItfAdaptation_GetFileSuffix(XADataFormat_MIME* format) - */ -const char* XASnapshotItfAdaptation_GetFileSuffix(XADataFormat_MIME* format) -{ - const char* ret=NULL; - if( format ) - { - if( *(XAuint32*)format == XA_DATAFORMAT_MIME ) - { - switch (format->containerType) - { - case XA_CONTAINERTYPE_JPG: - ret = "jpg"; - break; - case XA_CONTAINERTYPE_RAW: - ret = "raw"; - break; - case XA_CONTAINERTYPE_BMP: - ret = "bmp"; - break; - default: - break; - } - if(!ret) - { /*parse from mimetype*/ - if(format->mimeType) - { - ret = strrchr((char*)format->mimeType,'/'); - if (ret) - { - ret++; - } - } - } - } - else if( *(XAuint32*)format == XA_DATAFORMAT_RAWIMAGE ) - { - ret = "raw"; - } - } - if(!ret) - { - ret="jpg"; /*default*/ - } - return ret; -} - -/* - * void XASnapshotItfAdaptation_AllocNextFilename(char** fname, const char* template) - */ -void XASnapshotItfAdaptation_AllocNextFilename(char** fname, const char* template) -{ - XAuint32 idx=0; - XAboolean found=XA_BOOLEAN_FALSE; - FILE* file=NULL; - *fname = (char*)calloc(1,strlen(template)+10); - while(!found) - { - sprintf(*fname, template, idx++ ); - strcat(*fname, "\0"); - file = fopen(*fname, "r"); - if(file==NULL) - { - found = XA_BOOLEAN_TRUE; - break; - } - fclose(file); - } -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xasnapshotitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xasnapshotitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XSNAPSHOTITFADAPTATION_H -#define XSNAPSHOTITFADAPTATION_H - -#include "xaadaptationgst.h" - - -/* DEFINES*/ - -/* MACROS */ - -/* FUNCTIONS */ - -XAresult XASnapshotItfAdaptation_InitiateSnapshot(XAAdaptationGstCtx* ctx, - XAuint32 numberOfPictures, - XAuint32 fps, - XAboolean freezeViewFinder, - XADataSink* sink); - -XAresult XASnapshotItfAdaptation_TakeSnapshot(XAAdaptationGstCtx* ctx); - -XAresult XASnapshotItfAdaptation_CancelSnapshot(XAAdaptationGstCtx* ctx); - -XAresult XASnapshotItfAdaptation_GetMaxPicsPerBurst(XAAdaptationGstCtx* ctx, - XAuint32 *maxNumberOfPictures); - -XAresult XASnapshotItfAdaptation_GetBurstFPSRange(XAAdaptationGstCtx* ctx, - XAuint32 *minFPS, - XAuint32 *maxFPS); - -XAresult XASnapshotItfAdaptation_SetShutterFeedback(XAAdaptationGstCtx* ctx, - XAboolean enabled); -#endif /* XSNAPSHOTITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xastaticcameracapsadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xastaticcameracapsadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,562 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xaglobals.h" -#include "xastaticcameracapsadaptation.h" -#include "xaadptbasectx.h" - -#define XACAMERAIMPL_DEFAULT_MAX_ZOOM 16000 /* 16x */ -#define XACAMERAIMPL_DEFAULT_MAX_ISO 1600 -#define XACAMERAIMPL_DEFAULT_MIN_ISO 200 -#define XACAMERAIMPL_DEFAULT_MAX_APERTURE 3200 /* f/32 */ -#define XACAMERAIMPL_DEFAULT_MIN_APERTURE 75 /* f/0.75 */ - -static XAStaticCameraCapsData allCameraCaps[] = -{ -#ifdef XA_USE_TEST_PLUGINS - { XA_ADAPTID_VIDEOTESTSRC, { (XAchar*)"videotestsrc", 0, 0, 0, 0, 0, 0, 0, 0, 0 } } -#else - { XA_ADAPTID_V4L2SRC, { (XAchar*)"v4l2src", 0, 0, 0, 0, 0, 0, 0, 0, 0 } } -#endif -}; - -/*forward declaration*/ -XAuint32 XAStaticCameraCaps_IdxFromId(XAuint32 cameraDeviceID); - -/* - * void XAStaticCameraCaps_Init() - */ -void XAStaticCameraCaps_Init() -{ - GstElement* element=NULL; - GstPhotoCaps photoCaps = GST_PHOTOGRAPHY_CAPS_NONE; - GError* gerror=NULL; - guint32 i=0; - guint32 numDevices = sizeof(allCameraCaps)/sizeof(XAStaticCameraCapsData); - gboolean detected = FALSE; - - - if ( !gst_init_check( NULL, NULL, &gerror ) ) - { - DEBUG_ERR("Gst Initalization failure."); - return; - } - for(i=0;i allCameraCaps[i].XAcaps.maxWidth) - { - allCameraCaps[i].XAcaps.maxWidth = width; - } - } - - value = gst_structure_get_value( capsStruct, "height" ); - if (GST_VALUE_HOLDS_INT_RANGE(value)) - { - detected = TRUE; - height = gst_value_get_int_range_max( value ); - if(height > allCameraCaps[i].XAcaps.maxHeight) - { - allCameraCaps[i].XAcaps.maxHeight = height; - } - } - } - } - } - } - - if(!detected) - { - DEBUG_ERR("Warn: could not get maxWidth and maxHeight from GST!!"); - allCameraCaps[i].XAcaps.maxWidth = 0x7FFFFFFF; - allCameraCaps[i].XAcaps.maxHeight = 0x7FFFFFFF; - } - - if(GST_IS_PHOTOGRAPHY(element)) - { - photoCaps = gst_photography_get_capabilities(GST_PHOTOGRAPHY(element)); - if( photoCaps & GST_PHOTOGRAPHY_CAPS_FLASH ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_FLASH; - allCameraCaps[i].XAcaps.flashModesSupported = XA_CAMERA_FLASHMODE_OFF | - XA_CAMERA_FLASHMODE_ON | - XA_CAMERA_FLASHMODE_AUTO | - XA_CAMERA_FLASHMODE_REDEYEREDUCTION | - XA_CAMERA_FLASHMODE_FILLIN; - } - if( photoCaps & GST_PHOTOGRAPHY_CAPS_FOCUS ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_AUTOFOCUS; - allCameraCaps[i].XAcaps.focusModesSupported = XA_CAMERA_FOCUSMODE_AUTO; - } - if( photoCaps & GST_PHOTOGRAPHY_CAPS_EXPOSURE ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_MANUALEXPOSURE; - allCameraCaps[i].XAcaps.exposureModesSupported = XA_CAMERA_EXPOSUREMODE_AUTO | - XA_CAMERA_EXPOSUREMODE_PORTRAIT | - XA_CAMERA_EXPOSUREMODE_SPORTS | - XA_CAMERA_EXPOSUREMODE_NIGHT; - } - - if( photoCaps & GST_PHOTOGRAPHY_CAPS_ISO_SPEED ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_MANUALISOSENSITIVITY; - } - if( photoCaps & GST_PHOTOGRAPHY_CAPS_APERTURE ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_MANUALAPERTURE; - } - if( photoCaps & GST_PHOTOGRAPHY_CAPS_WB_MODE ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_AUTOWHITEBALANCE; - allCameraCaps[i].XAcaps.whiteBalanceModesSupported = XA_CAMERA_WHITEBALANCEMODE_AUTO | - XA_CAMERA_WHITEBALANCEMODE_SUNLIGHT | - XA_CAMERA_WHITEBALANCEMODE_CLOUDY | - XA_CAMERA_WHITEBALANCEMODE_TUNGSTEN | - XA_CAMERA_WHITEBALANCEMODE_FLUORESCENT | - XA_CAMERA_WHITEBALANCEMODE_SUNSET; - } - if( photoCaps & GST_PHOTOGRAPHY_CAPS_ZOOM ) - { - allCameraCaps[i].XAcaps.featuresSupported |= XA_CAMERACAP_DIGITALZOOM; - } - } - } - } -} - -/* - * XAresult XAStaticCameraCaps_GetCameraCapabilities( - * XAuint32* pIndex, - * XAuint32* pCameraDeviceID, - * XACameraDescriptor* pDescriptor) - * - */ -XAresult XAStaticCameraCaps_GetCameraCapabilities( - XAuint32* pIndex, - XAuint32* pCameraDeviceID, - XACameraDescriptor* pDescriptor) -{ - guint32 idx = 0; - guint32 numDevices = sizeof(allCameraCaps)/sizeof(XAStaticCameraCapsData); - - if(!pDescriptor) - { - if(pIndex) /* query number of devices */ - { - *pIndex = numDevices; - DEBUG_API("<-XAStaticCameraCaps_GetCameraCapabilities"); - return XA_RESULT_SUCCESS; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_GetCameraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - } - - if( !pIndex && pCameraDeviceID ) - { - /* get index from ID */ - idx = XAStaticCameraCaps_IdxFromId(*pCameraDeviceID); - } - else if( pIndex && pCameraDeviceID ) - { - idx = *pIndex; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_GetCameraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - - if( idx >= numDevices ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_GetCameraCapabilities"); - return XA_RESULT_PARAMETER_INVALID; - } - else - { - /*fill capabilities*/ - memcpy(pDescriptor, &allCameraCaps[idx].XAcaps, sizeof(XACameraDescriptor) ); - *pCameraDeviceID = allCameraCaps[idx].deviceID; - } - - DEBUG_API("<-XAStaticCameraCaps_GetCameraCapabilities"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAStaticCameraCaps_QueryFocusRegionPatterns( - * XAuint32 cameraDeviceID, - * XAuint32* pPatternID, - * XAuint32* pFocusPattern, - * XAuint32* pCustomPoints1, - * XAuint32* pCustomPoints2) - */ -XAresult XAStaticCameraCaps_QueryFocusRegionPatterns( - XAuint32 cameraDeviceID, - XAuint32* pPatternID, - XAuint32* pFocusPattern, - XAuint32* pCustomPoints1, - XAuint32* pCustomPoints2) -{ - DEBUG_API("->XAStaticCameraCaps_QueryFocusRegionPatterns"); - if( !pFocusPattern ) - { /* return number of focus patterns */ - if(!pPatternID) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_QueryFocusRegionPatterns"); - return XA_RESULT_PARAMETER_INVALID; - } - /* no support in GST */ - DEBUG_INFO("No support in gst"); - *pPatternID = 0; - } - else - { - if( !(pFocusPattern&&pCustomPoints1&&pCustomPoints2) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_QueryFocusRegionPatterns"); - return XA_RESULT_PARAMETER_INVALID; - } - DEBUG_INFO("No support in gst"); - *pFocusPattern = 0; - *pCustomPoints1 = 0; - *pCustomPoints2 = 0; - /*no focus patterns, index always out of range*/ - DEBUG_API("<-XAStaticCameraCaps_QueryFocusRegionPatterns"); - return XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_API("<-XAStaticCameraCaps_QueryFocusRegionPatterns"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedAutoLocks( - * XAuint32 cameraDeviceID, - * XAuint32* pNumCombinations, - * XAuint32** ppLocks) - */ -XAresult XAStaticCameraCaps_GetSupportedAutoLocks( - XAuint32 cameraDeviceID, - XAuint32* pNumCombinations, - XAuint32** ppLocks) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedAutoLocks"); - /* No support in gst. - * Spec: "If no settings are supported, - * this method returns XA_RESULT_FEATURE_UNSUPPORTED." - **/ - DEBUG_INFO("No support in gst"); - if(pNumCombinations) - { - *pNumCombinations = 0; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedAutoLocks"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedFocusManualSettings( - * XAuint32 cameraDeviceID, - * XAboolean macroEnabled, - * XAmillimeter* pMinValue, - * XAmillimeter* pMaxValue, - * XAuint32* pNumSettings, - * XAmillimeter** ppSettings) - */ -XAresult XAStaticCameraCaps_GetSupportedFocusManualSettings( - XAuint32 cameraDeviceID, - XAboolean macroEnabled, - XAmillimeter* pMinValue, - XAmillimeter* pMaxValue, - XAuint32* pNumSettings, - XAmillimeter** ppSettings) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedFocusManualSettings"); - /* No support in gst. - * Spec: "If no settings are supported, - * this method returns XA_RESULT_FEATURE_UNSUPPORTED." - **/ - DEBUG_INFO("No support in gst"); - if(pNumSettings) - { - *pNumSettings = 0; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedFocusManualSettings"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedISOSensitivitySettings( - * XAuint32 cameraDeviceID, - * XAuint32* pMinValue, - * XAuint32* pMaxValue, - * XAuint32* pNumSettings, - * XAuint32** ppSettings) - */ -XAresult XAStaticCameraCaps_GetSupportedISOSensitivitySettings( - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedISOSensitivitySettings"); - if( !pNumSettings ) - { - return XA_RESULT_PARAMETER_INVALID; - } - if( !ppSettings ) - { - /* no items in ppSettings array*/ - *pNumSettings = 0; - } - else - { - if( !(pMinValue && pMaxValue) ) - { - DEBUG_API("<-XAStaticCameraCaps_GetSupportedISOSensitivitySettings"); - return XA_RESULT_PARAMETER_INVALID; - } - /* continuous range */ - *pNumSettings = 0; - /* NOTE: no way to query actual values from gstreamer, use hardcoded default values */ - *pMinValue = XACAMERAIMPL_DEFAULT_MIN_ISO; - *pMaxValue = XACAMERAIMPL_DEFAULT_MAX_ISO; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedISOSensitivitySettings"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedApertureManualSettings( - * XAuint32 cameraDeviceID, - * XAuint32* pMinValue, - * XAuint32* pMaxValue, - * XAuint32* pNumSettings, - * XAuint32** ppSettings) - */ -XAresult XAStaticCameraCaps_GetSupportedApertureManualSettings( - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedApertureManualSettings"); - if( !pNumSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_GetSupportedApertureManualSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - if( !ppSettings ) - { - /* no items in ppSettings array*/ - *pNumSettings = 0; - } - else - { - /* continuous range */ - *pNumSettings = 0; - /* NOTE: no way to query actual values from gstreamer, use hardcoded default values */ - *pMinValue = XACAMERAIMPL_DEFAULT_MIN_APERTURE; - *pMaxValue = XACAMERAIMPL_DEFAULT_MAX_APERTURE; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedApertureManualSettings"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedShutterSpeedManualSettings( - * XAuint32 cameraDeviceID, - * XAmicrosecond* pMinValue, - * XAmicrosecond* pMaxValue, - * XAuint32* pNumSettings, - * XAmicrosecond** ppSettings) - */ -XAresult XAStaticCameraCaps_GetSupportedShutterSpeedManualSettings( - XAuint32 cameraDeviceID, - XAmicrosecond* pMinValue, - XAmicrosecond* pMaxValue, - XAuint32* pNumSettings, - XAmicrosecond** ppSettings) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedShutterSpeedManualSettings"); - /* No support in gst. - * Spec: "If no settings are supported, - * this method returns XA_RESULT_FEATURE_UNSUPPORTED." - **/ - DEBUG_INFO("No support in gst"); - if(pNumSettings) - { - *pNumSettings = 0; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedShutterSpeedManualSettings"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedWhiteBalanceManualSettings( - * XAuint32 cameraDeviceID, - * XAuint32* pMinValue, - * XAuint32* pMaxValue, - * XAuint32* pNumSettings, - * XAuint32** ppSettings) - */ -XAresult XAStaticCameraCaps_GetSupportedWhiteBalanceManualSettings( - XAuint32 cameraDeviceID, - XAuint32* pMinValue, - XAuint32* pMaxValue, - XAuint32* pNumSettings, - XAuint32** ppSettings) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedWhiteBalanceManualSettings"); - /* No support in gst. - * Spec: "If no settings are supported, - * this method returns XA_RESULT_FEATURE_UNSUPPORTED." - **/ - DEBUG_INFO("No support in gst"); - if(pNumSettings) - { - *pNumSettings = 0; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedWhiteBalanceManualSettings"); - return XA_RESULT_FEATURE_UNSUPPORTED; -} - -/* - * XAresult XAStaticCameraCaps_GetSupportedZoomSettings( - * XAuint32 cameraDeviceID, - * XAboolean digitalEnabled, - * XAboolean macroEnabled, - * XApermille* pMaxValue, - * XAuint32* pNumSettings, - * XApermille** ppSettings, - * XAboolean* pSpeedSupported) - */ -XAresult XAStaticCameraCaps_GetSupportedZoomSettings( - XAuint32 cameraDeviceID, - XAboolean digitalEnabled, - XAboolean macroEnabled, - XApermille* pMaxValue, - XAuint32* pNumSettings, - XApermille** ppSettings, - XAboolean* pSpeedSupported) -{ - DEBUG_API("->XAStaticCameraCaps_GetSupportedZoomSettings"); - if( !ppSettings ) - { - if( !pNumSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_GetSupportedZoomSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - *pNumSettings = 0; - } - else - { - if( !(pMaxValue && pSpeedSupported) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAStaticCameraCaps_GetSupportedZoomSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - /*NOTE: no way to query actual max value*/ - *pMaxValue = XACAMERAIMPL_DEFAULT_MAX_ZOOM; - /*no gst support for speed settings*/ - *pSpeedSupported = XA_BOOLEAN_FALSE; - *pNumSettings = 0; - } - DEBUG_API("<-XAStaticCameraCaps_GetSupportedZoomSettings"); - return XA_RESULT_SUCCESS; -} - -/* - * XAuint32 XAStaticCameraCaps_IdxFromId(XAuint32 cameraDeviceID) - */ -XAuint32 XAStaticCameraCaps_IdxFromId(XAuint32 cameraDeviceID) -{ - XAuint32 devId = 0; - XAuint32 idx = 0; - guint32 numDevices = sizeof(allCameraCaps)/sizeof(XAStaticCameraCapsData); - - if(cameraDeviceID == XA_DEFAULTDEVICEID_CAMERA) - { - devId = XACAMERAIMPL_DEFAULT_DEVICE; - } - else - { - devId = cameraDeviceID; - } - - /* query capas with id -> find index*/ - for(idx=0; idxXAStreamInformationItfAdapt_QueryMediaContainerInformation"); - /* Both Media Player and Metadata Extractor objec uses the same ctxId */ - if( !adaptCtx || - (adaptCtx->ctxId != XAMediaPlayerAdaptation) ) -/* !((adaptCtx->ctxId == XAMediaPlayerAdaptation) || - (adaptCtx->ctxId == XAMDAdaptation) ) ) -*/ - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-ctxId ); - - /* Initialize to unspecified */ - *containerType = XA_CONTAINERTYPE_UNSPECIFIED; - xaDataSource = ((XAMediaPlayerAdaptationCtx*) adaptCtx)->xaSource; -/* DEBUG_INFO("Obtained handle to xaDataSource");*/ - if ( xaDataSource && - xaDataSource->pFormat && - ( (*(XAuint32*)xaDataSource->pFormat ) == XA_DATAFORMAT_MIME) ) - { - *containerType = ((XADataFormat_MIME*)(xaDataSource->pFormat))->containerType; - DEBUG_INFO_A1("Container type obtained from xaDataSource->pFormat is [%u]", (unsigned int)(*containerType)); - } - else - { - DEBUG_INFO("Container type unspecified"); - } - - /* Get media duration */ - ret = XAPlayItfAdaptGST_GetDuration((XAAdaptationGstCtx*)adaptCtx, mediaDuration); - if ( ret != XA_RESULT_SUCCESS ) - return ret; - - /* Determine number of streams */ - codecbin = ((XAMediaPlayerAdaptationCtx*) adaptCtx)->codecbin; - if ( codecbin == NULL ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-numsrcpads; - - DEBUG_API("-XAStreamInformationItfAdapt_QueryStreamType"); - - ret = XAStreamInformationItfAdapt_QueryMediaContainerInformation( - adaptCtx, &containerType, &mediaDuration, &numStreams); - if (ret != XA_RESULT_SUCCESS) - { - DEBUG_ERR_A1("XA_RESULT_[0x%x]", (unsigned int)ret); - DEBUG_API("- numStreams ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-xaSource; - if( xaDataSource->pFormat && - ( (*(XAuint32*)xaDataSource->pFormat ) == XA_DATAFORMAT_RAWIMAGE) ) - { - *domain = XA_DOMAINTYPE_IMAGE; - return XA_RESULT_SUCCESS; - } - else - { - GstElement *codecbin = ((XAMediaPlayerAdaptationCtx*) adaptCtx)->codecbin; - if ( codecbin == NULL ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-srcpads, - containerType, - streamIndex, - domain); - GST_OBJECT_UNLOCK( codecbin ); - } - - DEBUG_API("-XAStreamInformationItfAdapt_QueryStreamInformation"); - - /* stream index is validated in XAStreamInformationItfAdapt_QueryStreamType */ - ret = XAStreamInformationItfAdapt_QueryStreamType( - adaptCtx, streamIndex, &domain); - - if (ret != XA_RESULT_SUCCESS) - { - DEBUG_ERR_A1("XA_RESULT_[0x%x]", (unsigned int)ret); - DEBUG_API("-codecbin; - if ( codecbin == NULL ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-srcpads, (streamIndex -1 )); - DEBUG_INFO_A1("Obtaining SrcPad%u from Decode bin", (unsigned int)(streamIndex-1)); - if (srcPad == NULL) - { - GST_OBJECT_UNLOCK( codecbin ); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-codecId = codecId; - streamInfo->channels = channels; - streamInfo->sampleRate = sampleRate; - streamInfo->bitRate = bitRate; - streamInfo->langCountry[0] = '\0'; - streamInfo->duration = duration; - } - break; - case XA_DOMAINTYPE_MIDI: - { - XAMIDIStreamInformation* streamInfo = (XAMIDIStreamInformation*)info; - DEBUG_INFO("Assigning values for XAMIDIStreamInformation"); - /*currently there is no way to get these information from gstreamer*/ - streamInfo->channels = XA_MIDI_UNKNOWN; - streamInfo->tracks = XA_MIDI_UNKNOWN; - streamInfo->bankType = XA_MIDIBANK_DEVICE; - /*streamInfo->bitRate = 0;*/ - streamInfo->langCountry[0] = '\0'; - streamInfo->duration = duration; - } - break; - case XA_DOMAINTYPE_VIDEO: - { - XAVideoStreamInformation* streamInfo = (XAVideoStreamInformation*)info; - DEBUG_INFO("Assigning values for XAVideoStreamInformation"); - streamInfo->codecId = codecId; - streamInfo->width = width; - streamInfo->height = height; - streamInfo->bitRate = bitRate; - streamInfo->duration = duration; - } - break; - case XA_DOMAINTYPE_IMAGE: - { - XAImageStreamInformation* streamInfo = (XAImageStreamInformation*)info; - DEBUG_INFO("Assigning values for XAImageStreamInformation"); - streamInfo->codecId = codecId; - streamInfo->width = width; - streamInfo->height = height; - streamInfo->presentationDuration = duration; - } - break; - default: - break; - }; - } /*if ( ret == XA_RESULT_SUCCESS)*/ - - DEBUG_API("-XAStreamInformationItfAdapt_QueryStreamName"); - /* Both Media Player and Metadata Extractor objec uses the same ctxId */ - if( !adaptCtx || - (adaptCtx->ctxId != XAMediaPlayerAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-codecbin; - if ( codecbin == NULL ) - { - DEBUG_INFO("Unable to get codec bin"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-numsrcpads; - - /* validate stream index */ - if ( streamIndex > numStreams ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-XAStreamInformationItfAdapt_QueryActiveStreams"); - - /* Both Media Player and Metadata Extractor objec uses the same ctxId */ - if( !adaptCtx || - (adaptCtx->ctxId != XAMediaPlayerAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-ctxId == XAMDAdaptation) - { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED"); - DEBUG_API("-codecbin; - if ( codecbin == NULL ) - { - DEBUG_INFO("Unable to get codec bin"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-numsrcpads; - - if ( activeStreams ) - { - XAuint32 loopIndex; - if (inputNumStreams < *numStreams ) - { - DEBUG_INFO("numStreams param value is smaller than number of streams"); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-XAStreamInformationItfAdapt_QueryActiveStreams"); - return XA_RESULT_SUCCESS; -} - -XAresult XAStreamInformationItfAdapt_SetActiveStream( - XAAdaptationBaseCtx *adaptCtx, - XAuint32 streamNum, - XAboolean active, - XAboolean commitNow) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAuint32 numStreams; - GstElement *codecbin; - - DEBUG_API("->XAStreamInformationItfAdapt_SetActiveStream"); - - /* Both Media Player and Metadata Extractor objec uses the same ctxId */ - if( !adaptCtx || - (adaptCtx->ctxId != XAMediaPlayerAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-ctxId == XAMDAdaptation) - { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED"); - DEBUG_API("-codecbin; - if ( codecbin == NULL ) - { - DEBUG_INFO("Unable to get codec bin"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-numsrcpads; - - /* validate stream index */ - if ( streamNum > numStreams ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("-XAStreamInformationItfAdapt_SetActiveStream"); - return ret; -} - -/* local functions */ - -XAresult GetDomainTypeFromCodecBinSrcPads( - GList *sourcePads, - XAuint32 containerType, - XAuint32 streamIndex, - XAuint32 *domain) -{ - GstPad* srcPad; - GstCaps* negotiatedCaps; - const GstStructure* gstStruct; - const gchar *mime; - - DEBUG_API("->GetDomainTypeFromCodecBinSrcPads"); - - - srcPad = (GstPad*) g_list_nth_data(sourcePads, (streamIndex -1 )); - if (srcPad == NULL) - { - DEBUG_INFO_A1("Error obtaining SrcPad%u", (unsigned int)streamIndex); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-GetAudioStreamInfoFromPads"); - - negotiatedCaps = gst_pad_get_negotiated_caps(srcPad); - if ( negotiatedCaps == NULL ) - { - DEBUG_INFO("Obtaining allowed caps from SrcPad."); - negotiatedCaps = gst_pad_get_allowed_caps (srcPad); - } - - if ( negotiatedCaps == NULL ) - { - DEBUG_INFO("Unable to obtain negotiated and allowed caps from SrcPad"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-GetVideoStreamInfoFromPads"); - - negotiatedCaps = gst_pad_get_negotiated_caps(srcPad); - if ( negotiatedCaps == NULL ) - { - DEBUG_INFO("Obtaining allowed caps from SrcPad."); - negotiatedCaps = gst_pad_get_allowed_caps (srcPad); - } - - if ( negotiatedCaps == NULL ) - { - DEBUG_INFO("Unable to obtain negotiated and allowed caps from SrcPad"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("-GetImageStreamInfoFromPads"); - - negotiatedCaps = gst_pad_get_negotiated_caps(srcPad); - if ( negotiatedCaps == NULL ) - { - DEBUG_INFO("Obtaining allowed caps from SrcPad."); - negotiatedCaps = gst_pad_get_allowed_caps (srcPad); - } - - if ( negotiatedCaps == NULL ) - { - DEBUG_INFO("Unable to obtain negotiated and allowed caps from SrcPad"); - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("- -#include "xavibraadaptctx.h" -#include "xaadaptationgst.h" - -/* - * XAAdaptationGstCtx* XAVibraAdapt_Create() - * Allocates memory for Vibra Adaptation Context and makes 1st phase initialization - * @returns XAVibraAdaptationCtx* - Pointer to created context - */ -XAAdaptationBaseCtx* XAVibraAdapt_Create(XAuint32 deviceID) -{ - XAVibraAdaptationCtx *pSelf = (XAVibraAdaptationCtx*)calloc(1, sizeof(XAVibraAdaptationCtx)); - DEBUG_API("->XAVibraAdapt_Create"); - if ( pSelf) - { - if( XAAdaptationBase_Init(&(pSelf->baseObj.baseObj),XAVibraAdaptation) - != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Failed to init base context!!!"); - free(pSelf); - pSelf = NULL; - } - } - - DEBUG_API("<-XAVibraAdapt_Create"); - return (XAAdaptationBaseCtx*)&pSelf->baseObj; -} - -/* - * XAresult XAVibraAdapt_PostInit() - * 2nd phase initialization of Vibra Adaptation Context - */ -XAresult XAVibraAdapt_PostInit(XAAdaptationBaseCtx* bCtx) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraAdaptationCtx* ctx = NULL; - - DEBUG_API("->XAVibraAdapt_PostInit"); - if(bCtx == NULL || bCtx->ctxId != XAVibraAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraAdapt_PostInit"); - return XA_RESULT_PARAMETER_INVALID; - } - ctx = (XAVibraAdaptationCtx*)bCtx; - - XAAdaptationBase_PostInit( &(ctx->baseObj.baseObj) ); - - DEBUG_API("<-XAVibraAdapt_PostInit"); - return ret; -} - -/* - * void XAVibraAdapt_Destroy(XAVibraAdaptationCtx* ctx) - * Destroys Vibra Adaptation Context - * @param ctx - Vibra Adaptation context to be destroyed - */ -void XAVibraAdapt_Destroy(XAAdaptationBaseCtx* bCtx) -{ - XAVibraAdaptationCtx* ctx = NULL; - DEBUG_API("->XAVibraAdapt_Destroy"); - - if(bCtx == NULL || bCtx->ctxId != XAVibraAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraAdapt_Destroy"); - return; - } - ctx = (XAVibraAdaptationCtx*)bCtx; - XAAdaptationBase_Free(&(ctx->baseObj.baseObj)); - - free(ctx); - ctx = NULL; - - DEBUG_API("<-XAVibraAdapt_Destroy"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavibraadaptctx.h --- a/khronosfws/openmax_al/src/gst_adaptation/xavibraadaptctx.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIBRAADAPTCTX_H -#define XAVIBRAADAPTCTX_H - -#include "xaadaptationgst.h" - -/* TYPEDEFS */ - -typedef struct XAVibraAdaptationCtx_ XAVibraAdaptationCtx; - -/* - * Structure for Vibra specific gst-adaptation variables - */ -typedef struct XAVibraAdaptationCtx_ { - - /* Parent*/ - XAAdaptationGstCtx_ baseObj; - - /* OMX-AL Variables */ - XAuint32 deviceID; - - /* GST Variables */ -} XAVibraAdaptationCtx_; - -/* FUNCTIONS */ -XAAdaptationBaseCtx* XAVibraAdapt_Create(XAuint32 deviceID); - -XAresult XAVibraAdapt_PostInit(XAAdaptationBaseCtx* bCtx); -void XAVibraAdapt_Destroy(XAAdaptationBaseCtx* bCtx); - -#endif /* XAVIBRAADAPTCTX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavibraitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xavibraitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "xavibraadaptctx.h" -#include "xavibraitfadaptation.h" -#include "xaadaptationgst.h" - -/* - * XAresult XAVibraItfAdapt_Vibrate( XAAdaptationGstCtx *bCtx, XAboolean vibrate ); - */ -XAresult XAVibraItfAdapt_Vibrate( XAAdaptationGstCtx *bCtx, XAboolean vibrate ) -{ - XAresult ret = XA_RESULT_SUCCESS; - if(vibrate) - { - DEBUG_API("->XAVibraItfAdapt_Vibrate: ON"); - } - else - DEBUG_API("->XAVibraItfAdapt_Vibrate: OFF"); - - - if(!bCtx || bCtx->baseObj.ctxId != XAVibraAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfAdapt_Vibrate"); - return XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_INFO("No support > stubbed."); - DEBUG_API("<-XAVibraItfAdapt_Vibrate"); - - return ret; -} -/* - * XAresult XAVibraItfAdapt_SetFrequency ( XAAdaptationGstCtx *bCtx, XAmilliHertz frequency ); - */ -XAresult XAVibraItfAdapt_SetFrequency ( XAAdaptationGstCtx *bCtx, XAmilliHertz frequency ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API_A1("->XAVibraItfAdapt_SetFrequency %ld", frequency); - - if(!bCtx || bCtx->baseObj.ctxId != XAVibraAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfAdapt_SetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_INFO("No support > stubbed."); - DEBUG_API("<-XAVibraItfAdapt_SetFrequency"); - return ret; -} -/* - * XAresult XAVibraItfAdapt_SetIntensity ( XAAdaptationGstCtx *bCtx, XApermille intensity ); - */ -XAresult XAVibraItfAdapt_SetIntensity ( XAAdaptationGstCtx *bCtx, XApermille intensity ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API_A1("->XAVibraItfAdapt_SetIntensity %d", intensity); - - if(!bCtx || bCtx->baseObj.ctxId != XAVibraAdaptation ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfAdapt_SetIntensity"); - return XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_INFO("No support > stubbed."); - DEBUG_API("<-XAVibraItfAdapt_SetIntensity"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavibraitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xavibraitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVibraItfADAPTATION_H_ -#define XAVibraItfADAPTATION_H_ - -#include "xaadaptationgst.h" - -/* FUNCTIONS */ -XAresult XAVibraItfAdapt_Vibrate( XAAdaptationGstCtx *bCtx, XAboolean vibrate ); -XAresult XAVibraItfAdapt_SetFrequency ( XAAdaptationGstCtx *bCtx, XAmilliHertz frequency ); -XAresult XAVibraItfAdapt_SetIntensity ( XAAdaptationGstCtx *bCtx, XApermille intensity ); -#endif /* XAVIBRAITFADAPTATION_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavideoencoderitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xavideoencoderitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include "xamediarecorderadaptctx.h" -#include "xavideoencoderitfadaptation.h" -#include "xaadaptationgst.h" - - -/* - * XAresult XAVideoEncoderITfAdapt_SetVideoSettings( XAAdaptationGstCtx *bCtx, - * XAVideoSettings *pSettings ) - * @param XAAdaptationGstCtx *ctx - pointer to Media Recorer adaptation context - * @param XAVideoSettings *pSettings - Settings for encoder - * @return XAresult ret - return success value - * Description: Sets preferred encoder settings for pipeline. - */ -XAresult XAVideoEncoderItfAdapt_SetVideoSettings( XAAdaptationGstCtx *bCtx, - XAVideoSettings *pSettings ) -{ - XAMediaRecorderAdaptationCtx* mCtx = NULL; - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XAVideoEncoderAdapt_SetVideoSettings"); - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) || !pSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoEncoderAdapt_SetVideoSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - - ret = XAMediaRecorderAdapt_CheckCodec(mCtx,XACAP_VIDEO,pSettings->encoderId); - if(ret==XA_RESULT_SUCCESS) - { - /*change of settings - pipeline must be regenerated**/ - mCtx->encodingchanged = XA_BOOLEAN_TRUE; - memcpy(&mCtx->videoEncSettings, pSettings, sizeof(XAVideoSettings)); - } - DEBUG_API("<-XAVideoEncoderAdapt_SetVideoSettings"); - return ret; -} - -/* - * XAresult XAVideoEncoderItfAdapt_GetVideoSettings( XAAdaptationGstCtx *bCtx, XAVideoSettings *pSettings ) - */ -XAresult XAVideoEncoderItfAdapt_GetVideoSettings( XAAdaptationGstCtx *bCtx, - XAVideoSettings *pSettings ) -{ - XAMediaRecorderAdaptationCtx* mCtx = NULL; - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XAVideoEncoderItfAdapt_GetVideoSettings"); - - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) || !pSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoEncoderItfAdapt_GetVideoSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - mCtx = (XAMediaRecorderAdaptationCtx*) bCtx; - memcpy(pSettings, &(mCtx->videoEncSettings), sizeof(XAVideoSettings)); - DEBUG_API("<-XAVideoEncoderItfAdapt_GetVideoSettings"); - return ret; -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavideoencoderitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xavideoencoderitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIDEOENCODERITFADAPTATION_H -#define XAVIDEOENCODERITFADAPTATION_H - -#include "xaadaptationgst.h" - - -/* FUNCTIONS */ -XAresult XAVideoEncoderItfAdapt_SetVideoSettings(XAAdaptationGstCtx *bCtx, - XAVideoSettings *pSettings ); -XAresult XAVideoEncoderItfAdapt_GetVideoSettings( XAAdaptationGstCtx *bCtx, - XAVideoSettings *pSettings ); -#endif /* XAVIDEOENCODERITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavideopostprosessingitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xavideopostprosessingitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,863 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xaadaptationgst.h" -#include "xamediaplayeradaptctx.h" -#include "xamediarecorderadaptctx.h" -#include "xacameraadaptctx.h" -#include "xavideopostprosessingitfadaptation.h" -#include "xastaticcameracapsadaptation.h" - -/* - * XAresult XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported(XAAdaptationGstCtx *bCtx, - * XAboolean *pSupported) - */ -XAresult XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported(XAAdaptationGstCtx *bCtx, - XAboolean *pSupported) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported"); - - if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation) || !pSupported) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* This feature is not supported, return boolean false */ - *pSupported = XA_BOOLEAN_FALSE; - - DEBUG_API("<-XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported"); - return ret; -} - -/* - * XAresult XAVideoPostProcessingItfAdapt_Commit(XAAdaptationGstCtx *bCtx) - */ -XAresult XAVideoPostProcessingItfAdapt_Commit(XAAdaptationGstCtx *bCtx, - XAmillidegree rotation, - XAuint32 scaleOptions, - XAuint32 backgroundColor, - XAuint32 renderingHints, - const XARectangle *pSrcRect, - const XARectangle *pDestRect, - XAuint32 mirror, - XAboolean isMirror, - XAboolean isRotate, - XAboolean isDestRect, - XAboolean isSrcRect, - XAboolean isScaleOptions - ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAmillidegree tempRotation = 0; - XAmillidegree newRotation = 0; - XAuint32 tempMirror = XA_VIDEOMIRROR_NONE; - XAuint32 newMirror = XA_VIDEOMIRROR_NONE; - XADataSource *dataSrc = NULL; - GstElement *cropElement = NULL; - GstElement *rotateElement = NULL; - GstElement *mirrorElement = NULL; - GstElement *boxElement = NULL; -/* - GstElement *balanceElement = NULL; - GstElement *gammaElement = NULL; -*/ - GstElement *sink = NULL; - GstElement *col1 = NULL; - GstElement *scale = NULL; -/* - gdouble alphaValue = 1; - gint videoBackgroundColor = 0; -*/ - gint cropscaleRight = 0, cropscaleBottom = 0, - cropscaleLeft = 0, - cropscaleTop = 0, - videoscaleHeight = 0; - GstStateChangeReturn gstRet = GST_STATE_CHANGE_SUCCESS; - GstState gstOrigState = GST_STATE_PLAYING; - GstState gstTmpState = GST_STATE_PLAYING; - - DEBUG_API("->XAVideoPostProcessingItfAdapt_Commit"); - - if( !bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation - && bCtx->baseObj.ctxId != XACameraAdaptation)) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit"); - return XA_RESULT_PARAMETER_INVALID; - } - - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx; - - - /* Get video pp elements */ - GstPad *pad = NULL; - GstCaps *caps = NULL; - col1 = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_colsp1"); - cropElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_crop"); - rotateElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_rotate"); - mirrorElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_mirror"); - boxElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_box"); -/* - balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance"); - gammaElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_gamma"); -*/ - sink = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videosink"); - pad = gst_element_get_static_pad(GST_ELEMENT(sink),"sink"); - caps = gst_caps_new_simple("video/x-raw-yuv", - "width", G_TYPE_INT,0, - "height", G_TYPE_INT,0, - NULL); - gst_pad_set_caps(pad, caps); - - /* get current mirror state and rotate value */ - tempMirror = ctx->curMirror; - tempRotation = ctx->curRotation; - dataSrc = ctx->xaSource; - } - - if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx; - - /* Get video pp elements */ - GstPad *pad = NULL; - GstCaps *caps = NULL; - scale = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_scale2"); - col1 = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_colsp1"); - cropElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_crop"); - rotateElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_rotate"); - mirrorElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_mirror"); - boxElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_box"); -/* balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance"); - gammaElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_gamma");*/ - sink = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "datasink"); - pad = gst_element_get_static_pad(GST_ELEMENT(sink),"sink"); - caps = gst_caps_new_simple("video/x-raw-yuv", - "width", G_TYPE_INT,0, - "height", G_TYPE_INT,0, - NULL); - gst_pad_set_caps(pad, caps); - - /* get current mirror state and rotate value */ - tempMirror = ctx->curMirror; - tempRotation = ctx->curRotation; - } - - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - - GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera"); - if( !videoPP ) - { - DEBUG_ERR("Could not receive videopp from camerabin!"); - } - else - { - /* Get camera pp elements */ - GstPad *pad = NULL; - GstCaps *caps = NULL; - rotateElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_rotate"); - col1 = gst_bin_get_by_name( GST_BIN(videoPP), "pp_colsp1"); - cropElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_crop"); - mirrorElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_mirror"); - boxElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_box"); -/* balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance"); - gammaElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_gamma");*/ - sink = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_crop"); - pad = gst_element_get_static_pad(GST_ELEMENT(sink),"sink"); - caps = gst_caps_new_simple("video/x-raw-yuv", - "width", G_TYPE_INT,0, - "height", G_TYPE_INT,0, - NULL); - gst_pad_set_caps(pad, caps); - - /* get current mirror state and rotate value */ - tempMirror = ctx->curMirror; - tempRotation = ctx->curRotation; - } - } - - /* Cropping */ - if( isSrcRect && pSrcRect && cropElement && col1 ) - { - - gint cropRight = 0; - gint cropBottom = 0; - gint cropLeft = 0; - gint cropTop = 0; - GstPad *videoPad = NULL; - gint videoWidth = 0; - gint videoHeight = 0; - DEBUG_INFO("Start cropping!"); - - DEBUG_INFO_A1("pSrcRect->left:%d",(int)pSrcRect->left); - DEBUG_INFO_A1("pSrcRect->top:%d",(int)pSrcRect->top); - DEBUG_INFO_A1("pSrcRect->width:%d",(int)pSrcRect->width); - DEBUG_INFO_A1("pSrcRect->height:%d", (int)pSrcRect->height); - - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - GstCaps *caps = NULL; - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - gint capsCount = 0; - gint iterator = 0; - GstStructure *capsStruct = NULL; - - g_object_get( G_OBJECT(ctx->baseObj.bin), "filter-caps", &caps, NULL ); - - if( !caps ) - { - DEBUG_ERR("Cannot receive caps (filter-caps) from camerabin!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - - capsCount = gst_caps_get_size( caps ); - - for( iterator= 0; iterator < capsCount; iterator++ ) - { - capsStruct = gst_caps_get_structure( caps, iterator ); - if( capsStruct ) - { - if( !gst_structure_get_int( capsStruct, "width", &videoWidth ) ) - { - DEBUG_ERR("Could not get width from filter-caps"); - videoWidth = TEST_VIDEO_WIDTH; - } - if( !gst_structure_get_int( capsStruct, "height", &videoHeight) ) - { - DEBUG_ERR("Could not get height from filter-caps"); - videoHeight = TEST_VIDEO_HEIGHT; - } - DEBUG_INFO_A2("videoWidth:%d, videoHeight:%d",videoWidth,videoHeight); - } - } - } - else - { - GstCaps* negcapas=NULL; - videoPad = gst_element_get_pad( col1, "src" ); - negcapas = gst_pad_get_negotiated_caps( GST_PAD(videoPad) ); - if ( negcapas ) - { - if( !gst_video_get_size( videoPad, &videoWidth, &videoHeight ) ) - { - DEBUG_ERR("WARN: Cannot receive video size, using defaults"); - videoWidth = TEST_VIDEO_WIDTH; - videoHeight = TEST_VIDEO_HEIGHT; - } - } - else - { - videoWidth = TEST_VIDEO_WIDTH; - videoHeight = TEST_VIDEO_HEIGHT; - } - } - - DEBUG_INFO_A2("Received video frame info, videoWidth:%d, videoHeight:%d",videoWidth,videoHeight); - cropLeft = (gint)pSrcRect->left; - cropTop = (gint)pSrcRect->top; - cropRight = videoWidth - ((gint)pSrcRect->left + (gint)pSrcRect->width); - cropBottom = videoHeight - ((gint)pSrcRect->top + (gint)pSrcRect->height); - DEBUG_INFO_A4("Crop values - cropLeft:%d ,cropTop:%d,cropRight:%d,cropBottom:%d", cropLeft,cropTop,cropRight,cropBottom); - - if( cropBottom >= 0 && cropLeft >=0 && cropRight >= 0 && cropTop >= 0 ) - { - g_object_set(G_OBJECT(cropElement), "bottom",cropBottom, NULL); - g_object_set(G_OBJECT(cropElement), "left", cropLeft, NULL); - g_object_set(G_OBJECT(cropElement), "right", cropRight, NULL); - g_object_set(G_OBJECT(cropElement), "top", cropTop, NULL); - } - else - { - if( cropLeft > videoWidth || cropLeft < 0 || - cropRight > videoWidth || cropRight < 0 || - cropBottom > videoHeight || cropBottom < 0 || - cropTop > videoHeight || cropTop < 0) - { - DEBUG_INFO("Cropped params out of original frame."); - } - } - } - - if(rotateElement && isRotate) - { - DEBUG_INFO("Start rotating!"); - - /* calculate rotation */ - newRotation = tempRotation + rotation; - - if( newRotation > ROTATION_RATIO || newRotation < ROTATION_RATIO_NEG ) - { - newRotation = newRotation % ROTATION_RATIO; - } - - /* Set rotation */ - switch(newRotation) - { - case 0: - { - /* no rotation */ - DEBUG_INFO("Set rotation FLIP_NONE"); - g_object_set(G_OBJECT(rotateElement), "method", FLIP_NONE, NULL); - break; - } - case 90000: - case -270000: - { - /* rotation 90 degree */ - DEBUG_INFO("Set rotation 90 degrees"); - g_object_set(G_OBJECT(rotateElement), "method", FLIP_CLOCKWISE, NULL); - break; - } - case 180000: - case -180000: - { - /* rotation 180 degree */ - DEBUG_INFO("Set rotation 180 degrees"); - g_object_set(G_OBJECT(rotateElement), "method", FLIP_ROTATE_180, NULL); - break; - } - case 270000: - case -90000: - { - /* rotation 270 degree */ - DEBUG_INFO("Set rotation 270 degrees"); - g_object_set(G_OBJECT(rotateElement), "method", FLIP_COUNTERCLOCKWISE, NULL); - break; - } - case 360000: - case -360000: - { - /* rotation 360 degree */ - DEBUG_INFO("Set rotation 360 degrees"); - g_object_set(G_OBJECT(rotateElement), "method", FLIP_NONE, NULL); - break; - } - default: - { - /* no rotation */ - DEBUG_INFO("Set rotation default (FLIP_NONE) degree"); - g_object_set(G_OBJECT(rotateElement), "method", FLIP_NONE, NULL); - break; - } - } - - /* Store current rotate value */ - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx; - ctx->curRotation = newRotation; - } - if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx; - ctx->curRotation = newRotation; - } - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - ctx->curRotation = newRotation; - } - } - - if(mirrorElement && isMirror) - { - /* solve new mirror state */ - switch(mirror) - { - case XA_VIDEOMIRROR_NONE: - { - newMirror = tempMirror; - break; - } - case XA_VIDEOMIRROR_VERTICAL: - { - if( tempMirror == XA_VIDEOMIRROR_VERTICAL ) - { - newMirror = XA_VIDEOMIRROR_NONE; - } - else if( tempMirror == XA_VIDEOMIRROR_HORIZONTAL ) - { - newMirror = XA_VIDEOMIRROR_BOTH; - } - else if( tempMirror == XA_VIDEOMIRROR_BOTH ) - { - newMirror = XA_VIDEOMIRROR_HORIZONTAL; - } - else - { - newMirror = XA_VIDEOMIRROR_VERTICAL; - } - break; - } - case XA_VIDEOMIRROR_HORIZONTAL: - { - if( tempMirror == XA_VIDEOMIRROR_VERTICAL ) - { - newMirror = XA_VIDEOMIRROR_BOTH; - } - else if( tempMirror == XA_VIDEOMIRROR_HORIZONTAL ) - { - newMirror = XA_VIDEOMIRROR_NONE; - } - else if( tempMirror == XA_VIDEOMIRROR_BOTH ) - { - newMirror = XA_VIDEOMIRROR_VERTICAL; - } - else - { - newMirror = XA_VIDEOMIRROR_HORIZONTAL; - } - break; - } - case XA_VIDEOMIRROR_BOTH: - { - if( tempMirror == XA_VIDEOMIRROR_VERTICAL ) - { - newMirror = XA_VIDEOMIRROR_HORIZONTAL; - } - else if( tempMirror == XA_VIDEOMIRROR_HORIZONTAL ) - { - newMirror = XA_VIDEOMIRROR_VERTICAL; - } - else if( tempMirror == XA_VIDEOMIRROR_BOTH ) - { - newMirror = XA_VIDEOMIRROR_NONE; - } - else - { - newMirror = XA_VIDEOMIRROR_BOTH; - } - break; - } - default: - break; - } - - - DEBUG_INFO("Start mirroring!"); - /* Set mirror */ - switch(newMirror) - { - case XA_VIDEOMIRROR_NONE: - { - /* none */ - DEBUG_INFO("Set mirror none"); - g_object_set(G_OBJECT(mirrorElement), "method", FLIP_NONE, NULL); - break; - } - case XA_VIDEOMIRROR_VERTICAL: - { - /* vertical mirror */ - DEBUG_INFO("Set mirror vertical"); - g_object_set(G_OBJECT(mirrorElement), "method", FLIP_VERTICAL, NULL); - break; - } - case XA_VIDEOMIRROR_HORIZONTAL: - { - /* horizontal mirror */ - DEBUG_INFO("Set mirror horizontal"); - g_object_set(G_OBJECT(mirrorElement), "method", FLIP_HORIZONTAL, NULL); - break; - } - case XA_VIDEOMIRROR_BOTH: - { - /* both mirror */ - DEBUG_INFO("Set mirror vertical and horizontal"); - g_object_set(G_OBJECT(mirrorElement), "method", FLIP_ROTATE_180, NULL); - break; - } - default: - { - /* Default no mirroring */ - g_object_set(G_OBJECT(mirrorElement), "method", FLIP_NONE, NULL); - break; - } - } - - /* Store current mirror state */ - if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx; - ctx->curMirror = newMirror; - } - if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx; - ctx->curMirror = newMirror; - } - if( bCtx->baseObj.ctxId == XACameraAdaptation ) - { - XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx; - ctx->curMirror = newMirror; - } - } - - /* Set scale */ - if ( isScaleOptions || isDestRect || isSrcRect ) - { - switch( scaleOptions ) - { - - case XA_VIDEOSCALE_STRETCH: - { - DEBUG_INFO("XA_VIDEOSCALE_STRETCH"); - /* The source and destination rectangle's width and height params are used to calculate - * the scaling factors independently. Aspect ratio is ignored. */ - if (pDestRect) - { - if (bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) - { - GstPad *pad = NULL; - GstCaps* simplecaps = NULL; - g_object_set ( G_OBJECT(sink), "force-aspect-ratio", FALSE, NULL); - simplecaps = gst_caps_new_simple("video/x-raw-rgb", - "width", G_TYPE_INT, pDestRect->width, - "height", G_TYPE_INT, pDestRect->height, - "framerate", GST_TYPE_FRACTION, 0,1, - NULL); - DEBUG_API_A1("caps: %s",gst_caps_to_string(simplecaps)); - pad = gst_element_get_static_pad(GST_ELEMENT(sink),"sink"); - if (!gst_pad_set_caps(pad, simplecaps)) - { - DEBUG_INFO("Stubbed at this point"); - DEBUG_INFO("Cannot set destrect size during XA_VIDEOSCALE_STRETCH!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_VIDEOSCALE_STRETCH"); - return XA_RESULT_SUCCESS; - } - DEBUG_API_A1("ret: %lu",ret); - } - else - { - GstCaps* simplecaps = NULL; - GstPad *pad = NULL; - if ( !scale ) - { - DEBUG_ERR("Could not get scaling element from pipeline!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - simplecaps = gst_caps_new_simple("video/x-raw-yuv", - "width", G_TYPE_INT, pDestRect->width, - "height", G_TYPE_INT, pDestRect->height, - "framerate", GST_TYPE_FRACTION, 0,1, - NULL); - DEBUG_API_A1("caps: %s",gst_caps_to_string(simplecaps)); - pad = gst_element_get_static_pad(GST_ELEMENT(scale),"src"); - if (!gst_pad_set_caps(pad, simplecaps)) - { - DEBUG_INFO("Stubbed at this point"); - DEBUG_INFO("Cannot set destrect size during XA_VIDEOSCALE_STRETCH!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_VIDEOSCALE_STRETCH"); - return XA_RESULT_SUCCESS; - } - - } - } - DEBUG_INFO("XA_VIDEOSCALE_STRETCH Done"); - - break; - } - case XA_VIDEOSCALE_FIT: - { - DEBUG_INFO("XA_VIDEOSCALE_FIT"); - /* The miminum scale factor between the destination rectangle's width over the - * source rectangle's source rectangle's width and the destination rectangle's height over - * the source rectangle's height is used. Aspect ratio is maintained. Frame is centered */ - if (pDestRect) - { - if (bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) - { - GstPad *pad = NULL; - GstCaps* simplecaps = NULL; - g_object_set ( G_OBJECT(sink), "force-aspect-ratio", TRUE, NULL); - simplecaps = gst_caps_new_simple("video/x-raw-rgb", - "width", G_TYPE_INT, pDestRect->width, - "height", G_TYPE_INT, pDestRect->height, - "framerate", GST_TYPE_FRACTION, 0,1, - NULL); - DEBUG_API_A1("caps: %s",gst_caps_to_string(simplecaps)); - pad = gst_element_get_static_pad(GST_ELEMENT(sink),"sink"); - if (!gst_pad_set_caps(pad, simplecaps)) - { - DEBUG_INFO("Stubbed at this point"); - DEBUG_INFO("Cannot set destrect size during XA_VIDEOSCALE_FIT!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_VIDEOSCALE_FIT"); - return XA_RESULT_SUCCESS; - } - } - else - { - GstPad *videoScalePad = NULL; - GstCaps *negcaps = NULL; - gint videoScalePadHeight = 0, videoScalePadWidth = 0; - gfloat scaleFactorWidth = 0; - gfloat scaleFactorHeight = 0; - gfloat scaleFactor = 0; - videoScalePad = gst_element_get_pad( col1, "src" ); - negcaps = gst_pad_get_negotiated_caps( GST_PAD(videoScalePad) ); - if ( negcaps ) - { - if( !gst_video_get_size( videoScalePad, &videoScalePadWidth, &videoScalePadHeight ) ) - { - DEBUG_ERR("Cannot receive current cropscalevideo size!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_ERR("No negotiated caps in col1:src!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit"); - return XA_RESULT_SUCCESS; - } - if (pSrcRect->width != 0 && pSrcRect->height != 0) - { - scaleFactorWidth = (gfloat)videoScalePadWidth / (gfloat)pSrcRect->width; - scaleFactorHeight = (gfloat)videoScalePadHeight / (gfloat)pSrcRect->height; - if (scaleFactorWidth < scaleFactorHeight) - { - scaleFactor = scaleFactorWidth; - } - else - { - scaleFactor = scaleFactorHeight; - } - - cropscaleBottom = (gint)(pSrcRect->height*scaleFactor - videoScalePadHeight)/2; - cropscaleLeft = (gint)(pSrcRect->width*scaleFactor - videoScalePadWidth)/2; - if (cropscaleLeft > 0){ - cropscaleLeft *= -1; - } - cropscaleRight = cropscaleLeft; - if (cropscaleBottom > 0){ - cropscaleBottom *= -1; - } - cropscaleTop = cropscaleBottom; - g_object_set (G_OBJECT (boxElement), "bottom", cropscaleBottom , NULL); - g_object_set (G_OBJECT (boxElement), "right", cropscaleRight, NULL); - g_object_set (G_OBJECT (boxElement), "left", cropscaleLeft, NULL); - g_object_set (G_OBJECT (boxElement), "top", cropscaleTop, NULL); - } - } - } - DEBUG_INFO("XA_VIDEOSCALE_FIT done"); - - break; - } - case XA_VIDEOSCALE_CROP: - { - DEBUG_INFO("XA_VIDEOSCALE_CROP"); - /* The maximum scale factor between the destination rectangle's width over the source - * rectangle's width and destination rectangle's height over the source rectangle's - * height is used. Aspect ratio is maintained. Frame is centered. */ - if( pDestRect && pSrcRect ) - { - GstPad *videoScalePad = NULL; - GstCaps *negcaps = NULL; - gint videoScalePadHeight = 0, videoScalePadWidth = 0; - videoScalePad = gst_element_get_pad( col1, "src" ); - negcaps = gst_pad_get_negotiated_caps( GST_PAD(videoScalePad) ); - if ( negcaps ) - { - if( !gst_video_get_size( videoScalePad, &videoScalePadWidth, &videoScalePadHeight ) ) - { - DEBUG_ERR("Cannot receive current cropscalevideo size!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit - XA_RESULT_INTERNAL_ERROR"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_ERR("No negotiated caps in col1:src!"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit"); - return XA_RESULT_SUCCESS; - } - - DEBUG_INFO_A2( "Received video scale frame info, videoScalePadWidth:%d, " - "videoScalePadHeight:%d",videoScalePadWidth,videoScalePadHeight); - - if( pSrcRect->height > 0 && pSrcRect->width > 0 ) - { - if( pSrcRect->height > pDestRect->height ) - { - videoscaleHeight = pSrcRect->height; - if( pDestRect->top == 0) - { - cropscaleTop = ((videoscaleHeight - pDestRect->height)/2); - cropscaleBottom = ((videoscaleHeight - pDestRect->height)/2); - } - else - { - cropscaleTop = (pDestRect->top/2); - cropscaleBottom = (pDestRect->top/2); - } - } - else if( pDestRect->height > pSrcRect->height ) - { - videoscaleHeight = pDestRect->height; - if( pDestRect->top == 0) - { - cropscaleTop = -((videoscaleHeight - pSrcRect->height)/2); - cropscaleBottom = -((videoscaleHeight - pSrcRect->height)/2); - } - else - { - cropscaleTop = -(pDestRect->top/2); - cropscaleBottom = -(pDestRect->top/2); - } - } - else if( pDestRect->height == pSrcRect->height ) - { - } - else - { - } - if( pSrcRect->width > pDestRect->width ) - { - if( pDestRect->left == 0 ) - { - cropscaleLeft = ((gint)(pSrcRect->width -pDestRect->width)/2); - cropscaleRight = ((gint)(pSrcRect->width -pDestRect->width)/2); - } - else - { - cropscaleLeft = (pDestRect->left/2); - cropscaleRight = (pDestRect->left/2); - } - } - else if( pDestRect->width > pSrcRect->width ) - { - if( pDestRect->left == 0 ) - { - cropscaleLeft =-((gint)(pDestRect->width -pSrcRect->width)/2); - cropscaleRight =-((gint)(pDestRect->width -pSrcRect->width)/2); - } - else - { - cropscaleLeft = -(pDestRect->left/2); - cropscaleRight = -(pDestRect->left/2); - } - } - else if( pDestRect->width == pSrcRect->width ) - { - } - else - { - } - } - else - { - DEBUG_ERR("Invalid rectangle values in source rectangles"); - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit, Exit with invalid source rectangle values"); - return XA_RESULT_PARAMETER_INVALID; - } - if( pDestRect->width != pSrcRect->width && pDestRect->height != pSrcRect->height ) - { - DEBUG_INFO_A4("Crop values - cropscaleLeft:%d " - ",cropscaleTop:%d," - "cropscaleRight:%d," - "cropscaleBottom:%d", - cropscaleLeft, - cropscaleTop, - cropscaleRight, - cropscaleBottom); - g_object_set (G_OBJECT (boxElement), "bottom",cropscaleBottom , NULL); - g_object_set (G_OBJECT (boxElement), "right", cropscaleRight, NULL); - g_object_set (G_OBJECT (boxElement), "left", cropscaleLeft, NULL); - g_object_set (G_OBJECT (boxElement), "top",cropscaleTop, NULL); - } - } - break; - } - default: - DEBUG_INFO("no scale options!"); - break; - } - } - - - /*TODO The Code below does nothing. just set the variable which are never used. - * commenting the code below. */ -/* if(pDestRect && boxElement) - { - is background color black - if((backgroundColor >> 8) & BLACK_BG_COLOR_MASK) - { - videoBackgroundColor = 0; - } - is background color green - else if((backgroundColor >> 8) & GREEN_BG_COLOR_MASK) - { - videoBackgroundColor = 1; - } - is background color blue - else if((backgroundColor >> 8) & BLUE_BG_COLOR_MASK) - { - videoBackgroundColor = 2; - } - else - { - by default black - videoBackgroundColor = 0; - } - - check alpha value. Gst support values 0 to 1 and XA 0 to 255 - { - XAuint32 tempColor = 0; - tempColor = backgroundColor & ALPHA_VALUE_MASK; - - alphaValue = (gdouble)(tempColor/ALPHA_VALUE_MASK); - } - - - }*/ - - if( dataSrc ) - { - XAMediaType mediaType = XA_MEDIATYPE_UNKNOWN; - ret = XACommon_CheckDataSource(dataSrc, &mediaType); - if( ret == XA_RESULT_SUCCESS && mediaType == XA_MEDIATYPE_IMAGE ) - { - gstOrigState = GST_STATE(bCtx->bin); - - DEBUG_INFO_A1("Sending change state request to state %d", GST_STATE_READY); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), GST_STATE_READY); - gstTmpState = GST_STATE(bCtx->bin); - - if(gstRet == GST_STATE_CHANGE_SUCCESS && gstTmpState == GST_STATE_READY) - { - DEBUG_INFO_A1("Sending change state request to state %d", gstOrigState); - gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), gstOrigState); - } - } - } - - DEBUG_API("<-XAVideoPostProcessingItfAdapt_Commit"); - return ret; -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavideopostprosessingitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xavideopostprosessingitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIDEOPOSTPROSESSINGITFADAPTATION_H -#define XAVIDEOPOSTPROSESSINGITFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xathreadsafety.h" - -/* MACROS */ -#define BLACK_BG_COLOR_MASK 0x00FFFFFF -#define GREEN_BG_COLOR_MASK 0x0000FF00 -#define BLUE_BG_COLOR_MASK 0x000000FF -#define ALPHA_VALUE_MASK 0x000000FF - -#define TEST_VIDEO_WIDTH 640 -#define TEST_VIDEO_HEIGHT 480 - -#define ROTATION_RATIO 360000 -#define ROTATION_RATIO_NEG -360000 - -/* FUNCTIONS */ -XAresult XAVideoPostProcessingItfAdapt_IsArbitraryRotationSupported(XAAdaptationGstCtx *bCtx, - XAboolean *pSupported); - -XAresult XAVideoPostProcessingItfAdapt_Commit(XAAdaptationGstCtx *bCtx, - XAmillidegree rotation, - XAuint32 scaleOptions, - XAuint32 backgroundColor, - XAuint32 renderingHints, - const XARectangle *pSrcRect, - const XARectangle *pDestRect, - XAuint32 mirror, - XAboolean isMirror, - XAboolean isRotate, - XAboolean isDestRect, - XAboolean isSrcRect, - XAboolean isScaleOptions - ); - -#endif /* XAVIDEOPOSTPROSESSINGITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavolumeitfadaptation.c --- a/khronosfws/openmax_al/src/gst_adaptation/xavolumeitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,502 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include "xaadaptationgst.h" -#include "xavolumeitfadaptation.h" -#include "xamediaplayeradaptctx.h" - -#include "xaoutputmixadaptctx.h" -#include "xamediarecorderadaptctx.h" - -/* - * XAresult XAVolumeItfAdapt_FlushBin(XAAdaptationGstCtx *ctx) - */ -XAresult XAVolumeItfAdapt_FlushBin(XAAdaptationGstCtx *ctx) -{ - DEBUG_API("->XAVolumeItfAdapt_FlushBin"); - if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation )) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - if (GST_STATE(ctx->bin) != GST_STATE_PLAYING) - { - gint64 position = 0; - GstFormat format = GST_FORMAT_TIME; - - if (! gst_element_query_position( GST_ELEMENT(ctx->bin), &format, &position )) - { - DEBUG_ERR("Gst: Failed to get position"); - return XA_RESULT_INTERNAL_ERROR; - } - XAAdaptationGst_PrepareAsyncWait(ctx); - /* in effect seeks to current position and flushing the buffer, due to - * gstreamer implementation actual position might change, if stopped, seek to beginning - */ - if(!gst_element_seek( ctx->bin, ((XAMediaPlayerAdaptationCtx*)ctx)->playrate, GST_FORMAT_TIME, - (GstSeekFlags)(GST_SEEK_FLAG_FLUSH|GST_SEEK_FLAG_ACCURATE), - GST_SEEK_TYPE_SET, position, - GST_SEEK_TYPE_NONE, (gint64)GST_CLOCK_TIME_NONE)) - { - DEBUG_ERR("WARN: gst reports seek not handled"); - } - /* flushed seeks always asynchronous */ - XAAdaptationGst_StartAsyncWait(ctx); - DEBUG_INFO("Bin flushed."); - ctx->waitingasyncop = XA_BOOLEAN_FALSE; - } - DEBUG_API("<-XAVolumeItfAdapt_FlushBin"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAVolumeItfAdapt_SetVolumeLevel(void *ctx, AdaptationContextIDS ctx->baseObj.ctxId, - * XAmillibel level) - * @param void *ctx - Adaptation context, this will be casted to correct type regarding to contextID - * XAmillibel level - Requested volume level, in between XA_MILLIBEL_MIN and XA_MILLIBEL_MAX - * @return XAresult ret - Success value - */ -XAresult XAVolumeItfAdapt_SetVolumeLevel(XAAdaptationGstCtx *ctx, XAmillibel level) -{ - GstElement *vol=NULL, *audiopp=NULL; - gdouble gstVolume = 0; - XAmillibel tempVolumeLevel = 0; - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API_A1("->XAVolumeItfAdapt_SetVolumeLevel (level %d)", level); - if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation && - ctx->baseObj.ctxId != XAMediaRecorderAdaptation && - ctx->baseObj.ctxId != XAOutputMixAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVolumeItfAdapt_SetVolumeLevel"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if( level <= MIN_SUPPORT_VOLUME_LEVEL ) - { - tempVolumeLevel = MIN_SUPPORT_VOLUME_LEVEL; - } - else if( level >= MAX_SUPPORT_VOLUME_LEVEL ) - { - tempVolumeLevel = MAX_SUPPORT_VOLUME_LEVEL; - } - else - { - tempVolumeLevel = level; - } - gstVolume = ( ( (gdouble)(VOLUME_LEVEL_RATIO + tempVolumeLevel)/ VOLUME_LEVEL_RATIO) ); - - if ( ctx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* context = (XAMediaPlayerAdaptationCtx*) ctx; - audiopp = gst_bin_get_by_name( GST_BIN(context->baseObj.bin), "audiopp" ); - if(audiopp) - { - vol = gst_bin_get_by_name( GST_BIN(audiopp), "pp_vol" ); - } - if(vol) - { - DEBUG_INFO_A1("Setting gst level to %f",gstVolume); - g_object_set( G_OBJECT(vol), "volume", (gdouble)gstVolume, NULL ); - - XAVolumeItfAdapt_FlushBin(ctx); - } - else - { - DEBUG_ERR("Could not find gst volume controller element!!"); - } - } - else if ( ctx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* context = (XAMediaRecorderAdaptationCtx*) ctx; - audiopp = gst_bin_get_by_name( GST_BIN(context->baseObj.bin), "audiopp" ); - if(audiopp) - { - vol = gst_bin_get_by_name( GST_BIN(audiopp), "pp_vol" ); - } - if(vol) - { - DEBUG_INFO_A1("Setting gst level to %f",gstVolume); - g_object_set( G_OBJECT(vol), "volume", (gdouble)gstVolume, NULL ); - } - else - { - DEBUG_ERR("Could not find gst volume controller element!!"); - } - } - else if (ctx->baseObj.ctxId == XAOutputMixAdaptation ) - { - XAOutputMixAdaptationCtx* context = (XAOutputMixAdaptationCtx*) ctx; - guint iterator = 0; - for ( iterator = 0; iterator < context->connectedObjects->len; iterator++ ) - { - GstBin* basebin = NULL; - XAAdaptationGstCtx* bCtx = g_array_index(context->connectedObjects,XAOMixAdaptConnObj,iterator).ctx; - if(!bCtx) - { - DEBUG_ERR_A1("Context in connected objects array (index %u) is NULL!", iterator); - DEBUG_API("<-XAVolumeItfAdapt_SetVolumeLevel"); - return XA_RESULT_INTERNAL_ERROR; - } - - basebin = GST_BIN(bCtx->bin); - if(!basebin) - { - DEBUG_ERR_A1("Bin in connected objects context (index %u) is NULL!", iterator); - DEBUG_API("<-XAVolumeItfAdapt_SetVolumeLevel"); - return XA_RESULT_INTERNAL_ERROR; - } - - audiopp = gst_bin_get_by_name( basebin, "audiopp" ); - if(audiopp) - { - vol = gst_bin_get_by_name( GST_BIN(audiopp), "pp_vol" ); - } - if(vol) - { - DEBUG_INFO_A1("Setting gst level to %f",gstVolume); - g_object_set( G_OBJECT(vol), "volume", (gdouble)gstVolume, NULL ); - - XAVolumeItfAdapt_FlushBin(bCtx); - } - else - { - DEBUG_ERR_A1("Could not find gst volume controller for player %u!!", iterator); - } - } - } - DEBUG_API("<-XAVolumeItfAdapt_SetVolumeLevel"); - return res; -} - -/* - * XAresult XAVolumeItfAdapt_GetMaxVolumeLevel(void *ctx, AdaptationContextIDS ctx->baseObj.ctxId, - XAmillibel *pMaxLevel) - * @param void *ctx - Adaptation context, this will be casted to correct type regarding to contextID value given as 2nd parameter - * @param AdaptationContextIDS ctx->baseObj.ctxId - Type specifier for context, this will be used to cast ctx pointer to correct type. - * XAmillibel *pMaxLevel - Maximum volume level - * @return XAresult ret - Success value - */ -XAresult XAVolumeItfAdapt_GetMaxVolumeLevel(XAAdaptationGstCtx *ctx, XAmillibel *pMaxLevel) -{ - DEBUG_API("->XAVolumeItfAdapt_GetMaxVolumeLevel"); - - if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation && - ctx->baseObj.ctxId != XAMediaRecorderAdaptation && - ctx->baseObj.ctxId != XAOutputMixAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVolumeItfAdapt_GetMaxVolumeLevel"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL; - - DEBUG_API("<-XAVolumeItfAdapt_GetMaxVolumeLevel"); - - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAVolumeItfAdapt_SetMute(void *ctx, AdaptationContextIDS ctx->baseObj.ctxId, XAboolean mute) - * @param void *ctx - Adaptation context, this will be casted to correct type regarding to contextID value given as 2nd parameter - * @param AdaptationContextIDS ctx->baseObj.ctxId - Type specifier for context, this will be used to cast ctx pointer to correct type. - * @param XAboolean mute - status of mute value - * @return XAresult ret - Success value - */ -XAresult XAVolumeItfAdapt_SetMute(XAAdaptationGstCtx *ctx, XAboolean mute) -{ - GstElement *vol=NULL, *audiopp=NULL; - gboolean gmute = 0; - - DEBUG_API("->XAVolumeItfAdapt_SetMute"); - if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation && - ctx->baseObj.ctxId != XAMediaRecorderAdaptation && - ctx->baseObj.ctxId != XAOutputMixAdaptation ) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVolumeItfAdapt_SetMute"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if ( ctx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* context = (XAMediaPlayerAdaptationCtx*) ctx; - context->mute = mute; - audiopp = gst_bin_get_by_name( GST_BIN(context->baseObj.bin), "audiopp" ); - if(audiopp) - { - vol = gst_bin_get_by_name( GST_BIN(audiopp), "pp_vol" ); - } - if(vol) - { - if ( mute ) - { - gmute = 1; - } - else - { - gmute = 0; - } - g_object_set( G_OBJECT(vol), "mute", gmute, NULL ); - } - else - { - DEBUG_ERR("Could not find gst volume controller element!!"); - } - } - else if ( ctx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* context = (XAMediaRecorderAdaptationCtx*) ctx; - context->mute = mute; - audiopp = gst_bin_get_by_name( GST_BIN(context->baseObj.bin), "audiopp" ); - if(audiopp) - { - vol = gst_bin_get_by_name( GST_BIN(audiopp), "pp_vol" ); - } - if(vol) - { - if ( mute ) - { - gmute = 1; - } - else - { - gmute = 0; - } - g_object_set( G_OBJECT(vol), "mute", gmute, NULL ); - } - else - { - DEBUG_ERR("Could not find gst volume controller element!!"); - } - } - else if ( ctx->baseObj.ctxId == XAOutputMixAdaptation ) - { - XAOutputMixAdaptationCtx* context = (XAOutputMixAdaptationCtx*) ctx; - guint iterator = 0; - context->mute = mute; - for ( iterator = 0; iterator < context->connectedObjects->len; iterator++ ) - { - GstBin* basebin = NULL; - XAAdaptationGstCtx* bCtx = g_array_index(context->connectedObjects,XAOMixAdaptConnObj,iterator).ctx; - if(!bCtx) - { - DEBUG_ERR_A1("Context in connected objects array (index %u) is NULL!", iterator); - DEBUG_API("<-XAVolumeItfAdapt_SetMute"); - return XA_RESULT_INTERNAL_ERROR; - } - - basebin = GST_BIN(bCtx->bin); - if(!basebin) - { - DEBUG_ERR_A1("Bin in connected objects context (index %u) is NULL!", iterator); - DEBUG_API("<-XAVolumeItfAdapt_SetMute"); - return XA_RESULT_INTERNAL_ERROR; - } - - audiopp = gst_bin_get_by_name( basebin, "audiopp" ); - if(audiopp) - { - vol = gst_bin_get_by_name( GST_BIN(audiopp), "pp_vol" ); - } - if(vol) - { - if ( mute ) - { - gmute = 1; - } - else - { - gmute = 0; - } - g_object_set( G_OBJECT(vol), "mute", gmute, NULL ); - } - else - { - DEBUG_ERR_A1("Could not find gst volume controller for player %u!!", iterator); - } - } - } - DEBUG_API("<-XAVolumeItfAdapt_SetMute"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAVolumeItfAdapt_EnableStereoPosition(XAAdaptationGstCtx *ctx, XAboolean enable) - * @param XAAdaptationGstCtx *ctx - Adaptation context - * @param XAboolean enable - Enable Stereo Position - * @return XAresult - Success value - */ -XAresult XAVolumeItfAdapt_EnableStereoPosition(XAAdaptationGstCtx *ctx, XAboolean enable) -{ - DEBUG_API("->XAVolumeItfAdapt_EnableStereoPosition"); - - if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation && - ctx->baseObj.ctxId != XAMediaRecorderAdaptation && - ctx->baseObj.ctxId != XAOutputMixAdaptation ) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVolumeItfAdapt_EnableStereoPosition"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - - if ( ctx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* context = (XAMediaPlayerAdaptationCtx*) ctx; - context->isStereoPosition = enable; - } - else if ( ctx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* context = (XAMediaRecorderAdaptationCtx*) ctx; - context->isStereoPosition = enable; - } - else if ( ctx->baseObj.ctxId == XAOutputMixAdaptation ) - { - XAOutputMixAdaptationCtx* context = (XAOutputMixAdaptationCtx*) ctx; - context->isStereoPosition = enable; - } - - DEBUG_API("<-XAVolumeItfAdapt_EnableStereoPosition"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAVolumeItfAdapt_SetStereoPosition(XAAdaptationGstCtx *ctx, XApermille stereoPosition) - * @param XAAdaptationGstCtx *ctx - Adaptation context - * @param XApermille stereoPosition - Stereo Position to be set - * @return XAresult - Success value - */ -XAresult XAVolumeItfAdapt_SetStereoPosition(XAAdaptationGstCtx *ctx, - XApermille stereoPosition) -{ - GstElement *audiopp = NULL, *pan = NULL; - gfloat gstPosition = 0.0; - - DEBUG_API("->XAVolumeItfAdapt_SetStereoPosition"); - if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation && - ctx->baseObj.ctxId != XAMediaRecorderAdaptation && - ctx->baseObj.ctxId != XAOutputMixAdaptation) ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_PARAMETER_INVALID; - } - - gstPosition = ( (gfloat)stereoPosition / STEREO_POSITION_RATIO ); - - if ( ctx->baseObj.ctxId == XAMediaPlayerAdaptation ) - { - XAMediaPlayerAdaptationCtx* context = (XAMediaPlayerAdaptationCtx*) ctx; - - audiopp = gst_bin_get_by_name( GST_BIN(context->baseObj.bin), "audiopp"); - if( !audiopp ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - - pan = gst_bin_get_by_name( GST_BIN(audiopp), "pp_pan" ); - if( !pan ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - - g_object_set( G_OBJECT(pan), "panorama", gstPosition, NULL ); - - XAVolumeItfAdapt_FlushBin(ctx); - } - else if ( ctx->baseObj.ctxId == XAMediaRecorderAdaptation ) - { - XAMediaRecorderAdaptationCtx* context = (XAMediaRecorderAdaptationCtx*) ctx; - - audiopp = gst_bin_get_by_name( GST_BIN(context->baseObj.bin), "audiopp"); - if( !audiopp ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - - pan = gst_bin_get_by_name( GST_BIN(audiopp), "pp_pan" ); - if( !pan ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - - g_object_set( G_OBJECT(pan), "panorama", gstPosition, NULL ); - } - - else if ( ctx->baseObj.ctxId == XAOutputMixAdaptation ) - { - XAOutputMixAdaptationCtx* context = (XAOutputMixAdaptationCtx*) ctx; - guint iterator = 0; - for ( iterator = 0; iterator < context->connectedObjects->len; iterator++ ) - { - GstBin* basebin = NULL; - XAAdaptationGstCtx* bCtx = g_array_index(context->connectedObjects,XAOMixAdaptConnObj,iterator).ctx; - if(!bCtx) - { - DEBUG_ERR_A1("Context in connected objects array (index %u) is NULL!", iterator); - return XA_RESULT_INTERNAL_ERROR; - } - - basebin = GST_BIN(bCtx->bin); - if(!basebin) - { - DEBUG_ERR_A1("Bin in connected objects context (index %u) is NULL!", iterator); - return XA_RESULT_INTERNAL_ERROR; - } - - audiopp = gst_bin_get_by_name( basebin, "audiopp" ); - if( !audiopp ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - pan = gst_bin_get_by_name( GST_BIN(audiopp), "pp_pan" ); - if( !pan ) - { - DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_INTERNAL_ERROR; - } - g_object_set( G_OBJECT(pan), "panorama", gstPosition, NULL ); - - XAVolumeItfAdapt_FlushBin(bCtx); - } - } - - DEBUG_API("<-XAVolumeItfAdapt_SetStereoPosition"); - return XA_RESULT_SUCCESS; -} - - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/gst_adaptation/xavolumeitfadaptation.h --- a/khronosfws/openmax_al/src/gst_adaptation/xavolumeitfadaptation.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVOLUMEITFADAPTATION_H -#define XAVOLUMEITFADAPTATION_H - -#include "xaadaptationgst.h" -#include "xathreadsafety.h" - -/* MACROS */ -#define STEREO_POSITION_RATIO 1000 -#define MIN_SUPPORT_VOLUME_LEVEL -1000 -#define VOLUME_LEVEL_RATIO 1000 - -/* FUNCTIONS */ - -XAresult XAVolumeItfAdapt_SetVolumeLevel(XAAdaptationGstCtx *ctx, - XAmillibel level); - -XAresult XAVolumeItfAdapt_GetMaxVolumeLevel(XAAdaptationGstCtx *ctx, - XAmillibel *pMaxLevel); - -XAresult XAVolumeItfAdapt_SetMute(XAAdaptationGstCtx *ctx, XAboolean mute); - -XAresult XAVolumeItfAdapt_EnableStereoPosition(XAAdaptationGstCtx *ctx, - XAboolean enable); - -XAresult XAVolumeItfAdapt_SetStereoPosition(XAAdaptationGstCtx *ctx, - XApermille stereoPosition); - -#endif /* XAVOLUMEITFADAPTATION_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/ledarray/xaledarraydevice.c --- a/khronosfws/openmax_al/src/ledarray/xaledarraydevice.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,348 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaledarraydevice.h" -#include "xaledarrayitf.h" -#include "xaconfigextensionsitf.h" -#include "xadynintmgmtitf.h" -#include "xathreadsafety.h" -#include "xaledarrayadaptctx.h" - -/* Static mapping of enumeration XALEDArrayDeviceInterfaces to interface iids */ -static const XAInterfaceID* XALEDArrayDeviceItfIIDs[LEDARRAY_ITFCOUNT]= -{ - &XA_IID_OBJECT, - &XA_IID_LED, - &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, -}; - - -/***************************************************************************** - * Global methods - *****************************************************************************/ - -/* XAResult XALEDArrayDeviceImpl_Create - * Description: Create object - */ -XAresult XALEDArrayDeviceImpl_CreateLEDArrayDevice(FrameworkMap* mapper, - XAObjectItf* pDevice, - XAuint32 deviceID, - XAuint32 numInterfaces, - const XAInterfaceID * pInterfaceIds, - const XAboolean * pInterfaceRequired) -{ - - - XAuint8 itfIndex = 0; - - XALEDArrayDeviceImpl* pImpl = NULL; - XAObjectItfImpl* pBaseObj = NULL; - - - DEBUG_API("->XALEDArrayDeviceImpl_Create"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSLEDArray); - - if( !pDevice ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayDeviceImpl_Create"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* instantiate object implementation */ - pImpl = (XALEDArrayDeviceImpl*)calloc(1,sizeof(XALEDArrayDeviceImpl)); - if( !pImpl ) - { - /* memory allocation failed */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XALEDArrayDeviceImpl_Create"); - return XA_RESULT_MEMORY_FAILURE; - } - pBaseObj = &pImpl->baseObj; - - - - /* Initialize base object default implementation */ - XAObjectItfImpl_Init(pBaseObj, - LEDARRAY_ITFCOUNT, - XALEDArrayDeviceItfIIDs, - XALEDArrayDeviceImpl_DoRealize, - XALEDArrayDeviceImpl_DoResume, - XALEDArrayDeviceImpl_FreeResources); - - /* Mark interfaces that need to be exposed */ - /* Implicit and mandated interfaces */ - pBaseObj->interfaceMap[LEDARRAY_LEDARRAYITF].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[LEDARRAY_DIMITF].required = XA_BOOLEAN_TRUE; - - /* Explicit interfaces */ - if( (numInterfaces != 0) && pInterfaceIds && pInterfaceRequired ) - { - /* Check required interfaces */ - for( itfIndex = 0; itfIndex < numInterfaces; itfIndex++ ) - { - /* If mapEntry is null then required interface is not supported.*/ - XAObjItfMapEntry *entry = - XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIndex]); - if( !entry ) - { - if( pInterfaceRequired[itfIndex] ) - { - /* required interface cannot be accommodated - fail creation */ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("Required interface not found - abort creation!"); - DEBUG_API("<-XALEDArrayDeviceImpl_Create"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - else - { - DEBUG_INFO("Requested (not required) interface not found - continue creation"); - } - } - else - { - entry->required = XA_BOOLEAN_TRUE; - } - } - } - - - /* This code is put here to return Feature Not Supported since adaptation is not present*/ - /*************************************************/ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("Required interface not found - abort creation!"); - DEBUG_API("<-XALEDArrayDeviceImpl_Create"); - return XA_RESULT_FEATURE_UNSUPPORTED; - /*************************************************/ - -/* // Initialize XALEDArrayDeviceImpl variables - pImpl->deviceID = deviceID; - pImpl->adaptationCtx = XALEDArrayAdapt_Create(pImpl->deviceID); - - // Set ObjectItf to point to newly created object - *pDevice = (XAObjectItf)&(pBaseObj->self); - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_API("<-XALEDArrayDeviceImpl_Create"); - return XA_RESULT_SUCCESS;*/ -} - -/* XAResult XALEDArrayDeviceImpl_QueryNumSupportedInterfaces - * Description: Statically query number of supported interfaces - */ -XAresult XALEDArrayDeviceImpl_QueryNumSupportedInterfaces( XAuint32 *pNumSupportedInterfaces ) -{ - DEBUG_API("->XALEDArrayDeviceImpl_QueryNumSupportedInterfaces"); - if( pNumSupportedInterfaces ) - { - - *pNumSupportedInterfaces = LEDARRAY_ITFCOUNT; - - DEBUG_API_A1("<-XALEDArrayDeviceImpl_QueryNumSupportedInterfaces - %ld", *pNumSupportedInterfaces ); - return XA_RESULT_SUCCESS; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayDeviceImpl_QueryNumSupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } -} -/* XAResult XALEDArrayDeviceImpl_QuerySupportedInterfaces - * Description: Statically query supported interfaces - */ -XAresult XALEDArrayDeviceImpl_QuerySupportedInterfaces( XAuint32 index, - XAInterfaceID * pInterfaceId ) -{ - DEBUG_API("->XALEDArrayDeviceImpl_QuerySupportedInterfaces"); - - - if( index >= LEDARRAY_ITFCOUNT || !pInterfaceId ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayDeviceImpl_QuerySupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } - else - { - *pInterfaceId = *(XALEDArrayDeviceItfIIDs[index]); - - DEBUG_API("<-XALEDArrayDeviceImpl_QuerySupportedInterfaces"); - return XA_RESULT_SUCCESS; - - } - -} - - -/***************************************************************************** - * base object XAObjectItfImpl methods - *****************************************************************************/ - -/* XAresult XALEDArrayDeviceImpl_DoRealize( XAObjectItf self ) - * Description: Realize all implicit and explicitly wanted interfaces. - * Create and initialize implementation-specific variables. - * Called from base object XAObjectItfImpl - */ -XAresult XALEDArrayDeviceImpl_DoRealize( XAObjectItf self ) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAuint8 itfIdx = 0; - XALEDArrayDeviceImpl* pObjImpl = (XALEDArrayDeviceImpl*)(pObj); - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XALEDArrayDeviceImpl_DoRealize"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSLEDArray); - - /* check casting from correct pointer type */ - if( !pObjImpl || pObj != pObjImpl->baseObj.self ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayDeviceImpl_DoRealize"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XALEDArrayAdapt_PostInit( (XAAdaptationGstCtx*)pObjImpl->adaptationCtx ); - if( ret != XA_RESULT_SUCCESS ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR_A1("Error: %d",ret); - DEBUG_API("<-XALEDArrayDeviceImpl_DoRealize"); - return ret; - } - - /* Realize all implicit and explicitly wanted interfaces */ - for( itfIdx = 0; itfIdx < LEDARRAY_ITFCOUNT; itfIdx++) - { - if( !(pObj->interfaceMap[itfIdx].pItf) && - pObj->interfaceMap[itfIdx].required ) - { - void *pItf = NULL; - switch( itfIdx ) - { - case LEDARRAY_LEDARRAYITF: - pItf = XALEDArrayItfImpl_Create( pObjImpl->adaptationCtx ); - break; - case LEDARRAY_CONFIGEXTENSIONITF: - pItf = XAConfigExtensionsItfImpl_Create(); - break; - case LEDARRAY_DIMITF: - pItf = XADIMItfImpl_Create(); - break; - default: - break; - } - if( !pItf ) - { - /* memory allocation failed */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XALEDArrayDeviceImpl_DoRealize"); - return XA_RESULT_MEMORY_FAILURE; - } - else - { - pObj->interfaceMap[itfIdx].pItf = pItf; - } - } - } - - pObj->state = XA_OBJECT_STATE_REALIZED; - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - - DEBUG_API("<-XALEDArrayDeviceImpl_DoRealize"); - return XA_RESULT_SUCCESS; -} - -/* XAresult XALEDArrayDeviceImpl_DoResume - * Description: Resume object from suspended state - */ -XAresult XALEDArrayDeviceImpl_DoResume(XAObjectItf self) -{ - DEBUG_API("->XALEDArrayDeviceImpl_DoResume"); - DEBUG_API("<-XALEDArrayDeviceImpl_DoResume"); - /* This implementation does not support suspended state */ - return XA_RESULT_PRECONDITIONS_VIOLATED; -} - -/* void XALEDArrayDeviceImpl_FreeResources - * Description: Free all resources reserved at XALEDArrayDeviceImpl_DoRealize() - */ -void XALEDArrayDeviceImpl_FreeResources(XAObjectItf self) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XALEDArrayDeviceImpl* pImpl = (XALEDArrayDeviceImpl*)(*self); - XAuint8 itfIdx = 0; - DEBUG_API("->XALEDArrayDeviceImpl_FreeResources"); - XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSLEDArray); - assert( pObj && pImpl && pObj == pObj->self ); - - if ( pImpl->adaptationCtx != NULL ) - { - XALEDArrayAdapt_Destroy( (XAAdaptationGstCtx*)pImpl->adaptationCtx ); - pImpl->adaptationCtx = NULL; - } - - /* free all allocated interfaces */ - for(itfIdx = 0; itfIdx < LEDARRAY_ITFCOUNT; itfIdx++) - { - void *pItf = pObj->interfaceMap[itfIdx].pItf; - if(pItf) - { - switch(itfIdx) - { - case LEDARRAY_LEDARRAYITF: - XALEDArrayItfImpl_Free( pItf ); - break; - case LEDARRAY_CONFIGEXTENSIONITF: - XAConfigExtensionsItfImpl_Free( pItf ); - break; - case LEDARRAY_DIMITF: - XADIMItfImpl_Free( pItf ); - break; - - default: - break; - } - pObj->interfaceMap[itfIdx].pItf = NULL; - } - } - - if ( pImpl->adaptationCtx != NULL ) - { - XALEDArrayAdapt_Destroy( (XAAdaptationGstCtx*)pImpl->adaptationCtx ); - pImpl->adaptationCtx = NULL; - } - - XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSLEDArray); - DEBUG_API("<-XALEDArrayDeviceImpl_FreeResources"); - - return; -} -/* END OF FILE */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/ledarray/xaledarraydevice.h --- a/khronosfws/openmax_al/src/ledarray/xaledarraydevice.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XALEDARRAYDEVICE_H -#define XALEDARRAYDEVICE_H - -#include "openmaxalwrapper.h" -#include "xaobjectitf.h" -#include "xaglobals.h" - -#include "xaadptbasectx.h" -/** MACROS **/ - - -/** TYPES **/ - - -/** ENUMERATIONS **/ -/* Enumeration for interfaces that LEDArrayDevice supports. */ -typedef enum -{ - LEDARRAY_OBJECTITF, - LEDARRAY_LEDARRAYITF, - LEDARRAY_CONFIGEXTENSIONITF, - LEDARRAY_DIMITF, - LEDARRAY_ITFCOUNT -} XALEDArrayDeviceInterfaces; - -/** STRUCTURES **/ -/* Specification for LEDArrayDeviceImpl. */ -typedef struct XALEDArrayDeviceImpl_ -{ - /* Parent for XALEDArrayDeviceImpl */ - XAObjectItfImpl baseObj; - - /* variables */ - XAuint32 deviceID; - - XAAdaptationBaseCtx* adaptationCtx; - -} XALEDArrayDeviceImpl; - - -/** METHODS **/ - -/* base object XAObjectItfImpl methods */ -XAresult XALEDArrayDeviceImpl_DoRealize(XAObjectItf self); -XAresult XALEDArrayDeviceImpl_DoResume(XAObjectItf self); -void XALEDArrayDeviceImpl_FreeResources(XAObjectItf self); - -#endif /* XALEDARRAYDEVICE_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/ledarray/xaledarrayitf.c --- a/khronosfws/openmax_al/src/ledarray/xaledarrayitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,252 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xaledarrayitf.h" - -#include "xaledarrayitfadaptation.h" - -#include "xathreadsafety.h" - -/* XALEDArrayItfImpl* GetImpl(XALEDArrayItf self) - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XALEDArrayItfImpl* GetImpl(XALEDArrayItf self) -{ - if( self ) - { - XALEDArrayItfImpl* impl = (XALEDArrayItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/***************************************************************************** - * Base interface XALEDArrayItf implementation - *****************************************************************************/ -/* - * XAresult XALEDArrayItfImpl_ActivateLEDArray ( XALEDArrayItf self, - * XAuint32 lightMask ) - * Description: Activates or deactivates individual LEDs in an array of LEDs. - */ -XAresult XALEDArrayItfImpl_ActivateLEDArray ( XALEDArrayItf self, - XAuint32 lightMask ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XALEDArrayItfImpl* impl = GetImpl(self); - - DEBUG_API("->XALEDArrayItfImpl_ActivateLEDArray"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSLEDArray); - - if( !impl || lightMask > LED_COUNT) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayItfImpl_ActivateLEDArray"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is ligtMask mode changed */ - if( impl->lightMask != lightMask ) - { - - ret = XALEDArrayItfAdapt_ActivateLEDArray( (XAAdaptationGstCtx*)impl->adapCtx, lightMask ); - - if ( ret == XA_RESULT_SUCCESS ) - { - impl->lightMask = lightMask; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_API("<-XALEDArrayItfImpl_ActivateLEDArray"); - return ret; -} -/* - * XAresult XALEDArrayItfImpl_IsLEDArrayActivated ( XALEDArrayItf self, - * XAuint32 * pLightMask ) - * Description: Returns the state of each LED in an array of LEDs. - */ -XAresult XALEDArrayItfImpl_IsLEDArrayActivated ( XALEDArrayItf self, - XAuint32 * pLightMask ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XALEDArrayItfImpl* impl = GetImpl(self); - DEBUG_API("->XALEDArrayItfImpl_IsLEDArrayActivated"); - - if( !impl || !pLightMask) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayItfImpl_IsLEDArrayActivated"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pLightMask = impl->lightMask; - - if( *pLightMask ) - { - DEBUG_API("The LED is on."); - } - else - { - DEBUG_API("The LED is off."); - } - - DEBUG_API("<-XALEDArrayItfImpl_IsLEDArrayActivated"); - return ret; -} -/* - * XAresult XALEDArrayItfImpl_SetColor ( XALEDArrayItf self, - * XAuint8 index, - * const XAHSL * pColor ) - * Description: Sets the color of an individual LED. - */ -XAresult XALEDArrayItfImpl_SetColor ( XALEDArrayItf self, - XAuint8 index, - const XAHSL * pColor ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XALEDArrayItfImpl* impl = GetImpl(self); - XAboolean support = XA_BOOLEAN_FALSE; - - DEBUG_API("->XALEDArrayItfImpl_SetColor"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSLEDArray); - - if( !impl || index > LED_COUNT - 1 || !pColor ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayItfImpl_SetColor"); - return XA_RESULT_PARAMETER_INVALID; - } - - support = ( COLOR_MASK >> index ) & 0x1; - if( !support ) /* Not supporting color*/ - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED: not supporting color"); - DEBUG_API("<-XALEDArrayItfImpl_SetColor"); - return XA_RESULT_PRECONDITIONS_VIOLATED; - } - else - { - - ret = XALEDArrayItfAdapt_SetColor( (XAAdaptationGstCtx*)impl->adapCtx, index, pColor); - - if ( ret == XA_RESULT_SUCCESS ) - { - impl->color = *pColor; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSLEDArray); - DEBUG_API("<-XALEDArrayItfImpl_SetColor"); - return ret; -} -/* - * XAresult XALEDArrayItfImpl_GetColor ( XALEDArrayItf self, - * XAuint8 index, - * const XAHSL * pColor ) - * Description: Returns the color of an individual LED. - */ -XAresult XALEDArrayItfImpl_GetColor ( XALEDArrayItf self, - XAuint8 index, - XAHSL * pColor ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XALEDArrayItfImpl* impl = GetImpl(self); - XAboolean support = XA_BOOLEAN_FALSE; - DEBUG_API("->XALEDArrayItfImpl_GetColor"); - - if( !impl || index > LED_COUNT - 1 || !pColor ) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XALEDArrayItfImpl_GetColor"); - return XA_RESULT_PARAMETER_INVALID; - } - - - support = ( COLOR_MASK >> index ) & 0x1; - if( !support ) /* Not supporting color*/ - { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED: not supporting color"); - DEBUG_API("<-XALEDArrayItfImpl_GetColor"); - return XA_RESULT_PRECONDITIONS_VIOLATED; - } - else - { - *pColor = impl->color; - } - - DEBUG_API_A3("<-XALEDArrayItfImpl_GetColor: hue = %ld, saturation = %d, lightness = %d", pColor->hue, pColor->saturation, pColor->lightness); - return ret; -} - -/***************************************************************************** - * XALEDArrayItfImpl -specific methods - *****************************************************************************/ - - -/* XALEDArrayItfImpl* XALEDArrayItfImpl_Create() - * Description: Allocate and initialize LEDArrayItfImpl - */ -XALEDArrayItfImpl* XALEDArrayItfImpl_Create( XAAdaptationBaseCtx *adapCtx ) -{ - XALEDArrayItfImpl* self = (XALEDArrayItfImpl*) - calloc(1,sizeof(XALEDArrayItfImpl)); - DEBUG_API("->XALEDArrayItfImpl_Create"); - if( self ) - { - /* init itf default implementation */ - self->itf.ActivateLEDArray = XALEDArrayItfImpl_ActivateLEDArray; - self->itf.IsLEDArrayActivated = XALEDArrayItfImpl_IsLEDArrayActivated; - self->itf.SetColor = XALEDArrayItfImpl_SetColor; - self->itf.GetColor = XALEDArrayItfImpl_GetColor; - - /* init variables */ - self->lightMask = 0; - self->color.hue = 0; - self->color.saturation = 0; - self->color.lightness = 0; - self->adapCtx = adapCtx; - - self->self = self; - } - - DEBUG_API("<-XALEDArrayItfImpl_Create"); - return self; -} - -/* void XALEDArrayItfImpl_Free(XALEDArrayItfImpl* self) - * Description: Free all resources reserved at XALEDArrayItfImpl_Create - */ -void XALEDArrayItfImpl_Free(XALEDArrayItfImpl* self) -{ - DEBUG_API("->XALEDArrayItfImpl_Free"); - assert( self==self->self ); - free( self ); - DEBUG_API("<-XALEDArrayItfImpl_Free"); -} diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/ledarray/xaledarrayitf.h --- a/khronosfws/openmax_al/src/ledarray/xaledarrayitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XALEDARRAYITF_H -#define XALEDARRAYITF_H - -#include "xaadptbasectx.h" - -/** MACROS **/ -#define LED_COUNT 1 -#define PRIMARY_LED 0 -#define COLOR_MASK 1 - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XALEDArrayItf implementation */ -typedef struct XALEDArrayItfImpl_ -{ - /* parent interface */ - struct XALEDArrayItf_ itf; - /* pointer to self */ - struct XALEDArrayItfImpl_* self; - - /* variables */ - XAuint32 lightMask; - XAHSL color; - - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - -} XALEDArrayItfImpl; - -/** METHODS **/ - -/* Base interface XALEDArrayItf implementation - *See API Specification for method documentation - */ -XAresult XALEDArrayItfImpl_ActivateLEDArray ( XALEDArrayItf self, XAuint32 lightMask ); -XAresult XALEDArrayItfImpl_IsLEDArrayActivated ( XALEDArrayItf self, XAuint32 * pLightMask ); -XAresult XALEDArrayItfImpl_SetColor ( XALEDArrayItf self, XAuint8 index, const XAHSL * pColor ); -XAresult XALEDArrayItfImpl_GetColor ( XALEDArrayItf self, XAuint8 index, XAHSL * pColor ); -/* XALEDArrayItfImpl -specific methods */ - -XALEDArrayItfImpl* XALEDArrayItfImpl_Create( XAAdaptationBaseCtx *adapCtx ); -void XALEDArrayItfImpl_Free(XALEDArrayItfImpl* self); - - -#endif /* XALEDARRAYITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c --- a/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c Wed Aug 18 10:17:22 2010 +0300 @@ -26,12 +26,7 @@ #include "xadynintmgmtitf.h" #include "xavolumeitf.h" #include "xametadataextractionitf.h" -#include "xametadatatraversalitf.h" #include "xaplaybackrateitf.h" -#include "xaequalizeritf.h" -#include "xaimagecontrolsitf.h" -#include "xaimageeffectsitf.h" -#include "xavideopostprocessingitf.h" #include "xaconfigextensionsitf.h" #include "xathreadsafety.h" #include "xametadataadaptation.h" @@ -46,24 +41,19 @@ /* Static mapping of enumeration XAMediaPlayerInterfaces to interface iids */ static const XAInterfaceID* xaMediaPlayerItfIIDs[MP_ITFCOUNT] = { - &XA_IID_OBJECT, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_PLAY, - &XA_IID_SEEK, - &XA_IID_VOLUME, - &XA_IID_PREFETCHSTATUS, - &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICSOURCE, - &XA_IID_EQUALIZER, - &XA_IID_IMAGECONTROLS, - &XA_IID_IMAGEEFFECTS, - &XA_IID_METADATAEXTRACTION, - &XA_IID_METADATATRAVERSAL, - &XA_IID_PLAYBACKRATE, - &XA_IID_VIDEOPOSTPROCESSING, - &XA_IID_NOKIAVOLUMEEXT, - &XA_IID_NOKIALINEARVOLUME, - &XA_IID_STREAMINFORMATION + &XA_IID_OBJECT, + &XA_IID_DYNAMICINTERFACEMANAGEMENT, + &XA_IID_PLAY, + &XA_IID_SEEK, + &XA_IID_VOLUME, + &XA_IID_PREFETCHSTATUS, + &XA_IID_CONFIGEXTENSION, + &XA_IID_DYNAMICSOURCE, + &XA_IID_METADATAEXTRACTION, + &XA_IID_PLAYBACKRATE, + &XA_IID_NOKIAVOLUMEEXT, + &XA_IID_NOKIALINEARVOLUME, + &XA_IID_STREAMINFORMATION }; /* Global methods */ @@ -164,13 +154,8 @@ } else { /* weed out unsupported content-aware itf's */ - if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx - == MP_SEEKITF || entry->mapIdx == MP_EQUALIZERITF - || entry->mapIdx == MP_VOLUMEITF)) || (mediaType - == XA_MEDIATYPE_AUDIO && (entry->mapIdx - == MP_IMAGECONTROLSITF || entry->mapIdx - == MP_IMAGEEFFECTSITF || entry->mapIdx - == MP_VIDEOPOSTPROCESSINGITF))) + if ((mediaType == XA_MEDIATYPE_IMAGE && (entry->mapIdx == MP_SEEKITF + || entry->mapIdx == MP_VOLUMEITF))) { entry->required = XA_BOOLEAN_FALSE; if (pInterfaceRequired[itfIdx]) @@ -196,12 +181,8 @@ /* Mark interfaces that can be handled dynamically */ /* Mandated dynamic itfs */ - pBaseObj->interfaceMap[MP_EQUALIZERITF].isDynamic = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MP_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; pBaseObj->interfaceMap[MP_METADATAEXTRACTIONITF].isDynamic = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MP_METADATATRAVERSALITF].isDynamic - = XA_BOOLEAN_TRUE; pBaseObj->interfaceMap[MP_PLAYBACKRATEITF].isDynamic = XA_BOOLEAN_TRUE; /*Set ObjectItf to point to newly created object*/ @@ -258,15 +239,6 @@ pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxMMF; } - else - { - pPlayerImpl->adaptationCtxGst = XAMediaPlayerAdapt_Create( - pPlayerImpl->dataSrc, pPlayerImpl->bankSrc, - pPlayerImpl->audioSnk, pPlayerImpl->imageVideoSnk, - pPlayerImpl->vibra, pPlayerImpl->LEDArray); - - pPlayerImpl->curAdaptCtx = pPlayerImpl->adaptationCtxGst; - } pPlayerImpl->curAdaptCtx->capslist = capabilities; pPlayerImpl->curAdaptCtx->fwtype = fwType; @@ -401,10 +373,6 @@ pItf = XAMetadataExtractionItfImpl_Create( pImpl->curAdaptCtx); break; - case MP_METADATATRAVERSALITF: - pItf = XAMetadataTraversalItfImpl_Create( - pImpl->curAdaptCtx); - break; case MP_PLAYBACKRATEITF: pItf = XAPlaybackRateItfImpl_Create(pImpl); break; @@ -416,20 +384,6 @@ case MP_DYNAMICSOURCEITF: pItf = XADynamicSourceItfImpl_Create(pImpl->curAdaptCtx); break; - case MP_EQUALIZERITF: - pItf = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx); - break; -#ifdef OMAX_CAMERABIN - case MP_IMAGECONTROLSITF: - pItf = XAImageControlsItfImpl_Create(pImpl->curAdaptCtx); - break; - case MP_IMAGEEFFECTSITF: - pItf = XAImageEffectsItfImpl_Create(pImpl->curAdaptCtx); - break; - case MP_VIDEOPOSTPROCESSINGITF: - pItf = XAVideoPostProcessingItfImpl_Create(pImpl->curAdaptCtx); - break; -#endif case MP_NOKIAVOLUMEEXT: pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx); break; @@ -464,11 +418,7 @@ ret = XAMediaPlayerAdaptMMF_PostInit( (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); } - else - { - ret = XAMediaPlayerAdapt_PostInit( - (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); - } + if (ret != XA_RESULT_SUCCESS) { XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); @@ -533,9 +483,6 @@ case MP_METADATAEXTRACTIONITF: XAMetadataExtractionItfImpl_Free(pItf); break; - case MP_METADATATRAVERSALITF: - XAMetadataTraversalItfImpl_Free(pItf); - break; case MP_PLAYBACKRATEITF: XAPlaybackRateItfImpl_Free(pItf); break; @@ -545,20 +492,6 @@ case MP_DYNAMICSOURCEITF: XADynamicSourceItfImpl_Free(pItf); break; - case MP_EQUALIZERITF: - XAEqualizerItfImpl_Free(pItf); - break; -#ifdef OMAX_CAMERABIN - case MP_IMAGECONTROLSITF: - XAImageControlsItfImpl_Free(pItf); - break; - case MP_IMAGEEFFECTSITF: - XAImageEffectsItfImpl_Free(pItf); - break; - case MP_VIDEOPOSTPROCESSINGITF: - XAVideoPostProcessingItfImpl_Free(pItf); - break; -#endif case MP_NOKIAVOLUMEEXT: XANokiaVolumeExtItfImpl_Free(pItf); break; @@ -581,11 +514,6 @@ XAMediaPlayerAdaptMMF_Destroy( (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); } - else - { - XAMediaPlayerAdapt_Destroy( - (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); - } } XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); @@ -615,22 +543,9 @@ mapEntry->pItf = XAMetadataExtractionItfImpl_Create( pImpl->curAdaptCtx); break; - case MP_METADATATRAVERSALITF: - mapEntry->pItf = XAMetadataTraversalItfImpl_Create( - pImpl->curAdaptCtx); - break; case MP_PLAYBACKRATEITF: mapEntry->pItf = XAPlaybackRateItfImpl_Create(pImpl); break; - case MP_EQUALIZERITF: - mapEntry->pItf - = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx); - break; -#ifdef OMAX_CAMERABIN - case MP_IMAGEEFFECTSITF: - mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->curAdaptCtx ); - break; -#endif default: DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id") ; @@ -683,20 +598,9 @@ case MP_METADATAEXTRACTIONITF: XAMetadataExtractionItfImpl_Free(mapEntry->pItf); break; - case MP_METADATATRAVERSALITF: - XAMetadataTraversalItfImpl_Free(mapEntry->pItf); - break; case MP_PLAYBACKRATEITF: XAPlaybackRateItfImpl_Free(mapEntry->pItf); break; - case MP_EQUALIZERITF: - XAEqualizerItfImpl_Free(mapEntry->pItf); - break; -#ifdef OMAX_CAMERABIN - case MP_IMAGEEFFECTSITF: - XAImageEffectsItfImpl_Free(mapEntry->pItf); - break; -#endif default: DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id") ; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediaplayer/xamediaplayer.h --- a/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.h Wed Aug 18 10:17:22 2010 +0300 @@ -21,7 +21,6 @@ #include "openmaxalwrapper.h" #include "xaglobals.h" #include "xaobjectitf.h" -#include "xamediaplayeradaptctx.h" #include "xamediaplayeradaptctxmmf.h" #include "xacapabilitiesmgr.h" /** MACROS **/ @@ -40,13 +39,8 @@ MP_PREFETCHSTATUSITF, MP_CONFIGEXTENSIONITF, MP_DYNAMICSOURCEITF, - MP_EQUALIZERITF, - MP_IMAGECONTROLSITF, - MP_IMAGEEFFECTSITF, MP_METADATAEXTRACTIONITF, - MP_METADATATRAVERSALITF, MP_PLAYBACKRATEITF, - MP_VIDEOPOSTPROCESSINGITF, MP_NOKIAVOLUMEEXT, MP_NOKIALINEARVOLUME, MP_STREAMINFORMATIONITF, diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediaplayer/xaplaybackrateitf.c --- a/khronosfws/openmax_al/src/mediaplayer/xaplaybackrateitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xaplaybackrateitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -20,7 +20,6 @@ #include #include "xaplaybackrateitf.h" -#include "xaplaybackrateitfadaptation.h" #include "xaplaybackrateitfadaptationmmf.h" #include "xathreadsafety.h" @@ -57,11 +56,7 @@ return XA_RESULT_PARAMETER_INVALID; } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - res = XAPlaybackRateItfAdapt_SetRate((XAAdaptationGstCtx*)impl->adaptCtx, rate); - } - else if(impl->adaptCtx->fwtype == FWMgrFWMMF) + if(impl->adaptCtx->fwtype == FWMgrFWMMF) { res = XAPlaybackRateItfAdaptMMF_SetRate((XAAdaptationMMFCtx*)impl->adaptCtx, rate); } @@ -93,11 +88,8 @@ DEBUG_API("<-XAPlaybackRateItfImpl_GetRate"); return XA_RESULT_PARAMETER_INVALID; } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - *pRate = impl->currentRate; - } - else if(impl->adaptCtx->fwtype == FWMgrFWMMF) + + if(impl->adaptCtx->fwtype == FWMgrFWMMF) { *pRate = impl->currentRate; } @@ -127,12 +119,7 @@ return XA_RESULT_PARAMETER_INVALID; } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - /* set to adaptation */ - res = XAPlaybackRateItfAdapt_SetPropertyConstraints((XAAdaptationGstCtx*)impl->adaptCtx, constraints); - } - else if(impl->adaptCtx->fwtype == FWMgrFWMMF) + if(impl->adaptCtx->fwtype == FWMgrFWMMF) { /* set to adaptation */ res = XAPlaybackRateItfAdaptMMF_SetPropertyConstraints((XAAdaptationMMFCtx*)impl->adaptCtx, constraints); @@ -162,12 +149,7 @@ return XA_RESULT_PARAMETER_INVALID; } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - /* needs to be queried from adaptation */ - res = XAPlaybackRateItfAdapt_GetProperties((XAAdaptationGstCtx*)impl->adaptCtx, pProperties); - } - else if(impl->adaptCtx->fwtype == FWMgrFWMMF) + if(impl->adaptCtx->fwtype == FWMgrFWMMF) { /* needs to be queried from adaptation */ res = XAPlaybackRateItfAdaptMMF_GetProperties((XAAdaptationMMFCtx*)impl->adaptCtx, pProperties); @@ -200,12 +182,7 @@ return XA_RESULT_PARAMETER_INVALID; } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - /* needs to be queried from adaptation */ - res = XAPlaybackRateItfAdapt_GetCapabilitiesOfRate((XAAdaptationGstCtx*)impl->adaptCtx, rate, pCapabilities); - } - else if(impl->adaptCtx->fwtype == FWMgrFWMMF) + if(impl->adaptCtx->fwtype == FWMgrFWMMF) { /* needs to be queried from adaptation */ res = XAPlaybackRateItfAdaptMMF_GetCapabilitiesOfRate((XAAdaptationMMFCtx*)impl->adaptCtx, rate, pCapabilities); @@ -240,13 +217,8 @@ DEBUG_API("<-XAPlaybackRateItfImpl_GetRateRange"); return XA_RESULT_PARAMETER_INVALID; } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - /* needs to be queried from adaptation */ - res = XAPlaybackRateItfAdapt_GetRateRange((XAAdaptationGstCtx*)impl->adaptCtx, index, pMinRate, - pMaxRate,pStepSize, pCapabilities); - } - else if(impl->adaptCtx->fwtype == FWMgrFWMMF) + + if(impl->adaptCtx->fwtype == FWMgrFWMMF) { /* needs to be queried from adaptation */ res = XAPlaybackRateItfAdaptMMF_GetRateRange((XAAdaptationMMFCtx*)impl->adaptCtx, index, pMinRate, diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediaplayer/xaplayitf.c --- a/khronosfws/openmax_al/src/mediaplayer/xaplayitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xaplayitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -21,8 +21,6 @@ #include "xaplayitf.h" -#include "xaplayitfadaptation.h" - #include "xaplayitfadaptationmmf.h" #include "xathreadsafety.h" #include @@ -73,31 +71,6 @@ { ret = XAPlayItfAdaptMMF_SetPlayState(impl->pObjImpl->curAdaptCtx, state); - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_API("<-XAPlayItfImpl_SetPlayState"); - return ret; - } - - /* check is play state changed, if not do nothing */ - if (state != impl->playbackState) - { - if (state == XA_PLAYSTATE_PLAYING) - { - XAPlayItfAdaptGST_GetPosition( - (XAAdaptationGstCtx*) impl->adapCtx, - &(impl->lastPosition)); - } - ret = XAPlayItfAdaptGST_SetPlayState(impl->adapCtx, state); - - if (ret == XA_RESULT_SUCCESS) - { - impl->playbackState = state; - if (state == XA_PLAYSTATE_STOPPED || state == XA_PLAYSTATE_PAUSED) - { - impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; - impl->lastPosition = 0; - } - } } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); @@ -131,10 +104,6 @@ ret = XAPlayItfAdaptMMF_GetPlayState(impl->pObjImpl->curAdaptCtx, pState); } - else - { - *pState = impl->playbackState; - } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); @@ -167,11 +136,6 @@ ret = XAPlayItfAdaptMMF_GetDuration(impl->pObjImpl->curAdaptCtx, pMsec); } - else - { - ret = XAPlayItfAdaptGST_GetDuration( - (XAAdaptationGstCtx*) impl->adapCtx, pMsec); - } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); @@ -206,19 +170,6 @@ ret = XAPlayItfAdaptMMF_GetPosition(impl->pObjImpl->curAdaptCtx, pMsec); } - else - { - - if (impl->playbackState == XA_PLAYSTATE_STOPPED) - { - *pMsec = 0; - DEBUG_API("<-XAPlayItfImpl_GetPosition"); - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - return XA_RESULT_SUCCESS; - } - ret = XAPlayItfAdaptGST_GetPosition( - (XAAdaptationGstCtx*) impl->adapCtx, pMsec); - } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XAPlayItfImpl_GetPosition"); @@ -289,7 +240,8 @@ | XA_PLAYEVENT_HEADMOVING | XA_PLAYEVENT_HEADSTALLED))) { /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); return XA_RESULT_PARAMETER_INVALID; } @@ -307,29 +259,6 @@ return ret; } - /* enable position tracking if client wants so */ - if ((eventFlags & (XA_PLAYEVENT_HEADATMARKER | XA_PLAYEVENT_HEADATNEWPOS)) - && impl->adapCtx && !impl->positionupdateOn) - { - ret = XAPlayItfAdapt_EnablePositionTracking( - (XAAdaptationGstCtx*) impl->adapCtx, XA_BOOLEAN_TRUE); - if (ret == XA_RESULT_SUCCESS) - { - impl->positionupdateOn = XA_BOOLEAN_TRUE; - } - } - else if (!(eventFlags & (XA_PLAYEVENT_HEADATMARKER - | XA_PLAYEVENT_HEADATNEWPOS)) && impl->adapCtx - && impl->positionupdateOn) - { - ret = XAPlayItfAdapt_EnablePositionTracking( - (XAAdaptationGstCtx*) impl->adapCtx, XA_BOOLEAN_FALSE); - if (ret == XA_RESULT_SUCCESS) - { - impl->positionupdateOn = XA_BOOLEAN_FALSE; - } - } - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XAPlayItfImpl_SetCallbackEventsMask"); return ret; @@ -608,7 +537,6 @@ void XAPlayItfImpl_AdaptCb(void *pHandlerCtx, XAAdaptEvent *event) { XAPlayItfImpl* impl = (XAPlayItfImpl*) pHandlerCtx; - XAuint32 newpos = 0; DEBUG_API("->XAPlayItfImpl_AdaptCb"); XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); @@ -629,101 +557,6 @@ return; } - /* check position update events */ - if (event->eventid == XA_ADAPT_POSITION_UPDATE_EVT) - { - assert(event->data); - newpos = *((XAuint32*) (event->data)); - DEBUG_API_A1("Position update from adaptation: new position %lu ms",newpos); - - /* Check is looping start file playing before marker position */ - if (newpos < impl->markerPosition || impl->lastPosition > newpos) - { - DEBUG_INFO("Restart looping, clear marker position callback flag."); - impl->isMarkerPosCbSend = XA_BOOLEAN_FALSE; - } - - /* check if marker passed and callback needed */ - if ((impl->markerPosition != NO_POSITION) && (impl->eventFlags - & XA_PLAYEVENT_HEADATMARKER)) - { - if (impl->callback && (((impl->lastPosition - < impl->markerPosition) - && (newpos > impl->markerPosition)) || (newpos - == impl->markerPosition))) - { - /* Check is callback already send */ - if (impl->isMarkerPosCbSend != XA_BOOLEAN_TRUE) - { - impl->callback(impl->cbPtrToSelf, impl->cbcontext, - XA_PLAYEVENT_HEADATMARKER); - impl->isMarkerPosCbSend = XA_BOOLEAN_TRUE; - } - } - } - /* check if update period passed and callback needed */ - if ((impl->positionUpdatePeriod > 0) && (impl->eventFlags - & XA_PLAYEVENT_HEADATNEWPOS) && impl->callback) - { - if ((XAuint32) ((impl->lastPosition) - / (impl->positionUpdatePeriod)) < (XAuint32) (newpos - / (impl->positionUpdatePeriod))) - { - impl->callback(impl->cbPtrToSelf, impl->cbcontext, - XA_PLAYEVENT_HEADATNEWPOS); - } - } - /* store position */ - impl->lastPosition = newpos; - } - - /* check other events */ - else if (event->eventid == XA_PLAYEVENT_HEADATEND) - { - impl->playbackState = XA_PLAYSTATE_STOPPED; - impl->lastPosition = 0; - /* send callback if needed */ - if ((XA_PLAYEVENT_HEADATEND & impl->eventFlags) && impl->callback) - { - impl->callback(impl->cbPtrToSelf, impl->cbcontext, - XA_PLAYEVENT_HEADATEND); - } - } - else if (event->eventid == XA_PLAYEVENT_HEADSTALLED) - { - impl->playbackState = XA_PLAYSTATE_PAUSED; - if (impl->adapCtx->fwtype == FWMgrFWMMF) - { - //XAPlayItfAdaptMMF_GetPosition((XAAdaptationGstCtx*)impl->adapCtx, &(impl->lastPosition)); - } - else - { - XAPlayItfAdaptGST_GetPosition( - (XAAdaptationGstCtx*) impl->adapCtx, - &(impl->lastPosition)); - } - /* send callback if needed */ - if ((XA_PLAYEVENT_HEADSTALLED & impl->eventFlags) && impl->callback) - { - impl->callback(impl->cbPtrToSelf, impl->cbcontext, - XA_PLAYEVENT_HEADSTALLED); - } - } - else if (event->eventid == XA_PLAYEVENT_HEADMOVING) - { - impl->playbackState = XA_PLAYSTATE_PLAYING; - /* send callback if needed */ - if ((XA_PLAYEVENT_HEADMOVING & impl->eventFlags) && impl->callback) - { - impl->callback(impl->cbPtrToSelf, impl->cbcontext, - XA_PLAYEVENT_HEADMOVING); - } - } - else - { - /* do nothing */ - } - DEBUG_API("<-XAPlayItfImpl_AdaptCb"); XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS( XATSMediaPlayer ); } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediaplayer/xaseekitf.c --- a/khronosfws/openmax_al/src/mediaplayer/xaseekitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediaplayer/xaseekitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -20,9 +20,6 @@ #include #include "xaseekitf.h" - -#include "xaseekitfadaptation.h" -#include "xaplayitfadaptation.h" #include "xathreadsafety.h" #include "xaplayitfadaptationmmf.h" #include "xaseekitfadaptationmmf.h" @@ -108,46 +105,6 @@ impl->seekMode = seekMode; } } - else - { - /* Get duration of the content */ - if (XAPlayItfAdaptGST_GetDuration( - (XAAdaptationGstCtx*) impl->adapCtx, &duration) - != XA_RESULT_SUCCESS) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetPosition"); - return XA_RESULT_PARAMETER_INVALID; - } - if (pos > duration) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetPosition"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (seekMode != XA_SEEKMODE_FAST && seekMode != XA_SEEKMODE_ACCURATE) - { - /* seek mode unsupported */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASeekItfImpl_SetPosition"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - - ret = XASeekItfAdapt_SetPosition((XAAdaptationGstCtx*) impl->adapCtx, - pos, seekMode); - if (ret == XA_RESULT_SUCCESS) - { - impl->playbackPosition = pos; - impl->seekMode = seekMode; - } - - } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XASeekItfImpl_SetPosition"); @@ -208,38 +165,6 @@ impl->endPos = endPos; } } - else - { - /* Get duration of the content */ - if (XAPlayItfAdaptGST_GetDuration( - (XAAdaptationGstCtx*) impl->adapCtx, &duration) - != XA_RESULT_SUCCESS) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetLoop"); - return XA_RESULT_PARAMETER_INVALID; - } - if (endPos > duration && endPos != XA_TIME_UNKNOWN) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASeekItfImpl_SetLoop"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XASeekItfAdapt_SetLoop((XAAdaptationGstCtx*) impl->adapCtx, - loopEnable, startPos, endPos); - if (ret == XA_RESULT_SUCCESS) - { - impl->loopEnable = loopEnable; - impl->startPos = startPos; - impl->endPos = endPos; - } - - } XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaPlayer ); DEBUG_API("<-XASeekItfImpl_SetLoop"); @@ -305,7 +230,8 @@ self->adapCtx = impl->curAdaptCtx; self->self = self; - }DEBUG_API("<-XASeekItfImpl_Create"); + } + DEBUG_API("<-XASeekItfImpl_Create"); return self; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xaaudioencoderitf.c --- a/khronosfws/openmax_al/src/mediarecorder/xaaudioencoderitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediarecorder/xaaudioencoderitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -258,7 +258,8 @@ { ret = XAAudioEncoderItfAdapt_GetEncoderSettings(impl->adapCtx, pSettings); - }DEBUG_API("<-XAAudioEncoderItfImpl_GetEncoderSettings"); + } + DEBUG_API("<-XAAudioEncoderItfImpl_GetEncoderSettings"); return ret; } @@ -292,7 +293,8 @@ self->adapCtx = impl->adaptationCtx; self->self = self; - }DEBUG_API("<-XAAudioEncoderItfImpl_Create"); + } + DEBUG_API("<-XAAudioEncoderItfImpl_Create"); return self; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.c --- a/khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,283 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xaimageencoderitf.h" - -#include "xaimageencoderitfadaptation.h" -#include "xarecorditfadaptation.h" -#include "xathreadsafety.h" -#include "xacapabilitiesmgr.h" - -#define APPROX_MAXRATIO (90/100) - -/* static XAImageEncoderItfImpl* GetImpl(XAImageEncoderItf self) - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAImageEncoderItfImpl* GetImpl(XAImageEncoderItf self) -{ - if( self ) - { - XAImageEncoderItfImpl* impl = (XAImageEncoderItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/***************************************************************************** - * Base interface XAImageEncoderItf implementation - *****************************************************************************/ - -/* XAresult XAImageEncoderItfImpl_SetImageSettings - * Description: Set image encoder settings. - */ -XAresult XAImageEncoderItfImpl_SetImageSettings(XAImageEncoderItf self, - const XAImageSettings *pSettings) -{ - XAresult res = XA_RESULT_SUCCESS; - XACapabilities temp; - XAImageEncoderItfImpl *impl = GetImpl(self); - - DEBUG_API("->XAImageEncoderItfImpl_SetImageSettings"); - XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaRecorder ); - - if( !impl || !pSettings ) - { - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaRecorder ); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEncoderItfImpl_SetImageSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_IMAGE), pSettings->encoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { -#ifdef OMAX_CAMERABIN - res = XAImageEncoderItfAdapt_SetImageSettings((XAAdaptationGstCtx*)impl->adaptCtx, pSettings); -#endif - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT( XATSMediaRecorder ); - - DEBUG_API("<-XAImageEncoderItfImpl_SetImageSettings"); - return res; -} - -/* XAresult XAImageEncoderItfImpl_GetImageSettings - * Description: Get image encoder settings. - */ -XAresult XAImageEncoderItfImpl_GetImageSettings(XAImageEncoderItf self, - XAImageSettings *pSettings) -{ - XAresult res = XA_RESULT_SUCCESS; - XAImageEncoderItfImpl *impl = GetImpl(self); - - DEBUG_API("->XAImageEncoderItfImpl_GetImageSettings"); - if( !impl || !pSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEncoderItfImpl_GetImageSettings"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { -#ifdef OMAX_CAMERABIN - res = XAImageEncoderItfAdapt_GetImageSettings((XAAdaptationGstCtx*)impl->adaptCtx, pSettings); -#endif - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XAImageEncoderItfImpl_GetImageSettings"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - - DEBUG_API("<-XAImageEncoderItfImpl_GetImageSettings"); - return res; -} - -/* XAresult XAImageEncoderItfImpl_GetSizeEstimate - * Description: Get estimated image size. - */ -XAresult XAImageEncoderItfImpl_GetSizeEstimate(XAImageEncoderItf self, - XAuint32 *pSize) -{ - XAuint32 bpp = 0; /*bytes per pixel*/ - XAuint32 compPct = 0; /*compression percentage*/ - XAImageEncoderItfImpl *impl = GetImpl(self); - XAImageSettings curSettings = {0,0,0,0,0}; - DEBUG_API("->XAImageEncoderItfImpl_GetImageSettings"); - - if( !impl || !pSize ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAImageEncoderItfImpl_GetImageSettings"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - /* calculate size estimate */ - - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { -#ifdef OMAX_CAMERABIN - XAImageEncoderItfAdapt_GetImageSettings((XAAdaptationGstCtx*)impl->adaptCtx, &curSettings); -#endif - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XAImageEncoderItfImpl_GetSizeEstimate"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - - switch(curSettings.colorFormat) - { - case XA_COLORFORMAT_MONOCHROME: - bpp = 1; - break; - case XA_COLORFORMAT_L2: - bpp = 2; - break; - case XA_COLORFORMAT_L4: - bpp = 4; - break; - case XA_COLORFORMAT_8BITRGB332: - case XA_COLORFORMAT_RAWBAYER8BIT: - case XA_COLORFORMAT_RAWBAYER8BITCOMPRESSED: - case XA_COLORFORMAT_L8: - bpp = 8; - break; - case XA_COLORFORMAT_RAWBAYER10BIT: - bpp = 10; - break; - case XA_COLORFORMAT_12BITRGB444: - case XA_COLORFORMAT_YUV444INTERLEAVED: - case XA_COLORFORMAT_YUV411PLANAR: - case XA_COLORFORMAT_YUV420PLANAR: - case XA_COLORFORMAT_YUV420SEMIPLANAR: - bpp = 12; - break; - case XA_COLORFORMAT_16BITARGB4444: - case XA_COLORFORMAT_16BITARGB1555: - case XA_COLORFORMAT_16BITRGB565: - case XA_COLORFORMAT_16BITBGR565: - case XA_COLORFORMAT_YCBYCR: - case XA_COLORFORMAT_YCRYCB: - case XA_COLORFORMAT_CBYCRY: - case XA_COLORFORMAT_CRYCBY: - case XA_COLORFORMAT_L16: - case XA_COLORFORMAT_YUV422PLANAR: - case XA_COLORFORMAT_YUV422SEMIPLANAR: - bpp = 16; - break; - case XA_COLORFORMAT_18BITRGB666: - case XA_COLORFORMAT_18BITARGB1665: - case XA_COLORFORMAT_18BITBGR666: - bpp = 18; - break; - case XA_COLORFORMAT_19BITARGB1666: - bpp = 19; - break; - case XA_COLORFORMAT_24BITRGB888: - case XA_COLORFORMAT_24BITBGR888: - case XA_COLORFORMAT_24BITARGB1887: - case XA_COLORFORMAT_24BITARGB6666: - case XA_COLORFORMAT_24BITABGR6666: - case XA_COLORFORMAT_L24: - bpp = 24; - break; - case XA_COLORFORMAT_25BITARGB1888: - bpp = 25; - break; - case XA_COLORFORMAT_32BITBGRA8888: - case XA_COLORFORMAT_32BITARGB8888: - case XA_COLORFORMAT_L32: - bpp = 32; - break; - default: - bpp = 8; - break; - } - - compPct = (1000 - (curSettings.compressionLevel*APPROX_MAXRATIO))/1000; - - /* numofpixels * colorformat(bits/pixel) * compression rate */ - *pSize = (curSettings.height * curSettings.width ) * bpp/8 * compPct; - - DEBUG_API("<-XAImageEncoderItfImpl_GetImageSettings"); - return XA_RESULT_SUCCESS; -} -/***************************************************************************** - * XAImageEncoderItfImpl -specific methods - *****************************************************************************/ - - -/* XAImageEncoderItfImpl* XAImageEncoderItfImpl_Create() - * Description: Allocate and initialize ImageEncoderItfImpl - */ -XAImageEncoderItfImpl* XAImageEncoderItfImpl_Create(XAMediaRecorderImpl* impl) -{ - XAImageEncoderItfImpl* self = (XAImageEncoderItfImpl*) - calloc(1,sizeof(XAImageEncoderItfImpl)); - //XAMediaRecorderAdaptationCtx* mCtx = (XAMediaRecorderAdaptationCtx*)(impl->adaptationCtx); - - DEBUG_API("->XAImageEncoderItfImpl_Create"); - if( self ) - { - //if(mCtx->fwtype == FWMgrFWGST) - { - /* init itf default implementation */ - self->itf.GetImageSettings = XAImageEncoderItfImpl_GetImageSettings; - self->itf.SetImageSettings = XAImageEncoderItfImpl_SetImageSettings; - self->itf.GetSizeEstimate = XAImageEncoderItfImpl_GetSizeEstimate; - } - - /* init variables */ - self->adaptCtx = impl->adaptationCtx; - - self->self = self; - } - DEBUG_API("<-XAImageEncoderItfImpl_Create"); - return self; -} - -/* void XAImageEncoderItfImpl_Free(XAImageEncoderItfImpl* self) - * Description: Free all resources reserved at XAImageEncoderItfImpl_Create() - */ -void XAImageEncoderItfImpl_Free(XAImageEncoderItfImpl* self) -{ - DEBUG_API("->XAImageEncoderItfImpl_Free"); - assert( self==self->self ); - free( self ); - DEBUG_API("<-XAImageEncoderItfImpl_Free"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.h --- a/khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAIMAGEENCODERITF_H -#define XAIMAGEENCODERITF_H - -#include "xamediarecorder.h" -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAImageEncoderItf implementation */ -typedef struct XAImageEncoderItfImpl_ -{ - /* parent interface */ - struct XAImageEncoderItf_ itf; - /* pointer to self */ - struct XAImageEncoderItfImpl_* self; - /* variables */ - XAAdaptationBaseCtx *adaptCtx; - -} XAImageEncoderItfImpl; - -/** METHODS **/ - -/* Base interface XAImageEncoderItf implementation - * See API Specification for method documentation - */ -XAresult XAImageEncoderItfImpl_SetImageSettings(XAImageEncoderItf self, - const XAImageSettings *pSettings); - -XAresult XAImageEncoderItfImpl_GetImageSettings(XAImageEncoderItf self, - XAImageSettings *pSettings); - -XAresult XAImageEncoderItfImpl_GetSizeEstimate(XAImageEncoderItf self, - XAuint32 * pSize); - - -/* XAImageEncoderItfImpl -specific methods */ -XAImageEncoderItfImpl* XAImageEncoderItfImpl_Create(XAMediaRecorderImpl* impl); -void XAImageEncoderItfImpl_Free(XAImageEncoderItfImpl* self); - -#endif /* XAIMAGEENCODERITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xamediarecorder.c --- a/khronosfws/openmax_al/src/mediarecorder/xamediarecorder.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediarecorder/xamediarecorder.c Wed Aug 18 10:17:22 2010 +0300 @@ -22,18 +22,10 @@ #include "xaaudioencoderitf.h" #include "xaconfigextensionsitf.h" #include "xadynintmgmtitf.h" -#include "xaequalizeritf.h" -#include "xaimagecontrolsitf.h" -#include "xaimageeffectsitf.h" -#include "xaimageencoderitf.h" #include "xametadatainsertionitf.h" #include "xarecorditf.h" -#include "xasnapshotitf.h" -#include "xavideoencoderitf.h" -#include "xavideopostprocessingitf.h" #include "xavolumeitf.h" #include "xametadataextractionitf.h" -#include "xametadatatraversalitf.h" #include "xathreadsafety.h" #include #include "xacapabilitiesmgr.h" @@ -42,22 +34,14 @@ /* Static mapping of enumeration XAMediaRecorderInterfaces to interface iids */ static const XAInterfaceID* xaMediaRecorderItfIIDs[MR_ITFCOUNT] = { - &XA_IID_OBJECT, - &XA_IID_AUDIOENCODER, - &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_EQUALIZER, - &XA_IID_IMAGECONTROLS, - &XA_IID_IMAGEEFFECTS, - &XA_IID_IMAGEENCODER, - &XA_IID_METADATAINSERTION, - &XA_IID_RECORD, - &XA_IID_SNAPSHOT, - &XA_IID_VIDEOENCODER, - &XA_IID_VIDEOPOSTPROCESSING, - &XA_IID_VOLUME, - &XA_IID_METADATAEXTRACTION, - &XA_IID_METADATATRAVERSAL + &XA_IID_OBJECT, + &XA_IID_AUDIOENCODER, + &XA_IID_CONFIGEXTENSION, + &XA_IID_DYNAMICINTERFACEMANAGEMENT, + &XA_IID_METADATAINSERTION, + &XA_IID_RECORD, + &XA_IID_VOLUME, + &XA_IID_METADATAEXTRACTION }; /* Global methods */ @@ -128,12 +112,7 @@ { pBaseObj->interfaceMap[MR_AUDIOENCODERITF].required = XA_BOOLEAN_TRUE; } - if (pImageVideoSrc && mediaType != XA_MEDIATYPE_AUDIO) - { - pBaseObj->interfaceMap[MR_VIDEOENCODER].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MR_IMAGEENCODERITF].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MR_SNAPSHOTITF].required = XA_BOOLEAN_TRUE; - } + pBaseObj->interfaceMap[MR_DIMITF].required = XA_BOOLEAN_TRUE; /* Explicit interfaces */ @@ -163,17 +142,8 @@ } else { /* weed out unsupported content-aware itf's */ - if (((mediaType == XA_MEDIATYPE_IMAGE || !pAudioSrc) - && (entry->mapIdx == MR_EQUALIZERITF || entry->mapIdx - == MR_VOLUMEITF || entry->mapIdx - == MR_AUDIOENCODERITF)) || ((mediaType - == XA_MEDIATYPE_AUDIO || !pImageVideoSrc) - && (entry->mapIdx == MR_IMAGECONTROLSITF - || entry->mapIdx == MR_IMAGEEFFECTSITF - || entry->mapIdx == MR_VIDEOPOSTPROCESSINGITF - || entry->mapIdx == MR_VIDEOENCODER - || entry->mapIdx == MR_IMAGEENCODERITF - || entry->mapIdx == MR_SNAPSHOTITF))) + if ((mediaType == XA_MEDIATYPE_IMAGE || !pAudioSrc) + && (entry->mapIdx == MR_VOLUMEITF || entry->mapIdx == MR_AUDIOENCODERITF)) { entry->required = XA_BOOLEAN_FALSE; if (pInterfaceRequired[itfIdx]) @@ -188,11 +158,6 @@ entry->required = XA_BOOLEAN_TRUE; } - if (entry->mapIdx == MR_SNAPSHOTITF) - { - DEBUG_ERR("SnapshotItf requested - support still mode"); - pImpl->recModes |= XA_RECMODE_STILL; - } if (entry->mapIdx == MR_RECORDITF) { DEBUG_ERR("RecordItf requested - support stream mode"); @@ -235,8 +200,6 @@ /* Mandated dynamic itfs */ pBaseObj->interfaceMap[MR_METADATAINSERTIONITF].isDynamic = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MR_EQUALIZERITF].isDynamic = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MR_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; /* Initialize XAMediaRecorderImpl variables */ pImpl->audioSrc = pAudioSrc; @@ -412,17 +375,6 @@ case MR_AUDIOENCODERITF: pItf = XAAudioEncoderItfImpl_Create(pObjImpl); break; -#ifdef OMAX_CAMERABIN - case MR_SNAPSHOTITF: - pItf = XASnapshotItfImpl_Create(pObjImpl); - break; - case MR_VIDEOENCODER: - pItf = XAVideoEncoderItfImpl_Create(pObjImpl); - break; - case MR_IMAGEENCODERITF: - pItf = XAImageEncoderItfImpl_Create(pObjImpl); - break; -#endif case MR_METADATAINSERTIONITF: pItf = XAMetadataInsertionItfImpl_Create(pObjImpl); break; @@ -432,20 +384,6 @@ XAConfigExtensionsItfImpl_SetContext(pItf, pObjImpl->adaptationCtx); break; - case MR_EQUALIZERITF: - pItf = XAEqualizerItfImpl_Create(pObjImpl->adaptationCtx); - break; -#ifdef OMAX_CAMERABIN - case MR_IMAGECONTROLSITF: - pItf = XAImageControlsItfImpl_Create( pObjImpl->adaptationCtx ); - break; - case MR_IMAGEEFFECTSITF: - pItf = XAImageEffectsItfImpl_Create( pObjImpl->adaptationCtx ); - break; - case MR_VIDEOPOSTPROCESSINGITF: - pItf = XAVideoPostProcessingItfImpl_Create( pObjImpl->adaptationCtx ); - break; -#endif case MR_VOLUMEITF: pItf = XAVolumeItfImpl_Create(pObjImpl->adaptationCtx); break; @@ -453,11 +391,6 @@ pItf = XAMetadataExtractionItfImpl_Create( pObjImpl->adaptationCtx); break; - case MR_METADATATRAVERSALITF: - pItf = XAMetadataTraversalItfImpl_Create( - pObjImpl->adaptationCtx); - break; - default: break; } @@ -522,46 +455,18 @@ case MR_DIMITF: XADIMItfImpl_Free(pItf); break; - case MR_EQUALIZERITF: - XAEqualizerItfImpl_Free(pItf); - break; -#ifdef OMAX_CAMERABIN - case MR_IMAGECONTROLSITF: - XAImageControlsItfImpl_Free(pItf); - break; - case MR_IMAGEEFFECTSITF: - XAImageEffectsItfImpl_Free(pItf); - break; - case MR_IMAGEENCODERITF: - XAImageEncoderItfImpl_Free(pItf); - break; -#endif case MR_METADATAINSERTIONITF: XAMetadataInsertionItfImpl_Free(pItf); break; case MR_RECORDITF: XARecordItfImpl_Free(pItf); break; -#ifdef OMAX_CAMERABIN - case MR_SNAPSHOTITF: - XASnapshotItfImpl_Free(pItf); - break; - case MR_VIDEOENCODER: - XAVideoEncoderItfImpl_Free(pItf); - break; - case MR_VIDEOPOSTPROCESSINGITF: - XAVideoPostProcessingItfImpl_Free(pItf); - break; -#endif case MR_VOLUMEITF: XAVolumeItfImpl_Free(pItf); break; case MR_METADATAEXTRACTIONITF: XAMetadataExtractionItfImpl_Free(pItf); break; - case MR_METADATATRAVERSALITF: - XAMetadataTraversalItfImpl_Free(pItf); - break; default: break; } @@ -618,18 +523,8 @@ case MR_METADATAINSERTIONITF: mapEntry->pItf = XAMetadataInsertionItfImpl_Create(pImpl); break; - case MR_EQUALIZERITF: - mapEntry->pItf = XAEqualizerItfImpl_Create( - pImpl->adaptationCtx); - break; -#ifdef OMAX_CAMERABIN - case MR_IMAGEEFFECTSITF: - mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->adaptationCtx ); - break; -#endif default: - DEBUG_ERR("XAMediaRecorderImpl_DoAddItf unknown id") - ; + DEBUG_ERR("XAMediaRecorderImpl_DoAddItf unknown id"); ret = XA_RESULT_FEATURE_UNSUPPORTED; break; } @@ -682,17 +577,8 @@ case MR_METADATAINSERTIONITF: XAMetadataInsertionItfImpl_Free(mapEntry->pItf); break; - case MR_EQUALIZERITF: - XAEqualizerItfImpl_Free(mapEntry->pItf); - break; -#ifdef OMAX_CAMERABIN - case MR_IMAGEEFFECTSITF: - XAImageEffectsItfImpl_Free( mapEntry->pItf ); - break; -#endif default: - DEBUG_ERR("XAMediaRecorderImpl_DoRemoveItf unknown id") - ; + DEBUG_ERR("XAMediaRecorderImpl_DoRemoveItf unknown id"); ret = XA_RESULT_FEATURE_UNSUPPORTED; break; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xamediarecorder.h --- a/khronosfws/openmax_al/src/mediarecorder/xamediarecorder.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediarecorder/xamediarecorder.h Wed Aug 18 10:17:22 2010 +0300 @@ -36,18 +36,10 @@ MR_AUDIOENCODERITF, MR_CONFIGEXTENSIONITF, MR_DIMITF, - MR_EQUALIZERITF, - MR_IMAGECONTROLSITF, - MR_IMAGEEFFECTSITF, - MR_IMAGEENCODERITF, MR_METADATAINSERTIONITF, MR_RECORDITF, - MR_SNAPSHOTITF, - MR_VIDEOENCODER, - MR_VIDEOPOSTPROCESSINGITF, MR_VOLUMEITF, MR_METADATAEXTRACTIONITF, - MR_METADATATRAVERSALITF, MR_ITFCOUNT } MRInterfaces; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xametadatainsertionitf.c --- a/khronosfws/openmax_al/src/mediarecorder/xametadatainsertionitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediarecorder/xametadatainsertionitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -64,7 +64,6 @@ } else { - if (impl->adaptCtx && impl->adaptCtx->fwtype == FWMgrFWGST) { if (impl->adaptCtx) @@ -85,7 +84,8 @@ DEBUG_API("<-XAMetadataInsertionItfImpl_CreateChildNode"); return XA_RESULT_FEATURE_UNSUPPORTED; } - }DEBUG_API("<-XAMetadataInsertionItfImpl_CreateChildNode"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_CreateChildNode"); return ret; } @@ -129,7 +129,8 @@ DEBUG_API("<-XAMetadataInsertionItfImpl_GetSupportedKeysCount"); return XA_RESULT_PARAMETER_INVALID; } - }DEBUG_API("<-XAMetadataInsertionItfImpl_GetSupportedKeysCount"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_GetSupportedKeysCount"); return ret; } @@ -173,7 +174,8 @@ DEBUG_API("<-XAMetadataInsertionItfImpl_GetKeySize"); return XA_RESULT_PARAMETER_INVALID; } - }DEBUG_API("<-XAMetadataInsertionItfImpl_GetKeySize"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_GetKeySize"); return ret; } @@ -219,7 +221,8 @@ return XA_RESULT_PARAMETER_INVALID; } - }DEBUG_API("<-XAMetadataInsertionItfImpl_GetKey"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_GetKey"); return ret; } @@ -264,7 +267,8 @@ DEBUG_API("<-XAMetadataInsertionItfImpl_GetFreeKeysEncoding"); return XA_RESULT_PARAMETER_INVALID; } - }DEBUG_API("<-XAMetadataInsertionItfImpl_GetFreeKeysEncoding"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_GetFreeKeysEncoding"); return ret; } @@ -312,7 +316,8 @@ DEBUG_API("<-XAMetadataInsertionItfImpl_GetFreeKeysEncoding"); return XA_RESULT_FEATURE_UNSUPPORTED; } - }DEBUG_API("<-XAMetadataInsertionItfImpl_InsertMetadataItem"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_InsertMetadataItem"); return ret; } @@ -399,7 +404,8 @@ sizeof(XAMetadataInfo*)); self->self = self; - }DEBUG_API("<-XAMetadataInsertionItfImpl_Create"); + } + DEBUG_API("<-XAMetadataInsertionItfImpl_Create"); return self; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xarecorditf.c --- a/khronosfws/openmax_al/src/mediarecorder/xarecorditf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mediarecorder/xarecorditf.c Wed Aug 18 10:17:22 2010 +0300 @@ -521,7 +521,8 @@ XAAdaptationBase_AddEventHandler(impl->adaptationCtx, &XARecordItfImpl_AdaptCb, XA_RECORDITFEVENTS, self); self->self = self; - }DEBUG_API("<-XARecordItfImpl_Create"); + } + DEBUG_API("<-XARecordItfImpl_Create"); return self; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xasnapshotitf.c --- a/khronosfws/openmax_al/src/mediarecorder/xasnapshotitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,597 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xasnapshotitf.h" - -#include "xasnapshotitfadaptation.h" - -#include "xathreadsafety.h" -#include "xaplayitf.h" -#include "xaglobals.h" - -extern void* vfHandle; - -/** - * static XASnapshotItfImpl* GetImpl(XASnapshotItf self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XASnapshotItfImpl* GetImpl(XASnapshotItf self) -{ - if( self ) - { - XASnapshotItfImpl* impl = (XASnapshotItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XASnapshotItf implementation - */ - -/* - This method prepares the device for snapshot to shorten the actual shooting - delay with TakeSnapshot() method. The various settings for snapshot are - set with this method: the specified number of snapshots, the output location - either to the XADataSink (if it is specified) or to memory (if no XADataSink - is specified) and then calls xaSnapshotInitiatedCallback() method. - Asynchronous. - Second call of this method before the call to TakeSnapshot() method will - reinitialize the shooting with the new parameter values. -*/ -XAresult XASnapshotItfImpl_InitiateSnapshot(XASnapshotItf self, - XAuint32 numberOfPictures, - XAuint32 fps, - XAboolean freezeViewFinder, - XADataSink sink, - xaSnapshotInitiatedCallback initiatedCallback, - xaSnapshotTakenCallback takenCallback, - void * pContext) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - XAuint32 minF = 0, maxF = 0, maxP = 0; - - DEBUG_API("->XASnapshotItfImpl_InitiateSnapshot"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - - if(!impl) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfImpl_InitiateSnapshot"); - return XA_RESULT_PARAMETER_INVALID; - } - - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - XASnapshotItfAdaptation_GetBurstFPSRange((XAAdaptationGstCtx*)impl->adapCtx,&minF,&maxF); - XASnapshotItfAdaptation_GetMaxPicsPerBurst((XAAdaptationGstCtx*)impl->adapCtx,&maxP); - - /*Check attributes and initialize local variables*/ - /*NOTE: bug in spec? - should sink attribute be a pointer?*/ - if( numberOfPictures > maxP || - (numberOfPictures!=1 && !(sink.pLocator) ) ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XASnapshotItfImpl_InitiateSnapshot -" - "XA_RESULT_PARAMETER_INVALID (numberOfPictures)"); - DEBUG_API("<-XASnapshotItfImpl_InitiateSnapshot"); - return XA_RESULT_PARAMETER_INVALID; - } - if( numberOfPictures!=1 && (fpsmaxF) ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XASnapshotItfImpl_InitiateSnapshot -" - "XA_RESULT_PARAMETER_INVALID (fps)"); - DEBUG_API("<-XASnapshotItfImpl_InitiateSnapshot"); - return XA_RESULT_PARAMETER_INVALID; - } - - impl->numberofpictures = numberOfPictures; - impl->usercontext = pContext; - impl->initcallback = initiatedCallback; - impl->takencallback = takenCallback; - impl->cbPtrToSelf = self; - impl->freezevf = freezeViewFinder; - - - if( impl->initongoing || - impl->initialized || - impl->snapshotongoing ) - { - res = XASnapshotItfAdaptation_CancelSnapshot((XAAdaptationGstCtx*)impl->adapCtx); - impl->initongoing = XA_BOOLEAN_FALSE; - impl->snapshotongoing = XA_BOOLEAN_FALSE; - } - - /* Initialize snapshot to adaptation */ - if( impl->adapCtx ) - { - impl->initongoing = XA_BOOLEAN_TRUE; - res = XASnapshotItfAdaptation_InitiateSnapshot((XAAdaptationGstCtx*)impl->adapCtx, - numberOfPictures, - fps, - freezeViewFinder, - &sink); - } - else - { - res = XA_RESULT_INTERNAL_ERROR; - } - - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_InitiateSnapshot"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API_A1("<-XASnapshotItfImpl_InitiateSnapshot (%d)", (int)res); - return res; -} - -/* - This method takes the specified number of snapshots, stores them either to - the XADataSink (if it is specified by InitiateSnapshot()) or to memory (if - no XADataSink is specified) and then calls xaSnapshotTakenCallback() - method. - */ -XAresult XASnapshotItfImpl_TakeSnapshot(XASnapshotItf self) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XASnapshotItfImpl_TakeSnapshot"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - if(!impl) - { - DEBUG_ERR("XASnapshotItfImpl_TakeSnapshot -" - "XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - res = XA_RESULT_PARAMETER_INVALID; - } - - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - if( impl->initongoing || - impl->snapshotongoing || - !impl->initialized ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XASnapshotItfImpl_TakeSnapshot -" - "XA_RESULT_PRECONDITIONS_VIOLATED"); - DEBUG_API("<-XASnapshotItfImpl_TakeSnapshot"); - return XA_RESULT_PRECONDITIONS_VIOLATED; - } - - if( impl->numberofpictures == 0 ) - { - if( impl->takencallback ) - { - impl->takencallback(impl->cbPtrToSelf, impl->usercontext, - impl->numberofpictures, NULL); - } - res = XA_RESULT_SUCCESS; - } - /*Inform adaptation to take snapshot*/ - else if( impl->adapCtx ) - { - impl->snapshotongoing = XA_BOOLEAN_TRUE; - res = XASnapshotItfAdaptation_TakeSnapshot((XAAdaptationGstCtx*)impl->adapCtx); - if( res!=XA_RESULT_SUCCESS ) - { - DEBUG_ERR_A1("Adaptation returns error %d taking snapshot!", (int)res); - impl->snapshotongoing = XA_BOOLEAN_FALSE; - } - } - else - { - res = XA_RESULT_INTERNAL_ERROR; - DEBUG_ERR("XASnapshotItfImpl_TakeSnapshot" - "-XA_RESULT_INTERNAL_ERROR "); - } - - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_TakeSnapshot"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API("<-XASnapshotItfImpl_TakeSnapshot"); - return res; -} - -/* - This method cancels an ongoing shooting session. Snapshooting needs to be - initiated again after calling this method with InitiateSnapshot method. - - Synchronous. -*/ -XAresult XASnapshotItfImpl_CancelSnapshot(XASnapshotItf self) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XASnapshotItfImpl_CancelSnapshot"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfImpl_CancelSnapshot"); - /* invalid parameter */ - res = XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - if( impl->initongoing || - impl->snapshotongoing || - impl->initialized ) - { - if( impl->adapCtx ) - { - res = XASnapshotItfAdaptation_CancelSnapshot((XAAdaptationGstCtx*)impl->adapCtx); - } - else - { - DEBUG_ERR("No adaptation context!!"); - res = XA_RESULT_INTERNAL_ERROR; - } - impl->initongoing = XA_BOOLEAN_FALSE; - impl->snapshotongoing = XA_BOOLEAN_FALSE; - impl->initialized = XA_BOOLEAN_FALSE; - } - - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_CancelSnapshot"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API_A1("<-XASnapshotItfImpl_CancelSnapshot (%d)", (int)res); - return res; -} - -/* - This method releases the given buffer. - */ -XAresult XASnapshotItfImpl_ReleaseBuffers(XASnapshotItf self, - XADataSink *image) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XASnapshotItfImpl_ReleaseBuffers"); - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - res = XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - if( image && (image->pLocator) && - *((XAuint32*)(image->pLocator)) == XA_DATALOCATOR_ADDRESS ) - { - if( ((XADataLocator_Address*)(image->pLocator))->pAddress ) - { - free(((XADataLocator_Address*)(image->pLocator))->pAddress); - } - image->pLocator = NULL; - image->pFormat = NULL; - DEBUG_API("<-XASnapshotItfImpl_ReleaseBuffers- buffers released"); - res = XA_RESULT_SUCCESS; - } - else - { - DEBUG_ERR_A1("<-XASnapshotItfImpl_ReleaseBuffers- " - "INVALID XADataSink at 0x%x", (int)image); - res = XA_RESULT_PARAMETER_INVALID; - } - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_ReleaseBuffers"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - DEBUG_API("<-XASnapshotItfImpl_ReleaseBuffers"); - return res; -} - -/* - This method tells how many pictures it is possible to - be taken during single burst. -*/ -XAresult XASnapshotItfImpl_GetMaxPicsPerBurst(XASnapshotItf self, - XAuint32 *maxNumberOfPictures) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XASnapshotItfImpl_GetMaxPicsPerBurst"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - if( !impl || !maxNumberOfPictures ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfImpl_GetMaxPicsPerBurst"); - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - if( impl->adapCtx ) - { - res = XASnapshotItfAdaptation_GetMaxPicsPerBurst((XAAdaptationGstCtx*)impl->adapCtx, maxNumberOfPictures); - } - else - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API("<-XASnapshotItfImpl_GetMaxPicsPerBurst"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_GetMaxPicsPerBurst"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API("<-XASnapshotItfImpl_GetMaxPicsPerBurst"); - return res; -} - -/* - This method tells the range of shooting rates possible in burst shooting - mode. Please note that these rates might be different depending on which - encoder and which resolution has been chosen; not all the rates can - necessarily be reached with every resolution or encoder. -*/ -XAresult XASnapshotItfImpl_GetBurstFPSRange(XASnapshotItf self, - XAuint32 *minFPS, - XAuint32 *maxFPS) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XASnapshotItfImpl_GetBurstFPSRange"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - if( !impl || !minFPS || !maxFPS ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfImpl_GetBurstFPSRange"); - return XA_RESULT_PARAMETER_INVALID; - } - - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - if( impl->adapCtx ) - { - res = XASnapshotItfAdaptation_GetBurstFPSRange((XAAdaptationGstCtx*)impl->adapCtx,minFPS,maxFPS); - } - else - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API("<-XASnapshotItfImpl_GetBurstFPSRange"); - return XA_RESULT_INTERNAL_ERROR; - } - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_GetBurstFPSRange"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API("<-XASnapshotItfImpl_GetBurstFPSRange"); - return res; -} - -/* - Toggles the shutter feedback (such as shutter sound or some visual - feedback while taking a snapshot). -*/ -XAresult XASnapshotItfImpl_SetShutterFeedback(XASnapshotItf self, - XAboolean enabled) -{ - XASnapshotItfImpl *impl = GetImpl(self); - XAresult res = XA_RESULT_SUCCESS; - - DEBUG_API("->XASnapshotItfImpl_SetShutterFeedback"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - res = XA_RESULT_PARAMETER_INVALID; - } - impl->shutterfeedback = enabled; - if(impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWGST) - { - if( impl->adapCtx ) - { - /*Inform adaptation about shutter feedback */ - res = XASnapshotItfAdaptation_SetShutterFeedback((XAAdaptationGstCtx*)impl->adapCtx, enabled); - } - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - DEBUG_API("<-XASnapshotItfImpl_GetBurstFPSRange"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_API("<-XASnapshotItfImpl_SetShutterFeedback"); - return res; -} - -/* - This method tells if the shutter feedback (such as shutter sound or some - visual feedback while taking a snapshot) is enabled. - */ -XAresult XASnapshotItfImpl_GetShutterFeedback(XASnapshotItf self, - XAboolean *enabled) -{ - XASnapshotItfImpl *impl = GetImpl(self); - DEBUG_API("->XASnapshotItfImpl_GetShutterFeedback"); - if( !impl || !enabled ) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XASnapshotItfImpl_GetShutterFeedback"); - return XA_RESULT_PARAMETER_INVALID; - } - enabled = (XAboolean*)impl->shutterfeedback; - - DEBUG_API("<-XASnapshotItfImpl_GetShutterFeedback"); - return XA_RESULT_SUCCESS; -} - -/** - * XASnapshotItfImpl -specific methods - **/ - - -/** - * XASnapshotItfImpl* XASnapshotItfImpl_Create() - * Description: Allocate and initialize SnapshotItfImpl - **/ -XASnapshotItfImpl* XASnapshotItfImpl_Create(XAMediaRecorderImpl* impl) -{ - XASnapshotItfImpl* self = (XASnapshotItfImpl*) - calloc(1,sizeof(XASnapshotItfImpl)); - - - DEBUG_API("->XASnapshotItfImpl_Create"); - if( self ) - { - /* init itf default implementation */ - self->itf.CancelSnapshot = XASnapshotItfImpl_CancelSnapshot; - self->itf.GetBurstFPSRange = XASnapshotItfImpl_GetBurstFPSRange; - self->itf.GetMaxPicsPerBurst = XASnapshotItfImpl_GetMaxPicsPerBurst; - self->itf.GetShutterFeedback = XASnapshotItfImpl_GetShutterFeedback; - self->itf.InitiateSnapshot = XASnapshotItfImpl_InitiateSnapshot; - self->itf.ReleaseBuffers = XASnapshotItfImpl_ReleaseBuffers; - self->itf.SetShutterFeedback = XASnapshotItfImpl_SetShutterFeedback; - self->itf.TakeSnapshot = XASnapshotItfImpl_TakeSnapshot; - - /* init variables */ - self->adapCtx = impl->adaptationCtx; - self->self = self; - self->cbPtrToSelf = NULL; - } - - /* Add call back function to eventhandler. */ - XAAdaptationBase_AddEventHandler( impl->adaptationCtx, &XASnapshotItfImpl_AdaptCb, XA_SNAPSHOTITFEVENTS, self ); - DEBUG_API("<-XASnapshotItfImpl_Create"); - return self; -} - -/** - * void XASnapshotItfImpl_Free(XASnapshotItfImpl* self) - * Description: Free all resources reserved at XASnapshotItfImpl_Create() - **/ -void XASnapshotItfImpl_Free(XASnapshotItfImpl* self) -{ - DEBUG_API("->XASnapshotItfImpl_Free"); - assert( self==self->self ); - /* - * Free all resources reserved at XASnapshotItfImpl_Create - */ - self->itf.CancelSnapshot(self->cbPtrToSelf); - XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XASnapshotItfImpl_AdaptCb ); - free( self ); - DEBUG_API("<-XASnapshotItfImpl_Free"); -} - -/* void XASnapshotItfImpl_AdaptCb - * Description: - * Listen adaptation callBacks from camera adaptation - */ -void XASnapshotItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) -{ - XASnapshotItfImpl* impl = (XASnapshotItfImpl*)pHandlerCtx; - DEBUG_API("->XASnapshotItfImpl_AdaptCb"); - - if(!impl) - { - DEBUG_ERR("XASnapshotItfImpl_AdaptCb, invalid context pointer!"); - return; - } - assert(event); - - if( event->eventid == XA_ADAPT_SNAPSHOT_TAKEN ) - { - DEBUG_INFO("**Snapshot taken**"); - impl->snapshotongoing = XA_BOOLEAN_FALSE; - if( impl->takencallback ) - { - if ( vfHandle && impl->freezevf ) - { - XAresult ret = XA_RESULT_SUCCESS; - XAPlayItfImpl* vf = (XAPlayItfImpl*)vfHandle; - DEBUG_INFO_A1("Using global view finder handle from %x to freeze view finder", vf); - ret = XAPlayItfImpl_SetPlayState( (XAPlayItf)&vf, XA_PLAYSTATE_PAUSED); - if ( ret != XA_RESULT_SUCCESS ) - { - DEBUG_ERR("Could not change view finder to pause"); - } - } - /* datasize used for "number taken", the pointer to - * data sink structure itself contains the data size */ - impl->takencallback(impl->cbPtrToSelf, impl->usercontext, - event->datasize, (XADataSink*)event->data); - } - } - else if( event->eventid == XA_ADAPT_SNAPSHOT_INITIATED ) - { - DEBUG_INFO("**Snapshot initiated**"); - impl->initongoing = XA_BOOLEAN_FALSE; - impl->initialized = XA_BOOLEAN_TRUE; - if( impl->initcallback ) - { - impl->initcallback(impl->cbPtrToSelf, impl->usercontext); - } - } - DEBUG_API("<-XASnapshotItfImpl_AdaptCb"); -} -/*End of file*/ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xasnapshotitf.h --- a/khronosfws/openmax_al/src/mediarecorder/xasnapshotitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XASNAPSHOTITF_H -#define XASNAPSHOTITF_H - -#include - -#include "xamediarecorder.h" - -/** MACROS **/ - -/** TYPES **/ - -/*Callbacks*/ - - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ - - -/* Definition of XASnapshotItf implementation */ -typedef struct XASnapshotItfImpl_ -{ - /* parent interface */ - struct XASnapshotItf_ itf; - /* pointer to self */ - struct XASnapshotItfImpl_* self; - - /* variables */ - XAuint32 numberofpictures; - XAboolean shutterfeedback; - xaSnapshotInitiatedCallback initcallback; - xaSnapshotTakenCallback takencallback; - void* usercontext; - XASnapshotItf cbPtrToSelf; - - - XAAdaptationBaseCtx *adapCtx; - - XAboolean snapshotongoing; - XAboolean initongoing; - XAboolean initialized; - XAboolean freezevf; - -} XASnapshotItfImpl; - -/** METHODS **/ - -/* Base interface XASnapshotItf implementation */ -XAresult XASnapshotItfImpl_InitiateSnapshot(XASnapshotItf self, - XAuint32 numberOfPictures, - XAuint32 fps, - XAboolean freezeViewFinder, - XADataSink sink, - xaSnapshotInitiatedCallback initiatedCallback, - xaSnapshotTakenCallback takenCallback, - void * pContext); - -XAresult XASnapshotItfImpl_TakeSnapshot(XASnapshotItf self); - -XAresult XASnapshotItfImpl_CancelSnapshot(XASnapshotItf self); - -XAresult XASnapshotItfImpl_ReleaseBuffers(XASnapshotItf self, - XADataSink *image); - -XAresult XASnapshotItfImpl_GetMaxPicsPerBurst(XASnapshotItf self, - XAuint32 *maxNumberOfPictures); - -XAresult XASnapshotItfImpl_GetBurstFPSRange(XASnapshotItf self, - XAuint32 *minFPS, - XAuint32 *maxFPS); - -XAresult XASnapshotItfImpl_SetShutterFeedback(XASnapshotItf self, - XAboolean enabled); - -XAresult XASnapshotItfImpl_GetShutterFeedback(XASnapshotItf self, - XAboolean *enabled); - -/* XASnapshotItfImpl -specific methods */ -XASnapshotItfImpl* XASnapshotItfImpl_Create(XAMediaRecorderImpl* impl); -void XASnapshotItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ); -void XASnapshotItfImpl_Free(XASnapshotItfImpl* self); - -#endif /* XASNAPSHOTITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xavideoencoderitf.c --- a/khronosfws/openmax_al/src/mediarecorder/xavideoencoderitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xavideoencoderitf.h" - -#include "xavideoencoderitfadaptation.h" -#include "xarecorditfadaptation.h" -#include "xacapabilitiesmgr.h" -#include "xathreadsafety.h" - - -/* static XAVideoEncoderItfImpl* GetImpl(XAVideoEncoderItf self) - * Description: Validate interface pointer and cast it to implementation pointer. - */ -static XAVideoEncoderItfImpl* GetImpl(XAVideoEncoderItf self) -{ - if( self ) - { - XAVideoEncoderItfImpl* impl = (XAVideoEncoderItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/***************************************************************************** - * Base interface XAVideoEncoderItf implementation - *****************************************************************************/ - -/* XAresult XAVideoEncoderItfImpl_SetVideoSettings - * Description: Set video encoder settings. - */ -XAresult XAVideoEncoderItfImpl_SetVideoSettings(XAVideoEncoderItf self, - XAVideoSettings *pSettings) -{ - XAresult res = XA_RESULT_SUCCESS; - XACapabilities temp; - XAuint32 recState = XA_RECORDSTATE_STOPPED; - XAVideoEncoderItfImpl *impl = GetImpl(self); - DEBUG_API("->XAVideoEncoderItfImpl_SetVideoSettings"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder); - - if( !impl || !pSettings ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoEncoderItfImpl_SetVideoSettings"); - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO), pSettings->encoderId, &temp); - if( res == XA_RESULT_SUCCESS ) - { - res = XARecordItfAdapt_GetRecordState( (XAAdaptationGstCtx*)impl->adaptCtx, &recState ); - if( res == XA_RESULT_SUCCESS ) - { - if( XA_RECORDSTATE_STOPPED == recState ) - { - res = XAVideoEncoderItfAdapt_SetVideoSettings((XAAdaptationGstCtx*)impl->adaptCtx, pSettings); - } - else - { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED"); - res = XA_RESULT_PRECONDITIONS_VIOLATED; - } - } - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder); - - DEBUG_API("<-XAVideoEncoderItfImpl_SetVideoSettings"); - return res; -} - -/* XAresult XAVideoEncoderItfImpl_GetVideoSettings - * Description: Get video encoder settings. - */ -XAresult XAVideoEncoderItfImpl_GetVideoSettings(XAVideoEncoderItf self, - XAVideoSettings *pSettings) -{ - XAresult res = XA_RESULT_SUCCESS; - XAVideoEncoderItfImpl *impl = GetImpl(self); - DEBUG_API("->XAVideoEncoderItfImpl_GetVideoSettings"); - if( !impl || !pSettings ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVideoEncoderItfImpl_GetVideoSettings"); - /* invalid parameter */ - return XA_RESULT_PARAMETER_INVALID; - } - if(impl->adaptCtx->fwtype == FWMgrFWGST) - { - res = XAVideoEncoderItfAdapt_GetVideoSettings((XAAdaptationGstCtx*)impl->adaptCtx, pSettings); - } - else - { - DEBUG_ERR("XA_RESULT_FEATURE_UNSUPPORTED"); - res = XA_RESULT_FEATURE_UNSUPPORTED; - } - - DEBUG_API("<-XAVideoEncoderItfImpl_GetVideoSettings"); - return res; -} - -/***************************************************************************** - * XAVideoEncoderItfImpl -specific methods - *****************************************************************************/ - - -/* XAVideoEncoderItfImpl* XAVideoEncoderItfImpl_Create() - * Description: Allocate and initialize VideoEncoderItfImpl - */ -XAVideoEncoderItfImpl* XAVideoEncoderItfImpl_Create( XAMediaRecorderImpl* impl ) -{ - XAVideoEncoderItfImpl* self = (XAVideoEncoderItfImpl*) - calloc(1,sizeof(XAVideoEncoderItfImpl)); - DEBUG_API("->XAVideoEncoderItfImpl_Create"); - - if( self ) - { - /* init itf default implementation */ - self->itf.GetVideoSettings = XAVideoEncoderItfImpl_GetVideoSettings; - self->itf.SetVideoSettings = XAVideoEncoderItfImpl_SetVideoSettings; - - /* init variables */ - self->adaptCtx = impl->adaptationCtx; - self->self = self; - } - DEBUG_API("<-XAVideoEncoderItfImpl_Create"); - return self; -} - -/* void XAVideoEncoderItfImpl_Free(XAVideoEncoderItfImpl* self) - * Description: Free all resources reserved at XAVideoEncoderItfImpl_Create() - */ -void XAVideoEncoderItfImpl_Free(XAVideoEncoderItfImpl* self) -{ - DEBUG_API("->XAVideoEncoderItfImpl_Free"); - assert( self==self->self ); - free( self ); - DEBUG_API("<-XAVideoEncoderItfImpl_Free"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mediarecorder/xavideoencoderitf.h --- a/khronosfws/openmax_al/src/mediarecorder/xavideoencoderitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIDEOENCODERITF_H -#define XAVIDEOENCODERITF_H - - -#include "xamediarecorder.h" -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAVideoEncoderItf implementation */ -typedef struct XAVideoEncoderItfImpl_ -{ - /* parent interface */ - struct XAVideoEncoderItf_ itf; - /* pointer to self */ - struct XAVideoEncoderItfImpl_* self; - - /* variables */ - XAAdaptationBaseCtx *adaptCtx; - -} XAVideoEncoderItfImpl; - -/** METHODS **/ - -/* Base interface XAVideoEncoderItf implementation - * See API Specification for method documentation - */ -XAresult XAVideoEncoderItfImpl_SetVideoSettings(XAVideoEncoderItf self, - XAVideoSettings *pSettings); - -XAresult XAVideoEncoderItfImpl_GetVideoSettings(XAVideoEncoderItf self, - XAVideoSettings *pSettings); - - -/* XAVideoEncoderItfImpl -specific methods */ -XAVideoEncoderItfImpl* XAVideoEncoderItfImpl_Create( XAMediaRecorderImpl* impl ); -void XAVideoEncoderItfImpl_Free(XAVideoEncoderItfImpl* self); - -#endif /* XAVIDEOENCODERITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/metadataextractor/xametadataextractor.c --- a/khronosfws/openmax_al/src/metadataextractor/xametadataextractor.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/metadataextractor/xametadataextractor.c Wed Aug 18 10:17:22 2010 +0300 @@ -22,10 +22,8 @@ #include "xadynamicsourceitf.h" #include "xadynintmgmtitf.h" #include "xametadataextractionitf.h" -#include "xametadatatraversalitf.h" #include "xaconfigextensionsitf.h" -#include "xametadataadaptctx.h" #include "xacapabilitiesmgr.h" #include "xathreadsafety.h" @@ -35,12 +33,11 @@ /* Static mapping of enumeration XAMetadataInterfaces to interface iids */ static const XAInterfaceID* xaMetadataExtractorItfIIDs[MDE_ITFCOUNT] = { - &XA_IID_OBJECT, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_METADATAEXTRACTION, - &XA_IID_METADATATRAVERSAL, - &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICSOURCE + &XA_IID_OBJECT, + &XA_IID_DYNAMICINTERFACEMANAGEMENT, + &XA_IID_METADATAEXTRACTION, + &XA_IID_CONFIGEXTENSION, + &XA_IID_DYNAMICSOURCE }; /***************************************************************************** @@ -107,8 +104,6 @@ /* Implicit and mandated interfaces */ pBaseObj->interfaceMap[MDE_METADATAEXTRACTIONITF].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[MDE_METADATATRAVERSALITF].required - = XA_BOOLEAN_TRUE; pBaseObj->interfaceMap[MDE_DYNAMICSOURCEITF].required = XA_BOOLEAN_TRUE; pBaseObj->interfaceMap[MDE_DIMITF].required = XA_BOOLEAN_TRUE; @@ -180,16 +175,8 @@ if (fwType == FWMgrFWMMF) { pImpl->adaptationCtxMMF = XAMetadataAdaptCtxMMF_Create(pDataSource); - pImpl->curAdaptCtx = pImpl->adaptationCtxMMF; } - else - { - // Create metadata adaptation context - pImpl->adaptationCtxGst = XAMetadataAdaptCtx_Create(pDataSource); - - pImpl->curAdaptCtx = pImpl->adaptationCtxGst; - } XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaPlayer); DEBUG_API("<-XAMetadataExtractorImpl_Create"); @@ -213,7 +200,8 @@ { DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); res = XA_RESULT_PARAMETER_INVALID; - }DEBUG_API_A1("<-XAMetadataExtractorImpl_QueryNumSupportedInterfaces (%d)", (int)res); + } + DEBUG_API_A1("<-XAMetadataExtractorImpl_QueryNumSupportedInterfaces (%d)", (int)res); return res; } /* XAResult XAMetadataExtractorImpl_QuerySupportedInterfaces @@ -234,7 +222,8 @@ { *pInterfaceId = *(xaMetadataExtractorItfIIDs[index]); res = XA_RESULT_SUCCESS; - }DEBUG_API_A1("<-XAMetadataExtractorImpl_QuerySupportedInterfaces (%d)", (int)res); + } + DEBUG_API_A1("<-XAMetadataExtractorImpl_QuerySupportedInterfaces (%d)", (int)res); return res; } @@ -291,10 +280,6 @@ pItf = XAMetadataExtractionItfImpl_Create( pObjImpl->curAdaptCtx); break; - case MDE_METADATATRAVERSALITF: - pItf = XAMetadataTraversalItfImpl_Create( - pObjImpl->curAdaptCtx); - break; case MDE_CONFIGEXTENSIONITF: pItf = XAConfigExtensionsItfImpl_Create(); XAConfigExtensionsItfImpl_SetContext(pItf, @@ -330,11 +315,6 @@ ret = XAMetadataAdaptCtxMMF_PostInit( (XAAdaptationMMFCtx*) pObjImpl->adaptationCtxMMF); } - else - { - ret = XAMetadataAdaptCtx_PostInit( - (XAAdaptationGstCtx*) pObjImpl->adaptationCtxGst); - } if (ret != XA_RESULT_SUCCESS) { @@ -385,9 +365,6 @@ case MDE_METADATAEXTRACTIONITF: XAMetadataExtractionItfImpl_Free(pItf); break; - case MDE_METADATATRAVERSALITF: - XAMetadataTraversalItfImpl_Free(pItf); - break; case MDE_DYNAMICSOURCEITF: XADynamicSourceItfImpl_Free(pItf); break; @@ -410,12 +387,6 @@ (XAAdaptationMMFCtx*) pImpl->adaptationCtxMMF); pImpl->adaptationCtxMMF = NULL; } - else - { - XAMetadataAdaptCtx_Destroy( - (XAAdaptationGstCtx*) pImpl->adaptationCtxGst); - pImpl->adaptationCtxGst = NULL; - } } pImpl->curAdaptCtx = NULL; @@ -454,8 +425,7 @@ break; default: - DEBUG_ERR("XAMetadataExtractorImpl_DoAddItf unknown id") - ; + DEBUG_ERR("XAMetadataExtractorImpl_DoAddItf unknown id"); ret = XA_RESULT_FEATURE_UNSUPPORTED; break; } @@ -505,8 +475,7 @@ XAConfigExtensionsItfImpl_Free(mapEntry->pItf); break; default: - DEBUG_ERR("XAMetadataExtractorImpl_DoRemoveItf unknown id") - ; + DEBUG_ERR("XAMetadataExtractorImpl_DoRemoveItf unknown id"); ret = XA_RESULT_FEATURE_UNSUPPORTED; break; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/metadataextractor/xametadataextractor.h --- a/khronosfws/openmax_al/src/metadataextractor/xametadataextractor.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/metadataextractor/xametadataextractor.h Wed Aug 18 10:17:22 2010 +0300 @@ -34,7 +34,6 @@ MDE_OBJECTITF, /* <-keep this first */ MDE_DIMITF, MDE_METADATAEXTRACTIONITF, - MDE_METADATATRAVERSALITF, MDE_CONFIGEXTENSIONITF, MDE_DYNAMICSOURCEITF, MDE_ITFCOUNT diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp --- a/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -15,7 +15,6 @@ * */ -#include #include #include #include diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.h --- a/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.h Wed Aug 18 10:17:22 2010 +0300 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp --- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -86,6 +86,12 @@ iRadioPlayerUtility = &iRadioUtility->RadioPlayerUtilityL( *this ); } + SetForceMonoFlag(); + iDefaultFrequency = RADIO_DEFAULT_FREQ; + iDefaultFreqRange = (TFmRadioFrequencyRange)RADIO_DEFAULT_FREQ_RANGE; + iDefaultMinFreq = RADIO_DEFAULT_MIN_FREQ; + iDefaultMaxFreq = RADIO_DEFAULT_MAX_FREQ; + } void CMMFRadioBackendEngine::StationSeek(XAboolean aUpwards) { @@ -98,6 +104,7 @@ void CMMFRadioBackendEngine::SetFrequency(TInt aFreq) { DEBUG_API_A1("CMMFRadioBackendEngine::SetFrequency: %d", aFreq); + if (iFmTunerUtility) { iFmTunerUtility->SetFrequency(aFreq); @@ -111,6 +118,11 @@ if (iFmTunerUtility) { ret = iFmTunerUtility->GetFrequency(aFreq); + if (ret != KErrNone) + { + aFreq = iDefaultFrequency; + ret = KErrNone; + } } DEBUG_API_A1("CMMFRadioBackendEngine::GetFrequency RET: %d", ret); // RDebug::Print(_L("CMMFRadioBackendEngine::GetFrequency RET: %d"), ret); @@ -156,12 +168,19 @@ TInt CMMFRadioBackendEngine::GetFreqRange(TFmRadioFrequencyRange& aRange) { TInt ret = KErrNotFound; - TInt minFreq = 0; - TInt maxFreq = 0; + TInt minFreq; + TInt maxFreq; if (iFmTunerUtility) { ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)minFreq, (TInt&)maxFreq); + if (ret != KErrNone) + { + minFreq = iDefaultMinFreq; + maxFreq = iDefaultMaxFreq; + aRange = iDefaultFreqRange; + ret = KErrNone; + } } DEBUG_API_A1("CMMFRadioBackendEngine::GetFreqRange RET: %d", ret); // RDebug::Print(_L("CMMFRadioBackendEngine::GetFreqRange RET: %d"), ret); @@ -174,7 +193,14 @@ if (iFmTunerUtility) { - ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)aMinFreq, (TInt&)aMaxFreq); + ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)aMinFreq, (TInt&)aMaxFreq); + if (ret != KErrNone) + { + aRange = iDefaultFreqRange; + aMinFreq = iDefaultMinFreq; + aMaxFreq = iDefaultMaxFreq; + ret = KErrNone; + } } DEBUG_API_A1("CMMFRadioBackendEngine::GetFreqRangeProperties RET: %d", ret); // RDebug::Print(_L("CMMFRadioBackendEngine::GetFreqRangeProperties RET: %d"), ret); @@ -232,9 +258,14 @@ if (iFmTunerUtility) { ret = iFmTunerUtility->GetForcedMonoReception(forceMono); + if (ret == KErrNotReady) + { + aForcedMono = XA_STEREOMODE_AUTO; // Radio Utility Default value + return KErrNone; + } } -// RDebug::Print(_L("CMMFRadioBackendEngine::GetForcedMonoReception RET: %d, aForcedMono = %d"), ret, aForcedMono); + if (forceMono) { aForcedMono = XA_STEREOMODE_MONO; @@ -268,9 +299,9 @@ TInt CMMFRadioBackendEngine::ForceMonoReception(XAuint32 aForcedMono) { TInt ret = KErrNotFound; - TBool currentMode; + XAuint32 currentMode; - ret = GetForcedMonoReception((XAuint32&)currentMode); + ret = GetForcedMonoReception(currentMode); if (ret != XA_RESULT_SUCCESS) return ret; @@ -311,6 +342,33 @@ return ret; } +XAresult CMMFRadioBackendEngine::SetForceMonoFlag() +{ + TInt ret = KErrNotFound; + TBool forceMono; + + if (iFmTunerUtility) + { + ret = iFmTunerUtility->GetForcedMonoReception(forceMono); + if (ret == KErrNotReady) + { + // For Radio Utility Default value = XA_STEREOMODE_STEREO + iForceStereo = ETrue; + return KErrNone; + } + + } + + if (forceMono == XA_STEREOMODE_MONO) + { + iForceStereo = EFalse; + } + else + { + iForceStereo = ETrue; + } + return ret; +} XAresult CMMFRadioBackendEngine::SetRadioAdaptContext(void * adaptcontext) { iRadioAdaptContext = adaptcontext; @@ -649,9 +707,9 @@ return ((CMMFRadioBackendEngine*)(context))->GetFreqRange((TFmRadioFrequencyRange&)*range); } - XAresult get_freq_range_properties(void* context, XAuint8 range, XAuint32* aMinFreq, XAuint32* aMaxFreq) + XAresult get_freq_range_properties(void* context, XAuint8 aRange, XAuint32* aMinFreq, XAuint32* aMaxFreq) { - return ((CMMFRadioBackendEngine*)(context))->GetFreqRangeProperties((TFmRadioFrequencyRange&)range, (TInt&) *aMinFreq, (TInt&) *aMaxFreq); + return ((CMMFRadioBackendEngine*)(context))->GetFreqRangeProperties((TFmRadioFrequencyRange&) aRange, (TInt&) *aMinFreq, (TInt&) *aMaxFreq); } XAresult get_max_volume(void* context, XAmillibel* maxVol) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h --- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h Wed Aug 18 10:17:22 2010 +0300 @@ -227,6 +227,7 @@ CMMFRadioBackendEngine(); void ConstructL(); XAresult TranslateError(TInt error); + XAresult SetForceMonoFlag(); private: CRadioUtility* iRadioUtility; @@ -235,6 +236,10 @@ TBool iForceStereo; void* iRadioAdaptContext; void* iPlayerAdaptContext; + TFmRadioFrequencyRange iDefaultFreqRange; + XAuint32 iDefaultFrequency; + TInt iDefaultMinFreq; + TInt iDefaultMaxFreq; }; @@ -258,6 +263,7 @@ extern void stop_radio(void * context); extern void play_radio(void* context); extern XAresult set_volume(void* context, XAuint32 vol); +extern XAresult get_volume(void* context, XAuint32* vol); extern XAresult mmf_set_player_adapt_context(void * context, void * adaptcontext); extern XAresult set_mute(void* context, XAboolean mute); #endif /* __cplusplus */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -169,7 +169,8 @@ free(pSelf); pSelf = NULL; return NULL; - }DEBUG_API("<-XAMediaPlayerAdaptMMF_Create"); + } + DEBUG_API("<-XAMediaPlayerAdaptMMF_Create"); return (XAAdaptationBaseCtx*) (&pSelf->baseObj.baseObj); } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xamediarecorderadaptctxmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xamediarecorderadaptctxmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xamediarecorderadaptctxmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -22,8 +22,6 @@ #include "cmmfbackendengine.h" #include "xaadptbasectx.h" -extern XAboolean cameraRealized; - /* * XAAdaptationBaseCtx* XAMediaRecorderAdaptMMF_Create() * Allocates memory for Media Recorder Adaptation Context and makes 1st phase initialization @@ -36,9 +34,7 @@ XADataSource* pImageVideoSrc, XADataSink* pDataSnk, XAuint8 recModes) { XAMediaRecorderAdaptationMMFCtx *pSelf = NULL; - XAuint32 locType = 0; XAresult res; - XADataLocator_IODevice *ioDevice; DEBUG_API("->XAMediaRecorderAdaptMMF_Create"); pSelf = (XAMediaRecorderAdaptationMMFCtx*) calloc(1, @@ -81,27 +77,6 @@ pSelf->audioEncSettings.bitRate = 128; pSelf->audioEncSettings.sampleRate = 44100; } - - if (pImageVideoSrc) - { - locType = *((XAuint32*) (pImageVideoSrc->pLocator)); - if (locType == XA_DATALOCATOR_IODEVICE) - { - ioDevice - = (XADataLocator_IODevice*) (pImageVideoSrc->pLocator); - if (ioDevice->deviceType == XA_IODEVICE_CAMERA - - && !cameraRealized - - ) - { - DEBUG_ERR("Preconditions violated - Camera object not realized"); - XAAdaptationBaseMMF_Free(&pSelf->baseObj); - free(pSelf); - pSelf = NULL; - } - } - } } else { @@ -138,7 +113,7 @@ XADataFormat_MIME* tempFormat; XAMediaRecorderAdaptationMMFCtx *pSelf; DEBUG_API("->XAMediaRecorderAdapt_PostInit"); - if(bCtx) + if(!bCtx) { ret = XA_RESULT_PARAMETER_INVALID; return ret; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xametadataadaptctxmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xametadataadaptctxmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xametadataadaptctxmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -94,7 +94,8 @@ DEBUG_API("->XAMetadataAdaptCtxMMF_Destroy"); if (bCtx == NULL) { - DEBUG_ERR("Invalid parameter!!");DEBUG_API("<-XAMetadataAdaptCtxMMF_Destroy"); + DEBUG_ERR("Invalid parameter!!"); + DEBUG_API("<-XAMetadataAdaptCtxMMF_Destroy"); return; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xammfcapabilitiesmgr.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xammfcapabilitiesmgr.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xammfcapabilitiesmgr.c Wed Aug 18 10:17:22 2010 +0300 @@ -133,7 +133,8 @@ if (!(*ppListHead)) { *ppListHead = firstNode; - }DEBUG_API("<-XAGSTCapabilitiesMgr_UpdateCapabilitieList"); + } + DEBUG_API("<-XAGSTCapabilitiesMgr_UpdateCapabilitieList"); return res; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -47,6 +47,12 @@ *percentage = (vol * MAX_PERCENTAGE_VOLUME)/maxvol; } + else if (ctx->baseObj.ctxId == XARadioAdaptation) + { + mmf_set_player_adapt_context(cmmfradiobackendengine_init(), ctx); + res = get_volume(cmmfradiobackendengine_init(), &vol); + *percentage = vol; + } DEBUG_API_A1("<-XANokiaLinearVolumeItfAdapt_GetVolumeLevel %d", percentage); return res; @@ -70,7 +76,8 @@ && ctx->baseObj.ctxId != XAMediaRecorderAdaptation && ctx->baseObj.ctxId != XARadioAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel"); /* invalid parameter */ res = XA_RESULT_PARAMETER_INVALID; return res; @@ -93,7 +100,8 @@ { mmf_set_player_adapt_context(cmmfradiobackendengine_init(), ctx); res = set_volume(cmmfradiobackendengine_init(), percentage); - }DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel"); + } + DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel"); return res; } @@ -106,7 +114,8 @@ && ctx->baseObj.ctxId != XAMediaRecorderAdaptation && ctx->baseObj.ctxId != XARadioAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xanokiavolumeextitfadaptationmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xanokiavolumeextitfadaptationmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xanokiavolumeextitfadaptationmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -115,7 +115,8 @@ if (!ctx || (ctx->baseObj.ctxId != XAMediaPlayerAdaptation && ctx->baseObj.ctxId != XAMediaRecorderAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfAdapt_EnableStereoPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfAdapt_EnableStereoPosition"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -152,7 +153,8 @@ if (!ctx || (ctx->baseObj.ctxId != XAMediaPlayerAdaptation && ctx->baseObj.ctxId != XAMediaRecorderAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfAdapt_SetStereoPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XANokiaVolumeExtItfAdapt_SetStereoPosition"); return XA_RESULT_PARAMETER_INVALID; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -23,8 +23,6 @@ #include "cmmfradiobackendengine.h" #include -extern XAboolean cameraRealized; - /*forward declaration of position updater callback*/ gboolean XAPlayItfAdapt_PositionUpdate(gpointer ctx); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.c Wed Aug 18 10:17:22 2010 +0300 @@ -70,7 +70,7 @@ /* * XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationMMFCtx *bCtx, - * XAuint8 * pRange, + * XAuint8 range, * XAuint32 * pMinFreq, * XAuint32 * pMaxFreq) */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xarecorditfadaptationmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xarecorditfadaptationmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xarecorditfadaptationmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -41,7 +41,8 @@ DEBUG_API_A1("->XARecordItfAdaptMMF_SetRecordState %s",RECORDSTATENAME(state)); if (!bCtx) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XARecordItfAdaptMMF_SetRecordState"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XARecordItfAdaptMMF_SetRecordState"); return XA_RESULT_PARAMETER_INVALID; } @@ -111,7 +112,8 @@ if (!bCtx) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XARecordItfAdaptMMF_GetRecordState"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XARecordItfAdaptMMF_GetRecordState"); return XA_RESULT_PARAMETER_INVALID; } @@ -139,7 +141,8 @@ if (!bCtx) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XARecordItfAdaptMMF_GetPosition"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XARecordItfAdaptMMF_GetPosition"); /* invalid parameter */ ret = XA_RESULT_PARAMETER_INVALID; return ret; @@ -178,7 +181,8 @@ event.data = &posInMsec; DEBUG_API_A1("XARecordItfAdapt_PositionUpdate: pos %lu ms", posInMsec); XAAdaptationBase_SendAdaptEvents(&bCtx->baseObj, &event); - }DEBUG_API_A1("<-XARecordItfAdapt_PositionUpdate: %d", mCtx->runpositiontimer); + } + DEBUG_API_A1("<-XARecordItfAdapt_PositionUpdate: %d", mCtx->runpositiontimer); return (mCtx->runpositiontimer); } /* return false to stop timer */ @@ -198,7 +202,8 @@ if (!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XARecordItfAdapt_EnablePositionTracking"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XARecordItfAdapt_EnablePositionTracking"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } @@ -233,7 +238,8 @@ if (!bCtx || bCtx->baseObj.ctxId != XAMediaRecorderAdaptation) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XARecordItfAdapt_EnablePositionTracking"); + DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); + DEBUG_API("<-XARecordItfAdapt_EnablePositionTracking"); /* invalid parameter */ return XA_RESULT_PARAMETER_INVALID; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/mmf_adaptation/xastreaminformationitfadaptationmmf.c --- a/khronosfws/openmax_al/src/mmf_adaptation/xastreaminformationitfadaptationmmf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xastreaminformationitfadaptationmmf.c Wed Aug 18 10:17:22 2010 +0300 @@ -38,7 +38,8 @@ /* Both Media Player and Metadata Extractor objec uses the same ctxId */ if (!adaptCtx || (adaptCtx->ctxId != XAMediaPlayerAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("- numStreams) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("-ctxId != XAMediaPlayerAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("- numStreams) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("-ctxId != XAMediaPlayerAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("-ctxId == XAMDAdaptation) { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED");DEBUG_API("-ctxId != XAMediaPlayerAdaptation)) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("-ctxId == XAMDAdaptation) { - DEBUG_ERR("XA_RESULT_PRECONDITIONS_VIOLATED");DEBUG_API("- numStreams) { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("- -#include -#include - -#include "xaoutputmix.h" -#include "xaobjectitf.h" -#include "xadynintmgmtitf.h" -#include "xaconfigextensionsitf.h" -#include "xaequalizeritf.h" -#include "xavolumeitf.h" -#include "xaoutputmixitf.h" -#include "xathreadsafety.h" -#include "xaoutputmixadaptctx.h" -#include "xacapabilitiesmgr.h" - -/* Static mapping of enumeration XAOMixInterfaces to interface iids */ -static const XAInterfaceID* xaOMixItfIIDs[OMIX_ITFCOUNT]={ - &XA_IID_OBJECT, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_CONFIGEXTENSION, - &XA_IID_OUTPUTMIX, - &XA_IID_EQUALIZER, - &XA_IID_VOLUME -}; - -/***************************************************************************** - * Global methods - *****************************************************************************/ - - -/* - *XAresult XAOMixImpl_CreateOutputMix(XAObjectItf *pMix, - * XAuint32 numInterfaces, - * const XAInterfaceID *pInterfaceIds, - * const XAboolean *pInterfaceRequired) - * Description: Create object - */ -XAresult XAOMixImpl_CreateOutputMix(FrameworkMap* mapper, - XACapabilities* capabilities, - XAObjectItf *pMix, - XAuint32 numInterfaces, - const XAInterfaceID *pInterfaceIds, - const XAboolean *pInterfaceRequired) -{ - - XAObjectItfImpl* pBaseObj = NULL; - XAOMixImpl* pImpl = NULL; - XAuint32 itfIdx = 0; - DEBUG_API("->XAOMixImpl_CreateOutputMix"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSOutputMix); - - - - if(!pMix) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOMixImpl_CreateOutputMix"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* instantiate object */ - pImpl = (XAOMixImpl*)calloc(1,sizeof(XAOMixImpl)); - if(!pImpl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - /* memory allocation failed */ - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XAOMixImpl_CreateOutputMix"); - return XA_RESULT_MEMORY_FAILURE; - } - pBaseObj = &pImpl->baseObj; - - XAObjectItfImpl_Init(pBaseObj, - OMIX_ITFCOUNT, - xaOMixItfIIDs, - XAOMixImpl_DoRealize, - XAOMixImpl_DoResume, - XAOMixImpl_FreeResources ); - - /* Mark interfaces that need to be exposed */ - /* Implicit and mandated interfaces */ - pBaseObj->interfaceMap[OMIX_OUTPUTMIXITF].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[OMIX_DIMITF].required = XA_BOOLEAN_TRUE; - - /* Explicit interfaces */ - if((numInterfaces != 0) && pInterfaceIds && pInterfaceRequired) - { - /* Check required interfaces */ - for(itfIdx = 0; itfIdx < numInterfaces; itfIdx++) - { - /* If mapEntry is null then required interface is not supported.*/ - XAObjItfMapEntry *entry = - XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIdx]); - if( !entry ) - { - if( pInterfaceRequired[itfIdx] ) - { - /* required interface cannot be accommodated - fail creation */ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_ERR("Required interface not found - abort creation!"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - else - { - DEBUG_INFO("Requested (not required) interface not found - continue creation"); - } - } - else - { - entry->required = XA_BOOLEAN_TRUE; - } - } - } - /* Mark interfaces that can be handled dynamically */ - pBaseObj->interfaceMap[OMIX_EQUALIZERITF].isDynamic = XA_BOOLEAN_TRUE; - - /* This code is put here to return Feature Not Supported since adaptation is not present*/ - /*************************************************/ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_ERR("Required interface not found - abort creation!"); - return XA_RESULT_FEATURE_UNSUPPORTED; - /*************************************************/ - -/* // Create outputmix adaptation context - pImpl->adaptationCtx = XAOutputMixAdapt_Create(); - - //Set ObjectItf to point to newly created object - *pMix = (XAObjectItf)&(pBaseObj->self); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - - DEBUG_API("<-XAOMixImpl_CreateOutputMix"); - return XA_RESULT_SUCCESS;*/ -} - -/* - * XAresult XAOMixImpl_QueryNumSupportedInterfaces(XAuint32 * pNumSupportedInterfaces) - * Description: Query number of supported interfaces - */ -XAresult XAOMixImpl_QueryNumSupportedInterfaces(XAuint32 * pNumSupportedInterfaces) -{ - DEBUG_API("->XAOMixImpl_QueryNumSupportedInterfaces"); - if( pNumSupportedInterfaces ) - { - *pNumSupportedInterfaces = OMIX_ITFCOUNT; - DEBUG_API_A1("<-XAOMixImpl_QueryNumSupportedInterfaces - %lu", *pNumSupportedInterfaces ); - return XA_RESULT_SUCCESS; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOMixImpl_QueryNumSupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } -} - -/* - * XAresult XAOMixImpl_QuerySupportedInterfaces(XAuint32 index, XAInterfaceID * pInterfaceId) - * Description: Statically query supported interfaces - */ -XAresult XAOMixImpl_QuerySupportedInterfaces(XAuint32 index, - XAInterfaceID * pInterfaceId) -{ - DEBUG_API("->XAOMixImpl_QuerySupportedInterfaces"); - if (index >= OMIX_ITFCOUNT || !pInterfaceId) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOMixImpl_QuerySupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } - else - { - - *pInterfaceId = *(xaOMixItfIIDs[index]); - - DEBUG_API("<-XAOMixImpl_QuerySupportedInterfaces"); - return XA_RESULT_SUCCESS; - } -} - -/***************************************************************************** - * base object XAObjectItfImpl methods - *****************************************************************************/ - -/* XAresult XAOMixImpl_DoRealize(XAObjectItf self) - * Description: Realize all implicit and explicitly wanted interfaces. - * Create and initialize implementation-specific variables. - * Called from base object XAObjectItfImpl - */ -XAresult XAOMixImpl_DoRealize(XAObjectItf self) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAresult ret = XA_RESULT_SUCCESS; - XAOMixImpl* pMixImpl = (XAOMixImpl*)(pObj); - XAuint8 itfIdx = 0; - DEBUG_API("->XAOMixImpl_DoRealize"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSOutputMix); - - /* check casting from correct pointer type */ - if( !pMixImpl || pObj != pMixImpl->baseObj.self ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOMixImpl_DoRealize"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* Initialize adaptation */ - ret = XAOutputMixAdapt_PostInit( (XAAdaptationGstCtx*)pMixImpl->adaptationCtx ); - if( ret != XA_RESULT_SUCCESS ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_API("<-XAOMixImpl_DoRealize"); - return ret; - } - - /* Realize all implicit and explicitly wanted interfaces */ - for( itfIdx = 0; itfIdx < OMIX_ITFCOUNT; itfIdx++) - { - if( !(pObj->interfaceMap[itfIdx].pItf) && pObj->interfaceMap[itfIdx].required ) - { - void *pItf = NULL; - switch( itfIdx ) - { - case OMIX_CONFIGEXTENSIONITF: - pItf = XAConfigExtensionsItfImpl_Create(); - break; - case OMIX_DIMITF: - pItf = XADIMItfImpl_Create(); - if(pItf) - { - XADIMItfImpl_Init(pItf, self, - XAOMixImpl_DoAddItf, - XAOMixImpl_DoResumeItf, - XAOMixImpl_DoRemoveItf); - } - break; - case OMIX_EQUALIZERITF: - pItf = XAEqualizerItfImpl_Create(pMixImpl->adaptationCtx); - break; - case OMIX_VOLUMEITF: - pItf = XAVolumeItfImpl_Create(pMixImpl->adaptationCtx); - break; - case OMIX_OUTPUTMIXITF: - pItf = XAOutputMixItfImpl_Create(pMixImpl->adaptationCtx); - break; - default: - break; - } - if( !pItf ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - /* memory allocation failed */ - DEBUG_API("<-XAOMixImpl_DoRealize"); - return XA_RESULT_MEMORY_FAILURE; - } - else - { - pObj->interfaceMap[itfIdx].pItf = pItf; - } - } - } - - pObj->state = XA_OBJECT_STATE_REALIZED; - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - - DEBUG_API("<-XAOMixImpl_DoRealize"); - return XA_RESULT_SUCCESS; -} - -/* - * XAresult XAOMixImpl_DoResume(XAObjectItf self) - * Description: Resume object from suspended state - */ -XAresult XAOMixImpl_DoResume(XAObjectItf self) -{ - DEBUG_API("->XAOMixImpl_DoResume"); - DEBUG_API("<-XAOMixImpl_DoResume"); - /* This implementation does not support suspended state */ - return XA_RESULT_PRECONDITIONS_VIOLATED; -} - -/* - * void XAOMixImpl_FreeResources(XAObjectItf self) - * Description: Free all resources reserved at XACameraDeviceImpl_DoRealize() - */ -void XAOMixImpl_FreeResources(XAObjectItf self) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAOMixImpl* pImpl = (XAOMixImpl*)(*self); - XAuint8 itfIdx = 0; - DEBUG_API("->XAOMixImpl_FreeResources"); - XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSOutputMix); - assert( pObj && pImpl && pObj == pObj->self ); - - if ( pImpl->adaptationCtx != NULL ) - { - XAOutputMixAdapt_Destroy( (XAAdaptationGstCtx*)pImpl->adaptationCtx ); - pImpl->adaptationCtx = NULL; - } - - /* free all allocated interfaces */ - for(itfIdx = 0; itfIdx < OMIX_ITFCOUNT; itfIdx++) - { - void *pItf = pObj->interfaceMap[itfIdx].pItf; - if(pItf) - { - switch(itfIdx) - { - case OMIX_CONFIGEXTENSIONITF: - XAConfigExtensionsItfImpl_Free( pItf ); - break; - case OMIX_DIMITF: - XADIMItfImpl_Free( pItf ); - break; - case OMIX_EQUALIZERITF: - XAEqualizerItfImpl_Free(pItf); - break; - case OMIX_VOLUMEITF: - XAVolumeItfImpl_Free(pItf); - break; - case OMIX_OUTPUTMIXITF: - XAOutputMixItfImpl_Free( pItf ); - break; - default: - break; - } - pObj->interfaceMap[itfIdx].pItf = NULL; - } - } - - if ( pImpl->adaptationCtx != NULL ) - { - XAOutputMixAdapt_Destroy( (XAAdaptationGstCtx*)pImpl->adaptationCtx ); - pImpl->adaptationCtx = NULL; - } - - XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSOutputMix); - - DEBUG_API("<-XAOMixImpl_FreeResources"); -} - -/***************************************************************************** - * MediaRecorderImpl -specific methods - *****************************************************************************/ - -/* XAOMixImpl_DoAddItf - * Dynamically add an interface, object specific parts - */ -XAresult XAOMixImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAOMixImpl* pImpl = (XAOMixImpl*)(pObj); - - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAOMixImpl_DoAddItf"); - if(mapEntry) - { - switch( mapEntry->mapIdx ) - { - case OMIX_EQUALIZERITF: - - mapEntry->pItf = XAEqualizerItfImpl_Create( pImpl->adaptationCtx ); - - break; - default: - DEBUG_ERR("XAOMixImpl_DoAddItf unknown id"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - if( !mapEntry->pItf && ret == XA_RESULT_SUCCESS) - { - DEBUG_ERR("XAOMixImpl_DoAddItf itf creation failed"); - ret = XA_RESULT_MEMORY_FAILURE; - } - } - else - { - ret = XA_RESULT_PARAMETER_INVALID; - } - - - DEBUG_API("<-XAOMixImpl_DoAddItf"); - return ret; -} - -/* XAOMixImpl_DoResumeItf - * Try to resume lost interface, object specific parts - */ -XAresult XAOMixImpl_DoResumeItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAOMixImpl_DoResumeItf"); - /* For now, no difference between suspended and unrealised itfs */ - ret = XAOMixImpl_DoAddItf(self,mapEntry); - DEBUG_API("<-XAOMixImpl_DoResumeItf"); - return ret; -} - -/* XAOMixImpl_DoRemoveItf - * Dynamically remove an interface, object specific parts - */ -XAresult XAOMixImpl_DoRemoveItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) -{ - XAresult ret = XA_RESULT_SUCCESS; - DEBUG_API("->XAOMixImpl_DoRemoveItf"); - - if(mapEntry) - { - switch( mapEntry->mapIdx ) - { - case OMIX_EQUALIZERITF: - XAEqualizerItfImpl_Free( mapEntry->pItf ); - break; - default: - DEBUG_ERR("XAOMixImpl_DoRemoveItf unknown id"); - ret = XA_RESULT_FEATURE_UNSUPPORTED; - break; - } - mapEntry->pItf = NULL; - } - else - { - ret = XA_RESULT_PARAMETER_INVALID; - } - - DEBUG_API("<-XAOMixImpl_DoRemoveItf"); - return ret; -} - -/*END OF FILE*/ - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/outputmix/xaoutputmix.h --- a/khronosfws/openmax_al/src/outputmix/xaoutputmix.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAOUTPUTMIX_H -#define XAOUTPUTMIX_H - -#include "openmaxalwrapper.h" -#include "xaobjectitf.h" -#include "xaglobals.h" -#include "xaadptbasectx.h" - -/** MACROS **/ - - -/** TYPES **/ - - -/** ENUMERATIONS **/ -/* Enumeration for interfaces that OutputMix supports. */ -typedef enum -{ - OMIX_OBJECTITF, - OMIX_DIMITF, - OMIX_CONFIGEXTENSIONITF, - OMIX_OUTPUTMIXITF, - OMIX_EQUALIZERITF, - OMIX_VOLUMEITF, - OMIX_ITFCOUNT -} XAOMixInterfaces; - - -/** STRUCTURES **/ -/* Specification for MediaPlayerImpl.*/ -typedef struct XAOMixImpl_ -{ - /* Parent for XAMediaPlayerImpl */ - XAObjectItfImpl baseObj; - - /* variables */ - XAAdaptationBaseCtx* adaptationCtx; - -} XAOMixImpl; - - -/** METHODS **/ - -/* base object XAObjectItfImpl methods */ -XAresult XAOMixImpl_DoRealize(XAObjectItf self); -XAresult XAOMixImpl_DoResume(XAObjectItf self); -void XAOMixImpl_FreeResources(XAObjectItf self); - -/* XAOMixImpl -specific methods*/ -XAresult XAOMixImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ); -XAresult XAOMixImpl_DoResumeItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ); -XAresult XAOMixImpl_DoRemoveItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ); - -#endif /* XAOUTPUTMIX_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/outputmix/xaoutputmixitf.c --- a/khronosfws/openmax_al/src/outputmix/xaoutputmixitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,226 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "xaoutputmixitf.h" - -#include "xaoutputmixitfadaptation.h" - -#include -#include "xathreadsafety.h" -#include "e32def.h" -/** - * XAOutputMixtfImpl* GetImpl(XAOutputMixtfImpl self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XAOutputMixItfImpl* GetImpl(XAOutputMixItf self) -{ - if(self) - { - XAOutputMixItfImpl* impl = (XAOutputMixItfImpl*)(*self); - if(impl && impl == impl->self) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XAOutputMixtf implementation - */ - -/* - * XAresult XAOutputMixItfImpl_GetDestinationOutputDeviceIDs( XAOutputMixItf self, - * XAint32 * pNumDevices, - * XAuint32 * pDeviceIDs ) - * Description: Retrieves the device IDs of the destination output devices currently - * associated with the output mix. - */ -XAresult XAOutputMixItfImpl_GetDestinationOutputDeviceIDs( XAOutputMixItf self, XAint32 * pNumDevices, XAuint32 * pDeviceIDs ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAOutputMixItfImpl* impl = GetImpl(self); - DEBUG_API_A1("->XAOutputMixItfImpl_GetDestinationOutputDeviceIDs - pNumDevices %ld",*pNumDevices); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSOutputMix); - if(!impl || !pNumDevices ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOutputMixItfImpl_GetDestinationOutputDeviceIDs"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAOutputMixItfAdapt_GetDestinationOutputDeviceIDs((XAAdaptationGstCtx*)impl->adapCtx, pNumDevices, pDeviceIDs ); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_API_A1("<-XAOutputMixItfImpl_GetDestinationOutputDeviceIDs - pNumDevices %ld",*pNumDevices); - return ret; -} - -/* - * XAresult XAOutputMixItfImpl_RegisterDeviceChangeCallback( XAOutputMixItf self, - * xaMixDeviceChangeCallback callback, - * void * pContext) - * Description: Registers a callback to notify client when there are changes to the - * device IDs associated with the output mix. - */ -XAresult XAOutputMixItfImpl_RegisterDeviceChangeCallback( XAOutputMixItf self, xaMixDeviceChangeCallback callback, void * pContext) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAOutputMixItfImpl* impl = GetImpl(self); - DEBUG_API("->XAOutputMixItfImpl_RegisterDeviceChangeCallback"); - if(!impl) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOutputMixItfImpl_RegisterDeviceChangeCallback"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* callback may be NULL (to remove callback) */ - impl->callback = callback; - impl->cbContext = pContext; - impl->cbPtrToSelf = self; - - if(callback) - { /* start listening */ - XAAdaptationBase_AddEventHandler( impl->adapCtx, &XAOutputMixItfImpl_AdaptCb, XA_OUTPUTMIXITFEVENTS, (void*)self ); - } - else - { /* stop listening */ - XAAdaptationBase_RemoveEventHandler( impl->adapCtx, &XAOutputMixItfImpl_AdaptCb ); - } - - - DEBUG_API("<-XAOutputMixItfImpl_RegisterDeviceChangeCallback"); - return ret; -} - -/* - * XAresult XAOutputMixItfImpl_ReRoute( XAOutputMixItf self, - * XAint32 numOutputDevices, - * XAuint32 * pOutputDeviceIDs) - * Description: Requests a change to the specified set of output devices on an output mix. - */ -XAresult XAOutputMixItfImpl_ReRoute( XAOutputMixItf self, XAint32 numOutputDevices, XAuint32 * pOutputDeviceIDs) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAOutputMixItfImpl* impl = GetImpl(self); - - DEBUG_API("->XAOutputMixItfImpl_ReRoute"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSOutputMix); - - if(!impl || ( numOutputDevices > 0 && !pOutputDeviceIDs) ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAOutputMixItfImpl_ReRoute"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAOutputMixItfAdapt_ReRoute((XAAdaptationGstCtx*)impl->adapCtx, numOutputDevices, pOutputDeviceIDs ); - - - XA_IMPL_THREAD_SAFETY_EXIT(XATSOutputMix); - DEBUG_API("<-XAOutputMixItfImpl_ReRoute"); - return ret; - -} - -/** - * XAVolumeItfImpl -specific methods - **/ - - -/* - * XAOutputMixItfImpl* XAOutputMixItfImpl_Create(XAAdaptationBaseCtx *adapCtx) - * Description: Creates new Output mix itf implmementation - */ -XAOutputMixItfImpl* XAOutputMixItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XAOutputMixItfImpl *self = (XAOutputMixItfImpl*) - calloc(1,sizeof(XAOutputMixItfImpl)); - DEBUG_API("->XAVolumeItfImpl_Create"); - - if(self) - { - /* init itf default implementation */ - self->itf.GetDestinationOutputDeviceIDs = XAOutputMixItfImpl_GetDestinationOutputDeviceIDs; - self->itf.RegisterDeviceChangeCallback = XAOutputMixItfImpl_RegisterDeviceChangeCallback; - self->itf.ReRoute = XAOutputMixItfImpl_ReRoute; - - /* init variables */ - self->adapCtx = adapCtx; - self->callback = NULL; - self->cbContext = NULL; - self->cbPtrToSelf = NULL; - - self->self = self; - } - - DEBUG_API("<-XAVolumeItfImpl_Create"); - return self; -} - -/* - * void XAOutputMixItfImpl_Free(XAOutputMixItfImpl* self) - * Description: Frees XAOutputMixItfImpl - */ -void XAOutputMixItfImpl_Free(XAOutputMixItfImpl* self) -{ - DEBUG_API("->XAOutputMixItfImpl_Free"); - assert(self==self->self); - if( self->callback ) - { - XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XAOutputMixItfImpl_AdaptCb ); - } - free(self); - DEBUG_API("<-XAOutputMixItfImpl_Free"); -} - - - -/* void XAOutputMixItfImpl_AdaptCb( void *pHandlerCtx, - * XAAdaptEvent *event ) - * Description: Listen changes in adaptation - */ -void XAOutputMixItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) -{ - XAOutputMixItfImpl* impl = (XAOutputMixItfImpl*)pHandlerCtx; - DEBUG_API("->XAOutputMixItfImpl_AdaptCb"); - - if(!impl) - { - DEBUG_ERR("XAOutputMixItfImpl_AdaptCb, invalid context pointer!"); - return; - } - assert(event); - - /* send callback if needed. - * Check event-id to avoid sending incorrect events. */ - if( (event->eventid==XA_ADAPT_OMIX_DEVICESET_CHANGED) && impl->callback ) - { - impl->callback(impl->cbPtrToSelf, impl->cbContext); - } - - DEBUG_API("<-XAOutputMixItfImpl_AdaptCb"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/outputmix/xaoutputmixitf.h --- a/khronosfws/openmax_al/src/outputmix/xaoutputmixitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAOUTPUTMIXITF_H_ -#define XAOUTPUTMIXITF_H_ - -#include "xaadptbasectx.h" - -/** MACROS **/ - -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAOutputMixItf implementation */ -typedef struct XAOutputMixItfImpl_ -{ - /* parent interface */ - struct XAOutputMixItf_ itf; - /* pointer to self */ - struct XAOutputMixItfImpl_* self; - - /* Variables */ - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - - XAuint32 eventFlags; - xaMixDeviceChangeCallback callback; - void *cbContext; - XAOutputMixItf cbPtrToSelf; - -} XAOutputMixItfImpl; - -/** METHODS **/ - -/* Base interface XAOutputMixItf implementation */ -XAresult XAOutputMixItfImpl_GetDestinationOutputDeviceIDs( XAOutputMixItf self, XAint32 * pNumDevices, XAuint32 * pDeviceIDs ); -XAresult XAOutputMixItfImpl_RegisterDeviceChangeCallback( XAOutputMixItf self, xaMixDeviceChangeCallback callback, void * pContext); -XAresult XAOutputMixItfImpl_ReRoute( XAOutputMixItf self, XAint32 numOutputDevices, XAuint32 * pOutputDeviceIDs); - - -/* XAOutputMixItfImpl -specific methods */ -XAOutputMixItfImpl* XAOutputMixItfImpl_Create(XAAdaptationBaseCtx *adapCtx); -void XAOutputMixItfImpl_Free(XAOutputMixItfImpl* self); -void XAOutputMixItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ); - - -#endif /* XAOUTPUTMIXITF_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/radio/xaradiodevice.c --- a/khronosfws/openmax_al/src/radio/xaradiodevice.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/radio/xaradiodevice.c Wed Aug 18 10:17:22 2010 +0300 @@ -22,7 +22,6 @@ #include "xaradioitf.h" #include "xaconfigextensionsitf.h" #include "xadynintmgmtitf.h" -#include "xardsitf.h" #include "xathreadsafety.h" #include "xaradioadaptctx.h" /* Static mapping of enumeration XARadioDeviceInterfaces to interface iids */ @@ -31,8 +30,7 @@ &XA_IID_OBJECT, &XA_IID_RADIO, &XA_IID_CONFIGEXTENSION, - &XA_IID_DYNAMICINTERFACEMANAGEMENT, - &XA_IID_RDS + &XA_IID_DYNAMICINTERFACEMANAGEMENT }; /***************************************************************************** @@ -233,11 +231,6 @@ case RADIO_DIMITF: pItf = XADIMItfImpl_Create(); break; - case RADIO_RDSITF: - - pItf = XARDSItfImpl_Create( pObjImpl->adaptationCtx ); - - break; default: break; } @@ -305,9 +298,6 @@ case RADIO_DIMITF: XADIMItfImpl_Free( pItf ); break; - case RADIO_RDSITF: - XARDSItfImpl_Free( pItf ); - break; default: break; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/radio/xaradiodevice.h --- a/khronosfws/openmax_al/src/radio/xaradiodevice.h Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/radio/xaradiodevice.h Wed Aug 18 10:17:22 2010 +0300 @@ -37,7 +37,6 @@ RADIO_RADIOITF, RADIO_CONFIGEXTENSIONITF, RADIO_DIMITF, - RADIO_RDSITF, RADIO_ITFCOUNT } XARadioDeviceInterfaces; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/radio/xaradioitf.c --- a/khronosfws/openmax_al/src/radio/xaradioitf.c Tue Jul 06 14:50:35 2010 +0300 +++ b/khronosfws/openmax_al/src/radio/xaradioitf.c Wed Aug 18 10:17:22 2010 +0300 @@ -19,7 +19,6 @@ #include #include #include -#include #include "xaradioitf.h" #include "xaradioitfadaptation.h" #include "xathreadsafety.h" @@ -96,7 +95,6 @@ XAresult ret = XA_RESULT_SUCCESS; XARadioItfImpl* impl = GetImpl(self); DEBUG_API("->XARadioItfImpl_GetFreqRange"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); if(!impl || !pRange) { @@ -109,7 +107,6 @@ ret = XARadioItfAdapt_GetFreqRange(pRange); - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); DEBUG_API("<-XARadioItfImpl_GetFreqRange"); return ret; } @@ -148,7 +145,7 @@ /** * XAresult XARadioItfImpl_GetFreqRangeProperties(XARadioItf self, - * XAuint8 range, + * XAuint8 range, * XAuint32 * pMinFreq, * XAuint32 * pMaxFreq, * XAuint32 * pFreqInterval) @@ -156,7 +153,7 @@ * modulation of the given frequency range. **/ XAresult XARadioItfImpl_GetFreqRangeProperties(XARadioItf self, - XAuint8 range, + XAuint8 range, XAuint32 * pMinFreq, XAuint32 * pMaxFreq, XAuint32 * pFreqInterval) @@ -168,21 +165,9 @@ *pFreqInterval = FREQINTERVAL; DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); if(!impl || !pMinFreq || !pMaxFreq || !pFreqInterval) { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties"); - return XA_RESULT_PARAMETER_INVALID; - } - ret = XARadioItfAdapt_IsFreqRangeSupported( range, &isSupported ); - - if (isSupported != XA_BOOLEAN_TRUE || ret != XA_RESULT_SUCCESS) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); /* invalid parameter */ DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties"); @@ -192,7 +177,6 @@ ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx, range, pMinFreq, pMaxFreq ); - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties"); return ret; } @@ -208,6 +192,10 @@ XAresult XARadioItfImpl_SetFrequency(XARadioItf self, XAuint32 freq) { XAresult ret = XA_RESULT_SUCCESS; + XAuint8 range = 1; // Default to EuroAmerica + XAuint32 minFreq; + XAuint32 maxFreq; + XAuint32 freqInterval; XARadioItfImpl* impl = GetImpl(self); DEBUG_API("->XARadioItfImpl_SetFrequency"); @@ -221,9 +209,23 @@ return XA_RESULT_PARAMETER_INVALID; } - - - ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq ); + // Check for valid entries: + ret = XARadioItfImpl_GetFreqRangeProperties(self, range, &minFreq, &maxFreq, &freqInterval); + if (ret != XA_RESULT_SUCCESS) + { + XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); + DEBUG_API("<-XARadioItfImpl_SetFrequency"); + return ret; + } + + if ( (freq < minFreq) || (freq > maxFreq) ) + { + XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); + DEBUG_API("<-XARadioItfImpl_SetFrequency"); + return XA_RESULT_PARAMETER_INVALID; + } + + ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq ); XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); DEBUG_API("<-XARadioItfImpl_SetFrequency"); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/radio/xardsitf.c --- a/khronosfws/openmax_al/src/radio/xardsitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,881 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xardsitf.h" -#include "xardsitfadaptation.h" -#include "xathreadsafety.h" -#include "xaadaptationgst.h" -/** - * XARDSItfImpl* GetImpl(XARDSItf self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XARDSItfImpl* GetImpl(XARDSItf self) -{ - if(self) - { - XARDSItfImpl *impl = (XARDSItfImpl*)(*self); - if(impl && impl == impl->self) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XARDSItf implementation - */ - -/** - * XAresult XARDSItfImpl_QueryRDSSignal(XARDSItf self, XAboolean * isSignal) - * Description: Returns the status of the RDS reception. - **/ -XAresult XARDSItfImpl_QueryRDSSignal(XARDSItf self, XAboolean * isSignal) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_QueryRDSSignal"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl || !isSignal) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_QueryRDSSignal"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_QueryRDSSignal((XAAdaptationGstCtx*)impl->adapCtx, isSignal); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_QueryRDSSignal"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetProgrammeServiceName(XARDSItf self, XAchar * ps) - * Description: Gets the current Programme Service name (PS). - **/ -XAresult XARDSItfImpl_GetProgrammeServiceName(XARDSItf self, XAchar * ps) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetProgrammeServiceName"); - if(!impl || !ps) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetProgrammeServiceName"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetProgrammeServiceName((XAAdaptationGstCtx*)impl->adapCtx, ps); - - DEBUG_API("<-XARDSItfImpl_GetProgrammeServiceName"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetRadioText(XARDSItf self, XAchar * rt) - * Description: Gets the current Radio Text (RT). - **/ -XAresult XARDSItfImpl_GetRadioText(XARDSItf self, XAchar * rt) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetRadioText"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !rt) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetRadioText"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetRadioText((XAAdaptationGstCtx*)impl->adapCtx, rt); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetRadioText"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetRadioTextPlus(XARDSItf self, - * XAuint8 contentType, - * XAchar * informationElement, - * XAchar * descriptor, - * XAuint8 * descriptorContentType) - * Description: Gets the current Radio Text+ (RT+) information element based - * on the given class code. - **/ -XAresult XARDSItfImpl_GetRadioTextPlus(XARDSItf self, - XAuint8 contentType, - XAchar * informationElement, - XAchar * descriptor, - XAuint8 * descriptorContentType) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetRadioTextPlus"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || contentType < XA_RDSRTPLUS_ITEMTITLE || contentType > XA_RDSRTPLUS_GETDATA - || !informationElement || !descriptor || !descriptorContentType) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetRadioTextPlus"); - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_GetRadioTextPlus((XAAdaptationGstCtx*)impl->adapCtx, contentType, informationElement, - // descriptor, descriptorContentType); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetRadioTextPlus"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetProgrammeType(XARDSItf self, XAuint32 * pty) - * Description: Gets the current Programme TYpe (PTY) as short. The - * return value zero corresponds to No Programme Type - * or to undefined type. Please note that PTYs in RBDS - * differ from the ones in RDS. - **/ -XAresult XARDSItfImpl_GetProgrammeType(XARDSItf self, XAuint32 * pty) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetProgrammeType"); - - if(!impl || !pty) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetProgrammeType"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetProgrammeType((XAAdaptationGstCtx*)impl->adapCtx, pty); - - DEBUG_API("<-XARDSItfImpl_GetProgrammeType"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetProgrammeTypeString(XARDSItf self, - * XAboolean isLengthMax16, - * XAchar * pty) - * Description: Gets the current Programme TYpe (PTY) as a String with - * the maximum of 8 or 16 characters in English (char set TBD) - * as defined in RDS and RBDS specifications. Please note - * that PTYs in RBDS differ from the ones in RDS. - **/ -XAresult XARDSItfImpl_GetProgrammeTypeString(XARDSItf self, - XAboolean isLengthMax16, - XAchar * pty) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetProgrammeTypeString"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !pty) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetProgrammeTypeString"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetProgrammeTypeString((XAAdaptationGstCtx*)impl->adapCtx, isLengthMax16, pty); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetProgrammeTypeString"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetProgrammeIdentificationCode(XARDSItf self, XAint16 * pi) - * Description: Gets the current Programme Identification code (PI). The PI is not - * intended for directly displaying to the end user, but instead to - * identify uniquely a programme. This can be used to detect that two - * frequencies are transmitting the same programme. - **/ -XAresult XARDSItfImpl_GetProgrammeIdentificationCode(XARDSItf self, XAint16 * pi) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetProgrammeIdentificationCode"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !pi) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetProgrammeIdentificationCode"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetProgrammeIdentificationCode((XAAdaptationGstCtx*)impl->adapCtx, pi); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetProgrammeIdentificationCode"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetClockTime(XARDSItf self, XAtime * dateAndTime) - * Description: Gets the current Clock Time and date (CT). - **/ -XAresult XARDSItfImpl_GetClockTime(XARDSItf self, XAtime * dateAndTime) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetClockTime"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !dateAndTime) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetClockTime"); - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_GetClockTime((XAAdaptationGstCtx*)impl->adapCtx, dateAndTime); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetClockTime"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetTrafficAnnouncement(XARDSItf self, XAboolean * ta) - * Description: Gets the current status of the Traffic Announcement (TA) switch. - **/ -XAresult XARDSItfImpl_GetTrafficAnnouncement(XARDSItf self, XAboolean * ta) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetTrafficAnnouncement"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !ta) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, ta); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetTrafficAnnouncement"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetTrafficProgramme(XARDSItf self, XAboolean * tp) - * Description: Gets the current status of the Traffic Programme (TP) switch. - **/ -XAresult XARDSItfImpl_GetTrafficProgramme(XARDSItf self, XAboolean * tp) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetTrafficProgramme"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !tp) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetTrafficProgramme"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetTrafficProgramme((XAAdaptationGstCtx*)impl->adapCtx, tp); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetTrafficProgramme"); - return ret; -} - -/** - * XAresult XARDSItfImpl_SeekByProgrammeType(XARDSItf self, - * XAuint32 pty, - * XAboolean upwards) - * Description: Seeks for the frequency sending the given Programme TYpe (PTY). - * If the end of the tuner’s frequency band is reached before the - * given Programme TYpe is found, the scan continues from the other - * end until the given Programme TYpe is found or the original frequency - * is reached. Asynchronous - tuner callback xaRadioCallback() and - * XA_RADIO_EVENT_SEEK_COMPLETED is used for notifying of the result. - * StopSeeking() method of XARadioItf can be used to abort an ongoing seek. - **/ -XAresult XARDSItfImpl_SeekByProgrammeType(XARDSItf self, - XAuint32 pty, - XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_SeekByProgrammeType"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl || pty > XA_RDSPROGRAMMETYPE_RDSPTY_ALARM) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_SeekByProgrammeType"); - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_SeekByProgrammeType((XAAdaptationGstCtx*)impl->adapCtx, pty, upwards); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_SeekByProgrammeType"); - return ret; -} - -/** - * XAresult XARDSItfImpl_SeekTrafficAnnouncement(XARDSItf self, XAboolean upwards) - * Description: Seeks for a frequency sending Traffic Announcement (TA). If the end - * of the tuner’s frequency band is reached before a Traffic Announcement - * is found, the scan continues from the other end until a Traffic - * Announcement is found or the original frequency is reached. Asynchronous - * - tuner callback xaRadioCallback() and XA_RADIO_EVENT_SEEK_COMPLETED - * is used for notifying of the result. StopSeeking() method of XARadioItf - * can be used to abort an ongoing seek. - **/ -XAresult XARDSItfImpl_SeekTrafficAnnouncement(XARDSItf self, XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_SeekTrafficAnnouncement"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_SeekTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_SeekTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, upwards); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_SeekTrafficAnnouncement"); - return ret; -} - -/** - * XAresult XARDSItfImpl_SeekTrafficProgramme(XARDSItf self, XAboolean upwards) - * Description: Seeks for a frequency sending Traffic Programme (TP). If the end - * of the tuner’s frequency band is reached before a Traffic Programme - * is found, the scan continues from the other end until a Traffic - * Programme is found or the original frequency is reached. Asynchronous - * - tuner callback xaRadioCallback() and XA_RADIO_EVENT_SEEK_COMPLETED - * is used for notifying of the result. StopSeeking() method of XARadioItf - * can be used to abort an ongoing seek. - **/ -XAresult XARDSItfImpl_SeekTrafficProgramme(XARDSItf self, XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_SeekTrafficProgramme"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_SeekTrafficProgramme"); - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_SeekTrafficProgramme((XAAdaptationGstCtx*)impl->adapCtx, upwards); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_SeekTrafficProgramme"); - return ret; -} - -/** - * XAresult XARDSItfImpl_SetAutomaticSwitching(XARDSItf self, XAboolean automatic) - * Description: Sets the automatic switching of the transmitter in the case of a - * stronger transmitter with the same PI presence. Based on AF and/or - * EON fields. Please note that NOT ALL IMPLEMENTATIONS SUPPORT THIS - * FUNCTIONALITY. - **/ -XAresult XARDSItfImpl_SetAutomaticSwitching(XARDSItf self, XAboolean automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_SetAutomaticSwitching"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_SetAutomaticSwitching"); - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_SetAutomaticSwitching((XAAdaptationGstCtx*)impl->adapCtx, automatic); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_SetAutomaticSwitching"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetAutomaticSwitching(XARDSItf self, XAboolean * automatic) - * Description: Gets the mode of the automatic switching of the transmitter in - * case of a stronger transmitter with the same PI presence. - **/ -XAresult XARDSItfImpl_GetAutomaticSwitching(XARDSItf self, XAboolean * automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetAutomaticSwitching"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl || !automatic) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetAutomaticSwitching"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_GetAutomaticSwitching((XAAdaptationGstCtx*)impl->adapCtx, automatic); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetAutomaticSwitching"); - return ret; -} - -/** - * XAresult XARDSItfImpl_SetAutomaticTrafficAnnouncement(XARDSItf self, XAboolean automatic) - * Description: Sets the automatic switching of the program in case of the presence - * of Traffic Announcement in another program. Based on TP and TA fields. - * Please note that NOT ALL IMPLEMENTATIONS SUPPORT THIS FUNCTIONALITY. - **/ -XAresult XARDSItfImpl_SetAutomaticTrafficAnnouncement(XARDSItf self, XAboolean automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_SetAutomaticTrafficAnnouncement"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_SetAutomaticTrafficAnnouncement"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_SetAutomaticTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, automatic); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_SetAutomaticTrafficAnnouncement"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetAutomaticTrafficAnnouncement(XARDSItf self, XAboolean * automatic) - * Description: Gets the mode of the automatic switching of the program in case of - * the presence of Traffic Announcement in another program. Based on - * TP and TA fields. - **/ -XAresult XARDSItfImpl_GetAutomaticTrafficAnnouncement(XARDSItf self, XAboolean * automatic) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetAutomaticTrafficAnnouncement"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl || !automatic) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetAutomaticTrafficAnnouncement"); - - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_GetAutomaticTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, automatic); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetAutomaticTrafficAnnouncement"); - return ret; -} - -/** - * XAresult XARDSItfImpl_GetODAGroup(XARDSItf self, - * XAint16 AID, - * xaGetODAGroupCallback callback, - * void * pContext) - * Description: Returns asynchronously via callback (xaGetODAGroupCallback()) - * the application Group and the message bits concerning the given - * ODA (Open Data Application). ODA is a mechanism that a broadcaster - * can use to transfer data that is not explicitly specified in the RDS - * standard. Open Data Applications are subject to a registration process. - * Transmission protocols used by ODAs may be public or private. See RDS - * Forum web page (http://www.rds.org.uk/)for details. - **/ -XAresult XARDSItfImpl_GetODAGroup(XARDSItf self, - XAuint16 AID, - xaGetODAGroupCallback callback, - void * pContext) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_GetODAGroup"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_GetODAGroup"); - return XA_RESULT_PARAMETER_INVALID; - } - - impl->odaGroupCallback = callback; - impl->odaGroupContext = pContext; - impl->odaGroupCbPtrToSelf = self; - - if (callback) - { - - // ret = XARDSItfAdapt_GetODAGroup((XAAdaptationGstCtx*)impl->adapCtx, AID); - - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_GetODAGroup"); - - return ret; -} - -/** - * XAresult XARDSItfImpl_SubscribeODAGroup(XARDSItf self, - * XAint16 group, - * XAboolean useErrorCorrection) - * Description: Subscribes the given ODA group. If the given group was already - * subscribed, this call doesn’t do anything. Only new data in groups - * that have been subscribed will cause a newODA callback. - **/ -XAresult XARDSItfImpl_SubscribeODAGroup(XARDSItf self, - XAint16 group, - XAboolean useErrorCorrection) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - - DEBUG_API("->XARDSItfImpl_SubscribeODAGroup"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_SubscribeODAGroup"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// ret = XARDSItfAdapt_SubscribeODAGroup((XAAdaptationGstCtx*)impl->adapCtx, group, useErrorCorrection); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_SubscribeODAGroup"); - return ret; -} - -/** - * XAresult XARDSItfImpl_UnsubscribeODAGroup(XARDSItf self, XAint16 group) - * Description: Unsubscribes the given ODA group. If the given group has not - * been subscribed, this doesn’t do anything. Only new data in - * groups that have been subscribed will cause a newODA callback. - **/ -XAresult XARDSItfImpl_UnsubscribeODAGroup(XARDSItf self, XAint16 group) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - - DEBUG_API("->XARDSItfImpl_UnsubscribeODAGroup"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_UnsubscribeODAGroup"); - - return XA_RESULT_PARAMETER_INVALID; - } - - - // ret = XARDSItfAdapt_UnsubscribeODAGroup((XAAdaptationGstCtx*)impl->adapCtx, group); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_UnsubscribeODAGroup"); - return ret; -} - -/** - * XAresult XARDSItfImpl_ListODAGroupSubscriptions(XARDSItf self, - * XAint16* pGroups, - * XAuint32* pLength); - * Description: Lists ODA groups that are currently subscribed. - **/ -XAresult XARDSItfImpl_ListODAGroupSubscriptions(XARDSItf self, - XAint16* pGroups, - XAuint32* pLength) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - DEBUG_API("->XARDSItfImpl_ListODAGroupSubscriptions"); - - if(!impl || !pLength) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_ListODAGroupSubscriptions"); - return XA_RESULT_PARAMETER_INVALID; - } - - -// XARDSItfAdapt_ListODAGroupSubscriptions((XAAdaptationGstCtx*)impl->adapCtx, pGroups, pLength); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARDSItfImpl_ListODAGroupSubscriptions"); - return ret; -} - -/** - * XAresult XARDSItfImpl_RegisterRDSCallback(XARDSItf self, - * xaRDSCallback callback, - * void * pContext) - * Description: Sets or clears the xaNewODADataCallback(). xaNewODADataCallback() - * is used tranfer the actual ODA data to the application. - **/ -XAresult XARDSItfImpl_RegisterRDSCallback(XARDSItf self, - xaRDSCallback callback, - void * pContext) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_RegisterRDSCallback"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_RegisterRDSCallback"); - return XA_RESULT_PARAMETER_INVALID; - } - - impl->rdsCallback = callback; - impl->rdsContext = pContext; - impl->rdsCbPtrToSelf = self; - - DEBUG_API("<-XARDSItfImpl_RegisterRDSCallback"); - return ret; -} - -/** - * XAresult XARDSItfImpl_RegisterODADataCallback(XARDSItf self, - * xaNewODADataCallback callback, - * void * pContext) - * Description: Sets or clears the xaRDSCallback(). xaRDSCallback() is used to monitor - * changes in RDS fields. - **/ -XAresult XARDSItfImpl_RegisterODADataCallback(XARDSItf self, - xaNewODADataCallback callback, - void * pContext) -{ - - XAresult ret = XA_RESULT_SUCCESS; - XARDSItfImpl* impl = GetImpl(self); - DEBUG_API("->XARDSItfImpl_RegisterODADataCallback"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARDSItfImpl_RegisterODADataCallback"); - return XA_RESULT_PARAMETER_INVALID; - } - - impl->odaDataCallback = callback; - impl->odaDataContext = pContext; - impl->odaDataCbPtrToSelf = self; - - DEBUG_API("<-XARDSItfImpl_RegisterODADataCallback"); - return ret; -} - -/** - * XARDSItfImpl -specific methods - **/ - - -/** - * XARDSItfImplImpl* XARDSItfImpl_Create() - * @return XARDSItfImplImpl* - Pointer to RDSItf interface implementation - **/ -XARDSItfImpl* XARDSItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - XARDSItfImpl *self = (XARDSItfImpl*) - calloc(1,sizeof(XARDSItfImpl)); - DEBUG_API("->XARDSItfImpl_Create"); - if(self) - { - /* init itf default implementation */ - self->itf.QueryRDSSignal = XARDSItfImpl_QueryRDSSignal; - self->itf.GetProgrammeServiceName = XARDSItfImpl_GetProgrammeServiceName; - self->itf.GetRadioText = XARDSItfImpl_GetRadioText; - self->itf.GetRadioTextPlus = XARDSItfImpl_GetRadioTextPlus; - self->itf.GetProgrammeType = XARDSItfImpl_GetProgrammeType; - self->itf.GetProgrammeTypeString = XARDSItfImpl_GetProgrammeTypeString; - self->itf.GetProgrammeIdentificationCode = XARDSItfImpl_GetProgrammeIdentificationCode; - self->itf.GetClockTime = XARDSItfImpl_GetClockTime; - self->itf.GetTrafficAnnouncement = XARDSItfImpl_GetTrafficAnnouncement; - self->itf.GetTrafficProgramme = XARDSItfImpl_GetTrafficProgramme; - self->itf.SeekByProgrammeType = XARDSItfImpl_SeekByProgrammeType; - self->itf.SeekTrafficAnnouncement = XARDSItfImpl_SeekTrafficAnnouncement; - self->itf.SeekTrafficProgramme = XARDSItfImpl_SeekTrafficProgramme; - self->itf.SetAutomaticSwitching = XARDSItfImpl_SetAutomaticSwitching; - self->itf.GetAutomaticSwitching = XARDSItfImpl_GetAutomaticSwitching; - self->itf.SetAutomaticTrafficAnnouncement = XARDSItfImpl_SetAutomaticTrafficAnnouncement; - self->itf.GetAutomaticTrafficAnnouncement = XARDSItfImpl_GetAutomaticTrafficAnnouncement; - self->itf.GetODAGroup = XARDSItfImpl_GetODAGroup; - self->itf.SubscribeODAGroup = XARDSItfImpl_SubscribeODAGroup; - self->itf.UnsubscribeODAGroup = XARDSItfImpl_UnsubscribeODAGroup; - self->itf.ListODAGroupSubscriptions = XARDSItfImpl_ListODAGroupSubscriptions; - self->itf.RegisterRDSCallback = XARDSItfImpl_RegisterRDSCallback; - self->itf.RegisterODADataCallback = XARDSItfImpl_RegisterODADataCallback; - - /* init variables */ - - self->odaDataCallback = NULL; - self->odaDataContext = NULL; - self->odaDataCbPtrToSelf = NULL; - self->odaGroupCallback = NULL; - self->odaGroupContext = NULL; - self->odaGroupCbPtrToSelf = NULL; - self->rdsCallback = NULL; - self->rdsContext = NULL; - self->rdsCbPtrToSelf = NULL; - - XAAdaptationBase_AddEventHandler( adapCtx, &XARDSItfImpl_AdaptCb, XA_RDSITFEVENTS, self ); - - self->adapCtx = adapCtx; - - self->self = self; - } - - DEBUG_API("<-XARDSItfImpl_Create"); - return self; -} - -/* void XARDSItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) - * @param void *pHandlerCtx - pointer to cb context (XARadioItfImpl) - * @param XAAdaptEvent *event - Event - * Description: Event handler for adaptation events - */ -void XARDSItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) -{ - XARDSItfImpl* impl =(XARDSItfImpl*)pHandlerCtx; - DEBUG_API("->XARDSItfImpl_AdaptCb"); - - if(!impl) - { - DEBUG_ERR("XARadioItfImpl_AdaptCb, invalid context pointer!"); - DEBUG_API("<-XARDSItfImpl_AdaptCb"); - return; - } - assert(event); - - if( event->eventid == XA_ADAPT_RDS_GET_ODA_GROUP_DONE && impl->odaGroupCallback ) - { - /* stubbed (enough for emulation purposes) */ - /* XA_BOOLEAN_FALSE and -1 means oda group not found */ - impl->odaGroupCallback( (XARadioItf) impl->odaGroupCbPtrToSelf, impl->odaGroupContext, XA_BOOLEAN_FALSE, -1, 0 ); - } - DEBUG_API("<-XARDSItfImpl_AdaptCb"); -} - -/** - * void XARDSItfImpl_Free(XARDSItfImpl* self) - * @param XARDSItfImpl* self - - **/ -void XARDSItfImpl_Free(XARDSItfImpl* self) -{ - DEBUG_API("->XARDSItfImpl_Free"); - XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio); - assert(self==self->self); - - XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XARDSItfImpl_AdaptCb ); - - XARDSItfAdapt_Free(self->adapCtx); - - free(self); - XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSRadio); - DEBUG_API("<-XARDSItfImpl_Free"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/radio/xardsitf.h --- a/khronosfws/openmax_al/src/radio/xardsitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XARDSITF_H -#define XARDSITF_H - -#include "xaadptbasectx.h" -/** MACROS **/ -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ -/* Definition of XAEqualizerItf implementation */ -typedef struct XARDSItfImpl_ -{ - /* parent interface */ - struct XARDSItf_ itf; - /* pointer to self */ - struct XARDSItfImpl_* self; - - /* variables */ - - xaRDSCallback rdsCallback; - void *rdsContext; - XARDSItf rdsCbPtrToSelf; - - xaGetODAGroupCallback odaGroupCallback; - void *odaGroupContext; - XARDSItf odaGroupCbPtrToSelf; - - xaNewODADataCallback odaDataCallback; - void *odaDataContext; - XARDSItf odaDataCbPtrToSelf; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; -} XARDSItfImpl; - -/** METHODS **/ - -/* Base interface XARDSItf implementation */ - -XAresult XARDSItfImpl_QueryRDSSignal(XARDSItf self, XAboolean * isSignal); - -XAresult XARDSItfImpl_GetProgrammeServiceName(XARDSItf self, XAchar * ps); - -XAresult XARDSItfImpl_GetRadioText(XARDSItf self, XAchar * rt); - -XAresult XARDSItfImpl_GetRadioTextPlus(XARDSItf self, - XAuint8 contentType, - XAchar * informationElement, - XAchar * descriptor, - XAuint8 * descriptorContentType); - -XAresult XARDSItfImpl_GetProgrammeType(XARDSItf self, XAuint32 * pty); - -XAresult XARDSItfImpl_GetProgrammeTypeString(XARDSItf self, - XAboolean isLengthMax16, - XAchar * pty); - -XAresult XARDSItfImpl_GetProgrammeIdentificationCode(XARDSItf self, XAint16 * pi); - -XAresult XARDSItfImpl_GetClockTime(XARDSItf self, XAtime * dateAndTime); - -XAresult XARDSItfImpl_GetTrafficAnnouncement(XARDSItf self, XAboolean * ta); - -XAresult XARDSItfImpl_GetTrafficProgramme(XARDSItf self, XAboolean * tp); - -XAresult XARDSItfImpl_SeekByProgrammeType(XARDSItf self, - XAuint32 pty, - XAboolean upwards); - -XAresult XARDSItfImpl_SeekTrafficAnnouncement(XARDSItf self, XAboolean upwards); - -XAresult XARDSItfImpl_SeekTrafficProgramme(XARDSItf self, XAboolean upwards); - -XAresult XARDSItfImpl_SetAutomaticSwitching(XARDSItf self, XAboolean automatic); - -XAresult XARDSItfImpl_GetAutomaticSwitching(XARDSItf self, XAboolean * automatic); - -XAresult XARDSItfImpl_SetAutomaticTrafficAnnouncement(XARDSItf self, XAboolean automatic); - -XAresult XARDSItfImpl_GetAutomaticTrafficAnnouncement(XARDSItf self, XAboolean * automatic); - -XAresult XARDSItfImpl_GetODAGroup(XARDSItf self, - XAuint16 AID, - xaGetODAGroupCallback callback, - void * pContext); - -XAresult XARDSItfImpl_SubscribeODAGroup(XARDSItf self, - XAint16 group, - XAboolean useErrorCorrection); - -XAresult XARDSItfImpl_UnsubscribeODAGroup(XARDSItf self, XAint16 group); - -XAresult XARDSItfImpl_ListODAGroupSubscriptions(XARDSItf self, - XAint16* pGroups, - XAuint32* pLength); - -XAresult XARDSItfImpl_RegisterRDSCallback(XARDSItf self, - xaRDSCallback callback, - void * pContext); - -XAresult XARDSItfImpl_RegisterODADataCallback(XARDSItf self, - xaNewODADataCallback callback, - void * pContext); - - -/* XARDSItfImpl -specific methods */ -XARDSItfImpl* XARDSItfImpl_Create(XAAdaptationBaseCtx *adapCtx); - -void XARDSItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ); -void XARDSItfImpl_Free(XARDSItfImpl* self); - -#endif /* XARDSITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/vibra/xavibradevice.c --- a/khronosfws/openmax_al/src/vibra/xavibradevice.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,315 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xavibradevice.h" -#include "xavibraitf.h" -#include "xaconfigextensionsitf.h" -#include "xadynintmgmtitf.h" -#include "xavibraadaptctx.h" - -/* Static mapping of enumeration XAVibraDeviceInterfaces to interface iids */ -static const XAInterfaceID* XAVibraDeviceItfIIDs[VIBRA_ITFCOUNT]= -{ - &XA_IID_OBJECT, - &XA_IID_CONFIGEXTENSION, - &XA_IID_VIBRA, - &XA_IID_DYNAMICINTERFACEMANAGEMENT -}; - - -/***************************************************************************** - * Global methods - *****************************************************************************/ -/* - * XAresult XAVibraDeviceImpl_CreateVibraDevice - * Description: Create object - */ -XAresult XAVibraDeviceImpl_CreateVibraDevice(FrameworkMap* mapper, - XAObjectItf* pDevice, - XAuint32 deviceID, - XAuint32 numInterfaces, - const XAInterfaceID * pInterfaceIds, - const XAboolean * pInterfaceRequired) -{ - XAVibraDeviceImpl* pImpl = NULL; - XAObjectItfImpl* pBaseObj = NULL; - XAuint8 itfIndex = 0; - - DEBUG_API("->XAVibraDeviceImpl_CreateVibraDevice"); - - if( !pDevice ) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraDeviceImpl_CreateVibraDevice"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* instantiate object implementation */ - pImpl = (XAVibraDeviceImpl*)calloc(1,sizeof(XAVibraDeviceImpl)); - if( !pImpl ) - { - /* memory allocation failed */ - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XAVibraDeviceImpl_CreateVibraDevice"); - return XA_RESULT_MEMORY_FAILURE; - } - pBaseObj = &pImpl->baseObj; - - /* Initialize base object default implementation */ - XAObjectItfImpl_Init(pBaseObj, - VIBRA_ITFCOUNT, - XAVibraDeviceItfIIDs, - XAVibraDeviceImpl_DoRealize, - XAVibraDeviceImpl_DoResume, - XAVibraDeviceImpl_FreeResources); - - /* Mark interfaces that need to be exposed */ - /* Implicit and mandated interfaces */ - pBaseObj->interfaceMap[VIBRA_VIBRAITF].required = XA_BOOLEAN_TRUE; - pBaseObj->interfaceMap[VIBRA_DIMITF].required = XA_BOOLEAN_TRUE; - - /* Explicit interfaces */ - if( (numInterfaces != 0) && pInterfaceIds && pInterfaceRequired ) - { - /* Check required interfaces */ - for( itfIndex = 0; itfIndex < numInterfaces; itfIndex++ ) - { - /* If mapEntry is null then required interface is not supported.*/ - XAObjItfMapEntry *entry = - XAObjectItfImpl_GetItfEntry((XAObjectItf)&(pBaseObj), pInterfaceIds[itfIndex]); - if( !entry ) - { - if( pInterfaceRequired[itfIndex] ) - { - /* required interface cannot be accommodated - fail creation */ - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - DEBUG_ERR("Required interface not found - abort creation!"); - DEBUG_API("<-XAVibraDeviceImpl_CreateVibraDevice"); - return XA_RESULT_FEATURE_UNSUPPORTED; - } - else - { - DEBUG_INFO("Requested (not required) interface not found - continue creation"); - } - } - else - { - entry->required = XA_BOOLEAN_TRUE; - } - } - } - - /* This code is put here to return Feature Not Supported since adaptation is not present*/ - /*************************************************/ - DEBUG_ERR("Required interface not found - abort creation!"); - XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); - DEBUG_API("<-XAVibraDeviceImpl_CreateVibraDevice"); - return XA_RESULT_FEATURE_UNSUPPORTED; - /*************************************************/ - -/* // Initialize XAVibraDeviceImpl variables - pImpl->deviceID = deviceID; - - - pImpl->adaptationCtx = XAVibraAdapt_Create(pImpl->deviceID); - - //Set ObjectItf to point to newly created object - *pDevice = (XAObjectItf)&(pBaseObj->self); - - DEBUG_API("<-XAVibraDeviceImpl_Create"); - return XA_RESULT_SUCCESS;*/ -} -/* XAResult XAVibraDeviceImpl_QueryNumSupportedInterfaces - * Description: Statically query number of supported interfaces - */ -XAresult XAVibraDeviceImpl_QueryNumSupportedInterfaces(XAuint32 *pNumSupportedInterfaces) -{ - DEBUG_API("->XAVibraDeviceImpl_QueryNumSupportedInterfaces"); - if( pNumSupportedInterfaces ) - { - *pNumSupportedInterfaces = VIBRA_ITFCOUNT; - - DEBUG_API_A1("<-XAVibraDeviceImpl_QueryNumSupportedInterfaces - %ld", *pNumSupportedInterfaces ); - return XA_RESULT_SUCCESS; - } - else - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraDeviceImpl_QueryNumSupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } -} -/* XAResult XACVibraDeviceImpl_QuerySupportedInterfaces - * Description: Statically query supported interfaces - */ -XAresult XAVibraDeviceImpl_QuerySupportedInterfaces(XAuint32 index, - XAInterfaceID *pInterfaceId) -{ - DEBUG_API("->XAVibraDeviceImpl_QuerySupportedInterfaces"); - - if( index >= VIBRA_ITFCOUNT || !pInterfaceId ) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraDeviceImpl_QuerySupportedInterfaces"); - return XA_RESULT_PARAMETER_INVALID; - } - else - { - *pInterfaceId = *(XAVibraDeviceItfIIDs[index]); - - DEBUG_API("<-XAVibraDeviceImpl_QuerySupportedInterfaces"); - return XA_RESULT_SUCCESS; - } -} -/***************************************************************************** - * base object XAObjectItfImpl methods - *****************************************************************************/ -/* XAResult XAVibraDeviceImpl_DoRealize - * Description: Realize all implicit and explicitly wanted interfaces. - * Create and initialize implementation-specific variables. - * Called from base object XAObjectItfImpl - */ -XAresult XAVibraDeviceImpl_DoRealize(XAObjectItf self) -{ - XAuint8 itfIdx = 0; - XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); - XAVibraDeviceImpl* pObjImpl = (XAVibraDeviceImpl*)(pObj); - XAresult ret = XA_RESULT_SUCCESS; - - DEBUG_API("->XAVibraDeviceImpl_DoRealize"); - - /* check casting from correct pointer type */ - if( !pObjImpl || pObj != pObjImpl->baseObj.self ) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraDeviceImpl_DoRealize"); - return XA_RESULT_PARAMETER_INVALID; - } - - - ret = XAVibraAdapt_PostInit( pObjImpl->adaptationCtx ); - - if( ret != XA_RESULT_SUCCESS ) - { - DEBUG_API("<-XAVibraDeviceImpl_DoRealize"); - return ret; - } - - /* Realize all implicit and explicitly wanted interfaces */ - for( itfIdx = 0; itfIdx < VIBRA_ITFCOUNT; itfIdx++) - { - if( !(pObj->interfaceMap[itfIdx].pItf) && - pObj->interfaceMap[itfIdx].required ) - { - void *pItf = NULL; - switch( itfIdx ) - { - case VIBRA_VIBRAITF: - - pItf = XAVibraItfImpl_Create(pObjImpl->adaptationCtx); - - break; - case VIBRA_CONFIGEXTENSIONITF: - pItf = XAConfigExtensionsItfImpl_Create(); - break; - case VIBRA_DIMITF: - pItf = XADIMItfImpl_Create(); - break; - default: - break; - } - if( !pItf ) - { - /* memory allocation failed */ - DEBUG_ERR("XA_RESULT_MEMORY_FAILURE"); - DEBUG_API("<-XAVibraDeviceImpl_DoRealize"); - return XA_RESULT_MEMORY_FAILURE; - } - else - { - pObj->interfaceMap[itfIdx].pItf = pItf; - } - } - } - - pObj->state = XA_OBJECT_STATE_REALIZED; - DEBUG_API("<-XAVibraDeviceImpl_DoRealize"); - return XA_RESULT_SUCCESS; -} - -/* XAResult XAVibraDeviceImpl_DoResume - * Description: Resume object from suspended state - */ -XAresult XAVibraDeviceImpl_DoResume(XAObjectItf self) -{ - DEBUG_API("->XAVibraDeviceImpl_DoResume"); - DEBUG_API("<-XAVibraDeviceImpl_DoResume"); - /* This implementation does not support suspended state */ - return XA_RESULT_PRECONDITIONS_VIOLATED; -} -/* void XAVibraDeviceImpl_FreeResources - * Description: Free all resources reserved at XAVibraDeviceImpl_DoRealize() - */ -void XAVibraDeviceImpl_FreeResources(XAObjectItf self) -{ - XAObjectItfImpl* pObj = (XAObjectItfImpl*) (*self); - XAVibraDeviceImpl* pImpl = (XAVibraDeviceImpl*) (*self); - XAuint8 itfIdx = 0; - DEBUG_API("->XAVibraDeviceImpl_FreeResources"); - - - assert( pObj && pImpl && pObj == pObj->self ); - if (pImpl->adaptationCtx != NULL) - { - XAVibraAdapt_Destroy(pImpl->adaptationCtx); - pImpl->adaptationCtx = NULL; - } - - /* free all allocated interfaces */ - for (itfIdx = 0; itfIdx < VIBRA_ITFCOUNT; itfIdx++) - { - void *pItf = pObj->interfaceMap[itfIdx].pItf; - if (pItf) - { - switch (itfIdx) - { - case VIBRA_VIBRAITF: - XAVibraItfImpl_Free( pItf ); - break; - case VIBRA_CONFIGEXTENSIONITF: - XAConfigExtensionsItfImpl_Free( pItf ); - break; - case VIBRA_DIMITF: - XADIMItfImpl_Free( pItf ); - break; - default: - break; - } - pObj->interfaceMap[itfIdx].pItf = NULL; - } - } - - DEBUG_API("<-XAVibraDeviceImpl_FreeResources"); - - return; -} -/* END OF FILE*/ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/vibra/xavibradevice.h --- a/khronosfws/openmax_al/src/vibra/xavibradevice.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIBRADEVICE_H -#define XAVIBRADEVICE_H - -#include "xaobjectitf.h" -#include "xaadptbasectx.h" -/** MACROS **/ - - -/** TYPES **/ - - -/** ENUMERATIONS **/ -/* Enumeration for interfaces that CameraDevice supports. */ -typedef enum -{ - VIBRA_OBJECTITF, - VIBRA_CONFIGEXTENSIONITF, - VIBRA_VIBRAITF, - VIBRA_DIMITF, - VIBRA_ITFCOUNT -} XAVibraDeviceInterfaces; - -/** STRUCTURES **/ -/* Specification for VibraDeviceImpl. */ -typedef struct XAVibraDeviceImpl_ -{ - /* Parent for XACameraDeviceImpl */ - XAObjectItfImpl baseObj; - - /* variables */ - XAuint32 deviceID; - - XAAdaptationBaseCtx* adaptationCtx; - -} XAVibraDeviceImpl; - -/** METHODS **/ - -/* base object XAObjectItfImpl methods */ -XAresult XAVibraDeviceImpl_DoRealize(XAObjectItf self); -XAresult XAVibraDeviceImpl_DoResume(XAObjectItf self); -void XAVibraDeviceImpl_FreeResources(XAObjectItf self); - -#endif /* XAVIBRADEVICE_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/vibra/xavibraitf.c --- a/khronosfws/openmax_al/src/vibra/xavibraitf.c Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include "xavibraitf.h" - -#include "xavibraitfadaptation.h" - -#include "xathreadsafety.h" -/* XAVibraItfImpl* GetImpl(XAVibraItf self) - * Description: Validate interface pointer and cast it to implementation pointer. -*/ -static XAVibraItfImpl* GetImpl(XAVibraItf self) -{ - if( self ) - { - XAVibraItfImpl* impl = (XAVibraItfImpl*)(*self); - if( impl && (impl == impl->self) ) - { - return impl; - } - } - return NULL; -} - -/***************************************************************************** - * Base interface XAVibraItf implementation - *****************************************************************************/ -/* - * XAresult XAVibraItfImpl_Vibrate ( XAVibraItf self, XAboolean vibrate ) - * Description: Activates or deactivates vibration for the I/O device. - */ -XAresult XAVibraItfImpl_Vibrate ( XAVibraItf self, - XAboolean vibrate ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVibraItfImpl_Vibrate"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSVibra); - - if( !impl ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfImpl_Vibrate"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is vibrate mode changed */ - if( impl->vibrate != vibrate ) - { - - ret = XAVibraItfAdapt_Vibrate( (XAAdaptationGstCtx*)impl->adapCtx, vibrate ); - - if ( ret == XA_RESULT_SUCCESS ) - { - impl->vibrate = vibrate; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra); - DEBUG_API("<-XAVibraItfImpl_Vibrate"); - return ret; -} -/* - * XAresult XAVibraItfImpl_IsVibrating ( XAVibraItf self, XAboolean * pVibrating ) - * Description: Returns whether the I/O device is vibrating. - */ -XAresult XAVibraItfImpl_IsVibrating ( XAVibraItf self, XAboolean * pVibrating ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVibraItfImpl_IsVibrating"); - - if( !impl || !pVibrating) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfImpl_IsVibrating"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pVibrating = impl->vibrate; - - if( *pVibrating ) - { - DEBUG_API("It's vibrating"); - } - else - { - DEBUG_API("Vibrate is off."); - } - - DEBUG_API("<-XAVibraItfImpl_IsVibrating"); - return ret; -} -/* - * XAresult XAVibraItfImpl_SetFrequency ( XAVibraItf self, XAmilliHertz frequency ) - * Description: Sets the vibration frequency of the I/O device. - */ -XAresult XAVibraItfImpl_SetFrequency ( XAVibraItf self, XAmilliHertz frequency ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraItfImpl* impl = GetImpl(self); - - DEBUG_API_A1("->XAVibraItfImpl_SetFrequency %ld", frequency); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSVibra); - - if( !impl || frequency < MIN_FREQUENCY || frequency > MAX_FREQUENCY) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfImpl_SetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is vibration frequency changed */ - if( impl->frequency != frequency ) - { - - ret = XAVibraItfAdapt_SetFrequency( (XAAdaptationGstCtx*)impl->adapCtx, frequency ); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->frequency = frequency; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra); - DEBUG_API("<-XAVibraItfImpl_SetFrequency"); - return ret; -} -/* - * XAresult XAVibraItfImpl_GetFrequency ( XAVibraItf self, XAmilliHertz * pFrequency ) - * Description: Returns the vibration frequency of the I/O device. - */ -XAresult XAVibraItfImpl_GetFrequency ( XAVibraItf self, XAmilliHertz * pFrequency ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVibraItfImpl_GetFrequency"); - if( !impl || !pFrequency) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfImpl_GetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pFrequency = impl->frequency; - - DEBUG_API_A1("Frequency is %ld", *pFrequency); - DEBUG_API("<-XAVibraItfImpl_GetFrequency"); - return ret; -} -/* - * XAresult XAVibraItfImpl_SetIntensity ( XAVibraItf self, XApermille intensity ) - * Description: Sets the vibration intensity of the Vibra I/O device. - */ -XAresult XAVibraItfImpl_SetIntensity ( XAVibraItf self, XApermille intensity ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraItfImpl* impl = GetImpl(self); - DEBUG_API_A1("->XAVibraItfImpl_SetIntensity %d", intensity); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSVibra); - - if( !impl || intensity < MIN_INTENSITY || intensity > MAX_INTENSITY ) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfImpl_SetIntensity"); - return XA_RESULT_PARAMETER_INVALID; - } - - /* check is vibration intensity changed */ - if( impl->intensity != intensity ) - { - - ret = XAVibraItfAdapt_SetIntensity( (XAAdaptationGstCtx*)impl->adapCtx, intensity ); - - if( ret == XA_RESULT_SUCCESS ) - { - impl->intensity = intensity; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSVibra); - DEBUG_API("<-XAVibraItfImpl_SetIntensity"); - return ret; -} -/* - * XAresult XAVibraItfImpl_GetIntensity ( XAVibraItf self, XApermille * pIntensity ) - * Description: Returns the vibration intensity of the Vibra I/O device. - */ -XAresult XAVibraItfImpl_GetIntensity ( XAVibraItf self, XApermille * pIntensity ) -{ - XAresult ret = XA_RESULT_SUCCESS; - XAVibraItfImpl* impl = GetImpl(self); - DEBUG_API("->XAVibraItfImpl_GetIntensity"); - - if( !impl || !pIntensity) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XAVibraItfImpl_GetIntensity"); - return XA_RESULT_PARAMETER_INVALID; - } - - *pIntensity = impl->intensity; - - DEBUG_API_A1("Intensity is %d", *pIntensity); - DEBUG_API("<-XAVibraItfImpl_GetIntensity"); - return ret; -} - - - -/***************************************************************************** - * XAVibraItfImpl -specific methods - *****************************************************************************/ -/* XAVibraItfImpl* XAVibraItfImpl_Create() - * Description: Allocate and initialize VibraItfImpl - */ -XAVibraItfImpl* XAVibraItfImpl_Create( XAAdaptationBaseCtx *adapCtx ) -{ - XAVibraItfImpl* self = (XAVibraItfImpl*) calloc(1,sizeof(XAVibraItfImpl)); - DEBUG_API("->XAVibraItfImpl_Create"); - if( self ) - { - /* init itf default implementation*/ - self->itf.Vibrate = XAVibraItfImpl_Vibrate; - self->itf.IsVibrating = XAVibraItfImpl_IsVibrating; - self->itf.SetFrequency = XAVibraItfImpl_SetFrequency; - self->itf.GetFrequency = XAVibraItfImpl_GetFrequency; - self->itf.SetIntensity = XAVibraItfImpl_SetIntensity; - self->itf.GetIntensity = XAVibraItfImpl_GetIntensity; - - /* init variables*/ - self->vibrate = XA_BOOLEAN_FALSE; - self->frequency = 0; - self->intensity = 0; - self->adapCtx = adapCtx; - - self->self = self; - } - - DEBUG_API("<-XAVibraItfImpl_Create"); - return self; -} - -/* void XAVibraItfImpl_Free(XAVibraItfImpl* self) - * Description: Free all resources reserved at XAVibraItfImpl_Create - */ -void XAVibraItfImpl_Free(XAVibraItfImpl* self) -{ - DEBUG_API("->XAVibraItfImpl_Free"); - assert( self==self->self ); - free( self ); - DEBUG_API("<-XAVibraItfImpl_Free"); -} - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 khronosfws/openmax_al/src/vibra/xavibraitf.h --- a/khronosfws/openmax_al/src/vibra/xavibraitf.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef XAVIBRAITF_H -#define XAVIBRAITF_H - -#include "xaadptbasectx.h" - -/** MACROS **/ -#define MIN_INTENSITY 0 -#define MAX_INTENSITY 1000 -#define MIN_FREQUENCY 0x00000001 -#define MAX_FREQUENCY 0xFFFFFFFF -/** TYPES **/ - -/** ENUMERATIONS **/ - -/** STRUCTURES **/ - -/* Definition of XAXAVibraItfItf implementation */ -typedef struct XAVibraItfImpl_ -{ - /* parent interface */ - struct XAVibraItf_ itf; - /* pointer to self */ - struct XAVibraItfImpl_* self; - - /* variables */ - XAboolean vibrate; - XAmilliHertz frequency; - XApermille intensity; - - /*Adaptation variables*/ - XAAdaptationBaseCtx *adapCtx; - -} XAVibraItfImpl; - -/** METHODS **/ - -/* Base interface XAVibraItf implementation - * See API Specification for method documentation -*/ -XAresult XAVibraItfImpl_Vibrate ( XAVibraItf self, XAboolean vibrate ); -XAresult XAVibraItfImpl_IsVibrating ( XAVibraItf self, XAboolean * pVibrating ); -XAresult XAVibraItfImpl_SetFrequency ( XAVibraItf self, XAmilliHertz frequency ); -XAresult XAVibraItfImpl_GetFrequency ( XAVibraItf self, XAmilliHertz * pFrequency ); -XAresult XAVibraItfImpl_SetIntensity ( XAVibraItf self, XApermille intensity ); -XAresult XAVibraItfImpl_GetIntensity ( XAVibraItf self, XApermille * pIntensity ); - - -/* XAVibraItfImpl -specific methods*/ -XAVibraItfImpl* XAVibraItfImpl_Create( XAAdaptationBaseCtx *adapCtx ); - -void XAVibraItfImpl_Free(XAVibraItfImpl* self); -#endif /* XAVIBRAITF_H */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/rom/AudioControllerPluginsVariant.iby --- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/rom/AudioControllerPluginsVariant.iby Tue Jul 06 14:50:35 2010 +0300 +++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/rom/AudioControllerPluginsVariant.iby Wed Aug 18 10:17:22 2010 +0300 @@ -35,6 +35,9 @@ file=ABI_DIR\BUILD_DIR\3GPAudioMetaDataComposer.dll SHARED_LIB_DIR\3GPAudioMetaDataComposer.dll #endif +//For Wav Controller +ECOM_PLUGIN(mmfaudiocontroller.dll,101f55bf.rsc) + //For 3GP ECOM_PLUGIN(3GPAudioPlayControllerPlugin.DLL,3GPAudioPlayControllerPlugin.rsc) ECOM_PLUGIN(3GPAudioPlayControllerRecognizer.DLL,3GPAudioPlayControllerRecognizer.rsc) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmfenh/profilesettingsmonitor/inc/ProfileSettingsMonitorServerImpl.h --- a/mmfenh/profilesettingsmonitor/inc/ProfileSettingsMonitorServerImpl.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmfenh/profilesettingsmonitor/inc/ProfileSettingsMonitorServerImpl.h Wed Aug 18 10:17:22 2010 +0300 @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,7 @@ #include #include #include +#include class CProfileSettingsMonitorServerImpl : public CBase, public MProEngProfileActivationObserver, @@ -62,6 +64,8 @@ // Initializes publish and subscribe keys used for // audio clients list implementation void InitializeAudioClientsListPSKeysL(); + void CMapGASRingingType(TProfileRingingType aRingingType); + void CMapGASKeypadVolume(TProfileKeypadVolume aKeypadVolume); private: MProEngEngine* iEngine; @@ -72,11 +76,27 @@ TBool iSilentProfile; TBool iVibra; TBool iPublicSilence; + HBufC* iMessageToneName; + HBufC* iEmailToneName; + HBufC* iVideoCallToneName; + HBufC* iRingingTone1Name; + HBufC* iRingingTone2Name; + + CGlobalAudioSettings::TGASRingingType iGASRingingType; + + CGlobalAudioSettings::TGASKeypadVolume iGASKeypadVolume; RProperty iWarningTonesProperty; RProperty iMessagingTonesProperty; RProperty iSilentProfileProperty; RProperty iVibraProperty; RProperty iPublicSilenceProperty; + RProperty iMessageToneNameProperty; + RProperty iEmailToneNameProperty; + RProperty iRingingTypeProperty; + RProperty iVideoCallToneNameProperty; + RProperty iRingingTone1NameProperty; + RProperty iRingingTone2NameProperty; + RProperty iKeypadVolumeProperty; }; #endif diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmfenh/profilesettingsmonitor/src/ProfileSettingsMonitorServerImpl.cpp --- a/mmfenh/profilesettingsmonitor/src/ProfileSettingsMonitorServerImpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmfenh/profilesettingsmonitor/src/ProfileSettingsMonitorServerImpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -53,6 +53,52 @@ iVibraProperty.Close(); RProperty::Delete(KGASPSUidGlobalAudioSettings, KGASVibra); + iRingingTypeProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings,KGASRingingType); + + iMessageToneNameProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings, KGASMessageToneName); + + iEmailToneNameProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings,KGASEmailToneName); + + iVideoCallToneNameProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings,KGASVideoCallToneName); + + iRingingTone1NameProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings,KGASRingingTone1Name); + + iRingingTone2NameProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings,KGASRingingTone2Name); + + iKeypadVolumeProperty.Close(); + RProperty::Delete(KGASPSUidGlobalAudioSettings,KGASKeypadToneVolume); + + if(iMessageToneName) + { + delete iMessageToneName; + iMessageToneName=NULL; + } + if(iEmailToneName) + { + delete iEmailToneName; + iEmailToneName=NULL; + } + if(iVideoCallToneName) + { + delete iVideoCallToneName; + iVideoCallToneName=NULL; + } + if(iRingingTone1Name) + { + delete iRingingTone1Name; + iRingingTone1Name=NULL; + } + if(iRingingTone2Name) + { + delete iRingingTone2Name; + iRingingTone2Name=NULL; + } // Release profile engine resources if ( iEngine ) { @@ -92,7 +138,25 @@ iWarningTones = settings.WarningAndGameTones(); iMessagingTones = !( currentProfile->IsSilent() ); iVibra = settings.VibratingAlert(); + + CMapGASRingingType( settings.RingingType()); + //CleanupStack::PopAndDestroy(currentProfile); + + MProEngTones& profileTones=currentProfile->ProfileTones(); + + iMessageToneName=profileTones.MessageAlertTone().AllocL(); + + iEmailToneName=profileTones.EmailAlertTone().AllocL(); + + iVideoCallToneName=profileTones.VideoCallRingingTone().AllocL(); + + iRingingTone1Name=profileTones.RingingTone1().AllocL(); + + iRingingTone2Name=profileTones.RingingTone2().AllocL(); + + + CMapGASKeypadVolume(settings.KeypadVolume()); // Get PublicSilence from CenRep TInt featureBitmask( 0 ); @@ -182,6 +246,103 @@ KGASPSUidGlobalAudioSettings, KGASPublicSilence, iPublicSilence)); + + + + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASRingingType, + RProperty::EInt, + read, + write)); + User::LeaveIfError(iRingingTypeProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASRingingType)); + User::LeaveIfError(iRingingTypeProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASRingingType, + iGASRingingType)); + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASMessageToneName, + RProperty::EText, + read, + write)); + User::LeaveIfError(iMessageToneNameProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASMessageToneName)); + User::LeaveIfError(iMessageToneNameProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASMessageToneName, + *iMessageToneName)); + + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASEmailToneName, + RProperty::EText, + read, + write)); + User::LeaveIfError(iEmailToneNameProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASEmailToneName)); + User::LeaveIfError(iEmailToneNameProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASEmailToneName, + *iEmailToneName)); + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASVideoCallToneName, + RProperty::EText, + read, + write)); + User::LeaveIfError(iVideoCallToneNameProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASVideoCallToneName)); + User::LeaveIfError(iVideoCallToneNameProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASVideoCallToneName, + *iVideoCallToneName)); + + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASRingingTone1Name, + RProperty::EText, + read, + write)); + User::LeaveIfError(iRingingTone1NameProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASRingingTone1Name)); + User::LeaveIfError(iRingingTone1NameProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASRingingTone1Name, + *iRingingTone1Name)); + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASRingingTone2Name, + RProperty::EText, + read, + write)); + User::LeaveIfError(iRingingTone2NameProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASRingingTone2Name)); + User::LeaveIfError(iRingingTone2NameProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASRingingTone2Name, + *iRingingTone2Name)); + + User::LeaveIfError(RProperty::Define( + KGASPSUidGlobalAudioSettings, + KGASKeypadToneVolume, + RProperty::EInt, + read, + write)); + User::LeaveIfError(iKeypadVolumeProperty.Attach( + KGASPSUidGlobalAudioSettings, + KGASKeypadToneVolume)); + User::LeaveIfError(iKeypadVolumeProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASKeypadToneVolume, + iGASKeypadVolume)); //Stream Gain Control TInt status = RProperty::Define( @@ -321,6 +482,74 @@ KGASVibra, iVibra)); } + if(iGASRingingType != settings.RingingType()) + { + + CMapGASRingingType(settings.RingingType()); + + User::LeaveIfError(iRingingTypeProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASRingingType, + iGASRingingType)); + + } + MProEngTones &profileTones=currentProfile->ProfileTones(); + if(iMessageToneName->Compare(profileTones.MessageAlertTone())!= 0) + { + delete iMessageToneName; + iMessageToneName=NULL; + iMessageToneName=profileTones.MessageAlertTone().AllocL(); + User::LeaveIfError(iMessageToneNameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASMessageToneName, + *iMessageToneName)); + } + if(iEmailToneName->Compare(profileTones.EmailAlertTone())!= 0) + { + delete iEmailToneName; + iEmailToneName=NULL; + iEmailToneName=profileTones.EmailAlertTone().AllocL(); + User::LeaveIfError(iEmailToneNameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASEmailToneName, + *iEmailToneName)); + } + if(iVideoCallToneName->Compare(profileTones.VideoCallRingingTone())!=0) + { + delete iVideoCallToneName; + iVideoCallToneName=NULL; + iVideoCallToneName=profileTones.VideoCallRingingTone().AllocL(); + User::LeaveIfError(iVideoCallToneNameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASVideoCallToneName, + *iVideoCallToneName)); + + } + if(iRingingTone1Name->Compare(profileTones.RingingTone1())!=0) + { + delete iRingingTone1Name; + iRingingTone1Name=NULL; + iRingingTone1Name=profileTones.RingingTone1().AllocL(); + User::LeaveIfError(iRingingTone1NameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASRingingTone1Name, + *iRingingTone1Name)); + } + if(iRingingTone2Name->Compare(profileTones.RingingTone2())!=0) + { + delete iRingingTone2Name; + iRingingTone2Name=NULL; + iRingingTone2Name=profileTones.RingingTone2().AllocL(); + User::LeaveIfError(iRingingTone2NameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASRingingTone2Name, + *iRingingTone2Name)); + } + if(iGASKeypadVolume!=settings.KeypadVolume()) + { + + CMapGASKeypadVolume(settings.KeypadVolume()); + User::LeaveIfError(iKeypadVolumeProperty.Set(KGASPSUidGlobalAudioSettings, + KGASKeypadToneVolume, + iGASKeypadVolume)); + + + } CleanupStack::PopAndDestroy(currentProfile); } #ifdef _DEBUG @@ -346,6 +575,7 @@ CleanupReleasePushL(*currentProfile); MProEngToneSettings& settings = currentProfile->ToneSettings(); + MProEngTones& profileTones=currentProfile->ProfileTones(); if(iWarningTones != settings.WarningAndGameTones()) { iWarningTones = settings.WarningAndGameTones(); @@ -371,6 +601,76 @@ KGASVibra, iVibra)); } + if(iGASRingingType != settings.RingingType()) + { + + CMapGASRingingType(settings.RingingType()); + + User::LeaveIfError(iRingingTypeProperty.Set( + KGASPSUidGlobalAudioSettings, + KGASRingingType, + iGASRingingType)); + } + if(iMessageToneName->Compare(profileTones.MessageAlertTone())!= 0) + { + delete iMessageToneName; + iMessageToneName=NULL; + iMessageToneName=profileTones.MessageAlertTone().AllocL(); + + User::LeaveIfError(iMessageToneNameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASMessageToneName, + *iMessageToneName)); + } + + if(iEmailToneName->Compare(profileTones.EmailAlertTone())!= 0) + { + delete iEmailToneName; + iEmailToneName=NULL; + iEmailToneName=profileTones.EmailAlertTone().AllocL(); + User::LeaveIfError(iEmailToneNameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASEmailToneName, + *iEmailToneName)); + } + if(iVideoCallToneName->Compare(profileTones.VideoCallRingingTone())!=0) + { + delete iVideoCallToneName; + iVideoCallToneName=NULL; + iVideoCallToneName=profileTones.VideoCallRingingTone().AllocL(); + User::LeaveIfError(iVideoCallToneNameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASVideoCallToneName, + *iVideoCallToneName)); + + } + if(iRingingTone1Name->Compare(profileTones.RingingTone1())!=0) + { + delete iRingingTone1Name; + iRingingTone1Name=NULL; + iRingingTone1Name=profileTones.RingingTone1().AllocL(); + User::LeaveIfError(iRingingTone1NameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASRingingTone1Name, + *iRingingTone1Name)); + + } + if(iRingingTone2Name->Compare(profileTones.RingingTone2())!=0) + { + delete iRingingTone2Name; + iRingingTone2Name=NULL; + iRingingTone2Name=profileTones.RingingTone2().AllocL(); + User::LeaveIfError(iRingingTone2NameProperty.Set(KGASPSUidGlobalAudioSettings, + KGASRingingTone2Name, + *iRingingTone2Name)); + + } + if(iGASKeypadVolume!=settings.KeypadVolume()) + { + + CMapGASKeypadVolume( settings.KeypadVolume()); + User::LeaveIfError(iKeypadVolumeProperty.Set(KGASPSUidGlobalAudioSettings, + KGASKeypadToneVolume, + iGASKeypadVolume)); + + + } CleanupStack::PopAndDestroy(currentProfile); } @@ -378,6 +678,39 @@ { DEB_TRACE0(_L("CMyProfileNameArrayObserver::HandleProfileActivationNotificationError")); } - +void CProfileSettingsMonitorServerImpl::CMapGASRingingType(TProfileRingingType aRingingType) + { + switch(aRingingType) + { + case EProfileRingingTypeRinging : iGASRingingType=CGlobalAudioSettings::EGASRingingTypeRinging; + break; + + case EProfileRingingTypeAscending:iGASRingingType=CGlobalAudioSettings::EGASRingingTypeAscending; + break; + + case EProfileRingingTypeRingingOnce :iGASRingingType=CGlobalAudioSettings::EGASRingingTypeRingingOnce; + break; + + case EProfileRingingTypeBeepOnce :iGASRingingType=CGlobalAudioSettings::EGASRingingTypeBeepOnce; + break; + + case EProfileRingingTypeSilent:iGASRingingType=CGlobalAudioSettings::EGASRingingTypeSilent; + break; + } + } +void CProfileSettingsMonitorServerImpl::CMapGASKeypadVolume(TProfileKeypadVolume aKeypadVolume) + { + switch(aKeypadVolume) + { + case EProfileKeypadVolumeOff : iGASKeypadVolume=CGlobalAudioSettings::EGASKeypadVolumeOff; + break; + case EProfileKeypadVolumeLevel1 :iGASKeypadVolume=CGlobalAudioSettings::EGASKeypadVolumeLevel1; + break; + case EProfileKeypadVolumeLevel2 :iGASKeypadVolume=CGlobalAudioSettings::EGASKeypadVolumeLevel2; + break; + case EProfileKeypadVolumeLevel3 :iGASKeypadVolume=CGlobalAudioSettings::EGASKeypadVolumeLevel3; + break; + } + } // End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_info/mmmw_metadata/mmmw_metadata.mrp --- a/mmmw_info/mmmw_metadata/mmmw_metadata.mrp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -component mmmw_metadata -source \sf\mw\mmmw\mmmw_info\mmmw_metadata -source \sf\mw\mmmw\package_definition.xml -source \sf\mw\mmmw\distribution.policy.s60 -notes_source \component_defs\release.src -ipr T diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/audio_metadata_reader_api/inc/MetaDataField.hrh --- a/mmmw_plat/audio_metadata_reader_api/inc/MetaDataField.hrh Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/audio_metadata_reader_api/inc/MetaDataField.hrh Wed Aug 18 10:17:22 2010 +0300 @@ -44,7 +44,9 @@ EMetaDataDuration, EMetaDataDate, EMetaDataUnsyncLyrics, - EMetaDataProtected // get the Protected info, "0"=non protected, "1"=protected + EMetaDataProtected, // get the Protected info, "0"=non protected, "1"=protected + EMetaDataSampleRate, // Hz + EMetaDataBitRate // Bps // More later... }; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/openmax_al_api/inc/OpenMAXAL_Platform.h --- a/mmmw_plat/openmax_al_api/inc/OpenMAXAL_Platform.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/openmax_al_api/inc/OpenMAXAL_Platform.h Wed Aug 18 10:17:22 2010 +0300 @@ -48,8 +48,8 @@ /** The XA_API is platform specific definition used * to declare OMX function prototypes. They are modified to meet the * requirements for a particular platform */ -#ifdef __SYMBIAN32__ -# define XA_API __declspec(dllimport) +#ifndef XA_API + #define XA_API __declspec(dllimport) #endif #endif /* _OPENMAXAL_PLATFORM_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_radioitf.cfg --- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_radioitf.cfg Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_radioitf.cfg Wed Aug 18 10:17:22 2010 +0300 @@ -30,7 +30,7 @@ [Endtest] [Test] -title 21.2 RadioItf Set Freq 106.0 MHz +title 21.2 RadioItf Get Frequency (DEFAULT) create openmaxaltestmodule ALImpl ALImpl al_createEngine 1 1 0 0 ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE @@ -40,7 +40,6 @@ ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO ALImpl al_radioitf_RegisterRadioCallback - ALImpl al_SetDataLocator 3 5 0 1 ALImpl al_SetDataSource 3 0 1 ALImpl al_SetDataSink 3 6 1 @@ -51,10 +50,7 @@ ALImpl al_objitf_GetInterface 4 XA_IID_PLAY ALImpl al_playitf_RegisterCallback -request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED -ALImpl al_radioitf_SetFrequency 106000000 -wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED -release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED +ALImpl al_radioitf_GetFrequencyDefault ALImpl al_objitf_Destroy MO_RADIO ALImpl al_objitf_Destroy MO_PLAYER @@ -63,7 +59,36 @@ [Endtest] [Test] -title 21.3 RadioItf Get Freq +title 21.3 RadioItf Get Freq Range (DEFAULT) +create openmaxaltestmodule ALImpl +ALImpl al_createEngine 1 1 0 0 +ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE +ALImpl al_engitf_CreateRadioDevice 0 +ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO +ALImpl al_radioitf_RegisterRadioCallback + +ALImpl al_SetDataLocator 3 5 0 1 +ALImpl al_SetDataSource 3 0 1 +ALImpl al_SetDataSink 3 6 1 + +ALImpl al_engitf_CreateMediaPlayer 0 + +ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface 4 XA_IID_PLAY +ALImpl al_playitf_RegisterCallback + +ALImpl al_radioitf_GetFreqRangeDefault + +ALImpl al_objitf_Destroy MO_RADIO +ALImpl al_objitf_Destroy MO_PLAYER +ALImpl al_objitf_Destroy MO_ENGINE +delete ALImpl +[Endtest] + +[Test] +title 21.4 RadioItf Set-Get Freq 106.0 create openmaxaltestmodule ALImpl ALImpl al_createEngine 1 1 0 0 ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE @@ -98,41 +123,7 @@ [Endtest] [Test] -title 21.4 RadioItf Set Freq Range -create openmaxaltestmodule ALImpl -ALImpl al_createEngine 1 1 0 0 -ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE -ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE -ALImpl al_engitf_CreateRadioDevice 0 -ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE -ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO -ALImpl al_radioitf_RegisterRadioCallback - - -ALImpl al_SetDataLocator 3 5 0 1 -ALImpl al_SetDataSource 3 0 1 -ALImpl al_SetDataSink 3 6 1 - -ALImpl al_engitf_CreateMediaPlayer 0 - -ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE -ALImpl al_objitf_GetInterface 4 XA_IID_PLAY -ALImpl al_playitf_RegisterCallback - -request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED -ALImpl al_radioitf_SetFreqRange 1 // EFmRangeJapan -wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED -release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED - - -ALImpl al_objitf_Destroy MO_RADIO -ALImpl al_objitf_Destroy MO_PLAYER -ALImpl al_objitf_Destroy MO_ENGINE -delete ALImpl -[Endtest] - -[Test] -title 21.5 RadioItf Get Freq Range +title 21.5 RadioItf Set-Get Freq Range create openmaxaltestmodule ALImpl ALImpl al_createEngine 1 1 0 0 ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE @@ -153,11 +144,11 @@ ALImpl al_playitf_RegisterCallback request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED -ALImpl al_radioitf_SetFreqRange 1 // EFmRangeJapan +ALImpl al_radioitf_SetFreqRange 2 //XA_FREQRANGE_FMJAPAN wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED -ALImpl al_radioitf_GetFreqRange 1 // EFmRangeJapan +ALImpl al_radioitf_GetFreqRange 2 // EFmRangeJapan ALImpl al_objitf_Destroy MO_RADIO ALImpl al_objitf_Destroy MO_PLAYER @@ -176,7 +167,6 @@ ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO ALImpl al_radioitf_RegisterRadioCallback - ALImpl al_SetDataLocator 3 5 0 1 ALImpl al_SetDataSource 3 0 1 ALImpl al_SetDataSink 3 6 1 @@ -188,11 +178,11 @@ ALImpl al_playitf_RegisterCallback request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED -ALImpl al_radioitf_SetFreqRange 0 // EFmRangeEuroAmerica +ALImpl al_radioitf_SetFreqRange 1 //XA_FREQRANGE_FMEUROAMERICA wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED -ALImpl al_radioitf_GetFreqRangeProperties 0 87500000 108000000 20 // range expected: min freq, max freq, freq interval +ALImpl al_radioitf_GetFreqRangeProperties 1 87500000 108000000 200000 // range expected: min freq, max freq, freq interval ALImpl al_objitf_Destroy MO_RADIO ALImpl al_objitf_Destroy MO_PLAYER @@ -211,7 +201,6 @@ ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO ALImpl al_radioitf_RegisterRadioCallback - ALImpl al_SetDataLocator 3 5 0 1 ALImpl al_SetDataSource 3 0 1 ALImpl al_SetDataSink 3 6 1 @@ -726,4 +715,70 @@ ALImpl al_objitf_Destroy MO_PLAYER ALImpl al_objitf_Destroy MO_ENGINE delete ALImpl -[Endtest] \ No newline at end of file +[Endtest] + +[Test] +title 21.22 RadioItf Set Freq ERROR--too big +create openmaxaltestmodule ALImpl +ALImpl al_createEngine 1 1 0 0 +ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE +ALImpl al_engitf_CreateRadioDevice 0 +ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO +ALImpl al_radioitf_RegisterRadioCallback + + +ALImpl al_SetDataLocator 3 5 0 1 +ALImpl al_SetDataSource 3 0 1 +ALImpl al_SetDataSink 3 6 1 + +ALImpl al_engitf_CreateMediaPlayer 0 + +ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface 4 XA_IID_PLAY +ALImpl al_playitf_RegisterCallback + +allownextresult -17 +ALImpl al_radioitf_SetFrequency 109000000 + +ALImpl al_objitf_Destroy MO_RADIO +ALImpl al_objitf_Destroy MO_PLAYER +ALImpl al_objitf_Destroy MO_ENGINE +delete ALImpl +[Endtest] + +[Test] +title 21.23 RadioItf Set Invalid Freq Range +create openmaxaltestmodule ALImpl +ALImpl al_createEngine 1 1 0 0 +ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE +ALImpl al_engitf_CreateRadioDevice 0 +ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO +ALImpl al_radioitf_RegisterRadioCallback + + +ALImpl al_SetDataLocator 3 5 0 1 +ALImpl al_SetDataSource 3 0 1 +ALImpl al_SetDataSink 3 6 1 + +ALImpl al_engitf_CreateMediaPlayer 0 + +ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE +ALImpl al_objitf_GetInterface 4 XA_IID_PLAY +ALImpl al_playitf_RegisterCallback + +//request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED +allownextresult 2 +ALImpl al_radioitf_SetFreqRange 50 +//wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED +//release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED + + +ALImpl al_objitf_Destroy MO_RADIO +ALImpl al_objitf_Destroy MO_PLAYER +ALImpl al_objitf_Destroy MO_ENGINE +delete ALImpl +[Endtest] \ No newline at end of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h --- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h Wed Aug 18 10:17:22 2010 +0300 @@ -370,6 +370,9 @@ virtual TInt al_radioitf_Seek(CStifItemParser& aItem ); virtual TInt al_radioitf_StopSeeking(CStifItemParser& aItem ); virtual TInt al_radioitf_RegisterRadioCallback(CStifItemParser& aItem ); + virtual TInt al_radioitf_GetFrequencyDefault( CStifItemParser& aItem); + virtual TInt al_radioitf_GetFreqRangeDefault( CStifItemParser& aItem ); + virtual TInt al_strminfoitf_QueryMediaContainerInformation( CStifItemParser& aItem ); virtual TInt al_strminfoitf_QueryStreamType( CStifItemParser& aItem ); virtual TInt al_strminfoitf_QueryStreamInformation( CStifItemParser& aItem ); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp --- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -248,11 +248,13 @@ /*RadioItf begins*/ ENTRY( "al_radioitf_SetFreqRange", COpenMAXALTestModule::al_radioitf_SetFreqRange ), ENTRY( "al_radioitf_GetFreqRange", COpenMAXALTestModule::al_radioitf_GetFreqRange ), + ENTRY( "al_radioitf_GetFreqRangeDefault", COpenMAXALTestModule::al_radioitf_GetFreqRangeDefault ), ENTRY( "al_radioitf_IsFreqRangeSupported", COpenMAXALTestModule::al_radioitf_IsFreqRangeSupported ), ENTRY( "al_radioitf_GetFreqRangeProperties", COpenMAXALTestModule::al_radioitf_GetFreqRangeProperties ), ENTRY( "al_radioitf_SetFrequency", COpenMAXALTestModule::al_radioitf_SetFrequency ), ENTRY( "al_radioitf_CancelSetFrequency", COpenMAXALTestModule::al_radioitf_CancelSetFrequency ), ENTRY( "al_radioitf_GetFrequency", COpenMAXALTestModule::al_radioitf_GetFrequency ), + ENTRY( "al_radioitf_GetFrequencyDefault", COpenMAXALTestModule::al_radioitf_GetFrequencyDefault ), ENTRY( "al_radioitf_SetSquelch", COpenMAXALTestModule::al_radioitf_SetSquelch ), ENTRY( "al_radioitf_GetSquelch", COpenMAXALTestModule::al_radioitf_GetSquelch ), ENTRY( "al_radioitf_SetStereoMode", COpenMAXALTestModule::al_radioitf_SetStereoMode ), diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/radio/openmaxalradioitftests.cpp --- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/radio/openmaxalradioitftests.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/radio/openmaxalradioitftests.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -83,6 +83,17 @@ status = aItem.GetNextInt(freqRange); RET_ERR_IF_ERR(status); + if (m_PlayItf) + { + status = (*m_PlayItf)->SetPlayState( + m_PlayItf, XA_PLAYSTATE_PLAYING); + } + else + { + status = KErrNotFound; + return status; + } + if(m_RadioItf) { status = (*m_RadioItf)->SetFreqRange( @@ -185,12 +196,39 @@ { TInt status(KErrNone); TInt freq; + XAuint32 currentFreq; status = aItem.GetNextInt(freq); - RET_ERR_IF_ERR(status); + RET_ERR_IF_ERR(status); + + if (m_PlayItf) + { + status = (*m_PlayItf)->SetPlayState( + m_PlayItf, XA_PLAYSTATE_PLAYING); + } + else + { + status = KErrNotFound; + return status; + } + if (m_RadioItf) { - status = (*m_RadioItf)->SetFrequency( - m_RadioItf, freq); + status = (*m_RadioItf)->GetFrequency(m_RadioItf, ¤tFreq); + if (status != KErrNone) + { + status = KErrCompletion; + return status; + } + } + else + { + status = KErrNotFound; + return status; + } + + if (m_RadioItf) + { + status = (*m_RadioItf)->SetFrequency(m_RadioItf, freq); if (status != KErrNone) status = KErrCompletion; } @@ -227,6 +265,36 @@ } return status; } + +TInt COpenMAXALTestModule::al_radioitf_GetFrequencyDefault( CStifItemParser& aItem) + { + TInt status(KErrCompletion); + XAuint32 freq; + + if (m_RadioItf) + { + status = (*m_RadioItf)->GetFrequency( + m_RadioItf, &freq); + } + return status; + } + +TInt COpenMAXALTestModule::al_radioitf_GetFreqRangeDefault( CStifItemParser& aItem ) + { + TInt status(KErrCompletion); + XAuint8 freqRange; + + if (m_RadioItf) + { + status = (*m_RadioItf)->GetFreqRange( + m_RadioItf, &freqRange); + } + else + { + status = KErrNotFound; + } + return status; + } TInt COpenMAXALTestModule::al_radioitf_RegisterRadioCallback( CStifItemParser& /*aItem*/ ) { @@ -414,10 +482,10 @@ XARadioItf caller, XAuint32 event ) -{ - +{ + switch (event) - { + { case XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED: { TEventIf antennaStatusEvent( TEventIf::ESetEvent, _L("Event_XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED:") ); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/system_tone_service_api/inc/systemtoneservice.h --- a/mmmw_plat/system_tone_service_api/inc/systemtoneservice.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/system_tone_service_api/inc/systemtoneservice.h Wed Aug 18 10:17:22 2010 +0300 @@ -223,6 +223,8 @@ * @param[in] aAlarmContext The context to the specific alarm that is to be stopped. */ IMPORT_C void StopAlarm(unsigned int aAlarmContext); + + IMPORT_C void PlayAlarm(TToneType aTone, unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); protected: // Protected constructors and destructors diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg --- a/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg Wed Aug 18 10:17:22 2010 +0300 @@ -273,4 +273,4 @@ STSSTIF StopAlarm True STSSTIF Delete delete STSSTIF -[Endtest] \ No newline at end of file +[Endtest] diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicestif.h --- a/mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicestif.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicestif.h Wed Aug 18 10:17:22 2010 +0300 @@ -136,6 +136,8 @@ virtual TInt PlayAlarm( CStifItemParser& aItem ); virtual TInt StopAlarm( CStifItemParser& aItem ); + + virtual TInt PlayToneWithStop( CStifItemParser& aItem); @@ -145,6 +147,7 @@ virtual void HandleEvent(); + // Data TPlayState iPlayState; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp --- a/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -37,6 +37,7 @@ ENTRY( "PlayTone", CSystemToneServiceStif::PlayTone ), ENTRY( "PlayAlarm", CSystemToneServiceStif::PlayAlarm ), ENTRY( "StopAlarm", CSystemToneServiceStif::StopAlarm ), + ENTRY( "PlayToneWithStop", CSystemToneServiceStif::PlayToneWithStop ), @@ -216,6 +217,40 @@ } +TInt CSystemToneServiceStif::PlayToneWithStop( CStifItemParser& aItem ) + { + // Print to UI + _LIT( Ksystemtoneservicestif, "systemtoneservicestif" ); + _LIT( KPrint, "In PlaySystemToneServiceWithContext" ); + TestModuleIf().Printf( 0, Ksystemtoneservicestif, KPrint ); + // Print to log file + iLog->Log( KPrint ); + + TInt lRetVal = KErrNone; + TInt alarmType = 0; + + lRetVal = aItem.GetNextInt(alarmType); + + if ( lRetVal != KErrNone ) + { + iLog->Log(_L("CSystemToneServiceStif::PlaySystemToneService tone type missing in config file ")); + iLog->Log(_L("Playing Default Tone")); + + iSts->PlayAlarm(CSystemToneService::EClockAlarm, iCurrentContext, *this); + } + else + { + //iSts->PlayTone(CSystemToneService::EClockAlarm, iCurrentContext); + iSts->PlayAlarm(CSystemToneService::TToneType(alarmType), iCurrentContext, *this); + iLog->Log(_L("CSystemToneService::TAlarmType(alarmType) %d"),CSystemToneService::TAlarmType(alarmType) ); + } + + return lRetVal; + + } + + + void CSystemToneServiceStif::HandleEvent() { TEventIf event( TEventIf::ESetEvent, _L("Event_PlayAlarmComplete") ); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/group/TmsAudioServicesTestClass.pkg --- a/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/group/TmsAudioServicesTestClass.pkg Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/group/TmsAudioServicesTestClass.pkg Wed Aug 18 10:17:22 2010 +0300 @@ -32,7 +32,7 @@ "/epoc32/release/armv5/urel/TmsAudioServicesTestClass.dll" - "c:/Sys/Bin/TmsAudioServicesTestClass.dll" ; If installation process fails, exclude testframework.ini from the sis file and ; copy manually. -"../../init/TestFramework.ini"-"c:/Testframework/TestFramework.ini" +;"../../init/TestFramework.ini"-"c:/Testframework/TestFramework.ini" "../../init/TmsAudioServicesTestClass.ini"-"c:/Testframework/TmsAudioServicesTestClass.ini" "../../Conf/TMSAudioServicesTestClass.cfg"-"c:/Testframework/TMSAudioServicesTestClass.cfg" diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/sis/TmsAudioServicesTestClass.sis Binary file mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/sis/TmsAudioServicesTestClass.sis has changed diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/sis/TmsAudioServicesTestClass.sisx Binary file mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/sis/TmsAudioServicesTestClass.sisx has changed diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocks.cpp --- a/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocks.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmmw_plat/telephony_multimedia_service_api/tsrc/TmsAudioServicesTestClass/src/TmsAudioServicesTestClassBlocks.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -1272,7 +1272,7 @@ { iLog->Log(_L("CTmsAudioServicesTestClass::OpenDownlink - init Downlink")); iTmsDnlink->AddObserver(*this, NULL); - error = iTmsDnlink->Init(); + error = iTmsDnlink->Init(4); } if (error != KErrNone) @@ -1358,7 +1358,7 @@ { iLog->Log(_L("CTmsAudioServicesTestClass::OpenDownlink - init Uplink")); iTmsUplink->AddObserver(*this, NULL); - error = iTmsUplink->Init(); + error = iTmsUplink->Init(4); } if (error != KErrNone) @@ -1460,7 +1460,7 @@ { if ((iUpLinkStatus == INITIALIZED) || (iUpLinkStatus == PAUSED)) { - iTmsUplink->Start(); + iTmsUplink->Start(2); if (iUpLinkStatus == INITIALIZED) { @@ -1483,7 +1483,7 @@ { if ((iDnLinkStatus == INITIALIZED) || (iDnLinkStatus == PAUSED)) { - iTmsDnlink->Start(); + iTmsDnlink->Start(2); if (iDnLinkStatus == INITIALIZED) { AddExpectedEvent(EFillBuffer, KMediumTimeout); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/metadatautility/Src/MetaDataParserWMA.cpp --- a/mmserv/metadatautility/Src/MetaDataParserWMA.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/metadatautility/Src/MetaDataParserWMA.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -11,8 +11,7 @@ * * Contributors: * -* Description: This class implements an ID3v1 and v1.1 parser as specified in -* www.id3.org. +* Description: This class implements a wma parser * */ @@ -42,9 +41,12 @@ * Preroll, QWORD, 64 * Flags, DWORD, 32 */ -const TInt KDurationOffset = 64; // duration offset from File Property object -const TInt KPrerollOffset = 80; // preRoll offset from File Property object -const TInt KFlagsOffset = 88; // flags offset from File Property object +const TInt KDurationOffset = 64; // duration offset in File Property object +const TInt KPrerollOffset = 80; // preRoll offset in File Property object +const TInt KFlagsOffset = 88; // flags offset in File Property object +const TInt KSampleRateOffset = 82; // sample rate offset in stream properties object +const TInt KBitRateOffset = 86; // bit rate offset in stream properties object + // ASF Header Object GUIDs @@ -70,6 +72,7 @@ #ifdef __WINDOWS_MEDIA _LIT(KWMProvider, "WM/Provider\0"); #endif +_LIT8 (KASFStreamPropertiesObject, "B7DC0791A9B711CF8EE600C00C205365"); // ============================ MEMBER FUNCTIONS =============================== @@ -125,10 +128,10 @@ // Destructor CMetaDataParserWMA::~CMetaDataParserWMA() - { - delete iHeaderData; - delete iCharacterSet; - iFs.Close(); + { + delete iHeaderData; + delete iCharacterSet; + iFs.Close(); } // ----------------------------------------------------------------------------- @@ -183,6 +186,8 @@ #ifdef __WINDOWS_MEDIA TRAP(err, GetExtContDesEntryL(EMetaDataVendor, iProviderOffset)); #endif + TRAP(err, GetSampleRateL()); + TRAP(err, GetBitRateL()); } else { @@ -244,6 +249,12 @@ case EMetaDataVendor: TRAP(err, GetExtContDesEntryL(EMetaDataVendor, iProviderOffset)); #endif + case EMetaDataSampleRate: + TRAP(err, GetSampleRateL()); + break; + case EMetaDataBitRate: + TRAP(err, GetBitRateL()); + break; default: break; } @@ -336,6 +347,12 @@ iHeaderExtensionObjectExists = ETrue; iHeaderExtensionOffset = objOffset; } + if(!iStreamPropertiesObjectExists && objGUID == + KASFStreamPropertiesObject) + { + iStreamPropertiesObjectExists = ETrue; + iStreamPropertiesOffset = objOffset; + } TBuf8<8> size = iHeaderData->Mid(objOffset + 16, 8); TInt objSize = ConvertToInt64(size); // upper 32 bits? if(0 > objSize) @@ -345,7 +362,8 @@ objOffset += objSize; if(objOffset >= headerSize - 30 || (iContentDescriptionObjectExists && iFilePropertiesObjectExists - && iExtendedContentDescriptionObjectExists && iHeaderExtensionObjectExists) ) + && iExtendedContentDescriptionObjectExists && iHeaderExtensionObjectExists + && iStreamPropertiesObjectExists) ) { loop = EFalse; } @@ -374,7 +392,7 @@ // ----------------------------------------------------------------------------- // void CMetaDataParserWMA::FormatGUID(TDes8 &aGUID) -{ + { TBuf8<16> copyGUID(aGUID); TInt i; for(i = 0; i < 4; i++) @@ -396,16 +414,16 @@ aGUID.Delete(0, 32); for(i = 0; i <16; i++) { - aGUID.AppendNumFixedWidthUC(copyGUID[i], EHex, 2); + aGUID.AppendNumFixedWidthUC(copyGUID[i], EHex, 2); } -} + } // ----------------------------------------------------------------------------- // CMetaDataParserWMA::ConvertToInt64 // ----------------------------------------------------------------------------- // TInt64 CMetaDataParserWMA::ConvertToInt64(TDesC8& aDes) -{ + { TInt64 num = 0; TInt i; for(i = 7 ; i >= 0; i--) @@ -414,14 +432,14 @@ num |= aDes[i]; } return num; -} + } // ----------------------------------------------------------------------------- // CMetaDataParserWMA::ConvertToInt32 // ----------------------------------------------------------------------------- // TInt CMetaDataParserWMA::ConvertToInt32(TDesC8& aDes) -{ + { TInt num = 0; for(TInt i = 3 ; i >= 0; i--) { @@ -429,7 +447,7 @@ num |= aDes[i]; } return num; -} + } // ----------------------------------------------------------------------------- @@ -437,7 +455,7 @@ // ----------------------------------------------------------------------------- // TInt CMetaDataParserWMA::ConvertToInt16(TDesC8& aDes) -{ + { TInt num = 0; for(TInt i = 1 ; i >= 0; i--) { @@ -445,7 +463,7 @@ num |= aDes[i]; } return num; -} + } // ----------------------------------------------------------------------------- // CMetaDataParserWMA::ConvertDes8toDes16 @@ -573,15 +591,15 @@ // ----------------------------------------------------------------------------- // void CMetaDataParserWMA::GetJpegL() -{ + { if (iPictureOffset <= 0) - { - return; - } + { + return; + } TInt offset = iPictureOffset; if(!iMetadatLibraryObjectJpegExists) - { + { TPtrC8 dataType = iHeaderData->Mid(offset, 2); offset += 2; TInt dataTypeInt = ConvertToInt16(dataType); @@ -603,28 +621,28 @@ TInt picType = 0; picType |= picData[0]; if(picType != 3) - { + { return; // only Front Album Cover supported - } + } TPtrC8 picLengthData = iHeaderData->Mid(offset, 4); offset += 4; TInt picLength = ConvertToInt32(picLengthData); if(picLength <= 0) - { + { return; - } + } _LIT8(KNULL, "\0\0"); TPtrC8 data = iHeaderData->Mid(offset, picLength); TInt pos = data.Find(KNULL); if(pos != 0) - { + { pos++; // for unicode coding for strings. - } + } // check mime type if(pos != KErrNotFound) - { + { HBufC8 *mimeType = iHeaderData->Mid(offset, pos + 2).AllocLC(); offset += pos + 2; HBufC* name16 = HBufC::NewLC( (pos+2)/2); @@ -633,26 +651,26 @@ _LIT(KJPEG, "image/jpeg\0"); _LIT(KJPG, "image/jpg\0"); if(mimeType16.Compare(KJPEG) != 0 && mimeType16.Compare(KJPG) != 0) - { + { CleanupStack::PopAndDestroy(2, mimeType); return; // only JPEG & JPG supported - } + } CleanupStack::PopAndDestroy(2); // mimeType16, mimeType - } + } // skip the picture description TPtrC8 picDesc = iHeaderData->Mid(offset, picLength); pos = picDesc.Find(KNULL); if(pos != 0) - { + { pos++; // for unicode coding for strings. - } + } offset += pos + 2; // picture data TPtrC8 pic8 = iHeaderData->Mid(offset, picLength); iContainer->AppendL( EMetaDataJpeg, pic8 ); -} + } // ----------------------------------------------------------------------------- @@ -660,7 +678,7 @@ // ----------------------------------------------------------------------------- // TBool CMetaDataParserWMA::GetExtContDesEntryL(TMetaDataFieldId aFieldId, TInt aOffset) -{ + { TBool ret = EFalse; if(iExtendedContentDescriptionCount == 0) { @@ -705,7 +723,7 @@ ret = ETrue; } return ret; -} + } // ----------------------------------------------------------------------------- // CMetaDataParserWMA::GetDurationL @@ -757,7 +775,7 @@ TDes16& aUnicode ) { TPtrC8 unicodeData; - TUint characterSetId = 0; + TUint characterSetId = 0; CCnvCharacterSetConverter* charSetConv = CCnvCharacterSetConverter::NewLC(); TInt state = CCnvCharacterSetConverter::KStateDefault; @@ -784,17 +802,17 @@ // void CMetaDataParserWMA::ParseContentDescriptionObject() { - TBuf8<2> data = iHeaderData->Mid(iContentDescriptionOffset + 24, 2); - iTitleLength = ConvertToInt16(data); - data = iHeaderData->Mid(iContentDescriptionOffset + 26, 2); - iAuthorLength = ConvertToInt16(data); - data = iHeaderData->Mid(iContentDescriptionOffset + 28, 2); - iCopyrightLength = ConvertToInt16(data); - data = iHeaderData->Mid(iContentDescriptionOffset + 30, 2); - iDescriptionLength = ConvertToInt16(data); - data = iHeaderData->Mid(iContentDescriptionOffset + 32, 2); - iRatingLength = ConvertToInt16(data); - return; + TBuf8<2> data = iHeaderData->Mid(iContentDescriptionOffset + 24, 2); + iTitleLength = ConvertToInt16(data); + data = iHeaderData->Mid(iContentDescriptionOffset + 26, 2); + iAuthorLength = ConvertToInt16(data); + data = iHeaderData->Mid(iContentDescriptionOffset + 28, 2); + iCopyrightLength = ConvertToInt16(data); + data = iHeaderData->Mid(iContentDescriptionOffset + 30, 2); + iDescriptionLength = ConvertToInt16(data); + data = iHeaderData->Mid(iContentDescriptionOffset + 32, 2); + iRatingLength = ConvertToInt16(data); + return; } @@ -1006,4 +1024,65 @@ } } +// ----------------------------------------------------------------------------- +// CMetaDataParserWMA::GetSampleRateL +// ----------------------------------------------------------------------------- +// +void CMetaDataParserWMA::GetSampleRateL() + { +#ifdef _DEBUG + RDebug::Print(_L("CMetaDataParserWMA::GetSampleRateL")); +#endif + if(!iStreamPropertiesObjectExists) + { + return; + } + TInt offset = iStreamPropertiesOffset + KSampleRateOffset; + TPtrC8 sampleRate = iHeaderData->Mid(offset, 4); + if(offset+4 > iHeaderData->Length()) //Header Size is too small + { + return ; + } + + TInt sampleRateValue = ConvertToInt32(sampleRate); + TBuf16<20> des16; + des16.Num(sampleRateValue); // convert to string + + iContainer->AppendL( EMetaDataSampleRate, des16 ); + +#ifdef _DEBUG + RDebug::Print(_L("CMetaDataParserWMA::GetSampleRateL(), SampleRate=%S"), &des16); +#endif + } + +// ----------------------------------------------------------------------------- +// CMetaDataParserWMA::GetBitRateL +// ----------------------------------------------------------------------------- +// +void CMetaDataParserWMA::GetBitRateL() + { +#ifdef _DEBUG + RDebug::Print(_L("CMetaDataParserWMA::GetBitRateL")); +#endif + if(!iStreamPropertiesObjectExists) + { + return; + } + TInt offset = iStreamPropertiesOffset + KBitRateOffset; + if(offset+4 > iHeaderData->Length()) //Header Size is too small + { + return ; + } + TPtrC8 byteRate = iHeaderData->Mid(offset, 4); // byte rate + + TInt bitRateValue = ConvertToInt32(byteRate) * 8; // multiply by 8 to get bit rate + TBuf16<20> des16; + des16.Num(bitRateValue); // convert to string + + iContainer->AppendL( EMetaDataBitRate, des16 ); +#ifdef _DEBUG + RDebug::Print(_L("CMetaDataParserWMA::GetBitRateL(), bitRate=%S"), &des16); +#endif + } + // End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/metadatautility/Src/MetaDataParserWMA.h --- a/mmserv/metadatautility/Src/MetaDataParserWMA.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/metadatautility/Src/MetaDataParserWMA.h Wed Aug 18 10:17:22 2010 +0300 @@ -11,8 +11,7 @@ * * Contributors: * -* Description: This class implements an ID3v1 and v1.1 parser as specified in -* www.id3.org. +* Description: This class implements a wma parser * */ @@ -119,6 +118,18 @@ * @return void */ void GetDurationL(); + + /** + * Append sample rate to the container, if found. + * @return void + */ + void GetSampleRateL(); + + /** + * Append bit rate to the container, if found. + * @return void + */ + void GetBitRateL(); /** * Parses all entries in Content Description Object @@ -240,6 +251,9 @@ TBool iHeaderExtensionObjectExists; TBool iMetadataLibraryObjectExists; TBool iMetadatLibraryObjectJpegExists; + TBool iStreamPropertiesObjectExists; + + TInt iStreamPropertiesOffset; }; #endif // CMetaDataParserWMA_H diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/bwins/Radio_Utility_Stubu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/bwins/Radio_Utility_Stubu.def Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,73 @@ +EXPORTS + ?GetAutomaticTrafficAnnouncement@CRadioRdsUtility@@QAEHAAH@Z @ 1 NONAME ; int CRadioRdsUtility::GetAutomaticTrafficAnnouncement(int &) + ?Close@CRadioRdsUtility@@QAEXXZ @ 2 NONAME ; void CRadioRdsUtility::Close(void) + ?PlayerState@CRadioPlayerUtility@@QBE?AW4TPlayerState@@XZ @ 3 NONAME ; enum TPlayerState CRadioPlayerUtility::PlayerState(void) const + ?GetBalance@CRadioPlayerUtility@@QBEHAAH0@Z @ 4 NONAME ; int CRadioPlayerUtility::GetBalance(int &, int &) const + ?RadioRdsUtilityL@CRadioUtility@@QAEAAVCRadioRdsUtility@@AAVMRadioRdsObserver@@@Z @ 5 NONAME ; class CRadioRdsUtility & CRadioUtility::RadioRdsUtilityL(class MRadioRdsObserver &) + ?StationSeek@CRadioFmTunerUtility@@QAEXH@Z @ 6 NONAME ; void CRadioFmTunerUtility::StationSeek(int) + ?CancelStationSeek@CRadioFmTunerUtility@@QAEXXZ @ 7 NONAME ; void CRadioFmTunerUtility::CancelStationSeek(void) + ?StationSeekByTP@CRadioRdsUtility@@QAEXH@Z @ 8 NONAME ; void CRadioRdsUtility::StationSeekByTP(int) + ?SetSquelch@CRadioFmTunerUtility@@QAEHH@Z @ 9 NONAME ; int CRadioFmTunerUtility::SetSquelch(int) + ?GetAutomaticTrafficAnnouncement@CBody@CRadioRdsUtility@@QAEHAAH@Z @ 10 NONAME ; int CRadioRdsUtility::CBody::GetAutomaticTrafficAnnouncement(int &) + ?GetTrafficProgrammeStatus@CRadioRdsUtility@@QAEHAAH@Z @ 11 NONAME ; int CRadioRdsUtility::GetTrafficProgrammeStatus(int &) + ?GetMaxSignalStrength@CRadioFmTunerUtility@@QBEHAAH@Z @ 12 NONAME ; int CRadioFmTunerUtility::GetMaxSignalStrength(int &) const + ?GetProgrammeService@CRadioRdsUtility@@QAEHAAV?$TBuf16@$07@@@Z @ 13 NONAME ; int CRadioRdsUtility::GetProgrammeService(class TBuf16<8> &) + ?RadioPlayerUtilityL@CRadioUtility@@QAEAAVCRadioPlayerUtility@@AAVMRadioPlayerObserver@@@Z @ 14 NONAME ; class CRadioPlayerUtility & CRadioUtility::RadioPlayerUtilityL(class MRadioPlayerObserver &) + ?GetStereoMode@CRadioFmTunerUtility@@QBEHAAH@Z @ 15 NONAME ; int CRadioFmTunerUtility::GetStereoMode(int &) const + ?GetRdsSignalStatus@CRadioRdsUtility@@QBEHAAH@Z @ 16 NONAME ; int CRadioRdsUtility::GetRdsSignalStatus(int &) const + ?GetRadioTextPlus@CRadioRdsUtility@@QAEHW4TRdsRTplusClass@@AAV?$TBuf16@$0EA@@@@Z @ 17 NONAME ; int CRadioRdsUtility::GetRadioTextPlus(enum TRdsRTplusClass, class TBuf16<64> &) + ??1CRadioFmTunerUtility@@EAE@XZ @ 18 NONAME ; CRadioFmTunerUtility::~CRadioFmTunerUtility(void) + ?GetRadioText@CRadioRdsUtility@@QAEHAAV?$TBuf16@$0EA@@@@Z @ 19 NONAME ; int CRadioRdsUtility::GetRadioText(class TBuf16<64> &) + ?CancelGetPSByTA@CRadioRdsUtility@@QAEXXZ @ 20 NONAME ; void CRadioRdsUtility::CancelGetPSByTA(void) + ?RequestTunerControl@CRadioFmTunerUtility@@QAEXXZ @ 21 NONAME ; void CRadioFmTunerUtility::RequestTunerControl(void) + ?GetProgrammeIdentification@CRadioRdsUtility@@QAEHAAH@Z @ 22 NONAME ; int CRadioRdsUtility::GetProgrammeIdentification(int &) + ?SetBalance@CRadioPlayerUtility@@QAEHHH@Z @ 23 NONAME ; int CRadioPlayerUtility::SetBalance(int, int) + ?SetFrequency@CRadioFmTunerUtility@@QAEXH@Z @ 24 NONAME ; void CRadioFmTunerUtility::SetFrequency(int) + ?NotifyRdsDataChange@CRadioRdsUtility@@QAEHVTRdsData@@@Z @ 25 NONAME ; int CRadioRdsUtility::NotifyRdsDataChange(class TRdsData) + ?CancelSetFrequencyRange@CRadioFmTunerUtility@@QAEXXZ @ 26 NONAME ; void CRadioFmTunerUtility::CancelSetFrequencyRange(void) + ?GetFreqByPTY@CRadioRdsUtility@@QAEXH@Z @ 27 NONAME ; void CRadioRdsUtility::GetFreqByPTY(int) + ?GetVolume@CRadioPlayerUtility@@QBEHAAH@Z @ 28 NONAME ; int CRadioPlayerUtility::GetVolume(int &) const + ?SetVolume@CRadioPlayerUtility@@QAEHH@Z @ 29 NONAME ; int CRadioPlayerUtility::SetVolume(int) + ?StationSeekByPTY@CRadioRdsUtility@@QAEXHH@Z @ 30 NONAME ; void CRadioRdsUtility::StationSeekByPTY(int, int) + ?GetCapabilities@CRadioRdsUtility@@QBEHAAVTRdsCapabilities@@@Z @ 31 NONAME ; int CRadioRdsUtility::GetCapabilities(class TRdsCapabilities &) const + ?CancelRdsStationSeek@CRadioRdsUtility@@QAEXXZ @ 32 NONAME ; void CRadioRdsUtility::CancelRdsStationSeek(void) + ?CancelGetFreqByTA@CRadioRdsUtility@@QAEXXZ @ 33 NONAME ; void CRadioRdsUtility::CancelGetFreqByTA(void) + ?SetVolumeRamp@CRadioPlayerUtility@@QAEHABVTTimeIntervalMicroSeconds@@@Z @ 34 NONAME ; int CRadioPlayerUtility::SetVolumeRamp(class TTimeIntervalMicroSeconds const &) + ?StationSeekByPTY@CBody@CRadioRdsUtility@@QAEXHH@Z @ 35 NONAME ; void CRadioRdsUtility::CBody::StationSeekByPTY(int, int) + ?CancelGetFreqByPTY@CRadioRdsUtility@@QAEXXZ @ 36 NONAME ; void CRadioRdsUtility::CancelGetFreqByPTY(void) + ?GetAutomaticSwitching@CRadioRdsUtility@@QAEHAAH@Z @ 37 NONAME ; int CRadioRdsUtility::GetAutomaticSwitching(int &) + ?GetTrafficAnnouncementStatus@CRadioRdsUtility@@QAEHAAH@Z @ 38 NONAME ; int CRadioRdsUtility::GetTrafficAnnouncementStatus(int &) + ?CancelSetFrequency@CRadioFmTunerUtility@@QAEXXZ @ 39 NONAME ; void CRadioFmTunerUtility::CancelSetFrequency(void) + ?GetClockTime@CRadioRdsUtility@@QAEHAAVTDateTime@@@Z @ 40 NONAME ; int CRadioRdsUtility::GetClockTime(class TDateTime &) + ?CancelAFSearch@CRadioRdsUtility@@QAEXXZ @ 41 NONAME ; void CRadioRdsUtility::CancelAFSearch(void) + ?ForceMonoReception@CRadioFmTunerUtility@@QAEHH@Z @ 42 NONAME ; int CRadioFmTunerUtility::ForceMonoReception(int) + ?GetProgrammeType@CRadioRdsUtility@@QAEHAAH@Z @ 43 NONAME ; int CRadioRdsUtility::GetProgrammeType(int &) + ?GetForcedMonoReception@CRadioFmTunerUtility@@QBEHAAH@Z @ 44 NONAME ; int CRadioFmTunerUtility::GetForcedMonoReception(int &) const + ?GetFreqByTA@CRadioRdsUtility@@QAEXXZ @ 45 NONAME ; void CRadioRdsUtility::GetFreqByTA(void) + ?CancelGetPSByPTY@CRadioRdsUtility@@QAEXXZ @ 46 NONAME ; void CRadioRdsUtility::CancelGetPSByPTY(void) + ?GetFrequencyRange@CRadioFmTunerUtility@@QBEHAAW4TFmRadioFrequencyRange@@AAH1@Z @ 47 NONAME ; int CRadioFmTunerUtility::GetFrequencyRange(enum TFmRadioFrequencyRange &, int &, int &) const + ?Stop@CRadioPlayerUtility@@QAEXXZ @ 48 NONAME ; void CRadioPlayerUtility::Stop(void) + ?SetFrequencyRange@CRadioFmTunerUtility@@QAEXW4TFmRadioFrequencyRange@@@Z @ 49 NONAME ; void CRadioFmTunerUtility::SetFrequencyRange(enum TFmRadioFrequencyRange) + ??1CRadioPlayerUtility@@EAE@XZ @ 50 NONAME ; CRadioPlayerUtility::~CRadioPlayerUtility(void) + ?GetFrequency@CRadioFmTunerUtility@@QBEHAAH@Z @ 51 NONAME ; int CRadioFmTunerUtility::GetFrequency(int &) const + ?StationSeekByTA@CRadioRdsUtility@@QAEXH@Z @ 52 NONAME ; void CRadioRdsUtility::StationSeekByTA(int) + ?Play@CRadioPlayerUtility@@QAEXXZ @ 53 NONAME ; void CRadioPlayerUtility::Play(void) + ?CustomInterface@CRadioPlayerUtility@@UAEPAXVTUid@@@Z @ 54 NONAME ; void * CRadioPlayerUtility::CustomInterface(class TUid) + ?GetCapabilities@CRadioFmTunerUtility@@QAEHAAVTFmTunerCapabilities@@@Z @ 55 NONAME ; int CRadioFmTunerUtility::GetCapabilities(class TFmTunerCapabilities &) + ?IsMute@CRadioPlayerUtility@@QAEHXZ @ 56 NONAME ; int CRadioPlayerUtility::IsMute(void) + ?SetAutomaticSwitching@CRadioRdsUtility@@QAEHH@Z @ 57 NONAME ; int CRadioRdsUtility::SetAutomaticSwitching(int) + ?SetAutomaticTrafficAnnouncement@CRadioRdsUtility@@QAEHH@Z @ 58 NONAME ; int CRadioRdsUtility::SetAutomaticTrafficAnnouncement(int) + ?RadioFmTunerUtilityL@CRadioUtility@@QAEAAVCRadioFmTunerUtility@@AAVMRadioFmTunerObserver@@@Z @ 59 NONAME ; class CRadioFmTunerUtility & CRadioUtility::RadioFmTunerUtilityL(class MRadioFmTunerObserver &) + ?GetPSByPTY@CRadioRdsUtility@@QAEXH@Z @ 60 NONAME ; void CRadioRdsUtility::GetPSByPTY(int) + ?CancelNotifyRdsDataChange@CRadioRdsUtility@@QAEXXZ @ 61 NONAME ; void CRadioRdsUtility::CancelNotifyRdsDataChange(void) + ?EnableTunerInOfflineMode@CRadioFmTunerUtility@@QAEHH@Z @ 62 NONAME ; int CRadioFmTunerUtility::EnableTunerInOfflineMode(int) + ?Mute@CRadioPlayerUtility@@QAEHH@Z @ 63 NONAME ; int CRadioPlayerUtility::Mute(int) + ?NewL@CRadioUtility@@SAPAV1@H@Z @ 64 NONAME ; class CRadioUtility * CRadioUtility::NewL(int) + ?Close@CRadioPlayerUtility@@QAEXXZ @ 65 NONAME ; void CRadioPlayerUtility::Close(void) + ?GetPSByTA@CRadioRdsUtility@@QAEXXZ @ 66 NONAME ; void CRadioRdsUtility::GetPSByTA(void) + ??1CRadioUtility@@UAE@XZ @ 67 NONAME ; CRadioUtility::~CRadioUtility(void) + ?GetSignalStrength@CRadioFmTunerUtility@@QBEHAAH@Z @ 68 NONAME ; int CRadioFmTunerUtility::GetSignalStrength(int &) const + ?Close@CRadioFmTunerUtility@@QAEXXZ @ 69 NONAME ; void CRadioFmTunerUtility::Close(void) + ?GetSquelch@CRadioFmTunerUtility@@QBEHAAH@Z @ 70 NONAME ; int CRadioFmTunerUtility::GetSquelch(int &) const + ?GetMaxVolume@CRadioPlayerUtility@@QBEHAAH@Z @ 71 NONAME ; int CRadioPlayerUtility::GetMaxVolume(int &) const + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/eabi/Radio_Utility_Stubu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/eabi/Radio_Utility_Stubu.def Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,96 @@ +EXPORTS + _ZN13CRadioUtility16RadioRdsUtilityLER17MRadioRdsObserver @ 1 NONAME + _ZN13CRadioUtility19RadioPlayerUtilityLER20MRadioPlayerObserver @ 2 NONAME + _ZN13CRadioUtility20RadioFmTunerUtilityLER21MRadioFmTunerObserver @ 3 NONAME + _ZN13CRadioUtility4NewLEi @ 4 NONAME + _ZN13CRadioUtilityD0Ev @ 5 NONAME + _ZN13CRadioUtilityD1Ev @ 6 NONAME + _ZN13CRadioUtilityD2Ev @ 7 NONAME + _ZN16CRadioRdsUtility10GetPSByPTYEi @ 8 NONAME + _ZN16CRadioRdsUtility11GetFreqByTAEv @ 9 NONAME + _ZN16CRadioRdsUtility12GetClockTimeER9TDateTime @ 10 NONAME + _ZN16CRadioRdsUtility12GetFreqByPTYEi @ 11 NONAME + _ZN16CRadioRdsUtility12GetRadioTextER6TBuf16ILi64EE @ 12 NONAME + _ZN16CRadioRdsUtility14CancelAFSearchEv @ 13 NONAME + _ZN16CRadioRdsUtility15CancelGetPSByTAEv @ 14 NONAME + _ZN16CRadioRdsUtility15StationSeekByTAEi @ 15 NONAME + _ZN16CRadioRdsUtility15StationSeekByTPEi @ 16 NONAME + _ZN16CRadioRdsUtility16CancelGetPSByPTYEv @ 17 NONAME + _ZN16CRadioRdsUtility16GetProgrammeTypeERi @ 18 NONAME + _ZN16CRadioRdsUtility16GetRadioTextPlusE15TRdsRTplusClassR6TBuf16ILi64EE @ 19 NONAME + _ZN16CRadioRdsUtility16StationSeekByPTYEii @ 20 NONAME + _ZN16CRadioRdsUtility17CancelGetFreqByTAEv @ 21 NONAME + _ZN16CRadioRdsUtility18CancelGetFreqByPTYEv @ 22 NONAME + _ZN16CRadioRdsUtility19GetProgrammeServiceER6TBuf16ILi8EE @ 23 NONAME + _ZN16CRadioRdsUtility19NotifyRdsDataChangeE8TRdsData @ 24 NONAME + _ZN16CRadioRdsUtility20CancelRdsStationSeekEv @ 25 NONAME + _ZN16CRadioRdsUtility21GetAutomaticSwitchingERi @ 26 NONAME + _ZN16CRadioRdsUtility21SetAutomaticSwitchingEi @ 27 NONAME + _ZN16CRadioRdsUtility25CancelNotifyRdsDataChangeEv @ 28 NONAME + _ZN16CRadioRdsUtility25GetTrafficProgrammeStatusERi @ 29 NONAME + _ZN16CRadioRdsUtility26GetProgrammeIdentificationERi @ 30 NONAME + _ZN16CRadioRdsUtility28GetTrafficAnnouncementStatusERi @ 31 NONAME + _ZN16CRadioRdsUtility31GetAutomaticTrafficAnnouncementERi @ 32 NONAME + _ZN16CRadioRdsUtility31SetAutomaticTrafficAnnouncementEi @ 33 NONAME + _ZN16CRadioRdsUtility5CloseEv @ 34 NONAME + _ZN16CRadioRdsUtility9GetPSByTAEv @ 35 NONAME + _ZN19CRadioPlayerUtility10SetBalanceEii @ 36 NONAME + _ZN19CRadioPlayerUtility13SetVolumeRampERK25TTimeIntervalMicroSeconds @ 37 NONAME + _ZN19CRadioPlayerUtility15CustomInterfaceE4TUid @ 38 NONAME + _ZN19CRadioPlayerUtility4MuteEi @ 39 NONAME + _ZN19CRadioPlayerUtility4PlayEv @ 40 NONAME + _ZN19CRadioPlayerUtility4StopEv @ 41 NONAME + _ZN19CRadioPlayerUtility5CloseEv @ 42 NONAME + _ZN19CRadioPlayerUtility6IsMuteEv @ 43 NONAME + _ZN19CRadioPlayerUtility9SetVolumeEi @ 44 NONAME + _ZN19CRadioPlayerUtilityD0Ev @ 45 NONAME + _ZN19CRadioPlayerUtilityD1Ev @ 46 NONAME + _ZN19CRadioPlayerUtilityD2Ev @ 47 NONAME + _ZN20CRadioFmTunerUtility10SetSquelchEi @ 48 NONAME + _ZN20CRadioFmTunerUtility11StationSeekEi @ 49 NONAME + _ZN20CRadioFmTunerUtility12SetFrequencyEi @ 50 NONAME + _ZN20CRadioFmTunerUtility15GetCapabilitiesER20TFmTunerCapabilities @ 51 NONAME + _ZN20CRadioFmTunerUtility17CancelStationSeekEv @ 52 NONAME + _ZN20CRadioFmTunerUtility17SetFrequencyRangeE22TFmRadioFrequencyRange @ 53 NONAME + _ZN20CRadioFmTunerUtility18CancelSetFrequencyEv @ 54 NONAME + _ZN20CRadioFmTunerUtility18ForceMonoReceptionEi @ 55 NONAME + _ZN20CRadioFmTunerUtility19RequestTunerControlEv @ 56 NONAME + _ZN20CRadioFmTunerUtility23CancelSetFrequencyRangeEv @ 57 NONAME + _ZN20CRadioFmTunerUtility24EnableTunerInOfflineModeEi @ 58 NONAME + _ZN20CRadioFmTunerUtility5CloseEv @ 59 NONAME + _ZN20CRadioFmTunerUtilityD0Ev @ 60 NONAME + _ZN20CRadioFmTunerUtilityD1Ev @ 61 NONAME + _ZN20CRadioFmTunerUtilityD2Ev @ 62 NONAME + _ZNK16CRadioRdsUtility15GetCapabilitiesER16TRdsCapabilities @ 63 NONAME + _ZNK16CRadioRdsUtility18GetRdsSignalStatusERi @ 64 NONAME + _ZNK19CRadioPlayerUtility10GetBalanceERiS0_ @ 65 NONAME + _ZNK19CRadioPlayerUtility11PlayerStateEv @ 66 NONAME + _ZNK19CRadioPlayerUtility12GetMaxVolumeERi @ 67 NONAME + _ZNK19CRadioPlayerUtility9GetVolumeERi @ 68 NONAME + _ZNK20CRadioFmTunerUtility10GetSquelchERi @ 69 NONAME + _ZNK20CRadioFmTunerUtility12GetFrequencyERi @ 70 NONAME + _ZNK20CRadioFmTunerUtility13GetStereoModeERi @ 71 NONAME + _ZNK20CRadioFmTunerUtility17GetFrequencyRangeER22TFmRadioFrequencyRangeRiS2_ @ 72 NONAME + _ZNK20CRadioFmTunerUtility17GetSignalStrengthERi @ 73 NONAME + _ZNK20CRadioFmTunerUtility20GetMaxSignalStrengthERi @ 74 NONAME + _ZNK20CRadioFmTunerUtility22GetForcedMonoReceptionERi @ 75 NONAME + _ZTI13CRadioUtility @ 76 NONAME + _ZTI16CRadioRdsUtility @ 77 NONAME + _ZTI19CRadioPlayerUtility @ 78 NONAME + _ZTI20CRadioFmTunerUtility @ 79 NONAME + _ZTIN13CRadioMonitor5CBodyE @ 80 NONAME + _ZTIN13CRadioUtility5CBodyE @ 81 NONAME + _ZTIN16CRadioRdsUtility5CBodyE @ 82 NONAME + _ZTIN19CRadioPlayerUtility5CBodyE @ 83 NONAME + _ZTIN20CRadioFmTunerUtility5CBodyE @ 84 NONAME + _ZTV13CRadioUtility @ 85 NONAME + _ZTV16CRadioRdsUtility @ 86 NONAME + _ZTV19CRadioPlayerUtility @ 87 NONAME + _ZTV20CRadioFmTunerUtility @ 88 NONAME + _ZTVN13CRadioMonitor5CBodyE @ 89 NONAME + _ZTVN13CRadioUtility5CBodyE @ 90 NONAME + _ZTVN16CRadioRdsUtility5CBodyE @ 91 NONAME + _ZTVN19CRadioPlayerUtility5CBodyE @ 92 NONAME + _ZTVN20CRadioFmTunerUtility5CBodyE @ 93 NONAME + _ZThn4_N19CRadioPlayerUtility15CustomInterfaceE4TUid @ 94 NONAME + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/group/Radio_Utility_Stub.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/group/Radio_Utility_Stub.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Project definition file for project RadioUtilityStub +* +*/ + + +#include + +TARGET Radio_Utility_Stub.dll +TARGETTYPE DLL +CAPABILITY CAP_GENERAL_DLL +VENDORID VID_DEFAULT +UID 0x1000008D 0x01000001 +VERSION 10.1 + +SOURCEPATH ../../src +SOURCE RadioUtility.cpp +SOURCE RadioUtilityBody.cpp +SOURCE RadioPlayerUtility.cpp +SOURCE RadioFmTunerUtility.cpp +SOURCE RadioRdsUtility.cpp +SOURCE RadioMonitorBody.cpp +SOURCE RadioPlayerUtilityBody.cpp +SOURCE RadioFmTunerUtilityBody.cpp +SOURCE RadioRdsUtilityBody.cpp + +SOURCEPATH ../src + +USERINCLUDE ../src +USERINCLUDE ../../src +USERINCLUDE ../../inc +USERINCLUDE ../../../inc +USERINCLUDE ../../../../../inc +USERINCLUDE /sf/app/radio/radioengine/utils/inc + +MW_LAYER_SYSTEMINCLUDE + +//LIBRARY edllstub.lib +LIBRARY euser.lib +LIBRARY RadioSession_Stub.lib +LIBRARY CustomInterfaceUtility.lib +LIBRARY flogger.lib + +MACRO STUB_CONSTELLATION + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/group/bld.inf Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,33 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Project build file for Radio_Utility_Stub +* +*/ + + +#include + +// Platforms the component needs to be built on +// +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +// iby file +../rom/Radio_Utility_Stub.iby CORE_MW_LAYER_IBY_EXPORT_PATH(Radio_Utility_Stub.iby) + +PRJ_MMPFILES +Radio_Utility_Stub.mmp + +// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/rom/Radio_Utility_Stub.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/rom/Radio_Utility_Stub.iby Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: IBY file for the Radio Utility +* +*/ + + +#ifndef RADIO_UTILITY_IBY +#define RADIO_UTILITY_IBY + +#ifdef __FM_RADIO + +file=ABI_DIR\BUILD_DIR\Radio_Utility_Stub.dll SHARED_LIB_DIR\Radio_Utility_Stub.dll + +// Stub sis +data = ZSYSTEM\install\Radio_Utility_Stub.sis system\install\Radio_Utility_Stub.sis + +#endif //__FM_RADIO +#endif // RADIO_UTILITY_IBY + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/src/StubRadioFmTunerUtilityBody.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/src/StubRadioFmTunerUtilityBody.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,327 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Radio FM Tuner Utility implementation body's stub. +* +*/ + + +#include "RadioFmTunerUtilityBody.h" +#include "RadioUtilityBody.h" +#include "RadioStubManager.h" + + +#define STUB CRadioStubManager::GetRadioStubManager()->iTuner + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CRadioFmTunerUtility::CBody* CRadioFmTunerUtility::CBody::NewL( + RRadioSession& aRadioSession, + MRadioFmTunerObserver& aObserver ) + { + if ( STUB.iLeaveNewL.iError ) + { + User::Leave( STUB.iLeaveNewL.iError ); + } + CRadioFmTunerUtility::CBody* s = new(ELeave) CRadioFmTunerUtility::CBody( aRadioSession, aObserver ); + CleanupStack::PushL(s); + s->ConstructL(); + CleanupStack::Pop(); + return s; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::ConstructL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::ConstructL() + { + if ( STUB.iLeaveErrorForConstructL.iError ) + { + User::Leave( STUB.iLeaveErrorForConstructL.iError ); + } + STUB.iRadioFmTunerUtilityClient = &iRadioFmTunerUtilityClient; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::CBody +// ----------------------------------------------------------------------------- +// +CRadioFmTunerUtility::CBody::CBody( + RRadioSession& aRadioSession, + MRadioFmTunerObserver& aObserver ) + :iRadioSession( aRadioSession ), + iRadioFmTunerUtilityClient( aObserver ) + + { + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::~CBody +// ----------------------------------------------------------------------------- +// +CRadioFmTunerUtility::CBody::~CBody() + { + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::RequestTunerControl +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::RequestTunerControl() + { + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::Close +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::Close() + { + // Consider releasing tuner control here. + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetCapabilities +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetCapabilities( + TFmTunerCapabilities& aCaps ) const + { + aCaps.iTunerBands = STUB.iCaps.iTunerBands; + aCaps.iTunerFunctions = STUB.iCaps.iTunerFunctions; + aCaps.iAdditionalFunctions1 = STUB.iCaps.iAdditionalFunctions1; + aCaps.iAdditionalFunctions2 = STUB.iCaps.iAdditionalFunctions2; + return STUB.iGetCapabilitiesError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::EnableTunerInOfflineMode +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::EnableTunerInOfflineMode( + TBool aEnable ) + { + STUB.iTunerInOfflineMode = aEnable; + return STUB.iEnableTunerInOfflineModeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetFrequencyRange +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetFrequencyRange( + TFmRadioFrequencyRange& aRange, + TInt& aMinFreq, + TInt& aMaxFreq ) const + { + + aRange = STUB.iRange; + aMinFreq = STUB.iMinFreq; + aMaxFreq = STUB.iMaxFreq; +#ifdef _DEBUG + RDebug::Print(_L("CRadioFmTunerUtility::CBody::GetFrequencyRange, aRange = %d, aMinFreq = %d, aMaxFreq = %d"), + aRange, aMinFreq, aMaxFreq); +#endif + return STUB.iGetFrequencyRangeError.Error(); + } + + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::SetFrequencyRange +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::SetFrequencyRange( + TFmRadioFrequencyRange aRange ) + { +#ifdef _DEBUG + RDebug::Print(_L("CRadioFmTunerUtility::CBody::SetFrequencyRange, aRange = %d"), aRange); +#endif + STUB.iPreviousRange = STUB.iRange; + STUB.iRange = aRange; + } + + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::CancelSetFrequencyRange +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::CancelSetFrequencyRange() + { + STUB.iRange = STUB.iPreviousRange; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::SetFrequency +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::SetFrequency( + TInt aFrequency ) + { +#ifdef _DEBUG + RDebug::Print(_L("CRadioFmTunerUtility::CBody::SetFrequency, aFrequency = %d"), aFrequency); +#endif + STUB.iPreviousFrequency = STUB.iFrequency; + STUB.iFrequency = aFrequency; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::CancelSetFrequencyRange +// Body of CancelSetFrequencyRange +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::CancelSetFrequency() + { + STUB.iFrequency = STUB.iPreviousFrequency; + STUB.iPreviousFrequency = 0; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetFrequency +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetFrequency( + TInt& aFrequency ) const + { + aFrequency = STUB.iFrequency; + return STUB.iGetFrequencyError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::StationSeek +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::StationSeek( + TBool aUpwards ) + { +#ifdef _DEBUG + RDebug::Print(_L("CRadioFmTunerUtility::CBody::StationSeek, aUpwards = %d"), aUpwards); +#endif + STUB.iStationSeekUpwards = aUpwards; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::CancelStationSeek +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioFmTunerUtility::CBody::CancelStationSeek() + { + STUB.iStationSeekUpwards = EFalse; + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetSignalStrength +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetSignalStrength( + TInt& aSignalStrength ) const + { + aSignalStrength = STUB.iSignalStrength; + return STUB.iGetSignalStrengthError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::GetMaxSignalStrength +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetMaxSignalStrength( + TInt& aMaxSignalStrength ) const + { + aMaxSignalStrength = STUB.iMaxSignalStrength; + return STUB.iGetMaxSignalStrengthError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetStereoMode +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetStereoMode( + TBool& aStereo ) const + { + aStereo = STUB.iStereoMode; + return STUB.iGetStereoModeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::ForceMonoReception +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::ForceMonoReception( + TBool aForcedMono) + { + STUB.iForcedMono = aForcedMono; + return STUB.iForcedMonoReceptionError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetForcedMonoReception +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetForcedMonoReception( + TBool& aForcedMono ) const + { + aForcedMono = STUB.iForcedMono; + return STUB.iGetForcedMonoReceptionError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::SetSquelch +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::SetSquelch( + TBool aSquelch ) + { + STUB.iSquelch = aSquelch; + return STUB.iSetSquelchError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioFmTunerUtility::CBody::GetSquelch +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioFmTunerUtility::CBody::GetSquelch( + TBool& aSquelch ) const + { + aSquelch = STUB.iSquelch; + return STUB.iGetSquelchError.Error(); + } + +// End of File + + + + + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/src/StubRadioPlayerUtilityBody.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/src/StubRadioPlayerUtilityBody.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,268 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Radio Player Utility body's stub implementation +* +*/ + + +#include +#include "RadioServerData.h" +#include "RadioPlayerUtilityBody.h" +#include "RadioSession.h" +#include "RadioStubManager.h" + +#define STUB CRadioStubManager::GetRadioStubManager()->iPlayer + +// ======== MEMBER FUNCTIONS ======== + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// + +CRadioPlayerUtility::CBody* CRadioPlayerUtility::CBody::NewL( + RRadioSession& aRadioSession, + MRadioPlayerObserver& aObserver ) + { + if ( STUB.iLeaveNewL.iError ) + { + User::Leave( STUB.iLeaveNewL.iError ); + } + CRadioPlayerUtility::CBody* s = new(ELeave) CRadioPlayerUtility::CBody( aRadioSession, aObserver); + CleanupStack::PushL(s); + s->ConstructL(); + CleanupStack::Pop(); + return s; + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::ConstructL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +void CRadioPlayerUtility::CBody::ConstructL() + { + if ( STUB.iLeaveErrorForConstructL.iError ) + { + User::Leave( STUB.iLeaveErrorForConstructL.iError ); + } + STUB.iRadioPlayerUtilityClient = &iRadioPlayerUtilityClient; + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::CBody +// ----------------------------------------------------------------------------- +// +CRadioPlayerUtility::CBody::CBody( + RRadioSession& aRadioSession, + MRadioPlayerObserver& aObserver ) + :iRadioSession( aRadioSession ), + iRadioPlayerUtilityClient( aObserver ) + { + } + +// ----------------------------------------------------------------------------- +// Destructor. +// ----------------------------------------------------------------------------- +// +CRadioPlayerUtility::CBody::~CBody() + { + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::PlayerState +// Get the player's state. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +// +void CRadioPlayerUtility::CBody::PlayerState( + TPlayerState& aPlayerState ) const + { + aPlayerState = STUB.iPlayerState; + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::Close +// Stops radio playback only if no other primary clients are connected to the +// radio server. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioPlayerUtility::CBody::Close() + { + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::Play +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioPlayerUtility::CBody::Play() + { + STUB.iPlayerState = ERadioPlayerPlaying; + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::Stop +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioPlayerUtility::CBody::Stop() + { + STUB.iPlayerState = ERadioPlayerIdle; + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::Mute +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::Mute( + TBool aMute ) + { + STUB.iMuteStatus = aMute; + return STUB.iMuteError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::IsMute +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CRadioPlayerUtility::CBody::IsMute() + { + return STUB.iMuteStatus; + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::SetVolume +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::SetVolume( + TInt aVolume ) + { + STUB.iVolume = aVolume; + return STUB.iSetVolumeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::GetVolume +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::GetVolume( + TInt& aVolume ) const + { + aVolume = STUB.iVolume; + return STUB.iGetVolumeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::SetVolumeRamp +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::SetVolumeRamp( + const TTimeIntervalMicroSeconds& aRampInterval ) + { +#ifdef _DEBUG + RDebug::Print(_L("CRadioPlayerUtility::CBody::SetVolumeRamp")); +#endif + STUB.iRampInterval = aRampInterval; + return STUB.iSetVolumeRampError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::GetMaxVolume +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::GetMaxVolume( + TInt& aMaxVolume ) const + { + aMaxVolume = STUB.iMaxVolume; + return STUB.iGetMaxVolumeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::SetBalance +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::SetBalance( + TInt aLeftPercentage, + TInt aRightPercentage ) + { +#ifdef _DEBUG + RDebug::Print(_L("CRadioPlayerUtility::CBody::SetBalance, aLeftPercentage = %d, aRightPercentage = %d"), + aLeftPercentage, aRightPercentage); +#endif + STUB.iLeftPercentage = aLeftPercentage; + STUB.iRightPercentage = aRightPercentage; + return STUB.iSetBalanceError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::GetBalance +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioPlayerUtility::CBody::GetBalance( + TInt& aLeftPercentage, + TInt& aRightPercentage ) const + { + aLeftPercentage = STUB.iLeftPercentage; + aRightPercentage = STUB.iRightPercentage; + return STUB.iGetBalanceError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioPlayerUtility::CBody::CustomInterface +// Get a custom interface for the specified interface Id. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TAny* CRadioPlayerUtility::CBody::CustomInterface( + TUid aInterfaceId ) + { +// TAny* ci = NULL; +// return ci; +#ifdef _DEBUG + RDebug::Print(_L("CRadioPlayerUtility::CBody::CustomInterface, aInterfaceId = %d"), aInterfaceId); +#endif + TAny* ci = NULL; + CCustomInterfaceUtility* customInterfaceUtil = NULL; + + TRAPD( error, customInterfaceUtil = CCustomInterfaceUtility::NewL( iRadioSession ) ); + + if ( !error ) + { + ci = customInterfaceUtil->CustomInterface( aInterfaceId ); + if ( !ci ) + { + // The custom interface utility is owned by the custom interface, implicitly. + // The custom interface utility instance is destroyed when the + // custom interface is finally destroyed! + // But if there's no valid ci, we need to take care of deleting the + // custom interface utility instance. + delete customInterfaceUtil; + } + } + return ci; + } + +//End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radio_utility/stub/src/StubRadioRdsUtilityBody.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radio_utility/stub/src/StubRadioRdsUtilityBody.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,433 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Radio RDS Utility body's stub implementation +* +*/ + + +#include "RadioRdsUtilityBody.h" +#include "RadioServerData.h" +#include "RadioSession.h" +#include "RadioStubManager.h" + +#define STUB CRadioStubManager::GetRadioStubManager()->iRds + +// ======== MEMBER FUNCTIONS ======== + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CRadioRdsUtility::CBody* CRadioRdsUtility::CBody::NewL( + RRadioSession& aRadioSession, + MRadioRdsObserver& aObserver ) + { + if ( STUB.iLeaveNewL.iError ) + { + User::Leave( STUB.iLeaveNewL.iError ); + } + CRadioRdsUtility::CBody* s = new(ELeave) CRadioRdsUtility::CBody( aRadioSession, aObserver ); + CleanupStack::PushL(s); + s->ConstructL(); + CleanupStack::Pop(); + return s; + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::ConstructL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::ConstructL() + { + if ( STUB.iLeaveErrorForConstructL.iError ) + { + User::Leave( STUB.iLeaveErrorForConstructL.iError ); + } + STUB.iRadioRdsUtilityClient = &iRadioRdsUtilityClient; + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CBody +// ----------------------------------------------------------------------------- +// +CRadioRdsUtility::CBody::CBody( + RRadioSession& aRadioSession, + MRadioRdsObserver& aObserver ) + : iRadioSession(aRadioSession), + iRadioRdsUtilityClient(aObserver) + { + } + +// ----------------------------------------------------------------------------- +// Destructor. +// ----------------------------------------------------------------------------- +// +CRadioRdsUtility::CBody::~CBody() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::Close +// Cancel all requested RDS notifications if any were requested. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::Close() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetCapabilities +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetCapabilities( + TRdsCapabilities& aCaps ) const + { + if ( !STUB.iGetCapabilitiesError.Error() ) + { + aCaps.iRdsFunctions = STUB.iCaps.iRdsFunctions; + aCaps.iAdditionalFunctions1 = STUB.iCaps.iAdditionalFunctions1; + aCaps.iAdditionalFunctions2 = STUB.iCaps.iAdditionalFunctions2; + } + return STUB.iGetCapabilitiesError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetRdsSignalStatus +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetRdsSignalStatus( + TBool& aRdsSignal ) const + { + aRdsSignal = STUB.iRdsSignal; + return STUB.iGetRdsSignalStatusError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::NotifyRdsDataChange +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::NotifyRdsDataChange( + TRdsData aRdsData ) + { + iRdsDataReq.iRdsFunctions = aRdsData.iRdsFunctions; + iRdsDataReq.iAdditionalFunctions1 = aRdsData.iAdditionalFunctions1; + iRdsDataReq.iAdditionalFunctions2 = aRdsData.iAdditionalFunctions2; + return STUB.iNotifyRdsDataChangeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelNotifyRdsDataChange +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelNotifyRdsDataChange() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::SetAutomaticSwitching +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::SetAutomaticSwitching( + TBool aAuto ) + { + STUB.iAutomaticSwitching = aAuto; + return STUB.iSetAutomaticSwitchingError.Error(); + + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetAutomaticSwitching +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetAutomaticSwitching( + TBool& aAuto ) + { + aAuto = STUB.iAutomaticSwitching; + return STUB.iGetAutomaticSwitchingError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelAFSearch +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelAFSearch() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::SetAutomaticTrafficAnnouncement +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::SetAutomaticTrafficAnnouncement( + TBool aAuto ) + { + STUB.iTaStatus = aAuto; + return STUB.iSetAutomaticTrafficAnnouncementError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetAutomaticTrafficAnnouncement +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetAutomaticTrafficAnnouncement( + TBool& aAuto ) + { + aAuto = STUB.iTaStatus; + return STUB.iGetAutomaticTrafficAnnouncementError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::StationSeekByPTY +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::StationSeekByPTY( + TRdsProgrammeType /*aPty*/, + TBool /*aUpwards*/ ) + { + iRadioRdsUtilityClient.MrroStationSeekByPTYComplete( + STUB.iStationSeekByPTYError.Error(), STUB.iFrequency ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::StationSeekByTA +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::StationSeekByTA( + TBool /*aSeekUp*/ ) + { + iRadioRdsUtilityClient.MrroStationSeekByTAComplete( STUB.iStationSeekByTAError.Error(), STUB.iFrequency ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::StationSeekByTP +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::StationSeekByTP( + TBool /*aSeekUp*/ ) + { + iRadioRdsUtilityClient.MrroStationSeekByTPComplete( STUB.iStationSeekByTPError.Error(), STUB.iFrequency ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelRdsStationSeek +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelRdsStationSeek() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetFreqByPTY +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::GetFreqByPTY( + TRdsProgrammeType /*aPty*/ ) + { + iRadioRdsUtilityClient.MrroGetFreqByPTYComplete( STUB.iGetFreqByPTYError.Error(), STUB.iFreqList ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelGetFreqByPTY +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelGetFreqByPTY() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetFreqByTA +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::GetFreqByTA() + { + iRadioRdsUtilityClient.MrroGetFreqByTAComplete( STUB.iGetFreqByTAError.Error(), STUB.iFreqList ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelGetFreqByTA +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelGetFreqByTA() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetPSByPTY +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::GetPSByPTY( + TRdsProgrammeType /*aPty*/ ) + { + iRadioRdsUtilityClient.MrroGetPSByPTYComplete( STUB.iGetPSByPTYError.Error(), STUB.iPsList ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelGetPSByPTY +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelGetPSByPTY() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetPSByTA +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::GetPSByTA() + { + iRadioRdsUtilityClient.MrroGetPSByPTYComplete( STUB.iGetPSByTAError.Error(), STUB.iPsList ); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::CancelGetPSByTA +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CRadioRdsUtility::CBody::CancelGetPSByTA() + { + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetProgrammeIdentification +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetProgrammeIdentification( + TInt& /*aPi*/ ) + { + return STUB.iGetProgrammeIdentificationError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetProgrammeType +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetProgrammeType( + TRdsProgrammeType& /*aPty*/ ) + { + return STUB.iGetProgrammeTypeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetProgrammeService +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetProgrammeService( + TRdsPSName& aPs ) + { + if ( STUB.iPs.Length() ) + { + aPs.Copy( STUB.iPs ); + } + + return STUB.iGetProgrammeServiceError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetRadioText +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetRadioText( + TRdsRadioText& aRt ) + { + if ( STUB.iRtPlusData.Length() ) + { + aRt.Copy( STUB.iRtPlusData ); + } + + return STUB.iGetRadioTextError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetRadioTextPlus +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetRadioTextPlus( + TRdsRTplusClass /*aRtPlusClass*/, + TRdsRadioText& aRtPlusData ) + { + + if ( STUB.iRtPlusData.Length() ) + { + aRtPlusData.Copy( STUB.iRtPlusData ); + } + + return STUB.iGetRadioTextPlusError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetClockTime +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetClockTime( + TDateTime& aCt ) + { + aCt = STUB.iCt; + return STUB.iGetClockTimeError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetTrafficAnnouncementStatus +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetTrafficAnnouncementStatus( + TBool& aTaStatus ) + { + STUB.iTaStatus = aTaStatus; + return STUB.iGetTrafficAnnouncementStatusError.Error(); + } + +// ----------------------------------------------------------------------------- +// CRadioRdsUtility::CBody::GetTrafficProgrammeStatus +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CRadioRdsUtility::CBody::GetTrafficProgrammeStatus( + TBool& aTpStatus ) + { + aTpStatus = STUB.iTpStatus; + return STUB.iGetTrafficProgrammeStatusError.Error(); + } + + +//End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/bwins/RadioSession_Stubu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/bwins/RadioSession_Stubu.def Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,71 @@ +EXPORTS + ?CustomCommandAsync@RRadioSession@@UAEXABV?$TPckgBuf@VTMMFMessageDestination@@@@HABVTDesC8@@1AAVTRequestStatus@@@Z @ 1 NONAME ; void RRadioSession::CustomCommandAsync(class TPckgBuf const &, int, class TDesC8 const &, class TDesC8 const &, class TRequestStatus &) + ?StationSeekByTP@RRadioSession@@QAEXH@Z @ 2 NONAME ; void RRadioSession::StationSeekByTP(int) + ?SetSquelch@RRadioSession@@QAEHH@Z @ 3 NONAME ; int RRadioSession::SetSquelch(int) + ?CustomCommandAsync@RRadioSession@@UAEXABV?$TPckgBuf@VTMMFMessageDestination@@@@HABVTDesC8@@1AAVTDes8@@AAVTRequestStatus@@@Z @ 4 NONAME ; void RRadioSession::CustomCommandAsync(class TPckgBuf const &, int, class TDesC8 const &, class TDesC8 const &, class TDes8 &, class TRequestStatus &) + ?NotifyRadioTextPlusChange@RRadioSession@@QAEHAAV?$RArray@H@@@Z @ 5 NONAME ; int RRadioSession::NotifyRadioTextPlusChange(class RArray &) + ?CancelGetPSByTA@RRadioSession@@QAEXXZ @ 6 NONAME ; void RRadioSession::CancelGetPSByTA(void) + ?NotifyRdsDataChange@RRadioSession@@QAEHVTRsRdsData@@@Z @ 7 NONAME ; int RRadioSession::NotifyRdsDataChange(class TRsRdsData) + ?CancelGetFreqByTA@RRadioSession@@QAEXXZ @ 8 NONAME ; void RRadioSession::CancelGetFreqByTA(void) + ?Connect@RRadioSession@@QAEHAAVMRadioObserver@@H@Z @ 9 NONAME ; int RRadioSession::Connect(class MRadioObserver &, int) + ?GetTrafficAnnouncementStatus@RRadioSession@@QAEHAAH@Z @ 10 NONAME ; int RRadioSession::GetTrafficAnnouncementStatus(int &) + ?GetAutomaticSwitching@RRadioSession@@QAEHAAH@Z @ 11 NONAME ; int RRadioSession::GetAutomaticSwitching(int &) + ?CancelGetFreqByPTY@RRadioSession@@QAEXXZ @ 12 NONAME ; void RRadioSession::CancelGetFreqByPTY(void) + ?GetMuteStatus@RRadioSession@@QBEHAAH@Z @ 13 NONAME ; int RRadioSession::GetMuteStatus(int &) const + ?StationSeekByTA@RRadioSession@@QAEXH@Z @ 14 NONAME ; void RRadioSession::StationSeekByTA(int) + ?SetVolume@RRadioSession@@QAEHH@Z @ 15 NONAME ; int RRadioSession::SetVolume(int) + ?GetMaxSignalStrength@RRadioSession@@QBEHAAH@Z @ 16 NONAME ; int RRadioSession::GetMaxSignalStrength(int &) const + ?GetForceMonoReception@RRadioSession@@QBEHAAH@Z @ 17 NONAME ; int RRadioSession::GetForceMonoReception(int &) const + ?GetProgrammeType@RRadioSession@@QAEHAAH@Z @ 18 NONAME ; int RRadioSession::GetProgrammeType(int &) + ?GetTrafficProgrammeStatus@RRadioSession@@QAEHAAH@Z @ 19 NONAME ; int RRadioSession::GetTrafficProgrammeStatus(int &) + ?GetFrequencyRange@RRadioSession@@QBEHAAW4TRsFrequencyRange@@AAH1@Z @ 20 NONAME ; int RRadioSession::GetFrequencyRange(enum TRsFrequencyRange &, int &, int &) const + ?SetAutomaticSwitching@RRadioSession@@QAEHH@Z @ 21 NONAME ; int RRadioSession::SetAutomaticSwitching(int) + ?GetAutomaticTrafficAnnouncement@RRadioSession@@QAEHAAH@Z @ 22 NONAME ; int RRadioSession::GetAutomaticTrafficAnnouncement(int &) + ?GetStereoMode@RRadioSession@@QBEHAAH@Z @ 23 NONAME ; int RRadioSession::GetStereoMode(int &) const + ?CancelRdsStationSeek@RRadioSession@@QAEXXZ @ 24 NONAME ; void RRadioSession::CancelRdsStationSeek(void) + ?ForceMonoReception@RRadioSession@@QAEHH@Z @ 25 NONAME ; int RRadioSession::ForceMonoReception(int) + ?CustomCommandSync@RRadioSession@@UAEHABV?$TPckgBuf@VTMMFMessageDestination@@@@HABVTDesC8@@1@Z @ 26 NONAME ; int RRadioSession::CustomCommandSync(class TPckgBuf const &, int, class TDesC8 const &, class TDesC8 const &) + ?GetRdsSignalStatus@RRadioSession@@QBEHAAH@Z @ 27 NONAME ; int RRadioSession::GetRdsSignalStatus(int &) const + ?GetFrequency@RRadioSession@@QBEHAAH@Z @ 28 NONAME ; int RRadioSession::GetFrequency(int &) const + ?RequestTunerControl@RRadioSession@@QAEXW4TRsTuner@@@Z @ 29 NONAME ; void RRadioSession::RequestTunerControl(enum TRsTuner) + ?GetPSByTA@RRadioSession@@QAEXXZ @ 30 NONAME ; void RRadioSession::GetPSByTA(void) + ?GetRadioTextPlus@RRadioSession@@QAEHW4TRsRdsRTplusClass@@AAV?$TBuf16@$0EA@@@@Z @ 31 NONAME ; int RRadioSession::GetRadioTextPlus(enum TRsRdsRTplusClass, class TBuf16<64> &) + ?StationSeekByPTY@RRadioSession@@QAEXHH@Z @ 32 NONAME ; void RRadioSession::StationSeekByPTY(int, int) + ?CancelSetFrequencyRange@RRadioSession@@QAEXXZ @ 33 NONAME ; void RRadioSession::CancelSetFrequencyRange(void) + ?GetSquelch@RRadioSession@@QBEHAAH@Z @ 34 NONAME ; int RRadioSession::GetSquelch(int &) const + ?Play@RRadioSession@@QAEXXZ @ 35 NONAME ; void RRadioSession::Play(void) + ?StationSeek@RRadioSession@@QAEXH@Z @ 36 NONAME ; void RRadioSession::StationSeek(int) + ?GetVolume@RRadioSession@@QBEHAAH@Z @ 37 NONAME ; int RRadioSession::GetVolume(int &) const + ?PlayerState@RRadioSession@@QBEHAAW4TRsPlayerState@@@Z @ 38 NONAME ; int RRadioSession::PlayerState(enum TRsPlayerState &) const + ?CancelNotifyRdsDataChange@RRadioSession@@QAEXXZ @ 39 NONAME ; void RRadioSession::CancelNotifyRdsDataChange(void) + ?SetBalance@RRadioSession@@QAEHHH@Z @ 40 NONAME ; int RRadioSession::SetBalance(int, int) + ?SetVolumeRamp@RRadioSession@@QAEHABVTTimeIntervalMicroSeconds@@@Z @ 41 NONAME ; int RRadioSession::SetVolumeRamp(class TTimeIntervalMicroSeconds const &) + ?GetRdsCapabilities@RRadioSession@@QBEHAAVTRsRdsCapabilities@@@Z @ 42 NONAME ; int RRadioSession::GetRdsCapabilities(class TRsRdsCapabilities &) const + ?GetProgrammeService@RRadioSession@@QAEHAAV?$TBuf16@$07@@@Z @ 43 NONAME ; int RRadioSession::GetProgrammeService(class TBuf16<8> &) + ?GetSignalStrength@RRadioSession@@QBEHAAH@Z @ 44 NONAME ; int RRadioSession::GetSignalStrength(int &) const + ?GetFreqByPTY@RRadioSession@@QAEXH@Z @ 45 NONAME ; void RRadioSession::GetFreqByPTY(int) + ?CancelAFSearch@RRadioSession@@QAEXXZ @ 46 NONAME ; void RRadioSession::CancelAFSearch(void) + ?GetBalance@RRadioSession@@QBEHAAH0@Z @ 47 NONAME ; int RRadioSession::GetBalance(int &, int &) const + ?GetRadioText@RRadioSession@@QAEHAAV?$TBuf16@$0EA@@@@Z @ 48 NONAME ; int RRadioSession::GetRadioText(class TBuf16<64> &) + ?Stop@RRadioSession@@QAEXH@Z @ 49 NONAME ; void RRadioSession::Stop(int) + ?Close@RRadioSession@@QAEXXZ @ 50 NONAME ; void RRadioSession::Close(void) + ?CancelStationSeek@RRadioSession@@QAEXXZ @ 51 NONAME ; void RRadioSession::CancelStationSeek(void) + ?EnableTunerInOfflineMode@RRadioSession@@QAEHH@Z @ 52 NONAME ; int RRadioSession::EnableTunerInOfflineMode(int) + ?CancelSetFrequency@RRadioSession@@QAEXXZ @ 53 NONAME ; void RRadioSession::CancelSetFrequency(void) + ?GetPSByPTY@RRadioSession@@QAEXH@Z @ 54 NONAME ; void RRadioSession::GetPSByPTY(int) + ?GetProgrammeIdentification@RRadioSession@@QAEHAAH@Z @ 55 NONAME ; int RRadioSession::GetProgrammeIdentification(int &) + ?CustomCommandSync@RRadioSession@@UAEHABV?$TPckgBuf@VTMMFMessageDestination@@@@HABVTDesC8@@1AAVTDes8@@@Z @ 56 NONAME ; int RRadioSession::CustomCommandSync(class TPckgBuf const &, int, class TDesC8 const &, class TDesC8 const &, class TDes8 &) + ?CancelGetPSByPTY@RRadioSession@@QAEXXZ @ 57 NONAME ; void RRadioSession::CancelGetPSByPTY(void) + ?Mute@RRadioSession@@QAEHH@Z @ 58 NONAME ; int RRadioSession::Mute(int) + ?GetMaxVolume@RRadioSession@@QBEHAAH@Z @ 59 NONAME ; int RRadioSession::GetMaxVolume(int &) const + ?CancelNotifyRadioTextPlusChange@RRadioSession@@QAEXXZ @ 60 NONAME ; void RRadioSession::CancelNotifyRadioTextPlusChange(void) + ?GetFreqByTA@RRadioSession@@QAEXXZ @ 61 NONAME ; void RRadioSession::GetFreqByTA(void) + ?Version@RRadioSession@@QBE?AVTVersion@@XZ @ 62 NONAME ; class TVersion RRadioSession::Version(void) const + ??0RRadioSession@@QAE@XZ @ 63 NONAME ; RRadioSession::RRadioSession(void) + ?SetFrequency@RRadioSession@@QAEXH@Z @ 64 NONAME ; void RRadioSession::SetFrequency(int) + ?SetAutomaticTrafficAnnouncement@RRadioSession@@QAEHH@Z @ 65 NONAME ; int RRadioSession::SetAutomaticTrafficAnnouncement(int) + ?GetTunerCapabilities@RRadioSession@@QBEHAAVTRsTunerCapabilities@@@Z @ 66 NONAME ; int RRadioSession::GetTunerCapabilities(class TRsTunerCapabilities &) const + ?SetFrequencyRange@RRadioSession@@QAEXW4TRsFrequencyRange@@@Z @ 67 NONAME ; void RRadioSession::SetFrequencyRange(enum TRsFrequencyRange) + ?GetClockTime@RRadioSession@@QAEHAAVTDateTime@@@Z @ 68 NONAME ; int RRadioSession::GetClockTime(class TDateTime &) + ?NewL@RRadioSession@@SAPAV1@XZ @ 69 NONAME ; class RRadioSession * RRadioSession::NewL(void) + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/eabi/RadioSession_Stubu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/eabi/RadioSession_Stubu.def Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,78 @@ +EXPORTS + _ZN13RRadioSession10GetPSByPTYEi @ 1 NONAME + _ZN13RRadioSession10SetBalanceEii @ 2 NONAME + _ZN13RRadioSession10SetSquelchEi @ 3 NONAME + _ZN13RRadioSession11GetFreqByTAEv @ 4 NONAME + _ZN13RRadioSession11StationSeekEi @ 5 NONAME + _ZN13RRadioSession12GetClockTimeER9TDateTime @ 6 NONAME + _ZN13RRadioSession12GetFreqByPTYEi @ 7 NONAME + _ZN13RRadioSession12GetRadioTextER6TBuf16ILi64EE @ 8 NONAME + _ZN13RRadioSession12SetFrequencyEi @ 9 NONAME + _ZN13RRadioSession13SetVolumeRampERK25TTimeIntervalMicroSeconds @ 10 NONAME + _ZN13RRadioSession14CancelAFSearchEv @ 11 NONAME + _ZN13RRadioSession15CancelGetPSByTAEv @ 12 NONAME + _ZN13RRadioSession15StationSeekByTAEi @ 13 NONAME + _ZN13RRadioSession15StationSeekByTPEi @ 14 NONAME + _ZN13RRadioSession16CancelGetPSByPTYEv @ 15 NONAME + _ZN13RRadioSession16GetProgrammeTypeERi @ 16 NONAME + _ZN13RRadioSession16GetRadioTextPlusE17TRsRdsRTplusClassR6TBuf16ILi64EE @ 17 NONAME + _ZN13RRadioSession16StationSeekByPTYEii @ 18 NONAME + _ZN13RRadioSession17CancelGetFreqByTAEv @ 19 NONAME + _ZN13RRadioSession17CancelStationSeekEv @ 20 NONAME + _ZN13RRadioSession17CustomCommandSyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_ @ 21 NONAME + _ZN13RRadioSession17CustomCommandSyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_R5TDes8 @ 22 NONAME + _ZN13RRadioSession17SetFrequencyRangeE17TRsFrequencyRange @ 23 NONAME + _ZN13RRadioSession18CancelGetFreqByPTYEv @ 24 NONAME + _ZN13RRadioSession18CancelSetFrequencyEv @ 25 NONAME + _ZN13RRadioSession18CustomCommandAsyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_R14TRequestStatus @ 26 NONAME + _ZN13RRadioSession18CustomCommandAsyncERK8TPckgBufI22TMMFMessageDestinationEiRK6TDesC8S7_R5TDes8R14TRequestStatus @ 27 NONAME + _ZN13RRadioSession18ForceMonoReceptionEi @ 28 NONAME + _ZN13RRadioSession19GetProgrammeServiceER6TBuf16ILi8EE @ 29 NONAME + _ZN13RRadioSession19NotifyRdsDataChangeE10TRsRdsData @ 30 NONAME + _ZN13RRadioSession19RequestTunerControlE8TRsTuner @ 31 NONAME + _ZN13RRadioSession20CancelRdsStationSeekEv @ 32 NONAME + _ZN13RRadioSession21GetAutomaticSwitchingERi @ 33 NONAME + _ZN13RRadioSession21SetAutomaticSwitchingEi @ 34 NONAME + _ZN13RRadioSession23CancelSetFrequencyRangeEv @ 35 NONAME + _ZN13RRadioSession24EnableTunerInOfflineModeEi @ 36 NONAME + _ZN13RRadioSession25CancelNotifyRdsDataChangeEv @ 37 NONAME + _ZN13RRadioSession25GetTrafficProgrammeStatusERi @ 38 NONAME + _ZN13RRadioSession25NotifyRadioTextPlusChangeER6RArrayIiE @ 39 NONAME + _ZN13RRadioSession26GetProgrammeIdentificationERi @ 40 NONAME + _ZN13RRadioSession28GetTrafficAnnouncementStatusERi @ 41 NONAME + _ZN13RRadioSession31CancelNotifyRadioTextPlusChangeEv @ 42 NONAME + _ZN13RRadioSession31GetAutomaticTrafficAnnouncementERi @ 43 NONAME + _ZN13RRadioSession31SetAutomaticTrafficAnnouncementEi @ 44 NONAME + _ZN13RRadioSession4MuteEi @ 45 NONAME + _ZN13RRadioSession4PlayEv @ 46 NONAME + _ZN13RRadioSession4StopEi @ 47 NONAME + _ZN13RRadioSession5CloseEv @ 48 NONAME + _ZN13RRadioSession7ConnectER14MRadioObserveri @ 49 NONAME + _ZN13RRadioSession9GetPSByTAEv @ 50 NONAME + _ZN13RRadioSession9SetVolumeEi @ 51 NONAME + _ZN13RRadioSessionC1Ev @ 52 NONAME + _ZN13RRadioSessionC2Ev @ 53 NONAME + _ZNK13RRadioSession10GetBalanceERiS0_ @ 54 NONAME + _ZNK13RRadioSession10GetSquelchERi @ 55 NONAME + _ZNK13RRadioSession11PlayerStateER14TRsPlayerState @ 56 NONAME + _ZNK13RRadioSession12GetFrequencyERi @ 57 NONAME + _ZNK13RRadioSession12GetMaxVolumeERi @ 58 NONAME + _ZNK13RRadioSession13GetMuteStatusERi @ 59 NONAME + _ZNK13RRadioSession13GetStereoModeERi @ 60 NONAME + _ZNK13RRadioSession17GetFrequencyRangeER17TRsFrequencyRangeRiS2_ @ 61 NONAME + _ZNK13RRadioSession17GetSignalStrengthERi @ 62 NONAME + _ZNK13RRadioSession18GetRdsCapabilitiesER18TRsRdsCapabilities @ 63 NONAME + _ZNK13RRadioSession18GetRdsSignalStatusERi @ 64 NONAME + _ZNK13RRadioSession20GetMaxSignalStrengthERi @ 65 NONAME + _ZNK13RRadioSession20GetTunerCapabilitiesER20TRsTunerCapabilities @ 66 NONAME + _ZNK13RRadioSession21GetForceMonoReceptionERi @ 67 NONAME + _ZNK13RRadioSession7VersionEv @ 68 NONAME + _ZNK13RRadioSession9GetVolumeERi @ 69 NONAME + _ZTI13CRadioRequest @ 70 NONAME + _ZTI13RRadioSession @ 71 NONAME + _ZTI18CRadioEventHandler @ 72 NONAME + _ZTV13CRadioRequest @ 73 NONAME + _ZTV13RRadioSession @ 74 NONAME + _ZTV18CRadioEventHandler @ 75 NONAME + _ZN13RRadioSession4NewLEv @ 76 NONAME + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/group/RadioSession_Stub.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/group/RadioSession_Stub.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Project file for RadioSession Stub for Radio unit tests +* +*/ + + +#include + +TARGET RadioSession_Stub.dll +CAPABILITY CAP_CLIENT_DLL +TARGETTYPE DLL +UID 0x1000008d 0x01000031 +VENDORID VID_DEFAULT +VERSION 10.1 + +SOURCEPATH ../../Src +SOURCE RadioRequest.cpp +SOURCE RadioEventHandler.cpp + +SOURCEPATH ../src +SOURCE StubRadioSession.cpp + +USERINCLUDE ../Src +USERINCLUDE ../../Src +USERINCLUDE ../../../Inc +USERINCLUDE ../../../../inc +USERINCLUDE /sf/mw/mmmw/mmserv/radioutility/radio_utility/stub/src +USERINCLUDE /sf/mw/mmmw/mmserv/radioutility/radio_utility/stub/src +USERINCLUDE /sf/mw/mmmw/mmserv/radioutility/radio_utility/src +USERINCLUDE /sf/mw/mmmw/mmserv/radioutility/inc +USERINCLUDE /sf/mw/mmmw/mmserv/inc +USERINCLUDE /sf/mw/mmmw/inc +USERINCLUDE /sf/app/radio/radioengine/utils/inc + +MW_LAYER_SYSTEMINCLUDE + +LIBRARY euser.lib +LIBRARY MmfControllerFramework.lib +LIBRARY flogger.lib +MACRO STUB_CONSTELLATION diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/group/bld.inf Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,31 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Project build file for RadioSession's stub +* +*/ + + + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../src/RadioStubManager.h /epoc32/include/RadioStubManager.h + + +PRJ_MMPFILES +RadioSession_Stub.mmp + + +// End of File \ No newline at end of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/src/RadioStubManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/src/RadioStubManager.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,263 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef RADIOSTUBMANAGER_H_ +#define RADIOSTUBMANAGER_H_ +#include +#include + +#include +#include +#include +#include +#include + +#include "RadioServerData.h" +#include "mradioheadseteventobserver.h" +#include "RadioStubManager.h" + +_LIT(KRadioStubManagerLocalChunkName, "RadioStubManagerLocalChunkName"); + +struct TStubError + { + + void SetStubError( TFmRadioTunerError aError, TUint aFailCounter = 1, TBool aFailForEver = EFalse ) + { + iError = aError; + iFailCounter = aFailCounter; + iFailForEver = aFailForEver; }; + TInt Error() + { + TInt aError (iError); + if (iFailCounter) + { + --iFailCounter; + } + else if (iFailForEver) + { + } + else + { + aError = KErrNone; + } + return aError; + } + TFmRadioTunerError iError; + TUint iFailCounter; + TBool iFailForEver; + }; + +struct TLeaveError + { + void Set( TInt aError = KErrGeneral ); + TInt iError; + }; + +struct SRadioStubManager + { +public: + void FillZ() + { + Mem::FillZ( this, sizeof( SRadioStubManager ) ); + } +public: + enum TCenRepDbs + { + // Redefine CenRep databases for test purposes. + // Original constant names are got by eliminating leading "ESub_"-prefix. + EStub_KPSUidCtsyCallInformation = 0x01001001, + EStub_KUidSystemCategory = 0x01001002, + EStub_KPSUidVoiceUiAccMonitor = 0x01001003, + EStub_KPSUidMMFAudioServer = 0x01001004, + EStub_KRadioPSUid = 0x01001005, + EStub_KRadioServerPropertyCategory = 0x01001006 + }; + + struct TRemConTargetData + { + TLeaveError iLeaveNewL; + TLeaveError iLeaveConstructL; + + + MRemConCoreApiTargetObserver* iRemConCoreApiTargetObserver; + MRemConCallHandlingTargetObserver* iRemConCallHandlingTargetObserver; + } mutable iRemConTarget; + + struct TAccessoryObserverData + { + TLeaveError iLeaveNewL; + TLeaveError iLeaveIsHeadsetConnectedL; + TLeaveError iLeaveConstructL; + + TBool iHeadsetConnected; + MRadioHeadsetEventObserver* iObserver; + + + } mutable iAccessoryObserver; + + struct TFmTunerStubData + { + TRsTunerCapabilities iCaps; + TStubError iGetCapabilitiesError; + + + TBool iTunerInOfflineMode; + TStubError iEnableTunerInOfflineModeError; + + + TRsFrequencyRange iRange; + TRsFrequencyRange iPreviousRange; + TInt iMinFreq; + TInt iMaxFreq; + TStubError iGetFrequencyRangeError; + TStubError iSetFrequencyRangeError; + + TInt iFrequency; + TInt iPreviousFrequency; + TStubError iGetFrequencyError; + TStubError iSetFrequencyError; + + struct TScanStations + { + TInt iCount; + TInt iMinFreq; + TInt iFrequencyStepSize; + } mutable iScanStations; + + TBool iStationSeekUpwards; + + TInt iSignalStrength; + TStubError iGetSignalStrengthError; + + TInt iMaxSignalStrength; + TStubError iGetMaxSignalStrengthError; + + TBool iStereoMode; + TStubError iGetStereoModeError; + + TBool iForcedMono; + TStubError iGetForcedMonoReceptionError; + TStubError iForcedMonoReceptionError; + + TBool iSquelch; + TStubError iSetSquelchError; + TStubError iGetSquelchError; + } mutable iTuner; + + struct TPlayerStubData + { + TLeaveError iLeaveNewL; + TLeaveError iLeaveErrorForConstructL; + MRadioPlayerObserver* iRadioPlayerUtilityClient; + + TRsPlayerState iPlayerState; + + TBool iMuteStatus; + TStubError iMuteError; + + TInt iVolume; + TStubError iSetVolumeError; + TStubError iGetVolumeError; + + TTimeIntervalMicroSeconds iRampInterval; + TStubError iSetVolumeRampError; + + TInt iMaxVolume; + TStubError iGetMaxVolumeError; + + TInt iLeftPercentage; + TInt iRightPercentage; + TStubError iSetBalanceError; + TStubError iGetBalanceError; + } mutable iPlayer; + + struct TRdsStubData + { + TLeaveError iLeaveNewL; + TLeaveError iLeaveErrorForConstructL; + MRadioRdsObserver* iRadioRdsUtilityClient; + TRsRdsCapabilities iCaps; + TStubError iGetCapabilitiesError; + + TBool iRdsSignal; + TStubError iGetRdsSignalStatusError; + + TStubError iNotifyRdsDataChangeError; + + TBool iAutomaticSwitching; + TStubError iSetAutomaticSwitchingError; + TStubError iGetAutomaticSwitchingError; + + TStubError iStationSeekByPTYError; + TStubError iStationSeekByTAError; + TStubError iStationSeekByTPError; + TInt iFrequency; + TStubError iGetFreqByPTYError; + TStubError iGetFreqByTAError; + TStubError iGetPSByPTYError; + TStubError iGetPSByTAError; + + RArray iPsList; + RArray iFreqList; + + TInt iPi; + TStubError iGetProgrammeIdentificationError; + + TRdsProgrammeType iPty; + TStubError iGetProgrammeTypeError; + + TRdsPSName iPs; + TStubError iGetProgrammeServiceError; + + // Radio Text + TRdsRTplusClass iRtPlusClass; + TRdsRadioText iRtPlusData; + TStubError iGetRadioTextPlusError; + TRsRdsRadioText iRt; + TStubError iGetRadioTextError; + + // Automatic traffic announcement + TBool iAuto; + TStubError iGetTrafficAnnouncementStatusError; + TStubError iSetTrafficAnnouncementStatusError; + + TBool iTaStatus; + TStubError iGetAutomaticTrafficAnnouncementError; + TStubError iSetAutomaticTrafficAnnouncementError; + + TDateTime iCt; + TStubError iGetClockTimeError; + + TBool iTpStatus; + TStubError iGetTrafficProgrammeStatusError; + } mutable iRds; + + struct TMonitorStubData + { + TInt iNone; + } mutable iMonitor; + }; + +const TUid KStub_KRadioServerPropertyCategory = {SRadioStubManager::EStub_KRadioServerPropertyCategory}; +const TUid KStub_KUidSystemCategory = {SRadioStubManager::EStub_KUidSystemCategory}; +const TUid KStub_KPSUidCtsyCallInformation = {SRadioStubManager::EStub_KPSUidCtsyCallInformation}; +const TUid KStub_KPSUidVoiceUiAccMonitor = {SRadioStubManager::EStub_KPSUidVoiceUiAccMonitor}; +const TUid KStub_KPSUidMMFAudioServer = {SRadioStubManager::EStub_KPSUidMMFAudioServer}; +const TUid KStub_KRadioPSUid = {SRadioStubManager::EStub_KRadioPSUid}; +const TUid KStub_KRadioCRUid = {0x101FF976}; // tried with this {SRadioStubManager::EStub_KRadioPSUid} but failed + +#endif /* RADIOSTUBMANAGER_H_ */ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/src/StubRadioSession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/src/StubRadioSession.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,1773 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: This class is the main interface to the RadioServer. It implements +* the client-side session. +* +*/ + + + +// INCLUDE FILES +#include +#include "StubRadioSession.h" +#include "RadioClientServer.h" +#include "RadioRequest.h" +#include "RadioEventHandler.h" +#include "RadioDebug.h" +#include "trace.h" + +// CONSTANTS +// Index to list of asynchronous requests that generates response to MRadioObserver. +const TInt KReqInternal = 0; +const TInt KReqRequestTunerControl = 1; +const TInt KReqSetFrequencyRange = 2; +const TInt KReqSetFrequency = 3; +const TInt KReqStationSeek = 4; +const TInt KReqPlay = 5; +const TInt KReqStationSeekByPTY = 6; +const TInt KReqStationSeekByTA = 7; +const TInt KReqStationSeekByTP = 8; + +// Max number of retries to start the server +const TInt KRadioStartRetry = 2; +// Minimum of one for each asynchronous message + one to allow cancel +const TInt KRadioMessageSlots = 11; + +#define TUNER iRadioStubManager->iTuner +#define PLAYER iRadioStubManager->iPlayer +#define RDS iRadioStubManager->iRds + + +// ============================= LOCAL FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// StartServer +// Static function to start the server process thread. +// Start the server process/thread which lives in an EPOCEXE object. +// Returns: TInt: KErrNone (0) if no error +// ----------------------------------------------------------------------------- +// +static TInt StartServer() + { + FUNC_LOG; + + const TUidType serverUid(KNullUid, KNullUid, KRadioServerUid3); + + // We just create a new server process. Simultaneous launching of two such + // processes should be detected when the second one attempts to create + // the server object, failing with KErrAlreadyExists. + RProcess server; + TInt r = server.Create(KRadioServerImg, KNullDesC, serverUid); + + if ( r != KErrNone ) + { + INFO_1("server.Create() failed [%d]", r); + return r; + } + TRequestStatus stat; + server.Rendezvous(stat); + if ( stat != KRequestPending ) + { + server.Kill(0); // abort startup + } + else + { + server.Resume(); // logon OK - start the server + } + User::WaitForRequest(stat); // wait for start or death + // we can't use the 'exit reason' if the server panicked as this + // is the panic 'reason' and may be '0' which cannot be distinguished + // from KErrNone + r = (server.ExitType() == EExitPanic) ? KErrGeneral : stat.Int(); + server.Close(); + return r; + } + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// RRadioSession::NewL +// Two-phased constructor except no need for ConstrucL +// ----------------------------------------------------------------------------- +// +EXPORT_C RRadioSession* RRadioSession::NewL() + { + FUNC_LOG; + RRadioSession* self = new (ELeave) RRadioSession(); + return self; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::RRadioSession +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C RRadioSession::RRadioSession() + : iConnected(EFalse), + iDestinationPckg(TMMFMessageDestination(KRadioServerInterfaceUid, KRadioServerObjectHandle)), + iObserver(NULL), + iPrimaryClient(EFalse), + iRdsNotify(EFalse) + { + FUNC_LOG; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::Connect +// Create a client-side session. Start the server if not started already. +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::Connect( + MRadioObserver& aObserver, + TBool aPrimaryClient ) + { + FUNC_LOG; + INFO_1("Size of RRadioSession: %i", sizeof(RRadioSession) ); + // check if already connected + if ( iConnected ) + { + INFO("already connected"); + return KErrAlreadyExists; + } + + TInt retry = KRadioStartRetry; + TInt err = KErrGeneral; + TInt numMessageSlots = KRadioMessageSlots; + for (;;) + { + // Try to create a new session with the server + err = CreateSession(KRadioServerName, Version(), numMessageSlots); + if ( (err != KErrNotFound) && (err != KErrServerTerminated) ) + { + break; // Connected to existing server - ok + } + if ( --retry == 0 ) + { + break; // Failed. + } + // Server not running, try to start it. + err = StartServer(); + if ( (err != KErrNone) && (err != KErrAlreadyExists) ) + { + break; // Server not launched - propagate error + } + } + + if ( err != KErrNone ) + { + INFO_1("Unable to start server [%d]", err); + return err; + } + // Dooing some temporary manipulation for heap + User::Check(); + User::CompressAllHeaps(); + CRadioRequest* req( NULL ); + TRAP(err, req = CRadioRequest::NewLC(*this, aObserver, ERadioServNone); CleanupStack::Pop( req ) ); + iExtraRequestForBugHunting = req; + User::Check(); + User::CompressAllHeaps(); + //delete iExtraRequestForBugHunting; + //iExtraRequestForBugHunting = NULL; + + // Create active object request handlers and add it to scheduler + TRAP(err, StartRequestHandlersL(aObserver)); + if ( err == KErrNone ) + { + // Create active object event handlers and add it to scheduler + TRAP(err, StartEventHandlersL(aObserver)); + if ( err == KErrNone ) + { + iConnected = ETrue; + iObserver = &aObserver; + if ( aPrimaryClient ) + { + iPrimaryClient = ETrue; + err = SendReceive(ERadioServAddPrimaryClient, TIpcArgs(&iDestinationPckg)); + } + } + else + { + iRequests.ResetAndDestroy(); + iEventHandlers.ResetAndDestroy(); + } + } + else + { + iRequests.ResetAndDestroy(); + } + // Open chunk for test configuration/control data + // Open chunk for test configuration/control data + User::Check(); + User::CompressAllHeaps(); + err = iRadioStubManagerChunk.OpenGlobal( + KRadioStubManagerLocalChunkName, + EFalse, // == Read | Write + EOwnerThread ); + if (err) + { + goto exitAndReturn; + } + User::Check(); + User::CompressAllHeaps(); + if ( sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize() ) + { + err = KErrTooBig; + goto exitAndReturn; + } + TUint8* basePtr = iRadioStubManagerChunk.Base(); + User::LeaveIfNull( basePtr ); + if (!basePtr) + { + err = KErrGeneral; + goto exitAndReturn; + } + User::Check(); + User::CompressAllHeaps(); + iRadioStubManager = (SRadioStubManager*)basePtr; + +exitAndReturn: + User::Check(); + User::CompressAllHeaps(); + INFO_1("exit err=[%d]", err); + return err; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::Version +// ----------------------------------------------------------------------------- +// +EXPORT_C TVersion RRadioSession::Version() const + { + return(TVersion(KRadioServerVersionMajor, KRadioServerVersionMinor, KRadioServerVersionBuild)); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::Close +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::Close() + { + FUNC_LOG; + + //delete iExtraRequestForBugHunting; + iEventHandlers.ResetAndDestroy(); + iEventHandlers.Close(); + + iRdsEventHandlers.ResetAndDestroy(); + iRdsEventHandlers.Close(); + + for ( TInt i = (iRequests.Count() - 1) ; i >= 0; i = (iRequests.Count()- 1) ) + { + INFO_2("iRequests[i] pointer: 0x%x, no: %i", *&iRequests[i], i ); + CRadioRequest* req = *&iRequests[i]; + iRequests.Remove(i); + delete req; + } + //iRequests.ResetAndDestroy(); + iRequests.Close(); + + if ( iConnected ) + { + iConnected = EFalse; + if ( iPrimaryClient ) + { + SendReceive(ERadioServRemovePrimaryClient, TIpcArgs(&iDestinationPckg)); + } + RSessionBase::Close(); + } + // Dooing some temporary manipulation for heap + //User::Check(); + //User::CompressAllHeaps(); + delete iExtraRequestForBugHunting; + } + +//********** TunerUtility control begins + +// ----------------------------------------------------------------------------- +// RRadioSession::RequestTunerControl +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::RequestTunerControl( + TRsTuner /*aTuner*/ ) + { + FUNC_LOG; + if ( iConnected ) + { + if ( !iRequests[KReqRequestTunerControl]->IsActive() ) + { + iRequests[KReqRequestTunerControl]->CompleteRequest(ERadioServRequestTunerControl, KErrNone); + } + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServRequestTunerControl, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetTunerCapabilities +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetTunerCapabilities( + TRsTunerCapabilities& aCaps ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetCapabilitiesError.Error() ); + if ( KErrNone == err ) + { + aCaps.iFrequencyRange = TUNER.iCaps.iFrequencyRange; + aCaps.iCapabilities = TUNER.iCaps.iCapabilities; + aCaps.iAdditionalFunctions1 = TUNER.iCaps.iAdditionalFunctions1; + aCaps.iAdditionalFunctions2 = TUNER.iCaps.iAdditionalFunctions2; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::EnableTunerInOfflineMode +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::EnableTunerInOfflineMode( + TBool aEnable ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iEnableTunerInOfflineModeError.Error() ); + if ( KErrNone == err ) + { + TUNER.iTunerInOfflineMode = aEnable; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetFrequencyRange +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::SetFrequencyRange( + TRsFrequencyRange aRange ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iSetFrequencyRangeError.Error() ); + if ( KErrNone == err ) + { + TUNER.iPreviousRange = TUNER.iRange; + TUNER.iRange = aRange; + } + if ( iRequests[KReqSetFrequencyRange]->IsActive() ) + { + iRequests[KReqSetFrequencyRange]->Cancel(); + } + iRequests[KReqSetFrequencyRange]->CompleteRequest(ERadioServSetFrequencyRange, err); + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServSetFrequencyRange, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelSetFrequencyRange +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelSetFrequencyRange() + { + FUNC_LOG; + if ( iConnected && iRequests[KReqSetFrequencyRange]->IsActive() ) + { + iRequests[KReqSetFrequencyRange]->Cancel(); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetFrequencyRange +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetFrequencyRange( + TRsFrequencyRange& aRange, + TInt& aMinFreq, + TInt& aMaxFreq) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetFrequencyRangeError.Error() ); + if ( KErrNone == err ) + { + aRange = TUNER.iRange; + aMinFreq = TUNER.iMinFreq; + aMaxFreq = TUNER.iMaxFreq; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetFrequency +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::SetFrequency( + TInt aFrequency ) + { + FUNC_LOG; + if ( iConnected ) + { + TUint err( TUNER.iSetFrequencyError.Error() ); + if ( KErrNone == err ) + { + TUNER.iPreviousFrequency = TUNER.iFrequency; + TUNER.iFrequency = aFrequency; + } + if ( iRequests[KReqSetFrequency]->IsActive() ) + { + iRequests[KReqSetFrequency]->Cancel(); + } + iRequests[KReqSetFrequency]->CompleteRequest(ERadioServSetFrequency, err); + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServSetFrequency, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelSetFrequency +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelSetFrequency() + { + FUNC_LOG; + if ( iConnected && iRequests[KReqSetFrequency]->IsActive() ) + { + iRequests[KReqSetFrequency]->Cancel(); + } + TUNER.iFrequency = TUNER.iPreviousFrequency; + TUNER.iPreviousFrequency = 0; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetFrequency +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetFrequency( + TInt& aFrequency ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetFrequencyError.Error() ); + if ( KErrNone == err ) + { + aFrequency = TUNER.iFrequency; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StationSeek +// ----------------------------------------------------------------------------- +EXPORT_C void RRadioSession::StationSeek( + TBool aUpwards ) + { + FUNC_LOG; + INFO_1("aUpwards: %D", aUpwards ); + if ( iConnected ) + { + TUNER.iStationSeekUpwards = aUpwards; + if ( iRequests[KReqStationSeek]->IsActive() ) + { + iRequests[KReqStationSeek]->Cancel(); + } + TInt err( KErrNone); + if ( KErrNotFound == TUNER.iScanStations.iCount ) + { + err = KErrNotFound; + } + else if ( TUNER.iScanStations.iCount ) + { + iRequests[KReqStationSeek]->iInt = TUNER.iScanStations.iMinFreq + ( TUNER.iScanStations.iCount * TUNER.iScanStations.iFrequencyStepSize ); + --TUNER.iScanStations.iCount; + if ( 0 == TUNER.iScanStations.iCount ) + { + TUNER.iScanStations.iCount = KErrNotFound; + } + } + else + { + iRequests[KReqStationSeek]->iInt = TUNER.iFrequency; + } + iRequests[KReqStationSeek]->CompleteRequest(ERadioServStationSeek, err); + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeek, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelStationSeek +// ----------------------------------------------------------------------------- +EXPORT_C void RRadioSession::CancelStationSeek() + { + FUNC_LOG; + if ( iConnected && iRequests[KReqStationSeek]->IsActive() ) + { + iRequests[KReqStationSeek]->Cancel(); + } + TUNER.iScanStations.iCount = 0; + TUNER.iStationSeekUpwards = EFalse; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetSignalStrength +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetSignalStrength( + TInt& aSignalStrength ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetSignalStrengthError.Error() ); + if ( KErrNone == err ) + { + aSignalStrength = TUNER.iSignalStrength; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetMaxSignalStrength +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetMaxSignalStrength( + TInt& aMaxSignalStrength ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetMaxSignalStrengthError.Error() ); + if ( KErrNone == err ) + { + aMaxSignalStrength = TUNER.iMaxSignalStrength; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetStereoMode +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetStereoMode( + TBool& aStereo ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetStereoModeError.Error() ); + if ( KErrNone == err ) + { + aStereo = TUNER.iStereoMode; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::ForceMonoReception +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::ForceMonoReception( + TBool aForcedMono ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iForcedMonoReceptionError.Error() ); + if ( KErrNone == err ) + { + TUNER.iForcedMono = aForcedMono; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetForceMonoReception +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetForceMonoReception( + TBool& aForcedMono ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetForcedMonoReceptionError.Error() ); + if ( KErrNone == err ) + { + aForcedMono = TUNER.iForcedMono; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetSquelch +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::SetSquelch( + TBool aEnabled ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iSetSquelchError.Error() ); + if ( KErrNone == err ) + { + TUNER.iSquelch = aEnabled; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetSquelch +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetSquelch( + TBool& aSquelch ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( TUNER.iGetSquelchError.Error() ); + if ( KErrNone == err ) + { + aSquelch = TUNER.iSquelch; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +//********** PlayerUtility control begins + +// ----------------------------------------------------------------------------- +// RRadioSession::PlayerState +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::PlayerState( + TRsPlayerState& aState ) const + { + FUNC_LOG; + if ( iConnected ) + { + aState = PLAYER.iPlayerState; + return KErrNone; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::Play +// ----------------------------------------------------------------------------- +EXPORT_C void RRadioSession::Play() + { + FUNC_LOG; + if ( iConnected ) + { + PLAYER.iPlayerState = ERsPlayerPlaying; + if ( iRequests[KReqPlay]->IsActive() ) + { + iRequests[KReqStationSeek]->Cancel(); + } + iRequests[KReqPlay]->CompleteRequest(ERadioServPlay, KErrNone); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::Stop +// ----------------------------------------------------------------------------- +EXPORT_C void RRadioSession::Stop( + TBool aIfOnlyPrimaryClient ) + { + FUNC_LOG; + INFO_1("aIfOnlyPrimaryClient: [%d]", aIfOnlyPrimaryClient); + if ( iConnected & aIfOnlyPrimaryClient ) + { + PLAYER.iPlayerState = ERsPlayerIdle; + RProperty::Set( KRadioServerPropertyCategory, ERadioServPsPlayerState, PLAYER.iPlayerState ); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetMaxVolume +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetMaxVolume( + TInt& aMaxVolume ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( PLAYER.iGetMaxVolumeError.Error() ); + if ( KErrNone == err ) + { + aMaxVolume = PLAYER.iMaxVolume; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetVolume +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::SetVolume( + TInt aVolume ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( PLAYER.iSetVolumeError.Error() ); + if ( KErrNone == err ) + { + PLAYER.iVolume = aVolume; + RProperty::Set( KRadioServerPropertyCategory, ERadioServPsVolume, PLAYER.iVolume ); + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetVolume +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetVolume( + TInt& aVolume ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( PLAYER.iGetVolumeError.Error() ); + if ( KErrNone == err ) + { + aVolume = PLAYER.iVolume; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetVolumeRamp +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::SetVolumeRamp( + const TTimeIntervalMicroSeconds& aRampInterval ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( PLAYER.iSetVolumeRampError.Error() ); + if ( KErrNone == err ) + { + PLAYER.iRampInterval = aRampInterval; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::Mute +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::Mute( + TBool aMute ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( PLAYER.iMuteError.Error() ); + if ( KErrNone == err ) + { + PLAYER.iMuteStatus = aMute; + RProperty::Set( KRadioServerPropertyCategory, ERadioServPsMuteStatus, PLAYER.iMuteStatus ); + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetMuteStatus +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::GetMuteStatus( + TBool& aMute ) const + { + FUNC_LOG; + if ( iConnected ) + { + aMute = PLAYER.iMuteStatus; + return KErrNone; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetBalance +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::SetBalance( + TInt aLeftPercentage, + TInt aRightPercentage ) + { + FUNC_LOG; + INFO_2("left=[%d] right=[%d]", aLeftPercentage, aRightPercentage); + if ( iConnected ) + { + TInt err( PLAYER.iSetBalanceError.Error() ); + if ( KErrNone == err ) + { + PLAYER.iLeftPercentage = aLeftPercentage; + PLAYER.iRightPercentage = aRightPercentage; + //iRadioPlayerUtilityClient.MrpoBalanceChange( STUB.iLeftPercentage, STUB.iRightPercentage ); + TPckgBuf balance; + balance().iData1 = aLeftPercentage; // Left + balance().iData2 = aRightPercentage; // Right + RProperty::Set( KRadioServerPropertyCategory, ERadioServPsBalance, balance ); + } + return err; + + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetBalance +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetBalance( + TInt& aLeftPercentage, + TInt& aRightPercentage ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( PLAYER.iSetBalanceError.Error() ); + if ( KErrNone == err ) + { + aLeftPercentage = PLAYER.iLeftPercentage; + aRightPercentage = PLAYER.iRightPercentage; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +//********** RDSUtility control begins + +// ----------------------------------------------------------------------------- +// RRadioSession::GetRdsCapabilities +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetRdsCapabilities( + TRsRdsCapabilities& aCaps ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetCapabilitiesError.Error() ); + if ( KErrNone == err ) + { + aCaps.iRdsFunctions = RDS.iCaps.iRdsFunctions; + aCaps.iAdditionalFunctions1 = RDS.iCaps.iAdditionalFunctions1; + aCaps.iAdditionalFunctions2 = RDS.iCaps.iAdditionalFunctions2; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetRdsSignalStatus +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetRdsSignalStatus( + TBool& aRdsSignal ) const + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetRdsSignalStatusError.Error() ); + if ( KErrNone == err ) + { + aRdsSignal = RDS.iRdsSignal; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::NotifyRdsDataChange +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::NotifyRdsDataChange( + TRsRdsData aRdsData ) + { + FUNC_LOG; + INFO_1("aRdsData.iRdsFunctions [%d]", aRdsData.iRdsFunctions); + if ( !iConnected ) + { + return KErrDisconnected; + } + + if ( !iObserver ) + { + return KErrNotReady; + } + + TRAPD(err, StartRdsEventHandlersL(aRdsData.iRdsFunctions)); + if ( err != KErrNone ) + { + INFO_1("err=[%d]", err); + return err; + } + iRdsNotify = ETrue; + return err; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelNotifyRdsDataChange +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelNotifyRdsDataChange() + { + FUNC_LOG; + if ( iConnected && iRdsNotify ) + { + iRdsEventHandlers.ResetAndDestroy(); + iRdsNotify = EFalse; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::NotifyRadioTextPlusChange +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::NotifyRadioTextPlusChange( + RArray& /*aRtPlusClasses*/ ) + { + FUNC_LOG; + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelNotifyRadioTextPlusChange +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelNotifyRadioTextPlusChange() + { + FUNC_LOG; + // NotifyRadioTextPlusChange is not supported + } + +// ----------------------------------------------------------------------------- +// RRadioSession::SetAutomaticSwitching +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::SetAutomaticSwitching( + TBool aAuto ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iSetAutomaticSwitchingError.Error() ); + if ( KErrNone == err ) + { + RDS.iAutomaticSwitching = aAuto; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetAutomaticSwitching +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetAutomaticSwitching( + TBool& aAuto ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetAutomaticSwitchingError.Error() ); + if ( KErrNone == err ) + { + aAuto = RDS.iAutomaticSwitching; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelAFSearch +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelAFSearch() + { + FUNC_LOG; + } + + // ----------------------------------------------------------------------------- +// RRadioSession::SetAutomaticTrafficAnnouncement +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::SetAutomaticTrafficAnnouncement( + TBool /*aAuto*/ ) + { + FUNC_LOG; + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetAutomaticTrafficAnnouncement +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetAutomaticTrafficAnnouncement( + TBool& /*aAuto*/ ) + { + FUNC_LOG; + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StationSeekByPTY +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::StationSeekByPTY( + TRsRdsProgrammeType aPty, + TBool aSeekUp ) + { + FUNC_LOG; + INFO_2("pty=[%d], aSeekUp=%d", aPty, aSeekUp); + if ( iConnected ) + { + if ( iRequests[KReqStationSeekByPTY]->IsActive() ) + { + iRequests[KReqStationSeekByPTY]->Cancel(); + } + iRequests[KReqStationSeekByPTY]->iInt = RDS.iFrequency; + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeekByPTY, KErrNone); + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeekByPTY, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StationSeekByTA +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::StationSeekByTA( + TBool /*aSeekUp*/ ) + { + FUNC_LOG; + if ( iConnected ) + { + if ( iRequests[KReqStationSeekByTA]->IsActive() ) + { + iRequests[KReqStationSeekByTA]->Cancel(); + } + iRequests[KReqStationSeekByTA]->iInt = RDS.iFrequency; + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeekByTA, KErrNone); + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeekByTA, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StationSeekByTP +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::StationSeekByTP( + TBool /*aSeekUp*/ ) + { + FUNC_LOG; + if ( iConnected ) + { + if ( iRequests[KReqStationSeekByTP]->IsActive() ) + { + iRequests[KReqStationSeekByTP]->Cancel(); + } + iRequests[KReqStationSeekByTP]->iInt = RDS.iFrequency; + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeekByTP, KErrNone); + } + else + { + iRequests[KReqInternal]->CompleteRequest(ERadioServStationSeekByTP, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelRdsStationSeek +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelRdsStationSeek() + { + FUNC_LOG; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetFreqByPTY +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::GetFreqByPTY( + TRsRdsProgrammeType /*aPty*/ ) + { + FUNC_LOG; + iRequests[KReqInternal]->CompleteRequest(ERadioServGetFreqByPTY, KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelGetFreqByPTY +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelGetFreqByPTY() + { + FUNC_LOG; + // GetFreqByPTY is not supported + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetFreqByTA +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::GetFreqByTA() + { + FUNC_LOG; + iRequests[KReqInternal]->CompleteRequest(ERadioServGetFreqByTA, KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelGetFreqByTA +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelGetFreqByTA() + { + FUNC_LOG; + // GetFreqByTA is not supported + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetPSByPTY +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::GetPSByPTY( + TRsRdsProgrammeType /*aPty*/ ) + { + FUNC_LOG; + iRequests[KReqInternal]->CompleteRequest(ERadioServGetPSByPTY, KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelGetPSByPTY +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelGetPSByPTY() + { + FUNC_LOG; + // GetPSByPTY is not supported + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetPSByTA +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::GetPSByTA() + { + FUNC_LOG; + iRequests[KReqInternal]->CompleteRequest(ERadioServGetPSByTA, KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelGetPSByTA +// ----------------------------------------------------------------------------- +// +EXPORT_C void RRadioSession::CancelGetPSByTA() + { + FUNC_LOG; + // GetPSByTA is not supported + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetProgrammeIdentification +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetProgrammeIdentification( + TInt& aPi ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetProgrammeIdentificationError.Error() ); + if ( KErrNone == err ) + { + aPi = RDS.iPi; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetProgrammeType +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetProgrammeType( + TRsRdsProgrammeType& aPty ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetProgrammeTypeError.Error() ); + if ( KErrNone == err ) + { + aPty = RDS.iPty; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetProgrammeService +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetProgrammeService( + TRsRdsPSName& aPs ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetProgrammeServiceError.Error() ); + if ( KErrNone == err ) + { + aPs = RDS.iPs; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetRadioText +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetRadioText( + TRsRdsRadioText& aRt ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetRadioTextError.Error() ); + if ( KErrNone == err ) + { + aRt = RDS.iRt; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetRadioTextPlus +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetRadioTextPlus( + TRsRdsRTplusClass /*aRtPlusClass*/, + TRsRdsRadioText& /*aRtPlusData*/ ) + { + FUNC_LOG; + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetClockTime +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetClockTime( + TDateTime& aCt ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetClockTimeError.Error() ); + if ( KErrNone == err ) + { + aCt = RDS.iCt; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetTrafficAnnouncementStatus +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetTrafficAnnouncementStatus( + TBool& aTaStatus ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetTrafficAnnouncementStatusError.Error() ); + if ( KErrNone == err ) + { + aTaStatus = RDS.iTaStatus; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::GetTrafficProgrammeStatus +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RRadioSession::GetTrafficProgrammeStatus( + TBool& aTpStatus ) + { + FUNC_LOG; + if ( iConnected ) + { + TInt err( RDS.iGetTrafficProgrammeStatusError.Error() ); + if ( KErrNone == err ) + { + aTpStatus = RDS.iTpStatus; + } + return err; + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CustomCommandSync +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::CustomCommandSync( + const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, + const TDesC8& aDataTo1, + const TDesC8& aDataTo2 ) + { + FUNC_LOG; + if ( iConnected ) + { + return SendReceive(aFunction, TIpcArgs(&aDestination, &aDataTo1, &aDataTo2)); + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CustomCommandSync +// ----------------------------------------------------------------------------- +EXPORT_C TInt RRadioSession::CustomCommandSync( + const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, + const TDesC8& aDataTo1, + const TDesC8& aDataTo2, + TDes8& aDataFrom ) + { + FUNC_LOG; + if ( iConnected ) + { + return SendReceive(aFunction, TIpcArgs(&aDestination, &aDataTo1, &aDataTo2, &aDataFrom)); + } + else + { + return KErrDisconnected; + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CustomCommandAsync +// ----------------------------------------------------------------------------- +EXPORT_C void RRadioSession::CustomCommandAsync( + const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, + const TDesC8& aDataTo1, + const TDesC8& aDataTo2, + TRequestStatus& aStatus ) + { + FUNC_LOG; + if ( iConnected ) + { + SendReceive(aFunction, TIpcArgs(&aDestination, &aDataTo1, &aDataTo2), aStatus); + } + else + { + TRequestStatus* stat = &aStatus; + User::RequestComplete(stat, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CustomCommandAsync +// ----------------------------------------------------------------------------- +EXPORT_C void RRadioSession::CustomCommandAsync( + const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, + const TDesC8& aDataTo1, + const TDesC8& aDataTo2, + TDes8& aDataFrom, + TRequestStatus& aStatus ) + { + FUNC_LOG; + if ( iConnected ) + { + SendReceive(aFunction, TIpcArgs(&aDestination, &aDataTo1, &aDataTo2, &aDataFrom), aStatus); + } + else + { + TRequestStatus* stat = &aStatus; + User::RequestComplete(stat, KErrDisconnected); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::CancelRequest +// ----------------------------------------------------------------------------- +// +void RRadioSession::CancelRequest( + TInt aRequest ) + { + FUNC_LOG; + if ( iConnected ) + { + SendReceive(ERadioServCancel, TIpcArgs(&iDestinationPckg, aRequest)); + } + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StartRequestHandlersL +// Create asynchronous request handlers. +// ** NOTE: The order in which each handler is appended to the iRequests array is critical. +// Access to each request is done with constants declared at the beginning of this file. +// ----------------------------------------------------------------------------- +// +void RRadioSession::StartRequestHandlersL( + MRadioObserver& aObserver ) + { + FUNC_LOG; + + CRadioRequest* req = NULL; + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServNone); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServRequestTunerControl); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServSetFrequencyRange); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServSetFrequency); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServStationSeek); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServPlay); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServStationSeekByPTY); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServStationSeekByTA); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + + req = CRadioRequest::NewLC(*this, aObserver, ERadioServStationSeekByTP); + User::LeaveIfError( iRequests.Append(req) ); + CleanupStack::Pop( req ); + INFO_2("CRadioRequest* req: 0x%x, no: %i", req, iRequests.Count() ); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StartEventHandlersL +// ----------------------------------------------------------------------------- +// +void RRadioSession::StartEventHandlersL( + MRadioObserver& aEventObserver ) + { + FUNC_LOG; + + CRadioEventHandler* handler = NULL; + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsPlayerState); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsAntennaStatus); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsOfflineMode ); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsTransmitterStatus ); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsFrequency); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsFrequencyRange); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsForceMonoReception); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsSquelch); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsVolume); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsMuteStatus); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(aEventObserver, *this, ERadioServPsBalance); + User::LeaveIfError( iEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + +// ----------------------------------------------------------------------------- +// RRadioSession::StartRdsEventHandlersL +// ----------------------------------------------------------------------------- +// +void RRadioSession::StartRdsEventHandlersL( + TUint32 aRdsFunction ) + { + FUNC_LOG; + + iRdsEventHandlers.ResetAndDestroy(); + CRadioEventHandler* handler = NULL; + + // If RDS notification started always return the latest RdsSignalStatus + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsRdsSignalStatus); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsAutoSwitchStatus); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + if (aRdsFunction & TRsRdsData::ERsRdsProgrammeIdentification) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsProgrammeIdentification); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if (aRdsFunction & TRsRdsData::ERsRdsProgrammeType) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this,ERadioServPsProgrammeType ); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if (aRdsFunction & TRsRdsData::ERsRdsProgrammeService) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsProgrammeService); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if(aRdsFunction & TRsRdsData::ERsRdsRadioText) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsRadioText); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if(aRdsFunction & TRsRdsData::ERsRdsRadioTextPlus) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsRadioTextPlusObjects); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if (aRdsFunction & TRsRdsData::ERsRdsClockTime) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsClockTime); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if (aRdsFunction & TRsRdsData::ERsRdsTrafficAnnouncement) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsTrafficAnnouncementStatus); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + + if (aRdsFunction & TRsRdsData::ERsRdsAlternateFrequency) + { + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsAfSearchBegin); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + + handler = CRadioEventHandler::NewLC(*iObserver, *this, ERadioServPsAfSearchEnd); + User::LeaveIfError( iRdsEventHandlers.Append(handler) ); + CleanupStack::Pop( handler ); + } + } + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/radioserver/Session/stub/src/StubRadioSession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/radioserver/Session/stub/src/StubRadioSession.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,1198 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: This class is the main interface to the RadioServer. It implements +* the client-side session. It also contains M-observer classes that +* the client must implement to receive completion notification for +* asynchronous requests and spontaneous event notifications. +* +*/ + + + +#ifndef RADIOSESSION_H +#define RADIOSESSION_H + +// INCLUDES +#include +#include +#include + +#include "RadioServerData.h" +#include "RadioStubManager.h" + +// FORWARD DECLARATIONS +class CRadioRequest; +class CRadioEventHandler; + +// CLASS DECLARATION + +/** +* Defines functions that client must implement in order to receive +* events from the radio server. +* +* @lib RadioSession.lib +* @since S60 3.0 +*/ +class MRadioObserver + { +public: // New functions + +//********** Tuner related + + /** + * Completion message for RequestTunerControl request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + */ + virtual void RequestTunerControlComplete( TRadioServerError aError ) = 0; + + /** + * Completion message for SetFrequencyRange request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + */ + virtual void SetFrequencyRangeComplete( TRadioServerError aError ) = 0; + + /** + * Completion message for SetFrequency request. + * + * @since S60 3.0 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + */ + virtual void SetFrequencyComplete( TRadioServerError aError ) = 0; + + /** + * Completion message for StationSeek request. + * + * @since S60 3.0 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFrequency Valid only if aError is KErrNone. Contains the new frequency in Hz. + */ + virtual void StationSeekComplete( TRadioServerError aError, TInt aFrequency ) = 0; + + /** + * Event notification indicating FM transmitter status change. Radio receiver + * is turned off when FM transmitter is active. + * + * @since S60 3.2 + * @param aActive ETrue if FM transmitter is active; EFalse otherwise. + */ + virtual void RadioEventTransmitterStatusChange( TBool aActive ) = 0; + + /** + * Event notification indicating antenna status change. + * + * @since S60 3.0 + * @param aAttached ETrue if antenna is attached. + */ + virtual void RadioEventAntennaStatusChange( TBool aAttached ) = 0; + + /** + * Event notification indicating offline mode change. + * + * @since S60 3.0 + * @param aOfflineMode ETrue if device is in offline mode. + */ + virtual void RadioEventOfflineModeChange( TBool aOfflineMode ) = 0; + + /** + * Event notification indicating frequency range change. This may be caused by + * other applications. + * + * @since S60 3.2 + * @param aNewRange New frequency range. + */ + virtual void RadioEventFrequencyRangeChanged( TRsFrequencyRange aNewRange ) = 0; + + /** + * Event notification indicating frequency(Hz) change. This may be caused by + * other applications or RDS if AF/TA is enabled. + * + * @since S60 3.2 + * @param aFrequency New frequency where tuner is currently tuned. + */ + virtual void RadioEventFrequencyChange( TInt aFrequency ) = 0; + + /** + * Event notification indicating forced mono status change. + * + * @since S60 3.2 + * @param aForcedMono ETrue if forced mode is enabled; EFalse otherwise. + */ + virtual void RadioEventForcedMonoChanged( TBool aForcedMono ) = 0; + + /** + * Event notification indicating squelch (muting the frequencies without broadcast) status change. + * + * @since S60 3.2 + * @param aSquelch ETrue if squelch is enabled; EFalse otherwise. + */ + virtual void RadioEventSquelchChanged( TBool aSquelch ) = 0; + +//********** Player related + + /** + * Event notification indicating radio player state change. This may be caused by + * other applications. + * + * @since S60 3.0 + * @param aRadioOn ETrue if radio is playing, otherwise radio is off. + * @param aError Valid only if aRadioOn is EFalse. Contains the reason why radio is off. + */ + virtual void RadioEventStateChange( TBool aRadioOn, TRadioServerError aError ) = 0; + + /** + * Event notification indicating volume change. + * + * @since S60 3.2 + * @param aVolume New volume. + */ + virtual void RadioEventVolumeChange( TInt aVolume ) = 0; + + /** + * Event notification indicating mute setting change. + * + * @since S60 3.2 + * @param aMute ETrue indicates audio is muted. + */ + virtual void RadioEventMuteChange( TBool aMute ) = 0; + + /** + * Event notification indicating balance setting change. + * + * @since S60 3.2 + * @param aLeftPercentage Left speaker volume percentage. This value ranges from 0 to 100. + * @param aRightPercentage Right speaker volume percentage. This value ranges from 0 to 100. + */ + virtual void RadioEventBalanceChange( TInt aLeftPercentage, TInt aRightPercentage ) = 0; + +//********** RDS related + + /** + * Completion message for StationSeekByPTY request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFrequency The frequency(Hz) of the radio station that was found. + */ + virtual void StationSeekByPTYComplete( TRadioServerError aError, TInt aFrequency ) = 0; + + /** + * Completion message for StationSeekByTA request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFrequency The frequency(Hz) of the radio station that was found. + */ + virtual void StationSeekByTAComplete( TRadioServerError aError, TInt aFrequency ) = 0; + + /** + * Completion message for StationSeekByTP request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFrequency The frequency(Hz) of the radio station that was found. + */ + virtual void StationSeekByTPComplete( TRadioServerError aError, TInt aFrequency ) = 0; + + /** + * Completion message for GetFreqByPTY request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFreqList Array of frequencies (Hz), valid only if aError is KErrNone. + */ + virtual void GetFreqByPTYComplete( TRadioServerError aError, RArray& aFreqList ) = 0; + + /** + * Completion message for GetFreqByTA request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFreqList Array of frequencies (Hz), valid only if aError is KErrNone. + */ + virtual void GetFreqByTAComplete( TRadioServerError aError, RArray& aFreqList ) = 0; + + /** + * Completion message for StatGetPSByPTY request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aPsList Array of programme service names, valid only if aError is KErrNone. + */ + virtual void GetPSByPTYComplete( TRadioServerError aError, RArray& aPsList ) = 0; + + /** + * Completion message for GetPSByTA request. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aPsList Array of programme service names, valid only if aError is KErrNone. + */ + virtual void GetPSByTAComplete( TRadioServerError aError, RArray& aPsList ) = 0; + + /** + * Event notification indicating new Programme Identification(PI) is available. + * + * @since S60 3.2 + * @param aPi Programme identification + */ + virtual void RadioEventRdsDataPI( TInt aPi ) = 0; + + /** + * Event notification indicating new Programme Type(PTY) is available. + * + * @since S60 3.2 + * @param aPty Programme type + */ + virtual void RadioEventRdsDataPTY( TRsRdsProgrammeType aPty ) = 0; + + /** + * Event notification indicating new Programme Service(PS) is available. + * + * @since S60 3.2 + * @param aPs Programme service + */ + virtual void RadioEventRdsDataPS( TRsRdsPSName& aPs ) = 0; + + /** + * Event notification indicating new Radio Text(RT) is available. + * + * @since S60 3.2 + * @param aRt Radio text + */ + virtual void RadioEventRdsDataRT( TRsRdsRadioText& aRt ) = 0; + + /** + * Event notification indicating new Clock Time(CT) is available. + * + * @since S60 3.2 + * @param aCt Clock time + */ + virtual void RadioEventRdsDataCT( TDateTime& aCt ) = 0; + + /** + * Event notification indicating Traffice Announcement(TA) status change. + * + * @since S60 3.2 + * @param aTaOn ETrue indicates that Traffic Announcement is on. + */ + virtual void RadioEventRdsDataTA( TBool aTaOn ) = 0; + + /** + * Event notification indicating new Radio Text+(RT+) is available. + * + * @since S60 3.2 + * @param aRtPlusClass Radio text plus class + * @param aRtPlusData Radio text plus data + */ + virtual void RadioEventRdsDataRTplus( TRsRdsRTplusClass aRtPlusClass, TRsRdsRadioText& aRtPlusData ) = 0; + + /** + * Event notification indicating the beginning of Alternate Frequency(AF) search. + * + * @since S60 3.2 + */ + virtual void RadioEventRdsSearchBeginAF() = 0; + + /** + * Event notification indicating the end of Alternate Frequency(AF) search. + * + * @since S60 3.2 + * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors. + * @param aFrequency The frequency(Hz) of the radio station that was found. + */ + virtual void RadioEventRdsSearchEndAF( TRadioServerError aError, TInt aFrequency ) = 0; + + /** + * Event notification indicating station change to another frequency(Hz) that is + * broadcasting Traffic Announcement(TA). + * + * @since S60 3.2 + * @param aFrequency The frequency(Hz) of the radio station that was found. + */ + virtual void RadioEventRdsStationChangeTA( TInt aFrequency ) = 0; + + /** + * Event notification indicating automatic switching (AF) setting change. + * + * @since S60 3.2 + * @param aAuto ETrue indicates that automatic switching is on. + */ + virtual void RadioEventRdsAutomaticSwitchingChange( TBool aAuto ) = 0; + + /** + * Event notification indicating automatic traffic announcement setting change. + * + * @since S60 3.2 + * @param aAuto ETrue indicates that automatic traffic announcement is on. + */ + virtual void RadioEventRdsAutomaticTrafficAnnouncement( TBool aAuto ) = 0; + + /** + * Event notification indicating RDS signal status change (i.e. signal is lost/restored). + * + * @since S60 3.2 + * @param aSignal ETrue indicates that RDS signal is available in the tuned frequency. + */ + virtual void RadioEventRdsSignalChange( TBool aSignal ) = 0; + }; + +/** +* Main interface to the Radio Server. +* Implements the client-side session. +* +* @lib RadioSession.lib +* @since S60 3.0 +*/ +class RRadioSession : public RSessionBase, + public MCustomCommand + { +public: // New functions + IMPORT_C static RRadioSession* NewL(); + +public: // Constructors and destructor + + /** + * C++ default constructor. + */ + IMPORT_C RRadioSession(); + +public: // New functions + + /** + * Connects a client to the radio server. + * @since S60 3.0 + * + * @param aObserver The observer object for receiving async completion callbacks. + * @param aPrimaryClient Indicates whether the client is a primary client. Primary + * clients are clients that can control the radio tuner such as FM Radio Application, + * Visual Radio, or a Java Radio App. Non-primary clients are observers of the tuner, + * player, and RDS utilities and cannot exist without a primary client such as Active + * Idle, Cover UI, or a smart accessory driver. + * @return A standard system error code. + */ + IMPORT_C TInt Connect( MRadioObserver& aObserver, TBool aPrimaryClient ); + + /** + * Gets the client side version number. + * + * @since S60 3.0 + * @return The client side version number. + */ + IMPORT_C TVersion Version() const; + + /** + * Closes connection to the radio server. + * + * @since S60 3.0 + */ + IMPORT_C void Close(); + +//********** TunerUtility control begins + + /** + * Request for control of a tuner. If this method returns KErrNone, control of + * the tuner has been granted. Control to the tuner must be granted before any + * other request can be made. + * + * @since S60 3.2 + * @param Tuner type (e.g. FM, AM) + * @return A standard system error code. + * @see MRadioObserver::RequestTunerControlComplete + */ + IMPORT_C void RequestTunerControl( TRsTuner aTuner ); + + /** + * Get the capabilities of the radio on the device. + * + * @since S60 3.2 + * @param aCaps The capabilities object to fill + * @return A standard system error code. + */ + IMPORT_C TInt GetTunerCapabilities( TRsTunerCapabilities& aCaps ) const; + + /** + * EnableTunerInOfflineMode on the device. + * + * @since S60 3.2 + * @param aEnable ETrue to enable tuner functions in offline mode, EFalse to disable. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt EnableTunerInOfflineMode( TBool aEnable ); + + /** + * Asynchronous request to set the frequency range. If the frequency range is not set, + * it will be defaulted to ERsTunerFM. + * + * @since S60 3.2 + * @param aRange Frequency range + * @see MRadioObserver::SetFrequencyRangeComplete + */ + IMPORT_C void SetFrequencyRange( TRsFrequencyRange aRange ); + + /** + * Cancels an outstanding SetFrequencyRange request. Note that SetFrequencyRange may + * complete before cancel can occur and a callback may occur. + * + * @since S60 3.2 + * @return A standard system error code. + */ + IMPORT_C void CancelSetFrequencyRange(); + + /** + * Get the current frequency range. It also returns the minimum and maximum frequencies(Hz) + * for the returned range. + * + * @since S60 3.2 + * @param aRange On return contains the current frequency range. + * @param aMinFreq On return contains the minimum frequency for the current frequency range. + * @param aMaxFreq On return contains the maximum frequency for the current frequency range. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetFrequencyRange( TRsFrequencyRange& aRange, TInt& aMinFreq, TInt& aMaxFreq ) const; + + /** + * Asynchronous request to tune the tuner to the specified frequency. + * + * @since S60 3.2 + * @param aFrequency The frequency (Hz) to tune to + * @see MRadioObserver::SetFrequecyComplete + */ + IMPORT_C void SetFrequency( TInt aFrequency ); + + /** + * Cancels an outstanding SetFrequency request. Note that SetFrequency may complete before + * cancel can occur and a callback to MRadioObserver::SetFrequencyComplete may occur. + * + * @since S60 3.0 + * @return A standard system/RadioServer error code. + */ + IMPORT_C void CancelSetFrequency(); + + /** + * Get the current frequency. + * + * @since S60 3.2 + * @param aFrequency On return contains the current frequency(Hz). + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetFrequency( TInt& aFrequency ) const; + + /** + * Asynchronous request to find a radio station, starting from current frequency and + * seaching in the direction specified (i.e. up or down). + * + * @since S60 3.0 + * @param aSeekUp Search direction + * @see MRadioObserver::StationSeekComplete + */ + IMPORT_C void StationSeek( TBool aUpwards ); + + /** + * Cancels an outstanding StationSeek request. Note that StationSeek may complete before + * cancel can occur and a callback to MRadioObserver::StationSeekComplete may occur. + * + * @since S60 3.0 + * @return A standard system/RadioServer error code. + */ + IMPORT_C void CancelStationSeek(); + + /** + * Gets the signal strength of the currently tuned signal. + * + * @since S60 3.2 + * @param aStrength On return contains the current signal strength. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetSignalStrength( TInt& aSignalStrength ) const; + + /** + * Gets the maximum possible signal strength of a tuned signal. + * + * @since S60 3.2 + * @param aMaxStrength On return contains the maximum signal strength. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetMaxSignalStrength( TInt& aMaxSignalStrength ) const; + + /** + * Get the stereo mode of the radio. + * + * @since S60 3.2 + * @param aStereo On return, will be ETrue if signal is stereo. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetStereoMode( TBool& aStereo ) const; + + /** + * Indicates whether the reception should be forced into monophonic mode. + * + * @since S60 3.2 + * @param aMono If ETrue, all reception will be in mono mode even if a stereo signal is + * available. If EFalse, a stereo signal will be received when possible. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt ForceMonoReception( TBool aForcedMono ); + + /** + * Checks whether force mono reception is on or not. + * @since S60 3.2 + * @param aForceMono ETrue if force mono is on, EFalse otherwise. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetForceMonoReception( TBool& aForcedMono ) const; + + /** + * Enable or disable quelch. + * + * @since S60 3.2 + * @param aEnabled ETrue to enable squelching, EFalse to disable it. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt SetSquelch( TBool aEnabled ); + + /** + * Retrieves the current squelching (muting in frequencies without reception) setting + * + * @since S60 3.2 + * @param aSquelch ETrue if a squelching is currently enabled + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetSquelch( TBool& aSquelch ) const; + +//********** PlayerUtility control begins + + /** + * Retrieve the current state of the player. + * If the radio is already playing, client should simply retrieve current settings such + * as volume, etc. + * + * @since S60 3.2 + * @return Radio player state. + */ + IMPORT_C TInt PlayerState( TRsPlayerState& aState ) const; + + /** + * Starts radio playback. + * + * @since S60 3.0 + */ + IMPORT_C void Play(); + + /** + * Stops playback, and release the output device for use by other clients. + * + * @since S60 3.0 + * @param aIfOnlyPrimaryClient ETrue to stop playback only if there are no other primary clients + */ + IMPORT_C void Stop( TBool aIfOnlyPrimaryClient = EFalse ); + + /** + * Retrieves the maximum volume supported. + * + * @since S60 3.0 + * @param aVolume On return contains the maximum volume. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetMaxVolume( TInt& aMaxVolume ) const; + + /** + * Sets the volume to the specified level. + * + * @since S60 3.0 + * @param aVolume The volume level to set + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt SetVolume( TInt aVolume ); + + /** + * Get the current volume. + * + * @since S60 3.2 + * @param aVolume On return contains the current volume. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetVolume( TInt& aVolume ) const; + + /** + * Set a volume ramp. + * + * @since S60 3.2 + * @param aRampInterval The time interval over which the volume should be increased from + * zero to the current volume setting. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt SetVolumeRamp( const TTimeIntervalMicroSeconds& aRampInterval ); + + /** + * Mutes or unmutes playback. + * + * @since S60 3.0 + * @param aMute ETrue to mute the audio, EFalse to unmute it. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt Mute( TBool aMute ); + + /** + * Find out if the audio is muted or not. + * + * @since S60 3.2 + * @param aVolume On return set to ETrue if audio is muted. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetMuteStatus( TBool& aMute ) const; + + /** + * Set the speaker balance for playing. + * + * @since S60 3.2 + * @param aLeftPercentage Left speaker volume percentage. This value ranges from 0 to 100. + * @param aRightPercentage Right speaker volume percentage. This value ranges from 0 to 100. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt SetBalance( TInt aLeftPercentage, TInt aRightPercentage ); + + /** + * Get the current speaker balance setting. + * + * @since S60 3.2 + * @param aLeftPercentage On return contains the left speaker volume percentage. + * @param aRightPercentage On return contains the right speaker volume percentage. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetBalance( TInt& aLeftPercentage, TInt& aRightPercentage ) const; + +//********** RDSUtility control begins + + /** + * Get the capabilities of the RDS control on the device. + * + * @since S60 3.2 + * @param aCaps The capabilities object to fill + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetRdsCapabilities( TRsRdsCapabilities& aCaps ) const; + + /** + * Get the status of the RDS reception. + * + * @since S60 3.2 + * @param aRdsSignal On return, will be ETrue if RDS signal can be recepted, EFalse otherwise. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetRdsSignalStatus( TBool& aRdsSignal ) const; + + /** + * Subscribe for notification for the specified RDS data. Client should first check + * the capabilities to see if a feature is supported. + * Request for notification for non-supported features will simply be ignored. + * + * @since S60 3.2 + * @param aRdsData Bitfield indicating notification request. + * @return A standard system/RadioServer error code. + * @see MRadioObserver::RadioEventRdsDataPI + * @see MRadioObserver::RadioEventRdsDataPTY + * @see MRadioObserver::RadioEventRdsDataPS + * @see MRadioObserver::RadioEventRdsDataRT + * @see MRadioObserver::RadioEventRdsDataCT + * @see MRadioObserver::RadioEventRdsDataTA + */ + IMPORT_C TInt NotifyRdsDataChange( TRsRdsData aRdsData ); + + /** + * Cancel NotifyRdsDataChange request. + * + * @since S60 3.2 + */ + IMPORT_C void CancelNotifyRdsDataChange(); + + /** + * Subscribe for notification for the specified RadioText+ data. Client should first check + * the capabilities to see if RT+ feature is supported. + * Returns KErrNotSupported if RT+ is not supported. + * + * Note that if the client wishes to receive the entire radio text data chunk, client should + * subscribe for ERsRdsRadioText using NotifyRdsDataChange instead. + * + * @since S60 3.2 + * @param aRtPlusClasses Array of RT+ class to be notified + * @return A standard system/RadioServer error code. + * @see MRadioObserver::RadioEventRdsDataRTplus + */ + IMPORT_C TInt NotifyRadioTextPlusChange( RArray& aRtPlusClasses ); + + /** + * Cancel NotifyRadioTextPlusChange request. + * + * @since S60 3.2 + */ + IMPORT_C void CancelNotifyRadioTextPlusChange(); + + /** + * Turn on/off automatic switching of frequency based on Alternate Frequency. + * This will cause RDS device to search for alternate frequency when the signal strength + * deteriorates. User should be ready to receive RadioEventRdsSearchBeginAF and + * RadioEventRdsSearchEndAF. Automatic switching is off by default. + * + * @since S60 3.2 + * @param aAuto ETrue to turn automatic switching on, EFalse to turn it off. + * @return A standard system/RadioServer error code. + * @see MRadioObserver::RadioEventRdsSearchBeginAF + * @see MRadioObserver::RadioEventRdsSearchEndAF + */ + IMPORT_C TInt SetAutomaticSwitching( TBool aAuto ); + + /** + * Find out whether automatic switching is on or off. + * + * @since S60 3.2 + * @param aAuto On return, ETrue indicates that automatic switching is enabled. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetAutomaticSwitching( TBool& aAuto ); + + /** + * Cancel ongoing search for an Alternate Frequency (AF) with stronger signal. + * + * Client can issue this request to interrupt the search indicated with + * MRadioObserver::RadioEventRdsSearchBeginAF. + * + * @since S60 3.2 + */ + IMPORT_C void CancelAFSearch(); + + /** + * Turns on/off automatic switching of frequency based on Traffic Announcement. + * This will cause RDS device to search for frequencies broadcasting traffic announcement. + * Client will be notified of frequency change though the tuner event. + * It's up to the client to return to the previous frequency when the traffic announcement + * is finished. + * + * NOTE: This is only supported in dual tuner configuration since the secondary tuner + * needs to perform continuous scanning for frequency broadcasting traffic announcement, + * while the primary tuner is used for normal tuner activities. + * + * @since S60 3.2 + * @param aAuto ETrue indicates that automatic switching is on. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt SetAutomaticTrafficAnnouncement( TBool aAuto ); + + /** + * Find out whether automatic traffic announcement is enabled. + * + * @since S60 3.2 + * @param aAuto On return, ETrue indicates that automatic traffic announcement is on. + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetAutomaticTrafficAnnouncement( TBool& aAuto ); + + /** + * Asynchronous request to find a radio station with the specified Programme Type(PTY), + * starting from the currently tuned frequency and searching in the direction specified + * (i.e. up or down). User must be ready to receive callback method StationSeekByPTYComplete + * The station found is returned in the callback. + * + * @since S60 3.2 + * @param aPty The type of programme to search for. + * @param aSeekUp The direction to search in. Searches upwards if set to ETrue. + * @see MRadioObserver::StationSeekByPTYComplete + */ + IMPORT_C void StationSeekByPTY( TRsRdsProgrammeType aPty, TBool aSeekUp ); + + /** + * Asynchronous request to find a radio station with Traffic Announcement(TA), + * starting from the currently tuned frequency and searching in the direction specified + * (i.e. up or down). User must be ready to receive callback method StationSeekByTAComplete + * The station found is returned in the callback. + * + * @since S60 3.2 + * @param aSeekUp The direction to search in. Searches upwards if set to ETrue. + * @see MRadioObserver::StationSeekByTAComplete + */ + IMPORT_C void StationSeekByTA( TBool aSeekUp ); + + /** + * Asynchronous request to find a radio station with Traffic Programme(TP), + * starting from the currently tuned frequency and searching in the direction specified + * (i.e. up or down). User must be ready to receive callback method StationSeekByTPComplete + * The station found is returned in the callback. + * + * @since S60 3.2 + * @param aSeekUp The direction to search in. Searches upwards if set to ETrue. + * @see MRadioObserver::StationSeekByTPComplete + */ + IMPORT_C void StationSeekByTP( TBool aSeekUp ); + + /** + * Cancels an ongoing retune operation, as initiated by a call to StationSeekByPTY, + * StationSeekByTA, or StationSeekByTP. + * The usual callback will not occur if this has been called. + * + * @since S60 3.2 + */ + IMPORT_C void CancelRdsStationSeek(); + + /** + * Asynchronous request to find all frequencies sending the given Programme Type (PTY). + * User must be ready to receive callback method GetFreqByPTYComplete. + * + * NOTE: This is only supported in dual tuner configuration since the secondary tuner + * needs to perform continuous scanning for frequencies broadcasting given Programme Type + * while the primary tuner is used for normal tuner activities. + * Client should first check the tuner capabilities. Will return KErrNotSupported in + * callback method if this feature is not supported. + * + * @since S60 3.2 + * @param aPty The type of programme to search for + * @see MRadioObserver::GetFreqByPTYComplete + */ + IMPORT_C void GetFreqByPTY( TRsRdsProgrammeType aPty ); + + /** + * Cancels an ongoing request to find all frequencies sending a given Programme Type (PTY). + * The usual callback will not occur if this has been called. + * + * @since S60 3.2 + */ + IMPORT_C void CancelGetFreqByPTY(); + + /** + * Asynchronous request to find all frequencies sending Traffic Announcement (TA). User must + * be ready to receive callback method GetFreqByTAComplete. + * + * NOTE: This is only supported in dual tuner configuration since the secondary tuner + * needs to perform continuous scanning for frequencies broadcasting given Traffic Announcement + * while the primary tuner is used for normal tuner activities. + * Client should first check the tuner capabilities. Will return KErrNotSupported in + * callback method if this feature is not supported. + * + * @since S60 3.2 + * @see MRadioObserver::GetFreqByTAComplete + */ + IMPORT_C void GetFreqByTA(); + + /** + * Cancels an ongoing request to find all frequencies sending Traffic Announcement. + * The usual callback will not occur if this has been called. + * + * @since S60 3.2 + */ + IMPORT_C void CancelGetFreqByTA(); + + /** + * Asynchronous request to find all Programme Service names (PS) sending the given Programme + * Type (PTY). User must be ready to receive callback method GetPSByPTYComplete. + * + * NOTE: This is only supported in dual tuner configuration since the secondary tuner + * needs to perform continuous scanning for frequencies broadcasting given Programme Type + * while the primary tuner is used for normal tuner activities. + * Client should first check the tuner capabilities. Will return KErrNotSupported in + * callback method if this feature is not supported. + * + * @since S60 3.2 + * @param aPty The type of programme to search for + * @see MRadioObserver::GetPSByPTYComplete + */ + IMPORT_C void GetPSByPTY( TRsRdsProgrammeType aPty ); + + /** + * Cancels an ongoing request to find all Programme Service names (PS) sending a given + * Programme Type (PTY). The usual callback will not occur if this has been called. + * + * @since S60 3.2 + */ + IMPORT_C void CancelGetPSByPTY(); + + /** + * Asynchronous request to find all Programme Service names (PS) sending Traffic Announcement (TA). + * User must be ready to receive callback method GetPSByTAComplete. + * + * NOTE: This is only supported in dual tuner configuration since the secondary tuner + * needs to perform continuous scanning for frequencies broadcasting given Traffic Announcement + * while the primary tuner is used for normal tuner activities. + * Client should first check the tuner capabilities. Will return KErrNotSupported in + * callback method if this feature is not supported. + * + * @since S60 3.2 + * @see MRadioObserver::GetPSByTAComplete + */ + IMPORT_C void GetPSByTA(); + + /** + * Cancels an ongoing request to find all Programme Service names (PS) sending Traffic Announcement. + * The usual callback will not occur if this has been called. + * + * @since S60 3.2 + */ + IMPORT_C void CancelGetPSByTA(); + + /** + * Get the current Programme Identification code. + * RDS data is received over the air and may not be available immediately following + * tune operation. If data is not available, this function will return KErrNotFound. + * If a value is returned, this is the last known value, which may not be up to date. + * To be notified of the most recent value, client should use NotifyRdsDataChange. + * + * @since S60 3.2 + * @param aPi On return contains Programme Identification code + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetProgrammeIdentification( TInt& aPi ); + + /** + * Get the current Programme Type. + * RDS data is received over the air and may not be available immediately following + * tune operation. If data is not available, this function will return KErrNotFound. + * If a value is returned, this is the last known value, which may not be up to date. + * To be notified of the most recent value, client should use NotifyRdsDataChange. + * + * @since S60 3.2 + * @param aPty On return contains Programme Type + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetProgrammeType( TRsRdsProgrammeType& aPty ); + + /** + * Get the current Programme Service name. + * RDS data is received over the air and may not be available immediately following + * tune operation. If data is not available, this function will return KErrNotFound. + * If a value is returned, this is the last known value, which may not be up to date. + * To be notified of the most recent value, client should use NotifyRdsDataChange. + * + * Programme Service name is fixed to 8 characters. + * + * @since S60 3.2 + * @param aPs On return contains Programme Service name + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetProgrammeService( TRsRdsPSName& aPs ); + + /** + * Get the current Radio Text. + * RDS data is received over the air and may not be available immediately following + * tune operation. If data is not available, this function will return KErrNotFound. + * If a value is returned, this is the last known value, which may not be up to date. + * To be notified of the most recent value, client should use NotifyRdsDataChange. + * + * The maximum possible length for radio text field is 64 characters. + * + * @since S60 3.2 + * @param aRt On return contains Radio Text + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetRadioText( TRsRdsRadioText& aRt ); + + /** + * Get the current Radio Text+. + * RDS data is received over the air and may not be available immediately following + * tune operation. If data is not available, this function will return KErrNotFound. + * If a value is returned, this is the last known value, which may not be up to date. + * To be notified of the most recent value, client should use NotifyRdsDataChange. + * + * The maximum possible length for radio text+ field is 64 characters. + * + * @since S60 3.2 + * @param aRtPlusClass Radio text plus class + * @param aRtPlusData On return contains Radio Text+ field + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetRadioTextPlus( TRsRdsRTplusClass aRtPlusClass, TRsRdsRadioText& aRtPlusData ); + + /** + * Get the current Clock Time and date. + * RDS data is received over the air and may not be available immediately following + * tune operation. If data is not available, this function will return KErrNotFound. + * If a value is returned, this is the last known value, which may not be up to date. + * To be notified of the most recent value, client should use NotifyRdsDataChange. + * + * @since S60 3.2 + * @param aCt On return contains current time and date + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetClockTime( TDateTime& aCt ); + + /** + * Get Traffic Announcement status at the current station. + * + * @since S60 3.2 + * @param aTaStatus On return, will be ETrue if current station has ongoing traffic announcement + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetTrafficAnnouncementStatus( TBool& aTaStatus ); + + /** + * Get Traffic Programme status at the current station. + * + * @since S60 3.2 + * @param aTpStatus On return, will be ETrue if current station supports traffic programme + * @return A standard system/RadioServer error code. + */ + IMPORT_C TInt GetTrafficProgrammeStatus( TBool& aTpStatus ); + +// from base class MCustomCommand + + /** + * From MCustomCommand + * Sends a synchronous custom command to the radio server. + * + * @since S60 3.0 + * @param aDestination The destination of the message, consisting of the uid of + * the interface of this message + * @param aFunction The function number to indicate which function is to be called + * on the interface defined in the aDestination parameter + * @param aDataTo1 The first chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aDataTo2 The second chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @return A standard system error code. + */ + IMPORT_C TInt CustomCommandSync( const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2 ); + + /** + * From MCustomCommand + * Sends a synchronous custom command to the radio server. + * + * @since S60 3.0 + * @param aDestination The destination of the message, consisting of the uid of + * the interface of this message + * @param aFunction The function number to indicate which function is to be called + * on the interface defined in the aDestination parameter + * @param aDataTo1 The first chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aDataTo2 The second chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aDataFrom The area of memory to which the controller framework + * will write any data to be passed back to the client. Can't be KNullDesC8. + * @return A standard system error code. + */ + IMPORT_C TInt CustomCommandSync( const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom ); + + /** + * From MCustomCommand + * Sends an asynchronous custom command to the radio server. + * + * @since S60 3.0 + * @param aDestination The destination of the message, consisting of the uid of + * the interface of this message + * @param aFunction The function number to indicate which function is to be called + * on the interface defined in the aDestination parameter + * @param aDataTo1 The first chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aDataTo2 The second chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aStatus The TRequestStatus of an active object. This will contain the + * result of the request on completion. The exact range of result values is + * dependent on the interface. + */ + IMPORT_C void CustomCommandAsync( const TMMFMessageDestinationPckg& aDestination, + TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus ); + + /** + * From MCustomCommand + * Sends an asynchronous custom command to the radio server. + * + * @since S60 3.0 + * @param aDestination The destination of the message, consisting of the uid of + * the interface of this message + * @param aFunction The function number to indicate which function is to be called + * on the interface defined in the aDestination parameter + * @param aDataTo1 The first chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aDataTo2 The second chunk of data to be copied to the controller + * framework. The exact contents of the data are dependent on the + * interface being called. Can be KNullDesC8. + * @param aDataFrom The area of memory to which the controller framework + * will write any data to be passed back to the client. Can't be KNullDesC8. + * @param aStatus The TRequestStatus of an active object. This will contain the + * result of the request on completion. The exact range of result values is + * dependent on the interface. + */ + IMPORT_C void CustomCommandAsync( const TMMFMessageDestinationPckg& aDestination, TInt aFunction, + const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus ); + +//********** Internal functions begin + + /** + * Used internally to cancel outstanding asynchronous requests. This is triggered by + * CRadioRequest. + * + * @since S60 3.0 + * @param aRequest The outstanding asynchronous request being cancelled + */ + void CancelRequest( TInt aRequest ); + +private: + + /** + * Creates request handlers for each asynchronous request. + */ + void StartRequestHandlersL( MRadioObserver& aObserver ); + + /** + * Creates event handlers for tuner and playback events from radio tuner. + */ + void StartEventHandlersL( MRadioObserver& aObserver ); + + /** + * Creates event handlers for RDS events from radio tuner. + */ + void StartRdsEventHandlersL( TUint32 aRdsFunctions ); + +private: // Data + + // Connection status + TBool iConnected; + // Requests that generates response to MRadioObserver + RPointerArray iRequests; + // Event handlers that generates response to MRadioEventObserver + RPointerArray iEventHandlers; + //Rds Event handlers + RPointerArray iRdsEventHandlers; + + // Destination information for standard radio interface messages + TMMFMessageDestinationPckg iDestinationPckg; + + // Radio observer + MRadioObserver* iObserver; + // Client type + TBool iPrimaryClient; + // RDS notify flag + TBool iRdsNotify; + + // RadioStubManager pointer points inside RadioStubManagerChunk + SRadioStubManager* iRadioStubManager; + + // RadioStubManagerChunk handle + RChunk iRadioStubManagerChunk; + + CRadioRequest* iExtraRequestForBugHunting; + + }; + +#endif // RADIOSESSION_H + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/radioutility/tsrc/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/radioutility/tsrc/bld.inf Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,23 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +PRJ_MMPFILES + +PRJ_TESTMMPFILES +#include "../presetutility/group/bld.inf" +#include "../radioserver/Session/stub/group/bld.inf" +#include "../radio_utility/stub/group/bld.inf" diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/bwins/systemtoneservice.def --- a/mmserv/sts/bwins/systemtoneservice.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/bwins/systemtoneservice.def Wed Aug 18 10:17:22 2010 +0300 @@ -4,4 +4,5 @@ ?PlayAlarm@CSystemToneService@@QAEXW4TAlarmType@1@AAIAAVMStsPlayAlarmObserver@@@Z @ 3 NONAME ; void CSystemToneService::PlayAlarm(enum CSystemToneService::TAlarmType, unsigned int &, class MStsPlayAlarmObserver &) ?Create@CSystemToneService@@SAPAV1@XZ @ 4 NONAME ; class CSystemToneService * CSystemToneService::Create(void) ?PlayTone@CSystemToneService@@QAEXW4TToneType@1@@Z @ 5 NONAME ; void CSystemToneService::PlayTone(enum CSystemToneService::TToneType) + ?PlayAlarm@CSystemToneService@@QAEXW4TToneType@1@AAIAAVMStsPlayAlarmObserver@@@Z @ 6 NONAME ; void CSystemToneService::PlayAlarm(enum CSystemToneService::TToneType, unsigned int &, class MStsPlayAlarmObserver &) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/eabi/systemtoneservice.def --- a/mmserv/sts/eabi/systemtoneservice.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/eabi/systemtoneservice.def Wed Aug 18 10:17:22 2010 +0300 @@ -4,4 +4,5 @@ _ZN18CSystemToneService8PlayToneENS_9TToneTypeE @ 3 NONAME _ZN18CSystemToneService9PlayAlarmENS_10TAlarmTypeERjR21MStsPlayAlarmObserver @ 4 NONAME _ZN18CSystemToneService9StopAlarmEj @ 5 NONAME + _ZN18CSystemToneService9PlayAlarmENS_9TToneTypeERjR21MStsPlayAlarmObserver @ 6 NONAME diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/rom/mmmwsystemtoneservice.iby --- a/mmserv/sts/rom/mmmwsystemtoneservice.iby Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/rom/mmmwsystemtoneservice.iby Wed Aug 18 10:17:22 2010 +0300 @@ -14,10 +14,6 @@ * Description: STS IBY file * */ -/* - * sts.iby - * - */ #ifndef MMMWSYSTEMTONESERVICE_IBY #define MMMWSYSTEMTONESERVICE_IBY @@ -32,4 +28,4 @@ #endif //MMMWSYSTEMTONESERVICE_IBY -//End of File \ No newline at end of file +//End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/src/systemtoneservice.cpp --- a/mmserv/sts/src/systemtoneservice.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/src/systemtoneservice.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -68,3 +68,10 @@ { iImplementation.StopAlarm(aAlarmContext); } + +EXPORT_C void CSystemToneService::PlayAlarm(TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver) + { + iImplementation.PlayAlarm(aTone, aAlarmContext, aObserver); + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/sts/inc/sts.h --- a/mmserv/sts/sts/inc/sts.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/sts/inc/sts.h Wed Aug 18 10:17:22 2010 +0300 @@ -22,11 +22,16 @@ #ifndef STS_H_ #define STS_H_ + #include #include #include "stsplayer.h" +class MProEngEngine; +class MProEngProfile; + + class CSts : private MStsPlayerObserver { public: @@ -36,11 +41,15 @@ void PlayAlarm(CSystemToneService::TAlarmType aAlarm, unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); void StopAlarm(unsigned int aAlarmContext); + void PlayToneStop(CSystemToneService::TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); protected: CSts(); virtual ~CSts(); bool Init(); + void LoadActiveProfileSettingsL(); + private: void CleanUpPlayers(); @@ -53,6 +62,16 @@ class CPlayerNode; typedef std::map TPlayerMap; TPlayerMap iPlayerMap; + + TPtrC iFileName; + MProEngEngine* iEngine; + MProEngProfile* iProfile; + + TInt iVolume; + TBool iWarningToneEnabled; + TUint iAudioPreference; + TUint iAudioPriority; + }; #endif //STS_H diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/sts/inc/stsplayer.h --- a/mmserv/sts/sts/inc/stsplayer.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/sts/inc/stsplayer.h Wed Aug 18 10:17:22 2010 +0300 @@ -18,11 +18,10 @@ #ifndef STSPLAYER_H_ #define STSPLAYER_H_ -#include -#include -class MProEngEngine; -class MProEngProfile; +#include +#include + class MStsPlayerObserver { @@ -35,26 +34,28 @@ public: static CStsPlayer* CreateTonePlayer(MStsPlayerObserver& aObserver, - CSystemToneService::TToneType aTone, unsigned int aContext); + CSystemToneService::TToneType aTone, unsigned int aContext, + const TDesC& aFileName, TInt aVolume, + TUint aAudioPreference, TUint aAudioPriority); static CStsPlayer* CreateAlarmPlayer(MStsPlayerObserver& aObserver, - CSystemToneService::TAlarmType aAlarm, unsigned int aContext); + CSystemToneService::TAlarmType aAlarm, unsigned int aContext, + const TDesC& aFileName, TInt aVolume, + TUint aAudioPreference, TUint aAudioPriority); virtual ~CStsPlayer(); void Play(); void Stop(); - - -protected: + - void LoadActiveProfileSettingsL(); - void SetToneSettings(CSystemToneService::TToneType aTone); - void SetAlarmSettings(CSystemToneService::TAlarmType aAlarm); +protected: + CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName, - int aRepeatNumberOfTimes, unsigned int aContext); + int aRepeatNumberOfTimes, unsigned int aContext, + TInt aVolume, TUint aAudioPreference, TUint aAudioPriority); bool Init(); private: void MapcInitComplete(TInt aError, - const TTimeIntervalMicroSeconds& aDuration); + const TTimeIntervalMicroSeconds& aDuration); void MapcPlayComplete(TInt aError); MStsPlayerObserver& iObserver; @@ -63,14 +64,11 @@ int iRepeatNumberOfTimes; unsigned int iContext; - MProEngEngine* iEngine; - MProEngProfile* iProfile; - - TInt iVolume; + TInt iVolume; TBool iWarningToneEnabled; TUint iAudioPreference; TUint iAudioPriority; - + }; #endif // STSPLAYER_H_ diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/sts/src/sts.cpp --- a/mmserv/sts/sts/src/sts.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/sts/src/sts.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -17,6 +17,15 @@ */ #include "sts.h" +#include +#include +#include +#include +#include +#include + +_LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac"); + class CSts::CPlayerNode { @@ -66,15 +75,21 @@ /*static*/CSts* CSts::Create() { CSts* self = new CSts(); + if (self != 0) { bool successful = self->Init(); - if (!successful) - { + + if(successful) + { + TRAPD( err ,self->LoadActiveProfileSettingsL()); + if( (err != KErrNone ) && (!successful)) + { delete self; self = 0; - } + } } + } return self; } @@ -90,18 +105,112 @@ bool CSts::Init() { + iEngine = ProEngFactory::NewEngineL(); return true; } CSts::~CSts() { CleanUpPlayers(); + if (iProfile) + { + iProfile->Release(); + } + if (iEngine) + { + iEngine->Release(); + } + } + +void CSts::LoadActiveProfileSettingsL() + { + if(!iEngine) + { + iEngine = ProEngFactory::NewEngineL(); + } + + if (iEngine) + iProfile = iEngine->ActiveProfileL(); + + if (iProfile) + { + MProEngToneSettings& settings = iProfile->ToneSettings(); + iWarningToneEnabled = settings.WarningAndGameTones(); + } + + } + void CSts::PlayTone(CSystemToneService::TToneType aTone) { + if(iProfile) + + { + MProEngTones& tones = iProfile->ProfileTones(); + + switch (aTone) + { + case CSystemToneService::EEmailAlert: + { + iFileName.Set(tones.EmailAlertTone()); + iAudioPreference = KAudioPrefNewSMS; + iAudioPriority = KAudioPriorityRecvMsg ; + break; + } + case CSystemToneService::ESmsAlert: + { + iFileName.Set(tones.MessageAlertTone()); + iAudioPreference = KAudioPrefNewSMS; + iAudioPriority = KAudioPriorityRecvMsg; + break; + } + case CSystemToneService::EMmsAlert: + { + iFileName.Set(tones.MessageAlertTone()); + iAudioPreference = KAudioPrefNewSMS; + iAudioPriority = KAudioPriorityRecvMsg; + break; + } + case CSystemToneService::EChatAlert: + { + iFileName.Set(tones.MessageAlertTone()); + iAudioPreference = KAudioPrefNewSMS ; + iAudioPriority = KAudioPriorityRecvMsg; + break; + } + case CSystemToneService::EWarningBeep: + { + iAudioPreference = KAudioPrefWarning; + iAudioPriority = KAudioPriorityWarningTone ; + if (iWarningToneEnabled) + iFileName.Set(KDefaultFile); + else + iVolume = 0; + + break; + } + default: + { + iFileName.Set(KDefaultFile); + iAudioPreference = KAudioPrefDefaultTone; + iAudioPriority = KAudioPriorityWarningTone ; + break; + } + } + } + + else + { + iFileName.Set(KDefaultFile); + iAudioPreference = KAudioPrefDefaultTone; + iAudioPriority = KAudioPriorityWarningTone ; + } + + CStsPlayer* player = CStsPlayer::CreateTonePlayer(*this, aTone, - iNextContext); + iNextContext, iFileName, iVolume, + iAudioPreference, iAudioPriority); if (player != 0) { iPlayerMap[iNextContext] = new CPlayerNode(player); @@ -119,8 +228,55 @@ void CSts::PlayAlarm(CSystemToneService::TAlarmType aAlarm, unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver) { + + if(iProfile) + + { + MProEngTones& tones = iProfile->ProfileTones(); + + switch (aAlarm) + { + case CSystemToneService::EIncomingCall: + { + iFileName.Set(tones.RingingTone1()); + iAudioPreference = KAudioPrefIncomingCall ; + iAudioPriority = KAudioPriorityRingingTone ; + break; + } + case CSystemToneService::EIncomingCallLine2: + { + iFileName.Set(tones.RingingTone2()); + iAudioPreference = KAudioPrefIncomingCall; + iAudioPriority = KAudioPriorityRingingTone ; + break; + } + case CSystemToneService::EIncomingDataCall: + { + iFileName.Set(tones.VideoCallRingingTone()); + iAudioPreference = KAudioPrefIncomingDataCall; + iAudioPriority = KAudioPriorityRealOnePlayer; + break; + } + default: + { + iFileName.Set(KDefaultFile); + iAudioPreference = KAudioPrefAlarmClock ; + iAudioPriority = KAudioPriorityAlarm; + break; + } + } + } + else + { + iFileName.Set(KDefaultFile); + iAudioPreference = KAudioPrefDefaultTone; + iAudioPriority = KAudioPriorityWarningTone ; + + } + CStsPlayer* player = CStsPlayer::CreateAlarmPlayer(*this, aAlarm, - iNextContext); + iNextContext, iFileName, iVolume, + iAudioPreference, iAudioPriority); if (player != 0) { iPlayerMap[iNextContext] = new CPlayerNode(player, aObserver); @@ -152,6 +308,95 @@ } } + +void CSts::PlayToneStop(CSystemToneService::TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver) + { + + if(iProfile) + + { + MProEngTones& tones = iProfile->ProfileTones(); + + switch (aTone) + { + case CSystemToneService::EEmailAlert: + { + iFileName.Set(tones.EmailAlertTone()); + iAudioPreference = KAudioPrefNewSMS; + iAudioPriority = KAudioPriorityRecvMsg ; + break; + } + case CSystemToneService::ESmsAlert: + { + iFileName.Set(tones.MessageAlertTone()); + iAudioPreference = KAudioPrefNewSMS; + iAudioPriority = KAudioPriorityRecvMsg; + break; + } + case CSystemToneService::EMmsAlert: + { + iFileName.Set(tones.MessageAlertTone()); + iAudioPreference = KAudioPrefNewSMS; + iAudioPriority = KAudioPriorityRecvMsg; + break; + } + case CSystemToneService::EChatAlert: + { + iFileName.Set(tones.MessageAlertTone()); + iAudioPreference = KAudioPrefNewSMS ; + iAudioPriority = KAudioPriorityRecvMsg; + break; + } + case CSystemToneService::EWarningBeep: + { + iAudioPreference = KAudioPrefWarning; + iAudioPriority = KAudioPriorityWarningTone ; + if (iWarningToneEnabled) + iFileName.Set(KDefaultFile); + else + iVolume = 0; + + break; + } + default: + { + iFileName.Set(KDefaultFile); + iAudioPreference = KAudioPrefDefaultTone; + iAudioPriority = KAudioPriorityWarningTone ; + break; + } + } + } + + else + { + iFileName.Set(KDefaultFile); + iAudioPreference = KAudioPrefDefaultTone; + iAudioPriority = KAudioPriorityWarningTone ; + } + + CStsPlayer* player = CStsPlayer::CreateTonePlayer(*this, aTone, + iNextContext, iFileName, iVolume, + iAudioPreference, iAudioPriority); + if (player != 0) + { + iPlayerMap[iNextContext] = new CPlayerNode(player, aObserver); + aAlarmContext = iNextContext; + iNextContext++; + if (iNextContext == 0) + iNextContext++; + player->Play(); + } + else + { + //TODO: Add trace here + aAlarmContext = 0; + } + } + + + void CSts::CleanUpPlayers() { while (!iPlayerMap.empty()) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/sts/src/stsplayer.cpp --- a/mmserv/sts/sts/src/stsplayer.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/sts/src/stsplayer.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -17,40 +17,20 @@ */ #include "stsplayer.h" #include -#include -#include -#include -#include -#include #include -_LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac"); - - - - /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer( - MStsPlayerObserver& aObserver, CSystemToneService::TToneType aTone, - unsigned int aContext) + MStsPlayerObserver& aObserver,CSystemToneService::TToneType aTone, + unsigned int aContext, const TDesC& aFileName, TInt aVolume, + TUint aAudioPreference, TUint aAudioPriority) { CStsPlayer* self = 0; - - self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext); - if( self != 0) - { - TRAPD(err,self->LoadActiveProfileSettingsL()); - - if( err == KErrNone ) - self->SetToneSettings(aTone); - else - { - delete self; - self = 0; - } - + self = new CStsPlayer(aObserver, aFileName, 0, aContext, aVolume, aAudioPreference, aAudioPriority); + + if (self != 0) { bool successful = self->Init(); @@ -60,30 +40,21 @@ self = 0; } } - } + return self; } /*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer( MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm, - unsigned int aContext) + unsigned int aContext, const TDesC& aFileName, TInt aVolume, + TUint aAudioPreference, TUint aAudioPriority) { CStsPlayer* self = 0; - - self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext); + - if( self != 0) - { - TRAPD(err,self->LoadActiveProfileSettingsL()); - - if( err == KErrNone ) - self->SetAlarmSettings(aAlarm); - else - { - delete self; - self = 0; - } - + self = new CStsPlayer(aObserver, aFileName, 10, aContext, aVolume, aAudioPreference, aAudioPriority); + + if (self != 0) { bool successful = self->Init(); @@ -93,132 +64,21 @@ self = 0; } } - } + return self; } -void CStsPlayer::LoadActiveProfileSettingsL() - { - if(!iEngine) - { - iEngine = ProEngFactory::NewEngineL(); - } - - if (iEngine) - iProfile = iEngine->ActiveProfileL(); - - if (iProfile) - { - MProEngToneSettings& settings = iProfile->ToneSettings(); - iWarningToneEnabled = settings.WarningAndGameTones(); - } - - - - - } - -void CStsPlayer::SetToneSettings(CSystemToneService::TToneType aTone) - { - - if(iProfile) - - { - MProEngTones& tones = iProfile->ProfileTones(); - - switch (aTone) - { - case CSystemToneService::EEmailAlert: - iFileName.Set(tones.EmailAlertTone()); - iAudioPreference = KAudioPrefNewSMS; - iAudioPriority = KAudioPriorityRecvMsg ; - break; - case CSystemToneService::ESmsAlert: - iFileName.Set(tones.MessageAlertTone()); - iAudioPreference = KAudioPrefNewSMS; - iAudioPriority = KAudioPriorityRecvMsg; - break; - case CSystemToneService::EMmsAlert: - iFileName.Set(tones.MessageAlertTone()); - iAudioPreference = KAudioPrefNewSMS; - iAudioPriority = KAudioPriorityRecvMsg; - break; - case CSystemToneService::EChatAlert: - iFileName.Set(tones.MessageAlertTone()); - iAudioPreference = KAudioPrefNewSMS ; - iAudioPriority = KAudioPriorityRecvMsg; - break; - case CSystemToneService::EWarningBeep: - iAudioPreference = KAudioPrefWarning; - iAudioPriority = KAudioPriorityWarningTone ; - if (iWarningToneEnabled) - iFileName.Set(KDefaultFile); - else - iVolume = 0; - - break; - default: - iAudioPreference = KAudioPrefDefaultTone; - iAudioPriority = KAudioPriorityWarningTone ; - break; - } - } - - else - { - iAudioPreference = KAudioPrefDefaultTone; - iAudioPriority = KAudioPriorityWarningTone ; - } - - } - - -void CStsPlayer::SetAlarmSettings(CSystemToneService::TAlarmType aAlarm) - { - if(iProfile) - - { - MProEngTones& tones = iProfile->ProfileTones(); - - switch (aAlarm) - { - case CSystemToneService::EIncomingCall: - iFileName.Set(tones.RingingTone1()); - iAudioPreference = KAudioPrefIncomingCall ; - iAudioPriority = KAudioPriorityRingingTone ; - break; - case CSystemToneService::EIncomingCallLine2: - iFileName.Set(tones.RingingTone2()); - iAudioPreference = KAudioPrefIncomingCall; - iAudioPriority = KAudioPriorityRingingTone ; - break; - case CSystemToneService::EIncomingDataCall: - iFileName.Set(tones.VideoCallRingingTone()); - iAudioPreference = KAudioPrefIncomingDataCall; - iAudioPriority = KAudioPriorityRealOnePlayer; - break; - default: - iAudioPreference = KAudioPrefAlarmClock ; - iAudioPriority = KAudioPriorityAlarm; - break; - } - } - else - { - iAudioPreference = KAudioPrefDefaultTone; - iAudioPriority = KAudioPriorityWarningTone ; - } - } CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName, - int aRepeatNumberOfTimes, unsigned int aContext) : + int aRepeatNumberOfTimes, unsigned int aContext, TInt aVolume, TUint aAudioPreference, TUint aAudioPriority ) : iObserver(aObserver), iPlayer(0), iFileName(aFileName), - iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext) + iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext), iVolume(aVolume), + iAudioPreference(aAudioPreference), iAudioPriority(aAudioPriority) { - iEngine = ProEngFactory::NewEngineL(); + } bool CStsPlayer::Init() @@ -233,15 +93,7 @@ CStsPlayer::~CStsPlayer() { - if (iProfile) - { - iProfile->Release(); - } - if (iEngine) - { - iEngine->Release(); - } - + delete iPlayer; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsproxy/inc/stsimplementation.h --- a/mmserv/sts/stsproxy/inc/stsimplementation.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsproxy/inc/stsimplementation.h Wed Aug 18 10:17:22 2010 +0300 @@ -34,6 +34,9 @@ PlayAlarm(CSystemToneService::TAlarmType aAlarm, unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); void StopAlarm(unsigned int aAlarmContext); + void + PlayAlarm(CSystemToneService::TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); private: CStsImplementation(); bool Init(); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsproxy/src/rstssession.cpp --- a/mmserv/sts/stsproxy/src/rstssession.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsproxy/src/rstssession.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -295,6 +295,26 @@ } } +void RStsSession::SendPlayToneForStop(CSystemToneService::TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver) + { + TPckg alarmContextPckg(aAlarmContext); + TInt err = SendReceive(StsMsg_PlayTone, TIpcArgs(aTone, + &alarmContextPckg, &aObserver)); + if (err != KErrNone) + { + //TODO: Log a message + aObserver.PlayAlarmComplete(aAlarmContext); + } + else + { + iObserverMutex.Wait(); + iObserverMap[aAlarmContext] = &aObserver; + iObserverMutex.Signal(); + } + } + + void RStsSession::CleanUpObservers() { iObserverMutex.Wait(); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsproxy/src/rstssession.h --- a/mmserv/sts/stsproxy/src/rstssession.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsproxy/src/rstssession.h Wed Aug 18 10:17:22 2010 +0300 @@ -39,6 +39,9 @@ unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); void SendStopAlarm(unsigned int aAlarmContext); + + void SendPlayToneForStop(CSystemToneService::TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver); private: diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsproxy/src/stsimplementation.cpp --- a/mmserv/sts/stsproxy/src/stsimplementation.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsproxy/src/stsimplementation.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -78,3 +78,9 @@ //TODO: Add logging and error checking iSession->SendStopAlarm(aAlarmContext); } + +void CStsImplementation::PlayAlarm(CSystemToneService::TToneType aTone, + unsigned int& aAlarmContext, MStsPlayAlarmObserver& aObserver) + { + iSession->SendPlayToneForStop(aTone, aAlarmContext, aObserver); + } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsserver/group/stsserver.mmp --- a/mmserv/sts/stsserver/group/stsserver.mmp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsserver/group/stsserver.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -49,4 +49,4 @@ LIBRARY libc.lib LIBRARY libstdcpp.lib LIBRARY mediaclientaudio.lib -LIBRARY profileengine.lib \ No newline at end of file +LIBRARY profileengine.lib diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsserver/inc/stsclientservercommon.h --- a/mmserv/sts/stsserver/inc/stsclientservercommon.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsserver/inc/stsclientservercommon.h Wed Aug 18 10:17:22 2010 +0300 @@ -38,6 +38,7 @@ StsMsg_StopAlarm, StsMsg_PlayTone, StsMsg_PlayAlarm, + StsMsg_PlayToneStop, StsMsg_ENDMARKER }; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsserver/src/stsserversession.cpp --- a/mmserv/sts/stsserver/src/stsserversession.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsserver/src/stsserversession.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -114,6 +114,27 @@ iSts.StopAlarm(context); } +void CStsServerSession::DoPlayToneStopL(const RMessage2& aMessage) + { + CSystemToneService::TToneType tone = + (CSystemToneService::TToneType) aMessage.Int0(); + unsigned int context = 0; + //SR + //iSts.PlayTone(tone, context, *this); + iSts.PlayToneStop(tone, context, *this); + iObserverMap[context] = (MStsPlayAlarmObserver*) aMessage.Ptr2(); + TPckg contextPckg(context); + TRAPD(err,aMessage.WriteL(1,contextPckg)); + aMessage.Complete(err); + // if the context is 0 there was a problem with the PlayAlarm, + // so trigger the PlayAlarmComplete callback. + if (context == 0) + { + PlayAlarmComplete(0); + } + } + + void CStsServerSession::CleanUpObservers() { while (!iObserverMap.empty()) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/sts/stsserver/src/stsserversession.h --- a/mmserv/sts/stsserver/src/stsserversession.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/sts/stsserver/src/stsserversession.h Wed Aug 18 10:17:22 2010 +0300 @@ -47,6 +47,7 @@ void DoPlayToneL(const RMessage2& aMessage); void DoPlayAlarmL(const RMessage2& aMessage); void DoStopAlarmL(const RMessage2& aMessage); + void DoPlayToneStopL(const RMessage2& aMessage); void CleanUpObservers(); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmscallclisrv.h --- a/mmserv/tms/inc/tmscallclisrv.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmscallclisrv.h Wed Aug 18 10:17:22 2010 +0300 @@ -53,6 +53,7 @@ TMS_ROUTING_OUTPUT_GET, TMS_ROUTING_PREVIOUSOUTPUT_GET, TMS_ROUTING_AVAILABLE_OUTPUT_GET, + TMS_GET_ACTIVE_CALL_PARAMS, //For TMS Format TMS_FORMAT_SETCODECMODE, @@ -69,10 +70,7 @@ TMS_FORMAT_SETCNG, TMS_FORMAT_GETCNG, TMS_FORMAT_SETPLC, - TMS_FORMAT_GETPLC, - TMS_DTMF_START, - TMS_DTMF_STOP, - TMS_DTMF_CONTINUE + TMS_FORMAT_GETPLC }; struct TMSCliSrvStreamCreateDataStruct @@ -124,6 +122,15 @@ typedef TPckgBuf TMSCliSrvDataXferChunkHndlDataStructBufPckg; +struct TmsCallMsgBuf + { + gint iRequest; + gint iStatus; + gboolean iBool; + gint iInt; + }; +typedef TPckgBuf TmsCallMsgBufPckg; + } //namespace TMS #endif // TMSCALLCLISRV_H diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsclientserver.h --- a/mmserv/tms/inc/tmsclientserver.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsclientserver.h Wed Aug 18 10:17:22 2010 +0300 @@ -58,8 +58,7 @@ ETMSRingTonePause, ETMSRingToneStop, ETMSRingToneMute, - ETMSStartDTMFNotifier, - ETMSCancelDTMFNotifier, + ETMSInitDTMF, ETMSStartDTMF, ETMSStopDTMF, ETMSContinueDTMF, @@ -82,7 +81,8 @@ EGlobalEffectsPsVolume = 10, EGlobalEffectsPsGain, ERoutingPs, - EDtmfPs + EDtmfPs, + ESyncVolume }; // TMSServer message queue notifier type keys diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsdtmfbody.h --- a/mmserv/tms/inc/tmsdtmfbody.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsdtmfbody.h Wed Aug 18 10:17:22 2010 +0300 @@ -42,3 +42,4 @@ } //namespace TMS #endif //TMS_GLOBAL_ROUTING_BODY_H + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsdtmfimpl.h --- a/mmserv/tms/inc/tmsdtmfimpl.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsdtmfimpl.h Wed Aug 18 10:17:22 2010 +0300 @@ -32,14 +32,11 @@ IMPORT_C static gint Delete(TMSDTMF*& dtmf); private: - TMSDTMFImpl(TMSStreamType streamtype); - gint PostConstruct(); - gint SetParent(TMSDTMF*& parent); - -private: - TMSStreamType iStreamType; + TMSDTMFImpl(); + gint PostConstruct(TMSStreamType streamtype); }; } //namespace TMS #endif //TMS_DTMF_IMPL_H + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsproxy.h --- a/mmserv/tms/inc/tmsproxy.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsproxy.h Wed Aug 18 10:17:22 2010 +0300 @@ -93,6 +93,7 @@ IMPORT_C gint MuteRT(); // TMSDTMF + IMPORT_C gint InitDTMFPlayer(TMSStreamType streamtype); IMPORT_C gint StartDTMF(TMSStreamType streamtype, GString* tone); IMPORT_C gint StopDTMF(TMSStreamType streamtype); IMPORT_C gint ContinueDTMFStringSending(TBool continuesending); @@ -102,8 +103,6 @@ IMPORT_C gint StopInbandTone(); // Global notifiers - IMPORT_C gint StartDTMFNotifier(); - IMPORT_C gint CancelDTMFNotifier(); IMPORT_C gint StartGlobalEffectNotifier(); IMPORT_C gint CancelGlobalEffectNotifier(); IMPORT_C gint StartRoutingNotifier(); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsstreambody.h --- a/mmserv/tms/inc/tmsstreambody.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsstreambody.h Wed Aug 18 10:17:22 2010 +0300 @@ -55,10 +55,9 @@ virtual gint Start(gint retrytime) = 0; virtual gint Stop() = 0; virtual void Deinit() = 0; - -private: }; } //namespace TMS #endif //TMS_STREAM_BODY_H + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsstreamimpl.h --- a/mmserv/tms/inc/tmsstreamimpl.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsstreamimpl.h Wed Aug 18 10:17:22 2010 +0300 @@ -45,4 +45,3 @@ #endif // TMS_STREAM_IMPL_H -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/inc/tmsutility.h --- a/mmserv/tms/inc/tmsutility.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/inc/tmsutility.h Wed Aug 18 10:17:22 2010 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -11,7 +11,7 @@ * * Contributors: * - * Description: Telephony Multimedia Service + * Description: Tracing and convertion utility. * */ @@ -60,6 +60,7 @@ #define RET_REASON_IF_ERR(s) if(s!=0) return s #define TMSRESULT(result) TMSUtility::TMSResult(result) +#define SYMBIANRESULT(result) TMSUtility::SymbianResult(result) #define TOTMSOUTPUT(output) TMSUtility::ToTMSOutput(output) #define TOTAROUTPUT(output) TMSUtility::ToTAROutput(output) #define TOFOURCC(format) TMSUtility::ToFourCC(format) @@ -73,6 +74,7 @@ { public: IMPORT_C static gint TMSResult(const gint error); + IMPORT_C static TInt SymbianResult(const gint error); IMPORT_C static gint EtelToTMSResult(const gint error); IMPORT_C static TMSAudioOutput ToTMSOutput( CTelephonyAudioRouting::TAudioOutput taroutput); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/rom/tms.iby --- a/mmserv/tms/rom/tms.iby Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/rom/tms.iby Wed Aug 18 10:17:22 2010 +0300 @@ -1,28 +1,26 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Telephony Multimedia Service -* -*/ -/* - * tms.iby + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service * */ -#ifndef __TMS_IBY__ -#define __TMS_IBY__ +#ifndef TMS_IBY +#define TMS_IBY +#include #include + #ifdef FF_TMS file=ABI_DIR/BUILD_DIR/tmsapi.dll SHARED_LIB_DIR/tmsapi.dll @@ -39,6 +37,6 @@ #endif //FF_TMS -#endif //__TMS_IBY__ +#endif //TMS_IBY //End of File \ No newline at end of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/eabi/tmscallserver.def --- a/mmserv/tms/tmscallserver/eabi/tmscallserver.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/eabi/tmscallserver.def Wed Aug 18 10:17:22 2010 +0300 @@ -1,33 +1,25 @@ EXPORTS _ZN3TMS13TMSCallServer11StartThreadEPv @ 1 NONAME - _ZTIN3TMS11TMSCallAdptE @ 2 NONAME - _ZTIN3TMS11TMSIPUplinkE @ 3 NONAME - _ZTIN3TMS13TMSCallCSAdptE @ 4 NONAME - _ZTIN3TMS13TMSCallIPAdptE @ 5 NONAME - _ZTIN3TMS13TMSCallServerE @ 6 NONAME - _ZTIN3TMS13TMSIPDownlinkE @ 7 NONAME - _ZTIN3TMS14TMSCallSessionE @ 8 NONAME - _ZTIN3TMS14TMSTarSettingsE @ 9 NONAME - _ZTIN3TMS15TMSDTMFProviderE @ 10 NONAME - _ZTIN3TMS15TMSDtmfNotifierE @ 11 NONAME - _ZTIN3TMS17TMSCallDelayTimerE @ 12 NONAME - _ZTIN3TMS18TMSEtelDtmfMonitorE @ 13 NONAME - _ZTIN3TMS19TMSIPCallStreamBaseE @ 14 NONAME - _ZTIN3TMS22TMSAudioDtmfTonePlayerE @ 15 NONAME - _ZTIN3TMS22TMSEtelDtmfStopMonitorE @ 16 NONAME - _ZTVN3TMS11TMSCallAdptE @ 17 NONAME - _ZTVN3TMS11TMSIPUplinkE @ 18 NONAME - _ZTVN3TMS13TMSCallCSAdptE @ 19 NONAME - _ZTVN3TMS13TMSCallIPAdptE @ 20 NONAME - _ZTVN3TMS13TMSCallServerE @ 21 NONAME - _ZTVN3TMS13TMSIPDownlinkE @ 22 NONAME - _ZTVN3TMS14TMSCallSessionE @ 23 NONAME - _ZTVN3TMS14TMSTarSettingsE @ 24 NONAME - _ZTVN3TMS15TMSDTMFProviderE @ 25 NONAME - _ZTVN3TMS15TMSDtmfNotifierE @ 26 NONAME - _ZTVN3TMS17TMSCallDelayTimerE @ 27 NONAME - _ZTVN3TMS18TMSEtelDtmfMonitorE @ 28 NONAME - _ZTVN3TMS19TMSIPCallStreamBaseE @ 29 NONAME - _ZTVN3TMS22TMSAudioDtmfTonePlayerE @ 30 NONAME - _ZTVN3TMS22TMSEtelDtmfStopMonitorE @ 31 NONAME + _ZTIN3TMS10TMSSyncVolE @ 2 NONAME + _ZTIN3TMS11TMSCallAdptE @ 3 NONAME + _ZTIN3TMS11TMSIPUplinkE @ 4 NONAME + _ZTIN3TMS13TMSCallCSAdptE @ 5 NONAME + _ZTIN3TMS13TMSCallIPAdptE @ 6 NONAME + _ZTIN3TMS13TMSCallServerE @ 7 NONAME + _ZTIN3TMS13TMSIPDownlinkE @ 8 NONAME + _ZTIN3TMS14TMSCallSessionE @ 9 NONAME + _ZTIN3TMS14TMSTarSettingsE @ 10 NONAME + _ZTIN3TMS17TMSCallDelayTimerE @ 11 NONAME + _ZTIN3TMS19TMSIPCallStreamBaseE @ 12 NONAME + _ZTVN3TMS10TMSSyncVolE @ 13 NONAME + _ZTVN3TMS11TMSCallAdptE @ 14 NONAME + _ZTVN3TMS11TMSIPUplinkE @ 15 NONAME + _ZTVN3TMS13TMSCallCSAdptE @ 16 NONAME + _ZTVN3TMS13TMSCallIPAdptE @ 17 NONAME + _ZTVN3TMS13TMSCallServerE @ 18 NONAME + _ZTVN3TMS13TMSIPDownlinkE @ 19 NONAME + _ZTVN3TMS14TMSCallSessionE @ 20 NONAME + _ZTVN3TMS14TMSTarSettingsE @ 21 NONAME + _ZTVN3TMS17TMSCallDelayTimerE @ 22 NONAME + _ZTVN3TMS19TMSIPCallStreamBaseE @ 23 NONAME diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/group/tmscallserver.mmp --- a/mmserv/tms/tmscallserver/group/tmscallserver.mmp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/group/tmscallserver.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -52,11 +52,7 @@ SOURCE tmscsdownlink.cpp SOURCE tmscsuplink.cpp SOURCE tmstarsettings.cpp -SOURCE tmsdtmftoneplayer.cpp -SOURCE tmsdtmfprovider.cpp -SOURCE tmseteldtmfmonitor.cpp -SOURCE tmseteldtmfstopmonitor.cpp -SOURCE tmsdtmfnotifier.cpp +SOURCE tmsyncvol.cpp USERINCLUDE ../inc USERINCLUDE ../../inc @@ -99,10 +95,6 @@ LIBRARY profileengine.lib LIBRARY telephonyaudiorouting.lib LIBRARY tmsutility.lib -// Libraries for ETel -LIBRARY etelmm.lib -LIBRARY etel.lib -LIBRARY customapi.lib DEFFILE tmscallserver.def NOSTRICTDEF diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmscalladpt.h --- a/mmserv/tms/tmscallserver/inc/tmscalladpt.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/inc/tmscalladpt.h Wed Aug 18 10:17:22 2010 +0300 @@ -26,6 +26,14 @@ // TMSCallAdpt class class TMSCallAdpt { +protected: + enum TMSStreamState + { + EIdle = 0, + EInitialized, + EActivated + }; + public: static gint CreateCallL(gint callType, TMSCallAdpt*& callAdpt); virtual ~TMSCallAdpt(); @@ -93,10 +101,8 @@ virtual gint GetPreviousOutput(TMSAudioOutput& output) = 0; virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf) = 0; - // From TMSDTMF - virtual gint StartDTMF(const TMSStreamType streamtype, TDes& dtmfstr) = 0; - virtual gint StopDTMF(const TMSStreamType streamtype) = 0; - virtual gint ContinueDTMF(const gboolean sending) = 0; + void GetCallType(TMSCallType& callType); + gboolean IsUplActivated(); protected: TMSCallAdpt(); @@ -105,10 +111,12 @@ protected: gint iGlobalVol; gint iGlobalGain; + TMSStreamState iUplState; + TMSStreamState iDnlState; + gint iCallType; }; } //namespace TMS #endif // CALLADPT_H -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmscallcsadpt.h --- a/mmserv/tms/tmscallserver/inc/tmscallcsadpt.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/inc/tmscallcsadpt.h Wed Aug 18 10:17:22 2010 +0300 @@ -25,10 +25,8 @@ #include #include #include "tmsclientserver.h" -#include "tmsdtmftoneplayerobserver.h" #include "tmscalladpt.h" #include "tmscsdevsoundobserver.h" -#include "tmsdtmfobserver.h" namespace TMS { @@ -36,18 +34,14 @@ class TMSCSUplink; class TMSCSDownlink; class TMSTarSettings; -class TMSAudioDtmfTonePlayer; -class TMSDTMFProvider; -class TMSDtmfNotifier; +class TMSSyncVol; /* * TMSCallCSAdpt class */ class TMSCallCSAdpt : public TMSCallAdpt, public TMSCSDevSoundObserver, - public MTelephonyAudioRoutingObserver, - public TMSDTMFTonePlayerObserver, - public TMSDTMFObserver + public MTelephonyAudioRoutingObserver { public: static TMSCallCSAdpt* NewL(); @@ -117,25 +111,12 @@ virtual gint GetPreviousOutput(TMSAudioOutput& output); virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf); - // From TMSDTMF - virtual gint StartDTMF(const TMSStreamType streamtype, TDes& dtmfstr); - virtual gint StopDTMF(const TMSStreamType streamtype); - virtual gint ContinueDTMF(const gboolean sending); - //From TMSCSDevSoundObserver void DownlinkInitCompleted(gint status); void UplinkInitCompleted(gint status); void DownlinkActivationCompleted(gint status); void UplinkActivationCompleted(gint status); - //From TMSDTMFTonePlayerObserver - void DTMFInitCompleted(gint status); - void DTMFToneFinished(gint status); - - //From TMSDTMFObserver - void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event, - const gint status, const TChar tone); - private: TMSCallCSAdpt(); void ConstructL(); @@ -157,23 +138,18 @@ TMSCSDownlink* iCSDownlink; CTelephonyAudioRouting* iRouting; TMSTarSettings* iTarSettings; - TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer; - TMSDtmfNotifier* iDTMFNotifier; - TMSDTMFProvider* iDTMFUplinkPlayer; // Message queues for communication and data transfer back to the client RMsgQueue iMsgQueueUp; RMsgQueue iMsgQueueDn; TmsMsgBuf iMsgBuffer; - gboolean iUplinkInitialized; gint iUplinkStreamId; - gboolean iDnlinkInitialized; gint iDnlinkStreamId; + TMSSyncVol* iResetVolNotifier; }; } //namespace TMS #endif // CALLCSADPT_H -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmscallipadpt.h --- a/mmserv/tms/tmscallserver/inc/tmscallipadpt.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/inc/tmscallipadpt.h Wed Aug 18 10:17:22 2010 +0300 @@ -25,8 +25,6 @@ #include "tmsshared.h" #include "tmscalladpt.h" #include "tmsipcallstream.h" -#include "tmsdtmftoneplayer.h" -#include "tmsdtmfnotifier.h" namespace TMS { @@ -38,8 +36,7 @@ * TMSCallIPAdpt class */ class TMSCallIPAdpt : public TMSCallAdpt, - public TMSIPDevSoundObserver, - public TMSDTMFTonePlayerObserver + public TMSIPDevSoundObserver { public: static TMSCallIPAdpt* NewL(); @@ -109,11 +106,6 @@ virtual gint GetPreviousOutput(TMSAudioOutput& output); virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf); - // From TMSDTMF - virtual gint StartDTMF(const TMSStreamType streamtype, TDes& dtmfstr); - virtual gint StopDTMF(const TMSStreamType streamtype); - virtual gint ContinueDTMF(const gboolean sending); - // From TMS codec formats gint SetIlbcCodecMode(const gint mode, const TMSStreamType strmtype); gint GetIlbcCodecMode(gint& mode, const TMSStreamType strmtype); @@ -138,10 +130,6 @@ void DownlinkStarted(gint status); void UplinkStarted(gint status); - //From TMSDTMFTonePlayerObserver - void DTMFInitCompleted(gint status); - void DTMFToneFinished(gint status); - private: TMSCallIPAdpt(); void ConstructL(); @@ -149,7 +137,6 @@ gint OpenDownlink(const RMessage2& message, const gint retrytime); gint OpenUplink(const RMessage2& message, const gint retrytime); - gint InitDTMF(TMSStreamType strmtype); void GetSupportedBitRatesL(CBufFlat*& brbuffer); void NotifyClient(const gint strmId, const gint command, const gint status = KErrNone, const gint64 int64 = TInt64(0)); @@ -158,17 +145,13 @@ gint iNextStreamId; TMSIPUplink* iIPUplink; TMSIPDownlink* iIPDownlink; - TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer; - TMSDtmfNotifier* iDTMFNotifier; - TMSAudioDtmfTonePlayer* iDTMFUplinkPlayer; + // Message queues for communication and data transfer back to the client RMsgQueue iMsgQueueUp; RMsgQueue iMsgQueueDn; TmsMsgBuf iMsgBuffer; - gboolean iUplinkInitialized; gint iUplinkStreamId; - gboolean iDnlinkInitialized; gint iDnlinkStreamId; TMMFPrioritySettings iPriority; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmscallsession.h --- a/mmserv/tms/tmscallserver/inc/tmscallsession.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/inc/tmscallsession.h Wed Aug 18 10:17:22 2010 +0300 @@ -87,10 +87,7 @@ void HandleRoutingGetOutputL(const RMessage2& aMessage); void HandleRoutingGetPreviousOutputL(const RMessage2& aMessage); void HandleRoutingGetAvailableOutputsL(const RMessage2& aMessage); - - void HandleDTMFStart(const RMessage2& aMessage); - void HandleDTMFStop(const RMessage2& aMessage); - void HandleDTMFContinue(const RMessage2& aMessage); + void HandleGetActiveCallL(const RMessage2& aMessage); private: TMSCallServer& iTMSCallServer; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmsdtmfnotifier.h --- a/mmserv/tms/tmscallserver/inc/tmsdtmfnotifier.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef DTMFNOTIFIER_H -#define DTMFNOTIFIER_H - -// INCLUDES -#include -#include -#include "tmsclientserver.h" - -namespace TMS { - -// CLASS DECLARATION -class TMSDtmfNotifier - { -public: - // Constructors and destructor - - /** - * Two-phased constructor. - */ - static TMSDtmfNotifier* NewL(); - - /** - * Destructor. - */ - virtual ~TMSDtmfNotifier(); - -public: - // New functions - - void SetDtmf(TmsMsgBufPckg dtmfpckg, gboolean publish = TRUE); - -private: - - /** - * C++ default constructor. - */ - TMSDtmfNotifier(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - -private: - gint iVolume; - }; - -} //namespace TMS - -#endif // DTMFNOTIFIER_H - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h --- a/mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef TMSDTMFOBSERVER_H -#define TMSDTMFOBSERVER_H - -#include - -namespace TMS { - -/** - * CCP DTMF related events observer class. - * This class is used for notifying DTMF specific events. - */ -class TMSDTMFObserver - { -public: - - /** DTMF Events */ - enum TCCPDtmfEvent - { - /** Unknown */ - ECCPDtmfUnknown = 0, - /** DTMF sending started manually */ - ECCPDtmfManualStart = 5, - /** DTMF sending stopped manually */ - ECCPDtmfManualStop = 6, - /** DTMF sending aborted manually */ - ECCPDtmfManualAbort = 7, - /** Automatic DTMF sending initialized */ - ECCPDtmfSequenceStart = 9, - /** Automatic DTMF sending stopped */ - ECCPDtmfSequenceStop = 10, - /** Automatic DTMF sending aborted */ - ECCPDtmfSequenceAbort = 11, - /** There was stop mark in DTMF string */ - ECCPDtmfStopInDtmfString, - /** DTMF sending completed succesfully */ - ECCPDtmfStringSendingCompleted - }; - - //protected: - /** - * Protects the observer being deleted through the observer interface. - */ - //virtual inline ~TMSDTMFObserver() {}; - -public: - - /** - * HandleDTMFEvents. - * @param event Event type - * @param status Error code - * @param tone Character - * @return none - */ - virtual void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event, - const gint status, const TChar tone) /*const*/ = 0; - }; - -} //namespace TMS - -#endif // TMSDTMFOBSERVER_H - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmsdtmfprovider.h --- a/mmserv/tms/tmscallserver/inc/tmsdtmfprovider.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef TMSDTMFPROVIDER_H -#define TMSDTMFPROVIDER_H - -#include -#include -#include -#include -#include "tmsdtmfobserver.h" - -namespace TMS { - -// FORWARD DECLARATIONS -class TMSEtelDtmfMonitor; -class TMSEtelDtmfStopMonitor; - -/** - * TMSDTMFProvider class - * Makes asynchronic request to ETel interface according to given request type. - * Provides canceling via CActive::Cancel(). - */ -class TMSDTMFProvider : public CActive - { -public: - - /** - * Two phased constructing of the DTMF provider instance. - * @param aPhone mobile phone handle - * @param aMmCustom custom API handle for special DTMF event - * monitoring. - * @return the DTMF provider instance - */ - static TMSDTMFProvider* NewL(); - - /** - * C++ default destructor - */ - virtual ~TMSDTMFProvider(); - - /** - * HandleDTMFEvents. - * @param aEvent Event type - * @param aError Error code - * @param aTone Character - */ - void NotifyDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent, - const gint aError, const TChar aTone); - - // from base class MCCPDTMFProvider - /** - * Cancels asynchronous DTMF string sending. - * @return KErrNone if succesfull, otherwise another system wide error code - */ - gint CancelDtmfStringSending(); - - /** - * Starts the transmission of a single DTMF tone across a - * connected and active call. - * @param aTone Tone to be played. - * @return KErrNone if succesfull, otherwise another system wide error code - */ - gint StartDtmfTone(const TChar aTone); - - /** - * Stops playing current DTMF tone. - * @return KErrNone if succesfull, otherwise another system wide error code - */ - gint StopDtmfTone(); - - /** - * Plays DTMF string. - * @param aString String to be played. - * @return KErrNone if succesfull, otherwise another system wide error code - * KErrArgument if the specified string contains illegal DTMF characters - */ - gint SendDtmfToneString(const TDesC& aString); - - /** - * Continue or cancel sending DTMF string which was stopped with 'w' - * character in string. - * @param aContinue ETrue if sending of the DTMF string should continue, - * EFalse if the rest of the DTMF string is to be discarded. - * @return KErrNone if succesfull, otherwise another system wide error code - */ - gint ContinueDtmfStringSending(const gboolean aContinue); - - /** - * Add an observer for DTMF related events. - * Plug-in dependent feature if duplicates or more than one observers - * are allowed or not. Currently CCE will set only one observer. - * @param aObserver Observer - * @leave system error if observer adding fails - */ - void AddObserver(const TMSDTMFObserver& aObserver); - - /** - * Remove an observer. - * @param aObserver Observer - * @return KErrNone if removed succesfully. KErrNotFound if observer was - * not found. Any other system error depending on the error. - */ - gint RemoveObserver(const TMSDTMFObserver& aObserver); - - // from base class CActive -protected: - /** - * From CActive - * RunL - */ - void RunL(); - - /** - * From CActive - * Cancels the monitor - */ - void DoCancel(); - -private: - /** - * Constructs the requester. - * - * @param aPhone handle to ETel phone - * @param aMmCustom custom API handle - */ - TMSDTMFProvider(); - - /** - * Constructing the provider in the second phase. - */ - void ConstructL(); - -private: - /** - * DTMF event observer. - */ - RPointerArray iObservers; - - /** - * ETel phone handle for DTMF functionality. - */ - RMobilePhone iPhone; - - /** - * Monitor for DTMF events and changes. - * Own. - */ - TMSEtelDtmfMonitor* iMonitor; - - /** - * Monitor for DTMF stopping. - * Own. - */ - TMSEtelDtmfStopMonitor* iStopMonitor; - - /** - * Custom API reference. - */ - RMmCustomAPI iMmCustom; - - RTelServer iServer; - TBuf<25> iTsyname; - }; - -} //namespace TMS - -#endif //TMSDTMFPROVIDER_H diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmsdtmftoneplayer.h --- a/mmserv/tms/tmscallserver/inc/tmsdtmftoneplayer.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef TMSAUDIODTMFTONEPLAYER_H -#define TMSAUDIODTMFTONEPLAYER_H - -// INCLUDES -#include -#include -#include "tmsdtmftoneplayerobserver.h" - -// FORWARD DECLARATIONS -class CMMFDevSound; - -// CLASS DECLARATION - -/** - * Plays DTMF tones using media server - */ - -namespace TMS { - -class TMSAudioDtmfTonePlayer : public MDevSoundObserver - { -public: - // Constructors and destructor - - /** - * Two-phased constructor. - */ - static TMSAudioDtmfTonePlayer* NewL(TMSDTMFTonePlayerObserver& obsrvr, - guint audioPreference, guint audioPriority); - - /** - * Destructor. - */ - virtual ~TMSAudioDtmfTonePlayer(); - -public: - - /** - * Sets volume. - * @param aVolume volume value or KDtmfSilent. - * @return None. - */ - void SetVolume(gint volume); - - /** - * Starts playing given dtmf tone infinitely. - * @param aTone Tone to be played. - * @return None. - */ - void PlayDtmfTone(TDes& tone); - - /** - * Cancels playing. - * @param None. - * @return None. - */ - void Cancel(); - -public: - //From MDevSoundObserver - /** - * See MDevSoundObserver - */ - void InitializeComplete(TInt aError); - - /** - * See MDevSoundObserver - */ - void ToneFinished(TInt aError); - - /** - * See MDevSoundObserver - */ - void BufferToBeFilled(CMMFBuffer* /*aBuffer*/) {} - - /** - * See MDevSoundObserver - */ - void PlayError(TInt /*aError*/) {} - - /** - * See MDevSoundObserver - */ - void BufferToBeEmptied(CMMFBuffer* /*aBuffer*/) {} - - /** - * See MDevSoundObserver - */ - void RecordError(TInt /*aError*/) {} - - /** - * See MDevSoundObserver - */ - void ConvertError(TInt /*aError*/) {} - /** - * See MDevSoundObserver - */ - void DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/) {} - -protected: - - /** - * C++ default constructor. - */ - TMSAudioDtmfTonePlayer(TMSDTMFTonePlayerObserver& obsrvr, - guint audioPreference, guint audioPriority); - - void ConstructL(); - - /** - * Normalize tone. - * @param aTone dtmf tone. - * @return None. - */ - void Normalize(TChar& tone); - -private: - //new functions - - /** - * Converts the given value to the one that matches tha range used by - * CMMFDevSound. The CMMFDevSound uses valuess that can from 0 to the - * value returned by a call to CMMFDevSound::MaxVolume(). - */ - gint ConvertVolumeLevel(gint volume); - -protected: - // Data - - // Current volume setting. - gint iVolume; - - // DTMF player instance - CMMFDevSound* iDTMFPlayer; - - TMSDTMFTonePlayerObserver& iObserver; - guint iPref; - guint iPrior; - }; - -} //namespace TMS - -#endif // TMSAUDIODTMFTONEPLAYER_H - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h --- a/mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef DTMFTONEPLAYEROBSERVER_H -#define DTMFTONEPLAYEROBSERVER_H - -#include - -namespace TMS { - -/** - * Observer interface for knowing when dtmf tone player has been initialized. - */ -class TMSDTMFTonePlayerObserver - { -public: - virtual void DTMFInitCompleted(gint status) = 0; - virtual void DTMFToneFinished(gint status) = 0; - }; -} //namespace TMS - -#endif // DTMFTONEPLAYEROBSERVER_H - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmseteldtmfmonitor.h --- a/mmserv/tms/tmscallserver/inc/tmseteldtmfmonitor.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef TMSETELDTMFMONITOR_H -#define TMSETELDTMFMONITOR_H - -#include -#include -#include - -namespace TMS { - -// FORWARD DECLARATIONS -class TMSCSPCall; -class TMSDTMFProvider; - -/** - * TMSEtelDtmfMonitor class - * - * Monitors ETel for DTMF events. - * - * This monitor is applied only for listening incoming calls, i.e. - * line capabilites are not monitored. - * - * @lib csplugin.dll - * - */ -class TMSEtelDtmfMonitor : public CActive - { -public: - /** - * Two-phased constructing for the monitor. - * - * @param aObserver the observer for getting notification - * @param aMmCustom Custom API handle - */ - static TMSEtelDtmfMonitor* NewL(TMSDTMFProvider& aObserver, - RMmCustomAPI& aMmCustom); - - /** - * C++ default destructor - */ - virtual ~TMSEtelDtmfMonitor(); - - /** - * Start monitoring call events - */ - void StartMonitoring(); - -protected: // From CActive - /** - * From CActive - * RunL - */ - void RunL(); - - /** - * From CActive - * Cancels the monitor - */ - void DoCancel(); - -private: - /** - * C++ default constructor - * @param aObserver the observer for status change (incoming call) - * @param aMmCustom Custom API handle - */ - TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver, RMmCustomAPI& aMmCustom); - -private: - /** - * Forwards events. - */ - TMSDTMFProvider& iObserver; - - /** - * Event data. Updated when event occurs. - */ - RMmCustomAPI::TDtmfInfo iEventData; - - /** - * Custom API reference. - */ - RMmCustomAPI& iMmCustom; - }; - -} //namespace TMS - -#endif // TMSETELDTMFMONITOR_H - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmseteldtmfstopmonitor.h --- a/mmserv/tms/tmscallserver/inc/tmseteldtmfstopmonitor.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef TMSETELDTMFSTOPMONITOR_H -#define TMSETELDTMFSTOPMONITOR_H - -#include -#include - -namespace TMS { - -// FORWARD DECLARATIONS -class TMSDTMFProvider; - -/** - * TMSEtelDtmfStopMonitor class - * - * Monitors single ETel RMobilePhone for DTMF events. - * - * This monitor is applied only for listening incoming calls, i.e. - * line capabilites are not monitored. - * - */ -class TMSEtelDtmfStopMonitor : public CActive - { -public: - /** - * Two-phased constructing for the monitor. - * - * @param aObserver the observer for getting notification - * @param aPhone the line to monitor - */ - static TMSEtelDtmfStopMonitor* NewL(TMSDTMFProvider& aObserver, - RMobilePhone& aPhone); - - /** - * C++ default destructor - */ - virtual ~TMSEtelDtmfStopMonitor(); - - /** - * Start monitoring call events - */ - void StartMonitoring(); - -protected: // From CActive - /** - * From CActive - * RunL - */ - void RunL(); - - /** - * From CActive - * Cancels the monitor - */ - void DoCancel(); - -private: - /** - * C++ default constructor - * @param aObserver the observer for status change (incoming call) - * @param aPhone the line associated with the call - */ - TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver, RMobilePhone& aPhone); - -private: - /** - * Forwards events. - */ - TMSDTMFProvider& iObserver; - - /** - * Phone that is being observed for incoming call. - */ - RMobilePhone& iPhone; - - /** - * Event received. - */ - RMobilePhone::TMobilePhoneDTMFEvent iEventData; - - }; - -} //namespace TMS - -#endif // TMSETELDTMFSTOPMONITOR_H - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/inc/tmssyncvol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmscallserver/inc/tmssyncvol.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef TMSSYNCVOL_H +#define TMSSYNCVOL_H + +// INCLUDES +#include +#include +#include +#include "tmsclientserver.h" + +namespace TMS { + +// CLASS DECLARATION +class TMSSyncVol + { +public: + // Constructors and destructor + + /** + * Two-phased constructor. + */ + static TMSSyncVol* NewL(); + + /** + * Destructor. + */ + virtual ~TMSSyncVol(); + +public: + // New functions + + void SetSyncVol(TBool syncvol = ETrue); + +private: + + /** + * C++ default constructor. + */ + TMSSyncVol(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + +private: + gint iVolume; //Volume + }; + +} //namespace TMS + +#endif // TMSSYNCVOL_H + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscalladpt.cpp --- a/mmserv/tms/tmscallserver/src/tmscalladpt.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscalladpt.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -53,8 +53,9 @@ gint TMSCallAdpt::CreateCallL(gint callType, TMSCallAdpt*& callAdpt) { TRACE_PRN_FN_ENT; + gint retVal(TMS_RESULT_SUCCESS); TMSCallAdpt* self(NULL); - gint retVal(TMS_RESULT_SUCCESS); + switch (callType) { case TMS_CALL_IP: @@ -63,6 +64,7 @@ if (self) { retVal = self->PostConstruct(); + self->iCallType = callType; if (retVal != TMS_RESULT_SUCCESS) { delete self; @@ -77,6 +79,7 @@ if (self) { retVal = self->PostConstruct(); + self->iCallType = callType; if (retVal != TMS_RESULT_SUCCESS) { delete self; @@ -93,4 +96,23 @@ return retVal; } -// End of file +// ----------------------------------------------------------------------------- +// TMSCallAdpt::GetCallType +// +// ----------------------------------------------------------------------------- +// +void TMSCallAdpt::GetCallType(TMSCallType& callType) + { + callType = iCallType; + } + +// ----------------------------------------------------------------------------- +// TMSCallAdpt::IsUplActivated +// +// ----------------------------------------------------------------------------- +// +gboolean TMSCallAdpt::IsUplActivated() + { + return (iUplState == EActivated)? TRUE : FALSE; + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp --- a/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -26,9 +26,7 @@ #include "tmsshared.h" #include "tmsclientserver.h" #include "tmstarsettings.h" -#include "tmsdtmftoneplayer.h" -#include "tmsdtmfprovider.h" -#include "tmsdtmfnotifier.h" +#include "tmssyncvol.h" using namespace TMS; @@ -58,9 +56,7 @@ iCSUplink = NULL; iRouting = NULL; iTarSettings = NULL; - iDTMFDnlinkPlayer = NULL; - iDTMFUplinkPlayer = NULL; - iDTMFNotifier = NULL; + iResetVolNotifier = NULL; TRACE_PRN_FN_EXT; } @@ -84,11 +80,9 @@ delete iRouting; delete iTarSettings; - delete iDTMFUplinkPlayer; - delete iDTMFDnlinkPlayer; - delete iDTMFNotifier; delete iCSUplink; delete iCSDownlink; + delete iResetVolNotifier; if (iMsgQueueUp.Handle() > 0) { @@ -112,8 +106,8 @@ TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); iNextStreamId = 1; - iUplinkInitialized = FALSE; - iDnlinkInitialized = FALSE; + iUplState = EIdle; + iDnlState = EIdle; TRACE_PRN_FN_EXT; return status; } @@ -133,12 +127,11 @@ case TMS_STREAM_UPLINK: { status = TMS_RESULT_ALREADY_EXIST; - if (!iUplinkInitialized) + if (iUplState == EIdle) { iUplinkStreamId = iNextStreamId; outStrmId = iUplinkStreamId; iNextStreamId++; - //iUplinkInitialized = TRUE; //not initialized yet! status = TMS_RESULT_SUCCESS; } break; @@ -146,12 +139,11 @@ case TMS_STREAM_DOWNLINK: { status = TMS_RESULT_ALREADY_EXIST; - if (!iDnlinkInitialized) + if (iDnlState == EIdle) { iDnlinkStreamId = iNextStreamId; outStrmId = iDnlinkStreamId; iNextStreamId++; - //iDnlinkInitialized = TRUE; //not initialized yet! status = TMS_RESULT_SUCCESS; } break; @@ -242,15 +234,6 @@ { TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime)); } - if (!iDTMFUplinkPlayer && status == TMS_RESULT_SUCCESS) - { - TRAP(status, iDTMFUplinkPlayer = TMSDTMFProvider::NewL()); - iDTMFUplinkPlayer->AddObserver(*this); - } - if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS) - { - TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL()); - } return status; } @@ -275,15 +258,6 @@ { TRAP(status, iTarSettings = TMSTarSettings::NewL()); } - if (!iDTMFDnlinkPlayer && status == TMS_RESULT_SUCCESS) - { - TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, - KAudioDTMFString, KAudioPriorityDTMFString)); - } - if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS) - { - TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL()); - } return status; } @@ -301,7 +275,8 @@ { case TMS_STREAM_UPLINK: { - if (iCSUplink && strmId == iUplinkStreamId) + if (iCSUplink && strmId == iUplinkStreamId && + iUplState == EInitialized) { iCSUplink->Activate(retrytime); status = TMS_RESULT_SUCCESS; @@ -310,7 +285,16 @@ } case TMS_STREAM_DOWNLINK: { - if (iCSDownlink && strmId == iDnlinkStreamId) + if(!iResetVolNotifier) + { + TRAP(status, iResetVolNotifier = TMSSyncVol::NewL()); + } + if(iResetVolNotifier) + { + iResetVolNotifier->SetSyncVol(); + } + if (iCSDownlink && strmId == iDnlinkStreamId && + iDnlState == EInitialized) { iCSDownlink->Activate(retrytime); status = TMS_RESULT_SUCCESS; @@ -359,6 +343,7 @@ if (iCSUplink && strmId == iUplinkStreamId) { iCSUplink->Deactivate(); + iUplState = EInitialized; status = TMS_RESULT_SUCCESS; NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); } @@ -369,6 +354,7 @@ if (iCSDownlink && strmId == iDnlinkStreamId) { iCSDownlink->Deactivate(); + iDnlState = EInitialized; status = TMS_RESULT_SUCCESS; NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); } @@ -402,16 +388,18 @@ if (iCSUplink && strmId == iUplinkStreamId) { iCSUplink->Deactivate(); - iUplinkInitialized = FALSE; + iUplState = EIdle; status = TMS_RESULT_SUCCESS; NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status); } break; + } case TMS_STREAM_DOWNLINK: + { if (iCSDownlink && strmId == iDnlinkStreamId) { iCSDownlink->Deactivate(); - iDnlinkInitialized = FALSE; + iDnlState = EIdle; status = TMS_RESULT_SUCCESS; NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete, status); @@ -445,7 +433,7 @@ if (strmId == iUplinkStreamId) { iUplinkStreamId = -1; - iUplinkInitialized = FALSE; + iUplState = EIdle; } break; } @@ -454,7 +442,7 @@ if (strmId == iDnlinkStreamId) { iDnlinkStreamId = -1; - iDnlinkInitialized = FALSE; + iDnlState = EIdle; } break; } @@ -521,7 +509,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSDownlink && iDnlinkInitialized) + if (iCSDownlink && iDnlState != EIdle) { volume = iCSDownlink->MaxVolume(); status = TMS_RESULT_SUCCESS; @@ -540,7 +528,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSDownlink && iDnlinkInitialized) + if (iCSDownlink && iDnlState != EIdle) { iCSDownlink->SetVolume(volume); status = TMS_RESULT_SUCCESS; @@ -559,7 +547,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSDownlink && iDnlinkInitialized) + if (iCSDownlink && iDnlState != EIdle) { volume = iCSDownlink->Volume(); status = TMS_RESULT_SUCCESS; @@ -577,7 +565,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSUplink && iUplinkInitialized) + if (iCSUplink && iUplState != EIdle) { gain = iCSUplink->MaxGain(); status = TMS_RESULT_SUCCESS; @@ -596,7 +584,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSUplink && iUplinkInitialized) + if (iCSUplink && iUplState != EIdle) { iCSUplink->SetGain(gain); status = TMS_RESULT_SUCCESS; @@ -615,7 +603,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSUplink && iUplinkInitialized) + if (iCSUplink && iUplState != EIdle) { gain = iCSUplink->Gain(); status = TMS_RESULT_SUCCESS; @@ -633,7 +621,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSDownlink && iDnlinkInitialized) + if (iCSDownlink && iDnlState != EIdle) { volume = iCSDownlink->MaxVolume(); status = TMS_RESULT_SUCCESS; @@ -653,7 +641,7 @@ TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); iGlobalVol = volume; - if (iCSDownlink && iDnlinkInitialized) + if (iCSDownlink && iDnlState != EIdle) { iCSDownlink->SetVolume(volume); status = TMS_RESULT_SUCCESS; @@ -671,7 +659,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSDownlink && iDnlinkInitialized) + if (iCSDownlink && iDnlState != EIdle) { volume = iCSDownlink->Volume(); status = TMS_RESULT_SUCCESS; @@ -689,7 +677,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSUplink && iUplinkInitialized) + if (iCSUplink && iUplState != EIdle) { gain = iCSUplink->MaxGain(); status = TMS_RESULT_SUCCESS; @@ -709,7 +697,7 @@ TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); iGlobalGain = gain; - if (iCSUplink && iUplinkInitialized) + if (iCSUplink && iUplState != EIdle) { iCSUplink->SetGain(gain); status = TMS_RESULT_SUCCESS; @@ -727,7 +715,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iCSUplink && iUplinkInitialized) + if (iCSUplink && iUplState != EIdle) { gain = iCSUplink->Gain(); status = TMS_RESULT_SUCCESS; @@ -942,7 +930,6 @@ status = TMS_RESULT_SUCCESS; output = TOTMSOUTPUT(taroutput); } - TRACE_PRN_FN_EXT; return status; } @@ -984,10 +971,8 @@ RBufWriteStream stream; stream.Open(*outputsbuf); CleanupClosePushL(stream); - TArray availableOutputs = iRouting->AvailableOutputs(); - guint numOfItems = availableOutputs.Count(); count = numOfItems; for (guint i = 0; i < numOfItems; i++) @@ -995,7 +980,6 @@ tmsoutput = TOTMSOUTPUT(availableOutputs[i]); stream.WriteUint32L(tmsoutput); } - CleanupStack::PopAndDestroy(&stream); status = TMS_RESULT_SUCCESS; } @@ -1005,176 +989,6 @@ } // ----------------------------------------------------------------------------- -// TMSCallCSAdpt::StartDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallCSAdpt::StartDTMF(const TMSStreamType strmtype, TDes& dtmfstring) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED); - TmsMsgBufPckg dtmfpckg; - dtmfpckg().iStatus = status; - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - - if (strmtype == TMS_STREAM_DOWNLINK && iDnlinkInitialized) - { - if (iDTMFDnlinkPlayer) - { - iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring); - status = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = TMS_RESULT_SUCCESS; - dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted; - } - else if (strmtype == TMS_STREAM_UPLINK && iUplinkInitialized) - { - //use etel for uplink - if (iDTMFUplinkPlayer) - { - status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring); - status = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status); - dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; - } - - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg); - } - - TRACE_PRN_IF_ERR(status); - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// TMSCallCSAdpt::StopDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallCSAdpt::StopDTMF(const TMSStreamType streamtype) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_SUCCESS); - - if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer) - { - iDTMFDnlinkPlayer->Cancel(); - } - else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer) - { - status = iDTMFUplinkPlayer->StopDtmfTone(); - status = TMSUtility::EtelToTMSResult(status); - } - - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// TMSCallCSAdpt::ContinueDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallCSAdpt::ContinueDTMF(const gboolean sending) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - - if (iDTMFUplinkPlayer) - { - status = iDTMFUplinkPlayer->ContinueDtmfStringSending(sending); - status = TMSUtility::EtelToTMSResult(status); - } - - TRACE_PRN_FN_EXT; - return status; - } - -//From TMSDTMFTonePlayerObserver -// ----------------------------------------------------------------------------- -// TMSCallCSAdpt::DTMFInitCompleted -// -// ----------------------------------------------------------------------------- -// -void TMSCallCSAdpt::DTMFInitCompleted(gint /*status*/) - { - TRACE_PRN_FN_ENT; - // TODO: process error - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSCallCSAdpt::DTMFToneFinished -// -// ----------------------------------------------------------------------------- -// -void TMSCallCSAdpt::DTMFToneFinished(gint status) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_IF_ERR(status); - TmsMsgBufPckg dtmfpckg; - - // KErrUnderflow indicates end of DTMF playback. - if (status == KErrUnderflow || status == KErrInUse) - { - status = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = TMSUtility::TMSResult(status); - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSCallCSAdpt::HandleDTMFEvent -// -// ----------------------------------------------------------------------------- -// -void TMSCallCSAdpt::HandleDTMFEvent( - const TMSDTMFObserver::TCCPDtmfEvent event, const gint status, - const TChar /*tone*/) - { - TRACE_PRN_FN_ENT; - TmsMsgBufPckg dtmfpckg; - - TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"), status); - - dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status); - - switch (event) - { - case ECCPDtmfUnknown: //Unknown - break; - case ECCPDtmfManualStart: //DTMF sending started manually - case ECCPDtmfSequenceStart: //Automatic DTMF sending initialized - dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; - break; - case ECCPDtmfManualStop: //DTMF sending stopped manually - case ECCPDtmfManualAbort: //DTMF sending aborted manually - case ECCPDtmfSequenceStop: //Automatic DTMF sending stopped - case ECCPDtmfSequenceAbort: //Automatic DTMF sending aborted - case ECCPDtmfStopInDtmfString: //There was stop mark in DTMF string - case ECCPDtmfStringSendingCompleted: //DTMF sending success - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - break; - default: - break; - } - - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg, TRUE); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- // TMSCallCSAdpt::DownlinkInitCompleted // From TMSCSDevSoundObserver // ----------------------------------------------------------------------------- @@ -1184,7 +998,7 @@ TRACE_PRN_FN_ENT; if (status == TMS_RESULT_SUCCESS) { - iDnlinkInitialized = TRUE; + iDnlState = EInitialized; } NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); TRACE_PRN_FN_EXT; @@ -1200,7 +1014,7 @@ TRACE_PRN_FN_ENT; if (status == TMS_RESULT_SUCCESS) { - iUplinkInitialized = TRUE; + iUplState = EInitialized; } NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); TRACE_PRN_FN_EXT; @@ -1214,6 +1028,10 @@ void TMSCallCSAdpt::UplinkActivationCompleted(gint status) { TRACE_PRN_FN_ENT; + if (status == TMS_RESULT_SUCCESS) + { + iUplState = EActivated; + } NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status); TRACE_PRN_FN_EXT; } @@ -1226,6 +1044,10 @@ void TMSCallCSAdpt::DownlinkActivationCompleted(gint status) { TRACE_PRN_FN_ENT; + if (status == TMS_RESULT_SUCCESS) + { + iDnlState = EActivated; + } NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status); TRACE_PRN_FN_EXT; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscallipadpt.cpp --- a/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -47,9 +47,6 @@ TRACE_PRN_FN_ENT; iIPDownlink = NULL; iIPUplink = NULL; - iDTMFDnlinkPlayer = NULL; - iDTMFUplinkPlayer = NULL; - iDTMFNotifier = NULL; TRACE_PRN_FN_EXT; } @@ -74,9 +71,6 @@ iCodecs.Reset(); iCodecs.Close(); iArrBitrates.Reset(); - delete iDTMFUplinkPlayer; - delete iDTMFDnlinkPlayer; - delete iDTMFNotifier; delete iIPUplink; delete iIPDownlink; @@ -102,8 +96,8 @@ TRACE_PRN_FN_ENT; gint status(TMS_RESULT_SUCCESS); iNextStreamId = 1; - iUplinkInitialized = FALSE; - iDnlinkInitialized = FALSE; + iUplState = EIdle; + iDnlState = EIdle; TRACE_PRN_FN_EXT; return status; } @@ -123,12 +117,11 @@ case TMS_STREAM_UPLINK: { status = TMS_RESULT_ALREADY_EXIST; - if (!iUplinkInitialized) + if (iUplState == EIdle) { iUplinkStreamId = iNextStreamId; outStrmId = iUplinkStreamId; iNextStreamId++; - //iUplinkInitialized = TRUE; //not initialized yet! status = TMS_RESULT_SUCCESS; } break; @@ -136,12 +129,11 @@ case TMS_STREAM_DOWNLINK: { status = TMS_RESULT_ALREADY_EXIST; - if (!iDnlinkInitialized) + if (iDnlState == EIdle) { iDnlinkStreamId = iNextStreamId; outStrmId = iDnlinkStreamId; iNextStreamId++; - //iDnlinkInitialized = TRUE; //not initialized yet! status = TMS_RESULT_SUCCESS; } break; @@ -183,10 +175,6 @@ { SetFormat(iUplinkStreamId, fourCC); status = OpenUplink(message, retrytime); - if (status == TMS_RESULT_SUCCESS) - { - status = InitDTMF(TMS_STREAM_UPLINK); - } } break; } @@ -197,10 +185,6 @@ { SetFormat(iDnlinkStreamId, fourCC); status = OpenDownlink(message, retrytime); - if (status == TMS_RESULT_SUCCESS) - { - status = InitDTMF(TMS_STREAM_DOWNLINK); - } } break; } @@ -230,21 +214,21 @@ { case TMS_STREAM_UPLINK: { - if (iIPUplink && strmId == iUplinkStreamId) + if (iIPUplink && strmId == iUplinkStreamId && + iUplState == EInitialized) { iIPUplink->Start(retrytime); status = TMS_RESULT_SUCCESS; - NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status); } break; } case TMS_STREAM_DOWNLINK: { - if (iIPDownlink && strmId == iDnlinkStreamId) + if (iIPDownlink && strmId == iDnlinkStreamId && + iDnlState == EInitialized) { iIPDownlink->Start(retrytime); status = TMS_RESULT_SUCCESS; - NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status); } break; } @@ -275,6 +259,7 @@ if (strmId == iUplinkStreamId && iIPUplink) { iIPUplink->Stop(); + iUplState = EInitialized; status = TMS_RESULT_SUCCESS; NotifyClient(iUplinkStreamId, ECmdUplinkPaused, status); } @@ -285,6 +270,7 @@ if (strmId == iDnlinkStreamId && iIPDownlink) { iIPDownlink->Stop(); + iDnlState = EInitialized; status = TMS_RESULT_SUCCESS; NotifyClient(iDnlinkStreamId, ECmdDownlinkPaused, status); } @@ -315,9 +301,11 @@ { case TMS_STREAM_UPLINK: { - if (iIPUplink && strmId == iUplinkStreamId) + if (iIPUplink && strmId == iUplinkStreamId && + iUplState == EActivated) { iIPUplink->Stop(); + iUplState = EInitialized; status = TMS_RESULT_SUCCESS; NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); } @@ -325,9 +313,11 @@ } case TMS_STREAM_DOWNLINK: { - if (iIPDownlink && strmId == iDnlinkStreamId) + if (iIPDownlink && strmId == iDnlinkStreamId && + iDnlState == EActivated) { iIPDownlink->Stop(); + iDnlState = EInitialized; status = TMS_RESULT_SUCCESS; NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); } @@ -358,11 +348,10 @@ { case TMS_STREAM_UPLINK: { - if (iIPUplink && strmId == iUplinkStreamId) + if (iIPUplink && strmId == iUplinkStreamId && iUplState != EIdle) { iIPUplink->Stop(); - //iUplinkStreamId = -1; - iUplinkInitialized = FALSE; + iUplState = EIdle; status = TMS_RESULT_SUCCESS; NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status); } @@ -370,11 +359,10 @@ } case TMS_STREAM_DOWNLINK: { - if (iIPDownlink && strmId == iDnlinkStreamId) + if (iIPDownlink && strmId == iDnlinkStreamId && iDnlState != EIdle) { iIPDownlink->Stop(); - //iDnlinkStreamId = -1; - iDnlinkInitialized = FALSE; + iDnlState = EIdle; status = TMS_RESULT_SUCCESS; NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete, status); @@ -387,7 +375,6 @@ break; } } - TRACE_PRN_FN_EXT; return status; } @@ -409,7 +396,7 @@ if (strmId == iUplinkStreamId) { iUplinkStreamId = -1; - iUplinkInitialized = FALSE; + iUplState = EIdle; } break; } @@ -418,7 +405,7 @@ if (strmId == iDnlinkStreamId) { iDnlinkStreamId = -1; - iDnlinkInitialized = FALSE; + iDnlState = EIdle; } break; } @@ -538,7 +525,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iDnlinkInitialized && iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->GetMaxVolume(volume); iMaxVolume = volume; @@ -557,7 +544,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iDnlinkInitialized && iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->SetVolume(volume); NotifyClient(iDnlinkStreamId, ECmdSetVolume, status); @@ -575,7 +562,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iDnlinkInitialized && iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->GetVolume(volume); } @@ -592,7 +579,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iUplinkInitialized && iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetMaxGain(gain); iMaxGain = gain; @@ -611,7 +598,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iUplinkInitialized && iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->SetGain(gain); NotifyClient(iUplinkStreamId, ECmdSetGain, status); @@ -629,7 +616,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iUplinkInitialized && iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetGain(gain); } @@ -646,7 +633,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iDnlinkInitialized && iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->GetMaxVolume(volume); iMaxVolume = volume; @@ -666,7 +653,7 @@ TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); //iGlobalVol = volume; - if (iDnlinkInitialized && iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->SetVolume(volume); } @@ -683,7 +670,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iDnlinkInitialized && iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->GetVolume(volume); } @@ -700,7 +687,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iUplinkInitialized && iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetMaxGain(gain); iMaxGain = gain; @@ -720,7 +707,7 @@ TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); //iGlobalGain = gain; - if (iUplinkInitialized && iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->SetGain(gain); } @@ -737,7 +724,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iUplinkInitialized && iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetGain(gain); } @@ -806,7 +793,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetSupportedBitrates(iArrBitrates); count = iArrBitrates.Count(); @@ -862,7 +849,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetBitrate(bitrate); } @@ -879,7 +866,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->SetBitrate(bitrate); } @@ -896,7 +883,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->GetVad(fmttype, vad); } @@ -913,7 +900,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPUplink) + if (iIPUplink && iUplState != EIdle) { status = iIPUplink->SetVad(fmttype, vad); } @@ -930,7 +917,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPDownlink) + if (iIPDownlink && iDnlState == EInitialized) { status = iIPDownlink->GetCng(fmttype, cng); } @@ -947,7 +934,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPDownlink) + if (iIPDownlink && iDnlState == EInitialized) { status = iIPDownlink->SetCng(fmttype, cng); } @@ -964,7 +951,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPDownlink) + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->GetPlc(fmttype, plc); } @@ -981,7 +968,7 @@ { TRACE_PRN_FN_ENT; gint status(TMS_RESULT_INVALID_STATE); - if (iIPDownlink) + if (iIPDownlink && iDnlState == EInitialized) { status = iIPDownlink->SetPlc(fmttype, plc); } @@ -1055,7 +1042,7 @@ * 2) KAudioPrefVoipAudioUplink -NOK native VoIP? * KAudioPriorityVoipAudioUplink -NOK native VoIP? */ - iPriority.iPref = KAudioPrefVoipAudioUplink; + iPriority.iPref = KAudioPrefVoipAudioUplinkNonSignal; iPriority.iPriority = KAudioPriorityVoipAudioUplink; delete iIPUplink; @@ -1172,23 +1159,22 @@ gint TMSCallIPAdpt::SetIlbcCodecMode(const gint mode, const TMSStreamType strmtype) { - gint status(TMS_RESULT_INVALID_ARGUMENT); + gint status(TMS_RESULT_SUCCESS); - if (strmtype == TMS_STREAM_DOWNLINK) + if (strmtype == TMS_STREAM_DOWNLINK && iIPDownlink && + iDnlState == EInitialized) { - if (iDnlinkInitialized && iIPDownlink) - { - status = iIPDownlink->SetIlbcCodecMode(mode); - } + status = iIPDownlink->SetIlbcCodecMode(mode); } - else if (strmtype == TMS_STREAM_UPLINK) + else if (strmtype == TMS_STREAM_UPLINK && iIPUplink && + iUplState == EInitialized) { - if (iUplinkInitialized && iIPUplink) - { - status = iIPUplink->SetIlbcCodecMode(mode); - } + status = iIPUplink->SetIlbcCodecMode(mode); } - + else + { + status = TMS_RESULT_INVALID_STATE; + } return status; } @@ -1199,23 +1185,22 @@ // gint TMSCallIPAdpt::GetIlbcCodecMode(gint& mode, const TMSStreamType strmtype) { - gint status(TMS_RESULT_INVALID_ARGUMENT); + gint status(TMS_RESULT_SUCCESS); - if (strmtype == TMS_STREAM_DOWNLINK) + if (strmtype == TMS_STREAM_DOWNLINK && iIPDownlink && + iDnlState != EIdle) { - if (iDnlinkInitialized && iIPDownlink) - { - status = iIPDownlink->GetIlbcCodecMode(mode); - } + status = iIPDownlink->GetIlbcCodecMode(mode); } - else if (strmtype == TMS_STREAM_UPLINK) + else if (strmtype == TMS_STREAM_UPLINK && iIPUplink && + iUplState != EIdle) { - if (iUplinkInitialized && iIPUplink) - { - status = iIPUplink->GetIlbcCodecMode(mode); - } + status = iIPUplink->GetIlbcCodecMode(mode); } - + else + { + status = TMS_RESULT_INVALID_STATE; + } return status; } @@ -1227,23 +1212,22 @@ gint TMSCallIPAdpt::SetG711CodecMode(const gint mode, const TMSStreamType strmtype) { - gint status(TMS_RESULT_INVALID_ARGUMENT); + gint status(TMS_RESULT_SUCCESS); - if (strmtype == TMS_STREAM_DOWNLINK) + if (strmtype == TMS_STREAM_DOWNLINK && iIPDownlink && + iDnlState == EInitialized) { - if (iDnlinkInitialized && iIPDownlink) - { - status = iIPDownlink->SetG711CodecMode(mode); - } + status = iIPDownlink->SetG711CodecMode(mode); } - else if (strmtype == TMS_STREAM_UPLINK) + else if (strmtype == TMS_STREAM_UPLINK && iIPUplink && + iUplState == EInitialized) { - if (iUplinkInitialized && iIPUplink) - { - status = iIPUplink->SetG711CodecMode(mode); - } + status = iIPUplink->SetG711CodecMode(mode); } - + else + { + status = TMS_RESULT_INVALID_STATE; + } return status; } @@ -1254,23 +1238,22 @@ // gint TMSCallIPAdpt::GetG711CodecMode(gint& mode, const TMSStreamType strmtype) { - gint status(TMS_RESULT_INVALID_ARGUMENT); + gint status(TMS_RESULT_SUCCESS); - if (strmtype == TMS_STREAM_DOWNLINK) + if (strmtype == TMS_STREAM_DOWNLINK && iIPDownlink && + iDnlState != EIdle) { - if (iDnlinkInitialized && iIPDownlink) - { - status = iIPDownlink->GetG711CodecMode(mode); - } + status = iIPDownlink->GetG711CodecMode(mode); } - else if (strmtype == TMS_STREAM_UPLINK) + else if (strmtype == TMS_STREAM_UPLINK && iIPUplink && + iUplState != EIdle) { - if (iUplinkInitialized && iIPUplink) - { - status = iIPUplink->GetG711CodecMode(mode); - } + status = iIPUplink->GetG711CodecMode(mode); } - + else + { + status = TMS_RESULT_INVALID_STATE; + } return status; } @@ -1281,8 +1264,8 @@ // gint TMSCallIPAdpt::FrameModeRqrdForEC(gboolean& frmodereq) { - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState == EInitialized) { status = iIPDownlink->FrameModeRqrdForEC(frmodereq); } @@ -1296,8 +1279,8 @@ // gint TMSCallIPAdpt::SetFrameMode(const gboolean frmode) { - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState == EInitialized) { status = iIPDownlink->SetFrameMode(frmode); } @@ -1311,8 +1294,8 @@ // gint TMSCallIPAdpt::GetFrameMode(gboolean& frmode) { - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState != EIdle) { status = iIPDownlink->GetFrameMode(frmode); } @@ -1325,8 +1308,8 @@ // gint TMSCallIPAdpt::ConcealErrorForNextBuffer() { - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState == EActivated) { status = iIPDownlink->ConcealErrorForNextBuffer(); } @@ -1340,8 +1323,8 @@ // gint TMSCallIPAdpt::BadLsfNextBuffer() { - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState == EActivated) { status = iIPDownlink->BadLsfNextBuffer(); } @@ -1356,14 +1339,15 @@ gint TMSCallIPAdpt::SetOutput(TMSAudioOutput output) { TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iDnlinkInitialized && iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState != EIdle) { TRAP(status, iIPDownlink->SetAudioDeviceL(output)); } TRACE_PRN_FN_EXT; return status; } + // ----------------------------------------------------------------------------- // TMSCallIPAdpt::GetOutput // @@ -1372,8 +1356,8 @@ gint TMSCallIPAdpt::GetOutput(TMSAudioOutput& output) { TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_UNINITIALIZED_OBJECT); - if (iDnlinkInitialized && iIPDownlink) + gint status(TMS_RESULT_INVALID_STATE); + if (iIPDownlink && iDnlState != EIdle) { TRAP(status, iIPDownlink->GetAudioDeviceL(output)); } @@ -1399,162 +1383,11 @@ gint TMSCallIPAdpt::GetAvailableOutputsL(gint& /*count*/, CBufFlat*& /*outputsbuf*/) { + //TODO: return public & private return TMS_RESULT_FEATURE_NOT_SUPPORTED; } // ----------------------------------------------------------------------------- -// TMSCallIPAdpt::InitDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallIPAdpt::InitDTMF(TMSStreamType strmtype) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED); - - if (strmtype == TMS_STREAM_DOWNLINK) - { - delete iDTMFDnlinkPlayer; - iDTMFDnlinkPlayer = NULL; - TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, - KAudioDTMFString, KAudioPriorityDTMFString)); - } - else if (strmtype == TMS_STREAM_UPLINK) - { - delete iDTMFUplinkPlayer; - iDTMFUplinkPlayer = NULL; - TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, - KAudioDTMFString, KAudioPriorityDTMFString)); - } - - if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS) - { - TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL()); - } - - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// TMSCallIPAdpt::StartDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallIPAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED); - TmsMsgBufPckg dtmfpckg; - dtmfpckg().iStatus = status; - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - - if (strmtype == TMS_STREAM_DOWNLINK) - { - status = TMS_RESULT_UNINITIALIZED_OBJECT; - if (iDTMFDnlinkPlayer) - { - iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring); - status = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = status; - dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted; - } - else if (strmtype == TMS_STREAM_UPLINK) - { - status = TMS_RESULT_UNINITIALIZED_OBJECT; - if (iDTMFUplinkPlayer) - { - iDTMFUplinkPlayer->PlayDtmfTone(dtmfstring); - status = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = status; - dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted; - } - - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg); - } - - TRACE_PRN_IF_ERR(status); - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// TMSCallIPAdpt::StopDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallIPAdpt::StopDTMF(TMSStreamType streamtype) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_SUCCESS); - - if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer) - { - iDTMFDnlinkPlayer->Cancel(); - } - else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer) - { - //status = iDTMFUplinkPlayer->StopDtmfTone(); - iDTMFUplinkPlayer->Cancel(); - } - - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// TMSCallIPAdpt::ContinueDTMF -// -// ----------------------------------------------------------------------------- -// -gint TMSCallIPAdpt::ContinueDTMF(const gboolean /*sending*/) - { - return TMS_RESULT_FEATURE_NOT_SUPPORTED; - } - -//From DTMFTonePlayerObserver -// ----------------------------------------------------------------------------- -// TMSCallIPAdpt::DTMFInitCompleted -// -// ----------------------------------------------------------------------------- -// -void TMSCallIPAdpt::DTMFInitCompleted(gint /*status*/) - { - TRACE_PRN_FN_ENT; - // TODO: process error - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSCallIPAdpt::DTMFToneFinished -// -// ----------------------------------------------------------------------------- -// -void TMSCallIPAdpt::DTMFToneFinished(gint status) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_IF_ERR(status); - TmsMsgBufPckg dtmfpckg; - - // KErrUnderflow indicates end of DTMF playback. - if (status == KErrUnderflow /*|| status == KErrInUse*/) - { - status = TMS_RESULT_SUCCESS; - } - dtmfpckg().iStatus = TMSUtility::TMSResult(status); - dtmfpckg().iRequest = ECmdDTMFTonePlayFinished; - if (iDTMFNotifier) - { - iDTMFNotifier->SetDtmf(dtmfpckg); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- // TMSCallIPAdpt::DownlinkInitCompleted // From TMSIPDevSoundObserver // ----------------------------------------------------------------------------- @@ -1564,7 +1397,7 @@ TRACE_PRN_FN_ENT; if (status == TMS_RESULT_SUCCESS) { - iDnlinkInitialized = TRUE; + iDnlState = EInitialized; } NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status); TRACE_PRN_FN_EXT; @@ -1580,7 +1413,7 @@ TRACE_PRN_FN_ENT; if (status == TMS_RESULT_SUCCESS) { - iUplinkInitialized = TRUE; + iUplState = EInitialized; } NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status); TRACE_PRN_FN_EXT; @@ -1594,6 +1427,10 @@ void TMSCallIPAdpt::UplinkStarted(gint status) { TRACE_PRN_FN_ENT; + if (status == TMS_RESULT_SUCCESS) + { + iUplState = EActivated; + } NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status); TRACE_PRN_FN_EXT; } @@ -1606,6 +1443,10 @@ void TMSCallIPAdpt::DownlinkStarted(gint status) { TRACE_PRN_FN_ENT; + if (status == TMS_RESULT_SUCCESS) + { + iDnlState = EActivated; + } NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status); TRACE_PRN_FN_EXT; } @@ -1630,4 +1471,3 @@ } } -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscallsession.cpp --- a/mmserv/tms/tmscallserver/src/tmscallsession.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscallsession.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -225,14 +225,8 @@ case TMS_ROUTING_AVAILABLE_OUTPUT_GET: HandleRoutingGetAvailableOutputsL(aMessage); break; - case TMS_DTMF_START: - HandleDTMFStart(aMessage); - break; - case TMS_DTMF_STOP: - HandleDTMFStop(aMessage); - break; - case TMS_DTMF_CONTINUE: - HandleDTMFContinue(aMessage); + case TMS_GET_ACTIVE_CALL_PARAMS: + HandleGetActiveCallL(aMessage); break; default: User::Leave(TMS_RESULT_ILLEGAL_OPERATION); @@ -1113,68 +1107,24 @@ CleanupStack::PopAndDestroy(outputbuf); } aMessage.Complete(status); - } - -void TMSCallSession::HandleDTMFStart(const RMessage2& aMessage) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_DOES_NOT_EXIST); - - if (iCallAdpt) - { - TMSStreamType strmtype; - gint len = 0; - strmtype = (TMSStreamType) aMessage.Int0(); - len = aMessage.GetDesLength(1); - HBufC* tone(NULL); - if (len > 0) - { - TRAP(status,tone = HBufC::NewL(len)); - if (status == KErrNone) - { - TPtr ptr = tone->Des(); - status = aMessage.Read(1, ptr); - TRACE_PRN_N(ptr); - if (status == KErrNone) - { - status = iCallAdpt->StartDTMF(strmtype, ptr); - } - } - delete tone; - tone = NULL; - } - } - - aMessage.Complete(status); TRACE_PRN_FN_EXT; } -void TMSCallSession::HandleDTMFStop(const RMessage2& aMessage) +void TMSCallSession::HandleGetActiveCallL(const RMessage2& aMessage) { - TRACE_PRN_FN_ENT; gint status(TMS_RESULT_DOES_NOT_EXIST); + TMSCallType callType; + gboolean active(FALSE); if (iCallAdpt) { - TMSStreamType streamtype; - streamtype = (TMSStreamType) aMessage.Int0(); - status = iCallAdpt->StopDTMF(streamtype); + iCallAdpt->GetCallType(callType); + active = iCallAdpt->IsUplActivated(); + TmsCallMsgBufPckg p; + p().iInt = (gint) callType; + p().iBool = active; + aMessage.WriteL(0, p); + status = TMS_RESULT_SUCCESS; } aMessage.Complete(status); - TRACE_PRN_FN_EXT; } -void TMSCallSession::HandleDTMFContinue(const RMessage2& aMessage) - { - TRACE_PRN_FN_ENT; - gint status(TMS_RESULT_DOES_NOT_EXIST); - if (iCallAdpt) - { - TBool continuesending; - continuesending = (TBool) aMessage.Int0(); - status = iCallAdpt->ContinueDTMF(continuesending); - } - aMessage.Complete(status); - TRACE_PRN_FN_EXT; - } - -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscsdevsound.cpp --- a/mmserv/tms/tmscallserver/src/tmscsdevsound.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscsdevsound.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -68,11 +68,7 @@ iPreference = KAudioPrefCSCallDownlink; } - if (iInitRetryTime != 0) - { - iTimer = TMSTimer::NewL(); - } - + iTimer = TMSTimer::NewL(); InitializeL(); TRACE_PRN_FN_EXT; } @@ -183,6 +179,7 @@ CancelTimer(); NotifyEvent(aError); } + TRACE_PRN_IF_ERR(aError); TRACE_PRN_FN_EXT; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscsdownlink.cpp --- a/mmserv/tms/tmscallserver/src/tmscsdownlink.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscsdownlink.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -141,7 +141,8 @@ TRACE_PRN_N1(_L("TMSCSDownlink::PlayError[%d]"), aError); // We don't react to devsound errors unless we are activating. - if (iActivationOngoing && aError == KErrAccessDenied) + if (iActivationOngoing && (aError == KErrAccessDenied || + aError == KErrInUse)) { if (iStartRetryTime != 0) { diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmscsuplink.cpp --- a/mmserv/tms/tmscallserver/src/tmscsuplink.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmscsuplink.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -145,7 +145,8 @@ TRACE_PRN_N1(_L("TMSCSUplink::RecordError[%d]"), aError); // We dont react to devsound messages unless we are activating. - if (iActivationOngoing && aError == KErrAccessDenied) + if (iActivationOngoing && (aError == KErrAccessDenied || + aError == KErrInUse)) { if (iStartRetryTime != 0) { diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmsdtmfnotifier.cpp --- a/mmserv/tms/tmscallserver/src/tmsdtmfnotifier.cpp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -// INCLUDE FILES -#include "tmsdtmfnotifier.h" -#include "tmsclientserver.h" -#include "tmsutility.h" - -using namespace TMS; - -// CONSTANTS -_LIT_SECURITY_POLICY_PASS(KTMSServerReadPolicy); -_LIT_SECURITY_POLICY_C1(KTMSServerWritePolicy, ECapabilityWriteUserData); - -// ----------------------------------------------------------------------------- -// TMSDtmfNotifier::TMSDtmfNotifier -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -TMSDtmfNotifier::TMSDtmfNotifier() - { - } - -// ----------------------------------------------------------------------------- -// TMSDtmfNotifier::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void TMSDtmfNotifier::ConstructL() - { - TRACE_PRN_FN_ENT; - gint err = RProperty::Define(EDtmfPs, RProperty::EByteArray, - KTMSServerReadPolicy, KTMSServerWritePolicy); - TRACE_PRN_N1(_L("DtmfSetting::ConstructL err:%d"), err); - - if (err != KErrAlreadyExists) - { - User::LeaveIfError(err); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSDtmfNotifier::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -TMSDtmfNotifier* TMSDtmfNotifier::NewL() - { - TMSDtmfNotifier* self = new (ELeave) TMSDtmfNotifier(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// Destructor -TMSDtmfNotifier::~TMSDtmfNotifier() - { - TRACE_PRN_FN_ENT; - gint err = RProperty::Delete(KTMSPropertyCategory, EDtmfPs); - TRACE_PRN_N1(_L("DtmfSetting::~TMSDtmfNotifier err:%d"), err); - TRACE_PRN_FN_ENT; - } - -// ----------------------------------------------------------------------------- -// TMSDtmfNotifier::SetDtmf -// ----------------------------------------------------------------------------- -// -void TMSDtmfNotifier::SetDtmf(TmsMsgBufPckg dtmfpckg, gboolean publish) - { - TRACE_PRN_FN_ENT; - if (publish) - { - gint err = RProperty::Set(KTMSPropertyCategory, EDtmfPs, dtmfpckg); - TRACE_PRN_N1(_L("DtmfSetting::SetDtmf err:%d"), err); - } - TRACE_PRN_FN_EXT; - } - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmsdtmfprovider.cpp --- a/mmserv/tms/tmscallserver/src/tmsdtmfprovider.cpp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,305 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#include -#include -#include "tmsdtmfprovider.h" -#include "tmsdtmfobserver.h" -#include "tmsutility.h" -#include "tmseteldtmfmonitor.h" -#include "tmseteldtmfstopmonitor.h" - -using namespace TMS; - -TMSDTMFProvider* TMSDTMFProvider::NewL() - { - TRACE_PRN_FN_ENT; - TMSDTMFProvider* self = new (ELeave) TMSDTMFProvider(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor of the object. -// ----------------------------------------------------------------------------- -// -TMSDTMFProvider::~TMSDTMFProvider() - { - TRACE_PRN_FN_ENT; - Cancel(); - iObservers.Close(); - delete iMonitor; - delete iStopMonitor; - - iMmCustom.Close(); - iPhone.Close(); - iServer.UnloadPhoneModule(iTsyname); - iServer.Close(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Constructs the requester. -// ----------------------------------------------------------------------------- -// -TMSDTMFProvider::TMSDTMFProvider() : - CActive(EPriorityStandard) - { - TRACE_PRN_FN_ENT; - CActiveScheduler::Add(this); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Constructs the requester in the second phase. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::ConstructL() - { - TRACE_PRN_FN_ENT; - - CleanupClosePushL(iServer); - User::LeaveIfError(iServer.Connect()); - - TRACE_PRN_N(_L("**TMS ETel iServer.Connect")); - - iServer.GetTsyName(0, iTsyname); - - //Load in the phone device driver - User::LeaveIfError(iServer.LoadPhoneModule(iTsyname)); - - TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule")); - - //Find the number of phones available from the tel server - gint numberPhones; - User::LeaveIfError(iServer.EnumeratePhones(numberPhones)); - - TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones")); - - //Check there are available phones - if (numberPhones < 1) - { - User::Leave(KErrNotFound); - } - - //Get info about the first available phone - RTelServer::TPhoneInfo info; - User::LeaveIfError(iServer.GetPhoneInfo(0, info)); - - TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo")); - - CleanupClosePushL(iPhone); - User::LeaveIfError(iPhone.Open(iServer, info.iName)); - - TRACE_PRN_N(_L("**TMS ETel iPhone.Open")); - - RMobilePhone::TLineInfo lineInfo; - User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo)); - - TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo")); - - gint errorCode = iMmCustom.Open(iPhone); - - if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle()) - { - User::Leave(KErrArgument); - } - iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom); - iMonitor->StartMonitoring(); - iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone); - // iStopMonitor->StartMonitoring(); - - CleanupStack::Pop(2);//telserver,phone - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Notifies observers about a DTMF event -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::NotifyDTMFEvent( - const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError, - const TChar aTone) - { - TRACE_PRN_FN_ENT; - for (gint i = 0; i < iObservers.Count(); i++) - { - TMSDTMFObserver* obs = iObservers[i]; - if (obs) - { - iObservers[i]->HandleDTMFEvent(aEvent, aError, aTone); - } - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Cancel DTMF string sending -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::CancelDtmfStringSending() - { - TRACE_PRN_FN_ENT; - gint ret(KErrAlreadyExists); - if (IsActive()) - { - Cancel(); - ret = KErrNone; - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Starts DTMF string sending -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::StartDtmfTone(const TChar aTone) - { - TRACE_PRN_FN_ENT; - gint ret(KErrAlreadyExists); - if (!IsActive()) - { - ret = iPhone.StartDTMFTone(aTone); - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Stop DTMF tone -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::StopDtmfTone() - { - TRACE_PRN_FN_ENT; - gint ret(KErrAlreadyExists); - if (!IsActive()) - { - ret = iPhone.StopDTMFTone(); - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Send DTMF string -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::SendDtmfToneString(const TDesC& aString) - { - TRACE_PRN_FN_ENT; - gint ret = KErrInUse; - if (!IsActive()) - { - iStatus = KRequestPending; - iPhone.SendDTMFTones(iStatus, aString); - SetActive(); - ret = KErrNone; - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// Continue DTMF string sending -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::ContinueDtmfStringSending(const gboolean aContinue) - { - TRACE_PRN_FN_ENT; - gint status = iPhone.ContinueDTMFStringSending(aContinue); - TRACE_PRN_FN_EXT; - return status; - } - -// ----------------------------------------------------------------------------- -// Adds observer. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::AddObserver(const TMSDTMFObserver& aObserver) - { - TRACE_PRN_FN_ENT; - if (iObservers.Find(&aObserver) == KErrNotFound) - { - iObservers.Append(&aObserver); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Removes given observer. -// ----------------------------------------------------------------------------- -// -gint TMSDTMFProvider::RemoveObserver(const TMSDTMFObserver& aObserver) - { - TRACE_PRN_FN_ENT; - gint ret = KErrNotFound; - gint found = iObservers.Find(&aObserver); - if (found != KErrNotFound) - { - iObservers.Remove(found); - ret = KErrNone; - } - TRACE_PRN_FN_EXT; - return ret; - } - -// ----------------------------------------------------------------------------- -// From CActive. -// Handles request completion. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::RunL() - { - TRACE_PRN_FN_ENT; - if (iStatus == KErrNone) - { - TMSDTMFObserver::TCCPDtmfEvent event = - TMSDTMFObserver::ECCPDtmfStringSendingCompleted; - NotifyDTMFEvent(event, KErrNone, NULL); - } - else - { - gint error = iStatus.Int(); - if (error != KErrCancel) - { - TMSDTMFObserver::TCCPDtmfEvent event = - TMSDTMFObserver::ECCPDtmfStringSendingCompleted; - NotifyDTMFEvent(event, error, NULL); - } - // Cancel is not notified - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// From CActive -// Canceling functionality. -// ----------------------------------------------------------------------------- -// -void TMSDTMFProvider::DoCancel() - { - TRACE_PRN_FN_ENT; - iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones); - TRACE_PRN_FN_EXT; - } - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmsdtmftoneplayer.cpp --- a/mmserv/tms/tmscallserver/src/tmsdtmftoneplayer.cpp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,216 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -// INCLUDE FILES -#include "tmsutility.h" -#include "tmsdtmftoneplayer.h" - -// CONSTANTS -const gint KBufSize = 10; -const gint KMaxVolumeLevel = 10; - -_LIT(KPhoneTone_Asterisk, "*+w"); - -//from voip -const guint KDTMFToneLengthOn = 250000; -const guint KDTMFToneLengthOff = 50000; -const guint KDTMFToneLengthPause = 2500000; - -using namespace TMS; - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -TMSAudioDtmfTonePlayer* TMSAudioDtmfTonePlayer::NewL( - TMSDTMFTonePlayerObserver& obsrvr, guint audioPreference, - guint audioPriority) - { - TMSAudioDtmfTonePlayer* self = new (ELeave) TMSAudioDtmfTonePlayer(obsrvr, - audioPreference, audioPriority); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -//Destructor -TMSAudioDtmfTonePlayer::~TMSAudioDtmfTonePlayer() - { - TRACE_PRN_FN_ENT; - Cancel(); - delete iDTMFPlayer; - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer( - TMSDTMFTonePlayerObserver& obsrvr, guint audioPreference, - guint audioPriority) : - iObserver(obsrvr), - iPref(audioPreference), - iPrior(audioPriority) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::ConstructL() - { - TRACE_PRN_FN_ENT; - - TMMFPrioritySettings dtmfClickPlayerPrioritySettings; - iDTMFPlayer = CMMFDevSound::NewL(); - iDTMFPlayer->InitializeL(*this, EMMFStateTonePlaying); - - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::SetVolume -// Sets the volume level that is used when the dtmf tone is played. -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::SetVolume(gint volume) - { - TRACE_PRN_FN_ENT; - gint vol = ConvertVolumeLevel(volume); - - if (vol != iVolume) - { - iVolume = vol; - iDTMFPlayer->SetVolume(iVolume); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::PlayDtmfTone -// Searches the given DTMF tone from iToneArray and calls PlayCurrentTone -// member function. -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::PlayDtmfTone(TDes& tone) - { - TRACE_PRN_FN_ENT; - Cancel(); - - // DTMF signaling. - if (iDTMFPlayer) - { - TBuf key; - key.Append(tone); - TRAP_IGNORE(iDTMFPlayer->PlayDTMFStringL(tone)); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::Cancel -// Cancels the currently playing tone. -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::Cancel() - { - TRACE_PRN_FN_ENT; - iDTMFPlayer->Stop(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::Normalize -// Lowers case for chars and if its '*','+', or 'w' sets it to asterisk -// char ('*'). -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::Normalize(TChar& tone) - { - TRACE_PRN_FN_ENT; - tone.LowerCase(); - TPtrC ast(KPhoneTone_Asterisk); - - if (ast.Locate(tone) != KErrNotFound) - { - tone = ast[0]; - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::InitializeComplete -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::InitializeComplete(TInt aError) - { - TRACE_PRN_FN_ENT; - - if (aError == KErrNone) - { - TMMFPrioritySettings dtmfPlayerSettings; - dtmfPlayerSettings.iPref = iPref; - dtmfPlayerSettings.iPriority = iPrior; - dtmfPlayerSettings.iState = EMMFStateTonePlaying; - iDTMFPlayer->SetPrioritySettings(dtmfPlayerSettings); - - TTimeIntervalMicroSeconds32 length(KDTMFToneLengthOn); - TTimeIntervalMicroSeconds32 pause(KDTMFToneLengthOff); - TTimeIntervalMicroSeconds32 zero(KDTMFToneLengthPause); - iDTMFPlayer->SetDTMFLengths(length, pause, zero); - iDTMFPlayer->SetVolume(iDTMFPlayer->MaxVolume()); - } - - iObserver.DTMFInitCompleted(aError); - - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::ToneFinished -// ----------------------------------------------------------------------------- -// -void TMSAudioDtmfTonePlayer::ToneFinished(TInt aError) - { - TRACE_PRN_FN_ENT; - iObserver.DTMFToneFinished(aError); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSAudioDtmfTonePlayer::ConvertVolumeLevel -// ----------------------------------------------------------------------------- -// -gint TMSAudioDtmfTonePlayer::ConvertVolumeLevel(gint volume) - { - TRACE_PRN_FN_ENT; - gint result = iDTMFPlayer->MaxVolume() * volume / KMaxVolumeLevel; - TRACE_PRN_FN_EXT; - return result; - } - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmseteldtmfmonitor.cpp --- a/mmserv/tms/tmscallserver/src/tmseteldtmfmonitor.cpp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#include -#include -#include "tmsdtmfprovider.h" -#include "tmsdtmfobserver.h" -#include "tmseteldtmfmonitor.h" -#include "tmsutility.h" - -using namespace TMS; - -// ----------------------------------------------------------------------------- -// TMSEtelDtmfMonitor::NewL. -// ----------------------------------------------------------------------------- -// -TMSEtelDtmfMonitor* TMSEtelDtmfMonitor::NewL(TMSDTMFProvider& aObserver, - RMmCustomAPI& aMmCustom) - { - TRACE_PRN_FN_ENT; - TMSEtelDtmfMonitor* self = new (ELeave) TMSEtelDtmfMonitor(aObserver, - aMmCustom); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// Constructs the monitor. -// ----------------------------------------------------------------------------- -// -TMSEtelDtmfMonitor::TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver, - RMmCustomAPI& aMmCustom) : - CActive(EPriorityStandard), - iObserver(aObserver), - iMmCustom(aMmCustom) - { - TRACE_PRN_FN_ENT; - CActiveScheduler::Add(this); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Destructs the object by canceling first ongoing monitoring. -// ----------------------------------------------------------------------------- -// -TMSEtelDtmfMonitor::~TMSEtelDtmfMonitor() - { - TRACE_PRN_FN_ENT; - Cancel(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Starts the monitor. -// ----------------------------------------------------------------------------- -// -void TMSEtelDtmfMonitor::StartMonitoring() - { - TRACE_PRN_FN_ENT; - if (!IsActive()) - { - iStatus = KRequestPending; - iMmCustom.NotifyDtmfEvent(iStatus, iEventData); - SetActive(); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// From CActive. -// Handles line status change notifying. -// ----------------------------------------------------------------------------- -// -void TMSEtelDtmfMonitor::RunL() - { - TRACE_PRN_FN_ENT; - gint err = iStatus.Int(); - TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: status:%d"), err); - - if (err == KErrNone) - { - TMSDTMFObserver::TCCPDtmfEvent event; - if (iEventData.iEvent == RMmCustomAPI::EDtmfStart - && iEventData.iType == RMmCustomAPI::EDtmfManual) - { - event = TMSDTMFObserver::ECCPDtmfManualStart; - } - else if (iEventData.iEvent == RMmCustomAPI::EDtmfStart - && iEventData.iType == RMmCustomAPI::EDtmfSequence) - { - event = TMSDTMFObserver::ECCPDtmfSequenceStart; - } - else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop - && iEventData.iType == RMmCustomAPI::EDtmfManual) - { - event = TMSDTMFObserver::ECCPDtmfManualStop; - } - else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop - && iEventData.iType == RMmCustomAPI::EDtmfSequence) - { - event = TMSDTMFObserver::ECCPDtmfSequenceStop; - } - else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort - && iEventData.iType == RMmCustomAPI::EDtmfManual) - { - event = TMSDTMFObserver::ECCPDtmfManualAbort; - } - else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort - && iEventData.iType == RMmCustomAPI::EDtmfSequence) - { - event = TMSDTMFObserver::ECCPDtmfSequenceAbort; - } - else - { - // Refresh and return (no observer notfiying). - TRACE_PRN_N2(_L("**TMS TMSEtelDtmfMonitor::RunL: Unknown event \ - = %¨d, type = %d"), iEventData.iEvent,iEventData.iType); - StartMonitoring(); - return; - } - - iObserver.NotifyDTMFEvent(event, err, iEventData.iTone); - } - else - { - TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: Error \ - from DTMF: %d"),err); - } - - // Continue if not in offline mode - if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel - && err != KErrNotSupported) - { - StartMonitoring(); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// From CActive -// Canceling functionality. -// ----------------------------------------------------------------------------- -// -void TMSEtelDtmfMonitor::DoCancel() - { - TRACE_PRN_FN_ENT; - iMmCustom.CancelAsyncRequest(ECustomNotifyDtmfEventIPC); - TRACE_PRN_FN_EXT; - } - -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmseteldtmfstopmonitor.cpp --- a/mmserv/tms/tmscallserver/src/tmseteldtmfstopmonitor.cpp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#include -#include "tmsutility.h" -#include "tmsdtmfobserver.h" -#include "tmsdtmfprovider.h" -#include "tmseteldtmfstopmonitor.h" - -using namespace TMS; - -// ----------------------------------------------------------------------------- -// TMSEtelDtmfStopMonitor::NewL. -// ----------------------------------------------------------------------------- -// -TMSEtelDtmfStopMonitor* TMSEtelDtmfStopMonitor::NewL(TMSDTMFProvider& aObserver, - RMobilePhone& aPhone) - { - TRACE_PRN_FN_EXT; - TMSEtelDtmfStopMonitor* self = new (ELeave) TMSEtelDtmfStopMonitor( - aObserver, aPhone); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// Constructs the monitor. -// ----------------------------------------------------------------------------- -// -TMSEtelDtmfStopMonitor::TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver, - RMobilePhone& aPhone) : - CActive(EPriorityStandard), - iObserver(aObserver), - iPhone(aPhone) - { - TRACE_PRN_FN_ENT; - CActiveScheduler::Add(this); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Destructs the object by canceling first ongoing monitoring. -// ----------------------------------------------------------------------------- -// -TMSEtelDtmfStopMonitor::~TMSEtelDtmfStopMonitor() - { - TRACE_PRN_FN_ENT; - Cancel(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// Starts the monitor. -// ----------------------------------------------------------------------------- -// -void TMSEtelDtmfStopMonitor::StartMonitoring() - { - TRACE_PRN_FN_ENT; - if (!IsActive()) - { - iStatus = KRequestPending; - iPhone.NotifyStopInDTMFString(iStatus); - SetActive(); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// From CActive. -// Handles line status change notifying. -// ----------------------------------------------------------------------------- -// -void TMSEtelDtmfStopMonitor::RunL() - { - TRACE_PRN_FN_ENT; - gint err = iStatus.Int(); - TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: status: %d"), err); - - if (err != KErrCancel && err != KErrServerTerminated) - { - TChar tone = NULL; - TMSDTMFObserver::TCCPDtmfEvent event = - TMSDTMFObserver::ECCPDtmfStopInDtmfString; - iObserver.NotifyDTMFEvent(event, err, tone); - } - else - { - TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: Error \ - from RMobilePhone: %d"),iStatus.Int()); - } - - // Continue if not in offline mode - if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel - && err != KErrNotSupported) - { - StartMonitoring(); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// From CActive -// Canceling functionality. -// ----------------------------------------------------------------------------- -// -void TMSEtelDtmfStopMonitor::DoCancel() - { - TRACE_PRN_FN_ENT; - iPhone.CancelAsyncRequest(EMobilePhoneNotifyStopInDTMFString); - TRACE_PRN_FN_EXT; - } - -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp --- a/mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -112,11 +112,7 @@ { TRAP(err, iDevSound->PlayInitL()); TRACE_PRN_IF_ERR(err); - if (err != TMS_RESULT_SUCCESS) - { - iStatus = EReady; - iObserver.DownlinkStarted(err); - } + iObserver.DownlinkStarted(err); } TRACE_PRN_FN_EXT; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp --- a/mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -112,12 +112,7 @@ { TRAP(err, iDevSound->RecordInitL()); TRACE_PRN_IF_ERR(err); - - if (err != TMS_RESULT_SUCCESS) - { - iStatus = EReady; - iObserver.UplinkStarted(err); - } + iObserver.UplinkStarted(err); } TRACE_PRN_FN_EXT; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmscallserver/src/tmsyncvol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmscallserver/src/tmsyncvol.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +// INCLUDE FILES +#include "tmssyncvol.h" +#include "tmsclientserver.h" +#include "tmsutility.h" + +using namespace TMS; + +// CONSTANTS +_LIT_SECURITY_POLICY_PASS(KTMSServerReadPolicy); +_LIT_SECURITY_POLICY_C1(KTMSServerWritePolicy, ECapabilityWriteUserData); + +// ----------------------------------------------------------------------------- +// TMSSyncVol::TMSSyncVol +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +TMSSyncVol::TMSSyncVol() + { + } + +// ----------------------------------------------------------------------------- +// TMSSyncVol::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void TMSSyncVol::ConstructL() + { + TRACE_PRN_FN_ENT; + TInt err = RProperty::Define(ESyncVolume, RProperty::EInt, + KTMSServerReadPolicy, KTMSServerWritePolicy); + TRACE_PRN_N1(_L("TMSSyncVol::ConstructL err:%d"),err); + + if (err != KErrAlreadyExists) + { + User::LeaveIfError(err); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSSyncVol::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +TMSSyncVol* TMSSyncVol::NewL() + { + TMSSyncVol* self = new (ELeave) TMSSyncVol(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// Destructor +TMSSyncVol::~TMSSyncVol() + { + TRACE_PRN_FN_ENT; + TInt err = RProperty::Delete(KTMSPropertyCategory, ESyncVolume); + TRACE_PRN_N1(_L("TMSSyncVol::~TMSSyncVol err:%d"),err); + TRACE_PRN_FN_ENT; + } + +// ----------------------------------------------------------------------------- +// TMSSyncVol::SetSyncVol +// ----------------------------------------------------------------------------- +// +void TMSSyncVol::SetSyncVol(TBool syncvol) + { + TRACE_PRN_FN_ENT; + // TInt err(KErrNone); + if (syncvol) + { + /*err =*/RProperty::Set(KTMSPropertyCategory, ESyncVolume, syncvol); + } + + //TRACE_PRN_N1(_L("TMSSyncVol::SetSyncVol err:%d"),err); + TRACE_PRN_FN_EXT; + } + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsfactory/src/tmsfactoryimpl.cpp --- a/mmserv/tms/tmsfactory/src/tmsfactoryimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsfactory/src/tmsfactoryimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -25,7 +25,6 @@ #include "tmsringtoneimpl.h" #include "tmsdtmfimpl.h" #include "tmsinbandtoneimpl.h" - #include "tmsutility.h" #include "tmsproxy.h" #include "tmsfactoryimpl.h" diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/bwins/tmsimpl.def --- a/mmserv/tms/tmsimpl/bwins/tmsimpl.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/bwins/tmsimpl.def Wed Aug 18 10:17:22 2010 +0300 @@ -1,23 +1,23 @@ EXPORTS ?Create@TMSEffectImpl@TMS@@SAHHAAPAVTMSEffect@2@@Z @ 1 NONAME ; int TMS::TMSEffectImpl::Create(int, class TMS::TMSEffect * &) - ?Create@TMSDTMFImpl@TMS@@SAHHAAPAVTMSDTMF@2@@Z @ 2 NONAME ; int TMS::TMSDTMFImpl::Create(int, class TMS::TMSDTMF * &) - ?Delete@TMSDTMFImpl@TMS@@SAHAAPAVTMSDTMF@2@@Z @ 3 NONAME ; int TMS::TMSDTMFImpl::Delete(class TMS::TMSDTMF * &) - ?Create@TMSSourceImpl@TMS@@SAHHAAPAVTMSSource@2@@Z @ 4 NONAME ; int TMS::TMSSourceImpl::Create(int, class TMS::TMSSource * &) - ?Delete@TMSRingToneImpl@TMS@@SAHAAPAVTMSRingTone@2@@Z @ 5 NONAME ; int TMS::TMSRingToneImpl::Delete(class TMS::TMSRingTone * &) - ?Create@TMSRingToneImpl@TMS@@SAHAAPAVTMSRingTone@2@@Z @ 6 NONAME ; int TMS::TMSRingToneImpl::Create(class TMS::TMSRingTone * &) - ?Delete@TMSFormatImpl@TMS@@SAHAAPAVTMSFormat@2@@Z @ 7 NONAME ; int TMS::TMSFormatImpl::Delete(class TMS::TMSFormat * &) - ?Delete@TMSCallImpl@TMS@@SAHAAPAVTMSCall@2@@Z @ 8 NONAME ; int TMS::TMSCallImpl::Delete(class TMS::TMSCall * &) - ?Delete@TMSSinkImpl@TMS@@SAHAAPAVTMSSink@2@@Z @ 9 NONAME ; int TMS::TMSSinkImpl::Delete(class TMS::TMSSink * &) - ?Delete@TMSBufferImpl@TMS@@SAHAAPAVTMSBuffer@2@@Z @ 10 NONAME ; int TMS::TMSBufferImpl::Delete(class TMS::TMSBuffer * &) - ?Delete@TMSSourceImpl@TMS@@SAHAAPAVTMSSource@2@@Z @ 11 NONAME ; int TMS::TMSSourceImpl::Delete(class TMS::TMSSource * &) - ?Delete@TMSEffectImpl@TMS@@SAHAAPAVTMSEffect@2@@Z @ 12 NONAME ; int TMS::TMSEffectImpl::Delete(class TMS::TMSEffect * &) - ?Create@TMSBufferImpl@TMS@@SAHHIAAPAVTMSBuffer@2@@Z @ 13 NONAME ; int TMS::TMSBufferImpl::Create(int, unsigned int, class TMS::TMSBuffer * &) - ?Create@TMSCallImpl@TMS@@SAHHAAPAVTMSCall@2@I@Z @ 14 NONAME ; int TMS::TMSCallImpl::Create(int, class TMS::TMSCall * &, unsigned int) - ?Delete@TMSGlobalRoutingImpl@TMS@@SAHAAPAVTMSGlobalRouting@2@@Z @ 15 NONAME ; int TMS::TMSGlobalRoutingImpl::Delete(class TMS::TMSGlobalRouting * &) - ?Create@TMSRingToneImpl@TMS@@SAHAAPAVTMSRingTone@2@AAVRWindow@@H@Z @ 16 NONAME ; int TMS::TMSRingToneImpl::Create(class TMS::TMSRingTone * &, class RWindow &, int) - ?Delete@TMSInbandToneImpl@TMS@@SAHAAPAVTMSInbandTone@2@@Z @ 17 NONAME ; int TMS::TMSInbandToneImpl::Delete(class TMS::TMSInbandTone * &) - ?Create@TMSSinkImpl@TMS@@SAHHAAPAVTMSSink@2@@Z @ 18 NONAME ; int TMS::TMSSinkImpl::Create(int, class TMS::TMSSink * &) - ?Create@TMSInbandToneImpl@TMS@@SAHAAPAVTMSInbandTone@2@@Z @ 19 NONAME ; int TMS::TMSInbandToneImpl::Create(class TMS::TMSInbandTone * &) - ?Create@TMSFormatImpl@TMS@@SAHHAAPAVTMSFormat@2@@Z @ 20 NONAME ; int TMS::TMSFormatImpl::Create(int, class TMS::TMSFormat * &) - ?Create@TMSGlobalRoutingImpl@TMS@@SAHAAPAVTMSGlobalRouting@2@@Z @ 21 NONAME ; int TMS::TMSGlobalRoutingImpl::Create(class TMS::TMSGlobalRouting * &) + ?Create@TMSSourceImpl@TMS@@SAHHAAPAVTMSSource@2@@Z @ 2 NONAME ; int TMS::TMSSourceImpl::Create(int, class TMS::TMSSource * &) + ?Delete@TMSRingToneImpl@TMS@@SAHAAPAVTMSRingTone@2@@Z @ 3 NONAME ; int TMS::TMSRingToneImpl::Delete(class TMS::TMSRingTone * &) + ?Create@TMSRingToneImpl@TMS@@SAHAAPAVTMSRingTone@2@@Z @ 4 NONAME ; int TMS::TMSRingToneImpl::Create(class TMS::TMSRingTone * &) + ?Delete@TMSFormatImpl@TMS@@SAHAAPAVTMSFormat@2@@Z @ 5 NONAME ; int TMS::TMSFormatImpl::Delete(class TMS::TMSFormat * &) + ?Delete@TMSCallImpl@TMS@@SAHAAPAVTMSCall@2@@Z @ 6 NONAME ; int TMS::TMSCallImpl::Delete(class TMS::TMSCall * &) + ?Delete@TMSSinkImpl@TMS@@SAHAAPAVTMSSink@2@@Z @ 7 NONAME ; int TMS::TMSSinkImpl::Delete(class TMS::TMSSink * &) + ?Delete@TMSBufferImpl@TMS@@SAHAAPAVTMSBuffer@2@@Z @ 8 NONAME ; int TMS::TMSBufferImpl::Delete(class TMS::TMSBuffer * &) + ?Delete@TMSSourceImpl@TMS@@SAHAAPAVTMSSource@2@@Z @ 9 NONAME ; int TMS::TMSSourceImpl::Delete(class TMS::TMSSource * &) + ?Delete@TMSEffectImpl@TMS@@SAHAAPAVTMSEffect@2@@Z @ 10 NONAME ; int TMS::TMSEffectImpl::Delete(class TMS::TMSEffect * &) + ?Create@TMSBufferImpl@TMS@@SAHHIAAPAVTMSBuffer@2@@Z @ 11 NONAME ; int TMS::TMSBufferImpl::Create(int, unsigned int, class TMS::TMSBuffer * &) + ?Create@TMSCallImpl@TMS@@SAHHAAPAVTMSCall@2@I@Z @ 12 NONAME ; int TMS::TMSCallImpl::Create(int, class TMS::TMSCall * &, unsigned int) + ?Delete@TMSGlobalRoutingImpl@TMS@@SAHAAPAVTMSGlobalRouting@2@@Z @ 13 NONAME ; int TMS::TMSGlobalRoutingImpl::Delete(class TMS::TMSGlobalRouting * &) + ?Create@TMSRingToneImpl@TMS@@SAHAAPAVTMSRingTone@2@AAVRWindow@@H@Z @ 14 NONAME ; int TMS::TMSRingToneImpl::Create(class TMS::TMSRingTone * &, class RWindow &, int) + ?Delete@TMSInbandToneImpl@TMS@@SAHAAPAVTMSInbandTone@2@@Z @ 15 NONAME ; int TMS::TMSInbandToneImpl::Delete(class TMS::TMSInbandTone * &) + ?Create@TMSSinkImpl@TMS@@SAHHAAPAVTMSSink@2@@Z @ 16 NONAME ; int TMS::TMSSinkImpl::Create(int, class TMS::TMSSink * &) + ?Create@TMSInbandToneImpl@TMS@@SAHAAPAVTMSInbandTone@2@@Z @ 17 NONAME ; int TMS::TMSInbandToneImpl::Create(class TMS::TMSInbandTone * &) + ?Create@TMSFormatImpl@TMS@@SAHHAAPAVTMSFormat@2@@Z @ 18 NONAME ; int TMS::TMSFormatImpl::Create(int, class TMS::TMSFormat * &) + ?Create@TMSGlobalRoutingImpl@TMS@@SAHAAPAVTMSGlobalRouting@2@@Z @ 19 NONAME ; int TMS::TMSGlobalRoutingImpl::Create(class TMS::TMSGlobalRouting * &) + ?Create@TMSDTMFImpl@TMS@@SAHHAAPAVTMSDTMF@2@@Z @ 20 NONAME ; int TMS::TMSDTMFImpl::Create(int, class TMS::TMSDTMF * &) + ?Delete@TMSDTMFImpl@TMS@@SAHAAPAVTMSDTMF@2@@Z @ 21 NONAME ; int TMS::TMSDTMFImpl::Delete(class TMS::TMSDTMF * &) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/group/tmsimpl.mmp --- a/mmserv/tms/tmsimpl/group/tmsimpl.mmp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/group/tmsimpl.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -96,6 +96,7 @@ LIBRARY tmsapi.lib LIBRARY tmscallproxy.lib LIBRARY tmsproxy.lib +LIBRARY tmsutility.lib LIBRARY libc.lib DEFFILE tmsimpl.def diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/inc/tmsdtmfbodyimpl.h --- a/mmserv/tms/tmsimpl/inc/tmsdtmfbodyimpl.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/inc/tmsdtmfbodyimpl.h Wed Aug 18 10:17:22 2010 +0300 @@ -33,10 +33,11 @@ class TMSDTMFBodyImpl : public TMSDTMFBody { public: - static gint Create(TMSStreamType streamtype, TMSDTMFBody*& bodyimpl); + static gint Create(TMSStreamType streamtype, TMSDTMF& parent, + TMSDTMFBody*& bodyimpl); virtual ~TMSDTMFBodyImpl(); - // From TMSDTMFBody begins + // From TMSDTMFBody virtual gint AddObserver(TMSDTMFObserver& obsrvr, gpointer user_data); virtual gint RemoveObserver(TMSDTMFObserver& obsrvr); virtual gint Start(); @@ -44,11 +45,9 @@ virtual gint SetTone(GString* string); virtual gint ContinueDTMFStringSending(gboolean sending); - void SetParent(TMSDTMF*& parent); - private: TMSDTMFBodyImpl(); - gint PostConstruct(); + gint PostConstruct(TMSStreamType stype, TMSDTMF& parent); private: TMSDTMFObserver* iObserver; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h --- a/mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h Wed Aug 18 10:17:22 2010 +0300 @@ -118,4 +118,3 @@ #endif // TMS_STREAM_BODY_IMPL_H -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmscallimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmscallimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmscallimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -36,11 +36,10 @@ gint TMSCallImpl::PostConstruct(TMSCallType ctype, guint /*ctxid*/) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); TMSCallBody* tmscallimplbody(NULL); - TRACE_PRN_FN_ENT; - switch (ctype) { case TMS_CALL_IP: @@ -65,10 +64,10 @@ EXPORT_C gint TMSCallImpl::Create(TMSCallType ctype, TMSCall*& tmscall, guint ctxid) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); TMSCallImpl *self = new TMSCallImpl(); - TRACE_PRN_FN_ENT; if (self) { ret = self->PostConstruct(ctype, ctxid); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmscscallbodyimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmscscallbodyimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmscscallbodyimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -66,7 +66,6 @@ { gint ret(TMS_RESULT_SUCCESS); TRACE_PRN_FN_ENT; - iSession = new TMSCallProxy(); TRACE_PRN_FN_ENT; @@ -106,9 +105,7 @@ gint TMSCSCallBodyImpl::GetCallContextId(guint& ctxid) { gint ret(TMS_RESULT_FEATURE_NOT_SUPPORTED); - TRACE_PRN_FN_ENT; ctxid = 0; - TRACE_PRN_FN_EXT; return ret; } @@ -138,14 +135,18 @@ } else { - //TODO: delete call only if no active sessions left if (iSession) { + //TODO: delete call only if no active sessions left iSession->DeleteCall(); iSession->Close(); delete iSession; iSession = NULL; } + else + { + ret = TMS_RESULT_UNINITIALIZED_OBJECT; + } } break; default: diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsdtmfbodyimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmsdtmfbodyimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsdtmfbodyimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -52,31 +52,30 @@ TRACE_PRN_FN_EXT; } -gint TMSDTMFBodyImpl::Create(TMSStreamType streamtype, TMSDTMFBody*& bodyimpl) +gint TMSDTMFBodyImpl::Create(TMSStreamType streamtype, TMSDTMF& parent, + TMSDTMFBody*& bodyimpl) { gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); TMSDTMFBodyImpl* self = new TMSDTMFBodyImpl(); if (self) { - ret = self->PostConstruct(); + ret = self->PostConstruct(streamtype, parent); if (ret != TMS_RESULT_SUCCESS) { delete self; self = NULL; } - else - { - self->iStreamType = streamtype; - } } bodyimpl = self; return ret; } -gint TMSDTMFBodyImpl::PostConstruct() +gint TMSDTMFBodyImpl::PostConstruct(TMSStreamType streamtype, TMSDTMF& parent) { gint ret(TMS_RESULT_SUCCESS); iClientId = 1; + iParent = &parent; + iStreamType = streamtype; iProxy = new TMSProxy(); if (!iProxy) { @@ -84,7 +83,11 @@ } else { - if (iProxy->Connect() != TMS_RESULT_SUCCESS) + if (iProxy->Connect() == TMS_RESULT_SUCCESS) + { + ret = iProxy->InitDTMFPlayer(iStreamType); + } + else { delete iProxy; iProxy = NULL; @@ -106,10 +109,6 @@ { ret = iProxy->SetMsgQueueNotifier(EMsgQueueDTMFType, iObserver, iParent, iClientId); - if (ret == TMS_RESULT_SUCCESS) - { - ret = iProxy->StartDTMFNotifier(); - } } else { @@ -130,7 +129,6 @@ { ret = iProxy->RemoveMsgQueueNotifier(EMsgQueueDTMFType, iObserver); iObserver = NULL; - iProxy->CancelDTMFNotifier(); } else { @@ -179,7 +177,6 @@ __ASSERT_ALWAYS(string, PANIC(TMS_RESULT_NULL_ARGUMENT)); gint ret(TMS_RESULT_SUCCESS); - if (iString) { if (iString->len) @@ -206,8 +203,3 @@ return ret; } -void TMSDTMFBodyImpl::SetParent(TMSDTMF*& parent) - { - iParent = parent; - } - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsdtmfimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmsdtmfimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsdtmfimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -21,10 +21,9 @@ using namespace TMS; -TMSDTMFImpl::TMSDTMFImpl(TMSStreamType streamtype) +TMSDTMFImpl::TMSDTMFImpl() { TRACE_PRN_FN_ENT; - iStreamType = streamtype; TRACE_PRN_FN_EXT; } @@ -34,12 +33,12 @@ TRACE_PRN_FN_EXT; } -gint TMSDTMFImpl::PostConstruct() +gint TMSDTMFImpl::PostConstruct(TMSStreamType streamtype) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); TMSDTMFBody* bodyimpl(NULL); - TRACE_PRN_FN_ENT; - ret = TMSDTMFBodyImpl::Create(iStreamType, bodyimpl); + ret = TMSDTMFBodyImpl::Create(streamtype, *this, bodyimpl); if (ret == TMS_RESULT_SUCCESS) { @@ -51,49 +50,32 @@ EXPORT_C gint TMSDTMFImpl::Create(TMSStreamType streamtype, TMSDTMF*& dtmf) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); - TMSDTMFImpl *self = new TMSDTMFImpl(streamtype); + TMSDTMFImpl *self = new TMSDTMFImpl(); - TRACE_PRN_FN_ENT; if (self) { - ret = self->PostConstruct(); + ret = self->PostConstruct(streamtype); if (ret != TMS_RESULT_SUCCESS) { delete self; self = NULL; } } - if (self && ret == TMS_RESULT_SUCCESS) - { - dtmf = self; - ret = self->SetParent(dtmf); - } + + dtmf = self; TRACE_PRN_FN_EXT; return ret; } EXPORT_C gint TMSDTMFImpl::Delete(TMSDTMF*& dtmf) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_SUCCESS); - TRACE_PRN_FN_ENT; - delete (static_cast(dtmf)); + delete (static_cast (dtmf)); dtmf = NULL; TRACE_PRN_FN_EXT; return ret; } -gint TMSDTMFImpl::SetParent(TMSDTMF*& parent) - { - gint ret(TMS_RESULT_SUCCESS); - if (this->iBody) - { - static_cast(this->iBody)->SetParent(parent); - } - else - { - ret = TMS_RESULT_UNINITIALIZED_OBJECT; - } - return ret; - } - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmseffectimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmseffectimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmseffectimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -61,19 +61,19 @@ switch (effecttype) { case TMS_EFFECT_VOLUME: - delete (static_cast(tmseffect)); + delete (static_cast (tmseffect)); tmseffect = NULL; break; case TMS_EFFECT_GAIN: - delete (static_cast(tmseffect)); + delete (static_cast (tmseffect)); tmseffect = NULL; break; case TMS_EFFECT_GLOBAL_VOL: - delete (static_cast(tmseffect)); + delete (static_cast (tmseffect)); tmseffect = NULL; break; case TMS_EFFECT_GLOBAL_GAIN: - delete (static_cast(tmseffect)); + delete (static_cast (tmseffect)); tmseffect = NULL; break; default: diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsg711impl.cpp --- a/mmserv/tms/tmsimpl/src/tmsg711impl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsg711impl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -43,7 +43,7 @@ if (ret == TMS_RESULT_SUCCESS) { this->iBody = bodyimpl; - this->iFormatBody = static_cast(bodyimpl); + this->iFormatBody = static_cast (bodyimpl); } TRACE_PRN_FN_EXT; return ret; @@ -52,7 +52,7 @@ gint TMSG711FormatImpl::Create(TMSFormat*& tmsformat) { gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); - TMSG711FormatImpl *self = new TMSG711FormatImpl(); + TMSG711FormatImpl* self = new TMSG711FormatImpl(); TRACE_PRN_FN_ENT; if (self) @@ -75,7 +75,7 @@ gint ret(TMS_RESULT_SUCCESS); if (this->iBody) { - static_cast(this->iBody)->SetProxy(context, + static_cast (this->iBody)->SetProxy(context, queuehandler); } else @@ -85,4 +85,3 @@ return ret; } -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsipcallbodyimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmsipcallbodyimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsipcallbodyimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -68,37 +68,38 @@ TRACE_PRN_FN_ENT; iSession = new TMSCallProxy(); - if (iSession) + TRACE_PRN_FN_ENT; + if (!iSession) + { + ret = TMS_RESULT_INSUFFICIENT_MEMORY; + } + RET_REASON_IF_ERR(ret); + + if (iSession->Connect() != TMS_RESULT_SUCCESS) { - if (iSession->Connect() != TMS_RESULT_SUCCESS) + delete iSession; + iSession = NULL; + ret = TMS_RESULT_FATAL_ERROR; + } + else + { + ret = iSession->CreateCall(TMS_CALL_IP); + if (ret != TMS_RESULT_SUCCESS && ret != TMS_RESULT_ALREADY_EXIST) { + iSession->Close(); delete iSession; iSession = NULL; ret = TMS_RESULT_FATAL_ERROR; } - else - { - ret = iSession->CreateCall(TMS_CALL_IP); - if (ret != TMS_RESULT_SUCCESS && ret != TMS_RESULT_ALREADY_EXIST) - { - iSession->Close(); - delete iSession; - ret = TMS_RESULT_FATAL_ERROR; - } - } } - else - { - ret = TMS_RESULT_INSUFFICIENT_MEMORY; - } + RET_REASON_IF_ERR(ret); TRACE_PRN_FN_EXT; return ret; } TMSCallType TMSIPCallBodyImpl::GetCallType() { - TMSCallType ctype(TMS_CALL_IP); - return ctype; + return TMS_CALL_IP; } gint TMSIPCallBodyImpl::GetCallContextId(guint& ctxid) @@ -127,7 +128,7 @@ ret = AddStreamToList(strm); } //TODO:Need longer term fix to not destory everything - //if more the one stream is trying to be created. + //if more than one stream is trying to be created. else if (ret == TMS_RESULT_ALREADY_EXIST) { break; @@ -193,9 +194,10 @@ if (itStrm) { + // Remove stream object from the vector. After removing, the iterator + // will point to the next item (if available); so, do NOT attempt + // deleting itStrm here! (Will result in KERN-EXEC) iStreamsVector.erase(itStrm); // Remove from array - // Don't delete itStrm as the iterator advanced to the next - // item on the list ret = TMSStreamImpl::Delete(strm); } TRACE_PRN_FN_EXT; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsringtonebodyimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmsringtonebodyimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsringtonebodyimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -81,18 +81,18 @@ gint ret(TMS_RESULT_SUCCESS); iClientId = 1; iProxy = new TMSProxy(); - if (!iProxy) { ret = TMS_RESULT_INSUFFICIENT_MEMORY; } - RET_REASON_IF_ERR(ret); - - if (iProxy->Connect() != TMS_RESULT_SUCCESS) + else { - delete iProxy; - iProxy = NULL; - ret = TMS_RESULT_FATAL_ERROR; + if (iProxy->Connect() != TMS_RESULT_SUCCESS) + { + delete iProxy; + iProxy = NULL; + ret = TMS_RESULT_FATAL_ERROR; + } } RET_REASON_IF_ERR(ret); return ret; @@ -223,7 +223,6 @@ return ret; } - void TMSRingToneBodyImpl::SetParent(TMSRingTone*& parent) { iParent = parent; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -49,11 +49,13 @@ iFormat(NULL), iStreamState(TMS_STREAM_UNINITIALIZED) { - //TMSStream::Construct(this); + TRACE_PRN_FN_ENT; + TRACE_PRN_FN_EXT; } TMSStreamBodyImpl::~TMSStreamBodyImpl() { + TRACE_PRN_FN_ENT; if (iMsgQHandler) { iMsgQHandler->Cancel(); @@ -71,6 +73,7 @@ iContext.CallProxy->DeleteStream(iContext.CallType, iContext.StreamType, iContext.StreamId); } + TRACE_PRN_FN_EXT; } gint TMSStreamBodyImpl::Create(TMSCallType callType, TMSStreamType stype, @@ -719,7 +722,7 @@ void* user_data) { TMSSignalEvent event = {}; //all elements initialized to zeros - event.reason = aError; + event.reason = TMSRESULT(aError); event.user_data = user_data; iStreamState = aEventType; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsimpl/src/tmsstreamimpl.cpp --- a/mmserv/tms/tmsimpl/src/tmsstreamimpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsimpl/src/tmsstreamimpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -36,21 +36,23 @@ gint TMSStreamImpl::PostConstruct(TMSCallType callType, TMSStreamType stype, TMSCallProxy* proxy) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); - TMSStreamBody* tmsstreamimplbody(NULL); - ret = TMSStreamBodyImpl::Create(callType, stype, proxy, *this, - tmsstreamimplbody); + TMSStreamBody* bodyimpl(NULL); + ret = TMSStreamBodyImpl::Create(callType, stype, proxy, *this, bodyimpl); if (ret == TMS_RESULT_SUCCESS) { - this->iBody = tmsstreamimplbody; + this->iBody = bodyimpl; } + TRACE_PRN_FN_EXT; return ret; } gint TMSStreamImpl::Create(TMSCallType callType, TMSStreamType stype, TMSCallProxy* proxy, TMSStream*& strm) { + TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); TMSStreamImpl *self = new TMSStreamImpl(); @@ -64,6 +66,7 @@ } } strm = self; + TRACE_PRN_FN_EXT; return ret; } @@ -71,7 +74,7 @@ { TRACE_PRN_FN_ENT; gint ret(TMS_RESULT_SUCCESS); - delete (static_cast(strm)); + delete (static_cast (strm)); strm = NULL; TRACE_PRN_FN_EXT; return ret; diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsproxy/bwins/tmsproxy.def --- a/mmserv/tms/tmsproxy/bwins/tmsproxy.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsproxy/bwins/tmsproxy.def Wed Aug 18 10:17:22 2010 +0300 @@ -1,39 +1,38 @@ EXPORTS ?RemoveMsgQueueNotifier@TMSProxy@TMS@@QAEHW4TMSMsgQueueNotifierType@2@PAX@Z @ 1 NONAME ; int TMS::TMSProxy::RemoveMsgQueueNotifier(enum TMS::TMSMsgQueueNotifierType, void *) - ?StartDTMFNotifier@TMSProxy@TMS@@QAEHXZ @ 2 NONAME ; int TMS::TMSProxy::StartDTMFNotifier(void) - ?GetMaxLevel@TMSProxy@TMS@@QAEHAAI@Z @ 3 NONAME ; int TMS::TMSProxy::GetMaxLevel(unsigned int &) - ?GetSupportedDecoders@TMSProxy@TMS@@QAEHAAV?$RArray@K@@AAH@Z @ 4 NONAME ; int TMS::TMSProxy::GetSupportedDecoders(class RArray &, int &) - ?Connect@TMSProxy@TMS@@QAEHXZ @ 5 NONAME ; int TMS::TMSProxy::Connect(void) - ?SetLevel@TMSProxy@TMS@@QAEHI@Z @ 6 NONAME ; int TMS::TMSProxy::SetLevel(unsigned int) - ?InitRT@TMSProxy@TMS@@QAEHHPAU_GString@@0@Z @ 7 NONAME ; int TMS::TMSProxy::InitRT(int, struct _GString *, struct _GString *) - ?GetGain@TMSProxy@TMS@@QAEHAAI@Z @ 8 NONAME ; int TMS::TMSProxy::GetGain(unsigned int &) - ?PlayRT@TMSProxy@TMS@@QAEHXZ @ 9 NONAME ; int TMS::TMSProxy::PlayRT(void) - ?StartInbandTone@TMSProxy@TMS@@QAEHH@Z @ 10 NONAME ; int TMS::TMSProxy::StartInbandTone(int) - ?Version@TMSProxy@TMS@@QBE?AVTVersion@@XZ @ 11 NONAME ; class TVersion TMS::TMSProxy::Version(void) const - ?GetTMSCallSessionHandle@TMSProxy@TMS@@QAEHXZ @ 12 NONAME ; int TMS::TMSProxy::GetTMSCallSessionHandle(void) - ?StopRT@TMSProxy@TMS@@QAEHXZ @ 13 NONAME ; int TMS::TMSProxy::StopRT(void) - ?GetSupportedEncoders@TMSProxy@TMS@@QAEHAAV?$RArray@K@@AAH@Z @ 14 NONAME ; int TMS::TMSProxy::GetSupportedEncoders(class RArray &, int &) - ?ContinueDTMFStringSending@TMSProxy@TMS@@QAEHH@Z @ 15 NONAME ; int TMS::TMSProxy::ContinueDTMFStringSending(int) - ?StopInbandTone@TMSProxy@TMS@@QAEHXZ @ 16 NONAME ; int TMS::TMSProxy::StopInbandTone(void) - ?GetOutput@TMSProxy@TMS@@QAEHAAH@Z @ 17 NONAME ; int TMS::TMSProxy::GetOutput(int &) - ?MuteRT@TMSProxy@TMS@@QAEHXZ @ 18 NONAME ; int TMS::TMSProxy::MuteRT(void) - ?StopDTMF@TMSProxy@TMS@@QAEHH@Z @ 19 NONAME ; int TMS::TMSProxy::StopDTMF(int) - ??1TMSProxy@TMS@@UAE@XZ @ 20 NONAME ; TMS::TMSProxy::~TMSProxy(void) - ?SetMsgQueueNotifier@TMSProxy@TMS@@QAEHW4TMSMsgQueueNotifierType@2@PAX1H@Z @ 21 NONAME ; int TMS::TMSProxy::SetMsgQueueNotifier(enum TMS::TMSMsgQueueNotifierType, void *, void *, int) - ?StartRoutingNotifier@TMSProxy@TMS@@QAEHXZ @ 22 NONAME ; int TMS::TMSProxy::StartRoutingNotifier(void) - ?GetAvailableOutputs@TMSProxy@TMS@@QAEHAAV?$vector@IV?$allocator@I@std@@@std@@@Z @ 23 NONAME ; int TMS::TMSProxy::GetAvailableOutputs(class std::vector > &) - ?PauseRT@TMSProxy@TMS@@QAEHXZ @ 24 NONAME ; int TMS::TMSProxy::PauseRT(void) - ?StartDTMF@TMSProxy@TMS@@QAEHHPAU_GString@@@Z @ 25 NONAME ; int TMS::TMSProxy::StartDTMF(int, struct _GString *) - ?CancelRoutingNotifier@TMSProxy@TMS@@QAEHXZ @ 26 NONAME ; int TMS::TMSProxy::CancelRoutingNotifier(void) - ?SetGain@TMSProxy@TMS@@QAEHI@Z @ 27 NONAME ; int TMS::TMSProxy::SetGain(unsigned int) - ?GetLevel@TMSProxy@TMS@@QAEHAAI@Z @ 28 NONAME ; int TMS::TMSProxy::GetLevel(unsigned int &) - ?GetPreviousOutput@TMSProxy@TMS@@QAEHAAH@Z @ 29 NONAME ; int TMS::TMSProxy::GetPreviousOutput(int &) - ?Close@TMSProxy@TMS@@QAEXXZ @ 30 NONAME ; void TMS::TMSProxy::Close(void) - ??0TMSProxy@TMS@@QAE@XZ @ 31 NONAME ; TMS::TMSProxy::TMSProxy(void) - ?SetOutput@TMSProxy@TMS@@QAEHH@Z @ 32 NONAME ; int TMS::TMSProxy::SetOutput(int) + ?GetMaxLevel@TMSProxy@TMS@@QAEHAAI@Z @ 2 NONAME ; int TMS::TMSProxy::GetMaxLevel(unsigned int &) + ?GetSupportedDecoders@TMSProxy@TMS@@QAEHAAV?$RArray@K@@AAH@Z @ 3 NONAME ; int TMS::TMSProxy::GetSupportedDecoders(class RArray &, int &) + ?Connect@TMSProxy@TMS@@QAEHXZ @ 4 NONAME ; int TMS::TMSProxy::Connect(void) + ?SetLevel@TMSProxy@TMS@@QAEHI@Z @ 5 NONAME ; int TMS::TMSProxy::SetLevel(unsigned int) + ?InitRT@TMSProxy@TMS@@QAEHHPAU_GString@@0@Z @ 6 NONAME ; int TMS::TMSProxy::InitRT(int, struct _GString *, struct _GString *) + ?GetGain@TMSProxy@TMS@@QAEHAAI@Z @ 7 NONAME ; int TMS::TMSProxy::GetGain(unsigned int &) + ?PlayRT@TMSProxy@TMS@@QAEHXZ @ 8 NONAME ; int TMS::TMSProxy::PlayRT(void) + ?StartInbandTone@TMSProxy@TMS@@QAEHH@Z @ 9 NONAME ; int TMS::TMSProxy::StartInbandTone(int) + ?Version@TMSProxy@TMS@@QBE?AVTVersion@@XZ @ 10 NONAME ; class TVersion TMS::TMSProxy::Version(void) const + ?GetTMSCallSessionHandle@TMSProxy@TMS@@QAEHXZ @ 11 NONAME ; int TMS::TMSProxy::GetTMSCallSessionHandle(void) + ?StopRT@TMSProxy@TMS@@QAEHXZ @ 12 NONAME ; int TMS::TMSProxy::StopRT(void) + ?GetSupportedEncoders@TMSProxy@TMS@@QAEHAAV?$RArray@K@@AAH@Z @ 13 NONAME ; int TMS::TMSProxy::GetSupportedEncoders(class RArray &, int &) + ?ContinueDTMFStringSending@TMSProxy@TMS@@QAEHH@Z @ 14 NONAME ; int TMS::TMSProxy::ContinueDTMFStringSending(int) + ?StopInbandTone@TMSProxy@TMS@@QAEHXZ @ 15 NONAME ; int TMS::TMSProxy::StopInbandTone(void) + ?GetOutput@TMSProxy@TMS@@QAEHAAH@Z @ 16 NONAME ; int TMS::TMSProxy::GetOutput(int &) + ?MuteRT@TMSProxy@TMS@@QAEHXZ @ 17 NONAME ; int TMS::TMSProxy::MuteRT(void) + ?StopDTMF@TMSProxy@TMS@@QAEHH@Z @ 18 NONAME ; int TMS::TMSProxy::StopDTMF(int) + ??1TMSProxy@TMS@@UAE@XZ @ 19 NONAME ; TMS::TMSProxy::~TMSProxy(void) + ?SetMsgQueueNotifier@TMSProxy@TMS@@QAEHW4TMSMsgQueueNotifierType@2@PAX1H@Z @ 20 NONAME ; int TMS::TMSProxy::SetMsgQueueNotifier(enum TMS::TMSMsgQueueNotifierType, void *, void *, int) + ?GetAvailableOutputs@TMSProxy@TMS@@QAEHAAV?$vector@IV?$allocator@I@std@@@std@@@Z @ 21 NONAME ; int TMS::TMSProxy::GetAvailableOutputs(class std::vector > &) + ?PauseRT@TMSProxy@TMS@@QAEHXZ @ 22 NONAME ; int TMS::TMSProxy::PauseRT(void) + ?StartRoutingNotifier@TMSProxy@TMS@@QAEHXZ @ 23 NONAME ; int TMS::TMSProxy::StartRoutingNotifier(void) + ?StartDTMF@TMSProxy@TMS@@QAEHHPAU_GString@@@Z @ 24 NONAME ; int TMS::TMSProxy::StartDTMF(int, struct _GString *) + ?CancelRoutingNotifier@TMSProxy@TMS@@QAEHXZ @ 25 NONAME ; int TMS::TMSProxy::CancelRoutingNotifier(void) + ?SetGain@TMSProxy@TMS@@QAEHI@Z @ 26 NONAME ; int TMS::TMSProxy::SetGain(unsigned int) + ?GetLevel@TMSProxy@TMS@@QAEHAAI@Z @ 27 NONAME ; int TMS::TMSProxy::GetLevel(unsigned int &) + ?GetPreviousOutput@TMSProxy@TMS@@QAEHAAH@Z @ 28 NONAME ; int TMS::TMSProxy::GetPreviousOutput(int &) + ?Close@TMSProxy@TMS@@QAEXXZ @ 29 NONAME ; void TMS::TMSProxy::Close(void) + ??0TMSProxy@TMS@@QAE@XZ @ 30 NONAME ; TMS::TMSProxy::TMSProxy(void) + ?SetOutput@TMSProxy@TMS@@QAEHH@Z @ 31 NONAME ; int TMS::TMSProxy::SetOutput(int) + ?InitDTMFPlayer@TMSProxy@TMS@@QAEHH@Z @ 32 NONAME ; int TMS::TMSProxy::InitDTMFPlayer(int) ?DeinitRT@TMSProxy@TMS@@QAEHXZ @ 33 NONAME ; int TMS::TMSProxy::DeinitRT(void) ?CancelGlobalEffectNotifier@TMSProxy@TMS@@QAEHXZ @ 34 NONAME ; int TMS::TMSProxy::CancelGlobalEffectNotifier(void) ?GetMaxGain@TMSProxy@TMS@@QAEHAAI@Z @ 35 NONAME ; int TMS::TMSProxy::GetMaxGain(unsigned int &) ?StartGlobalEffectNotifier@TMSProxy@TMS@@QAEHXZ @ 36 NONAME ; int TMS::TMSProxy::StartGlobalEffectNotifier(void) - ?CancelDTMFNotifier@TMSProxy@TMS@@QAEHXZ @ 37 NONAME ; int TMS::TMSProxy::CancelDTMFNotifier(void) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsproxy/eabi/tmsproxy.def --- a/mmserv/tms/tmsproxy/eabi/tmsproxy.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsproxy/eabi/tmsproxy.def Wed Aug 18 10:17:22 2010 +0300 @@ -1,44 +1,43 @@ EXPORTS _ZN3TMS8TMSProxy10GetMaxGainERj @ 1 NONAME _ZN3TMS8TMSProxy11GetMaxLevelERj @ 2 NONAME - _ZN3TMS8TMSProxy14StopInbandToneEv @ 3 NONAME - _ZN3TMS8TMSProxy15StartInbandToneEi @ 4 NONAME - _ZN3TMS8TMSProxy17GetPreviousOutputERi @ 5 NONAME - _ZN3TMS8TMSProxy17StartDTMFNotifierEv @ 6 NONAME - _ZN3TMS8TMSProxy18CancelDTMFNotifierEv @ 7 NONAME - _ZN3TMS8TMSProxy19GetAvailableOutputsERSt6vectorIjSaIjEE @ 8 NONAME - _ZN3TMS8TMSProxy19SetMsgQueueNotifierENS_23TMSMsgQueueNotifierTypeEPvS2_i @ 9 NONAME - _ZN3TMS8TMSProxy20GetSupportedDecodersER6RArrayImERi @ 10 NONAME - _ZN3TMS8TMSProxy20GetSupportedEncodersER6RArrayImERi @ 11 NONAME - _ZN3TMS8TMSProxy20StartRoutingNotifierEv @ 12 NONAME - _ZN3TMS8TMSProxy21CancelRoutingNotifierEv @ 13 NONAME - _ZN3TMS8TMSProxy22RemoveMsgQueueNotifierENS_23TMSMsgQueueNotifierTypeEPv @ 14 NONAME - _ZN3TMS8TMSProxy23GetTMSCallSessionHandleEv @ 15 NONAME - _ZN3TMS8TMSProxy25ContinueDTMFStringSendingEi @ 16 NONAME - _ZN3TMS8TMSProxy25StartGlobalEffectNotifierEv @ 17 NONAME - _ZN3TMS8TMSProxy26CancelGlobalEffectNotifierEv @ 18 NONAME - _ZN3TMS8TMSProxy5CloseEv @ 19 NONAME - _ZN3TMS8TMSProxy6InitRTEiP8_GStringS2_ @ 20 NONAME - _ZN3TMS8TMSProxy6MuteRTEv @ 21 NONAME - _ZN3TMS8TMSProxy6PlayRTEv @ 22 NONAME - _ZN3TMS8TMSProxy6StopRTEv @ 23 NONAME - _ZN3TMS8TMSProxy7ConnectEv @ 24 NONAME - _ZN3TMS8TMSProxy7GetGainERj @ 25 NONAME - _ZN3TMS8TMSProxy7PauseRTEv @ 26 NONAME - _ZN3TMS8TMSProxy7SetGainEj @ 27 NONAME - _ZN3TMS8TMSProxy8DeinitRTEv @ 28 NONAME - _ZN3TMS8TMSProxy8GetLevelERj @ 29 NONAME - _ZN3TMS8TMSProxy8SetLevelEj @ 30 NONAME - _ZN3TMS8TMSProxy8StopDTMFEi @ 31 NONAME - _ZN3TMS8TMSProxy9GetOutputERi @ 32 NONAME - _ZN3TMS8TMSProxy9SetOutputEi @ 33 NONAME - _ZN3TMS8TMSProxy9StartDTMFEiP8_GString @ 34 NONAME - _ZN3TMS8TMSProxyC1Ev @ 35 NONAME - _ZN3TMS8TMSProxyC2Ev @ 36 NONAME - _ZN3TMS8TMSProxyD0Ev @ 37 NONAME - _ZN3TMS8TMSProxyD1Ev @ 38 NONAME - _ZN3TMS8TMSProxyD2Ev @ 39 NONAME - _ZNK3TMS8TMSProxy7VersionEv @ 40 NONAME - _ZTIN3TMS8TMSProxyE @ 41 NONAME - _ZTVN3TMS8TMSProxyE @ 42 NONAME + _ZN3TMS8TMSProxy14InitDTMFPlayerEi @ 3 NONAME + _ZN3TMS8TMSProxy14StopInbandToneEv @ 4 NONAME + _ZN3TMS8TMSProxy15StartInbandToneEi @ 5 NONAME + _ZN3TMS8TMSProxy17GetPreviousOutputERi @ 6 NONAME + _ZN3TMS8TMSProxy19GetAvailableOutputsERSt6vectorIjSaIjEE @ 7 NONAME + _ZN3TMS8TMSProxy19SetMsgQueueNotifierENS_23TMSMsgQueueNotifierTypeEPvS2_i @ 8 NONAME + _ZN3TMS8TMSProxy20GetSupportedDecodersER6RArrayImERi @ 9 NONAME + _ZN3TMS8TMSProxy20GetSupportedEncodersER6RArrayImERi @ 10 NONAME + _ZN3TMS8TMSProxy20StartRoutingNotifierEv @ 11 NONAME + _ZN3TMS8TMSProxy21CancelRoutingNotifierEv @ 12 NONAME + _ZN3TMS8TMSProxy22RemoveMsgQueueNotifierENS_23TMSMsgQueueNotifierTypeEPv @ 13 NONAME + _ZN3TMS8TMSProxy23GetTMSCallSessionHandleEv @ 14 NONAME + _ZN3TMS8TMSProxy25ContinueDTMFStringSendingEi @ 15 NONAME + _ZN3TMS8TMSProxy25StartGlobalEffectNotifierEv @ 16 NONAME + _ZN3TMS8TMSProxy26CancelGlobalEffectNotifierEv @ 17 NONAME + _ZN3TMS8TMSProxy5CloseEv @ 18 NONAME + _ZN3TMS8TMSProxy6InitRTEiP8_GStringS2_ @ 19 NONAME + _ZN3TMS8TMSProxy6MuteRTEv @ 20 NONAME + _ZN3TMS8TMSProxy6PlayRTEv @ 21 NONAME + _ZN3TMS8TMSProxy6StopRTEv @ 22 NONAME + _ZN3TMS8TMSProxy7ConnectEv @ 23 NONAME + _ZN3TMS8TMSProxy7GetGainERj @ 24 NONAME + _ZN3TMS8TMSProxy7PauseRTEv @ 25 NONAME + _ZN3TMS8TMSProxy7SetGainEj @ 26 NONAME + _ZN3TMS8TMSProxy8DeinitRTEv @ 27 NONAME + _ZN3TMS8TMSProxy8GetLevelERj @ 28 NONAME + _ZN3TMS8TMSProxy8SetLevelEj @ 29 NONAME + _ZN3TMS8TMSProxy8StopDTMFEi @ 30 NONAME + _ZN3TMS8TMSProxy9GetOutputERi @ 31 NONAME + _ZN3TMS8TMSProxy9SetOutputEi @ 32 NONAME + _ZN3TMS8TMSProxy9StartDTMFEiP8_GString @ 33 NONAME + _ZN3TMS8TMSProxyC1Ev @ 34 NONAME + _ZN3TMS8TMSProxyC2Ev @ 35 NONAME + _ZN3TMS8TMSProxyD0Ev @ 36 NONAME + _ZN3TMS8TMSProxyD1Ev @ 37 NONAME + _ZN3TMS8TMSProxyD2Ev @ 38 NONAME + _ZNK3TMS8TMSProxy7VersionEv @ 39 NONAME + _ZTIN3TMS8TMSProxyE @ 40 NONAME + _ZTVN3TMS8TMSProxyE @ 41 NONAME diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsproxy/src/tmsproxy.cpp --- a/mmserv/tms/tmsproxy/src/tmsproxy.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsproxy/src/tmsproxy.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -30,12 +30,12 @@ using namespace TMS; // CONSTANTS -const TUint KTMSServerConnectRetries = 2; -const TUint KSessionMessageSlots = 10; -const TUint KUTF8Multiply = 2; +const guint KTMSServerConnectRetries = 2; +const guint KSessionMessageSlots = 10; +const guint KUTF8Multiply = 2; // ----------------------------------------------------------------------------- -// StartServer +// TMSProxy::StartServer // // Function that will launch TMS server executable in it its own process. // Start the server process/thread, which lives in an EPOCEXE object. @@ -119,14 +119,13 @@ { TRACE_PRN_FN_ENT; - gint retry = KTMSServerConnectRetries; + guint retry = KTMSServerConnectRetries; gint err(TMS_RESULT_GENERAL_ERROR); - gint numMessageSlots = KSessionMessageSlots; for (;;) { // Try to create a new session with the server - err = CreateSession(KTMSServerName, Version(), numMessageSlots); + err = CreateSession(KTMSServerName, Version(), KSessionMessageSlots); if ((err != KErrNotFound) && (err != KErrServerTerminated)) { @@ -183,9 +182,8 @@ EXPORT_C gint TMSProxy::GetTMSCallSessionHandle() { - gint err(TMS_RESULT_SUCCESS); - err = SendReceive(ETMSCallSessionHandle); - return TMSRESULT(err); + gint handle = SendReceive(ETMSCallSessionHandle); + return handle; } EXPORT_C gint TMSProxy::GetSupportedDecoders(RArray& aDecoders, @@ -414,7 +412,7 @@ { // Convert buffer from UTF-8 to unicode (16-bit) // Note: UTF-8 strings can take up to 4 bytes per character - gint unilen = tts->len / KUTF8Multiply; + guint unilen = tts->len / KUTF8Multiply; TRAP(status, ttsBuf = HBufC::NewL(unilen)); if (status == KErrNone) { @@ -438,7 +436,7 @@ HBufC* buf(NULL); // Convert buffer from UTF-8 to unicode (16-bit) // Note: UTF-8 strings can take up to 4 bytes per character - gint unilen = str->len / KUTF8Multiply; + guint unilen = str->len / KUTF8Multiply; TRAP(status, buf = HBufC::NewL(unilen)); if (buf && status == KErrNone) @@ -537,6 +535,15 @@ return TMSRESULT(status); } +EXPORT_C gint TMSProxy::InitDTMFPlayer(TMSStreamType streamtype) + { + gint status(TMS_RESULT_SUCCESS); + TIpcArgs args; + args.Set(0, streamtype); + status = RSessionBase::SendReceive(ETMSInitDTMF, args); + return TMSRESULT(status); + } + EXPORT_C gint TMSProxy::StartDTMF(TMSStreamType streamtype, GString* tone) { TRACE_PRN_FN_ENT; @@ -602,20 +609,6 @@ return TMSRESULT(status); } -EXPORT_C gint TMSProxy::StartDTMFNotifier() - { - gint status(TMS_RESULT_SUCCESS); - status = RSessionBase::SendReceive(ETMSStartDTMFNotifier); //DTMFHandler - return TMSRESULT(status); - } - -EXPORT_C gint TMSProxy::CancelDTMFNotifier() - { - gint status(TMS_RESULT_SUCCESS); - status = RSessionBase::SendReceive(ETMSCancelDTMFNotifier); //DTMFHandler - return TMSRESULT(status); - } - EXPORT_C gint TMSProxy::StartGlobalEffectNotifier() { gint status(TMS_RESULT_SUCCESS); diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/group/tmsserver.mmp --- a/mmserv/tms/tmsserver/group/tmsserver.mmp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/group/tmsserver.mmp Wed Aug 18 10:17:22 2010 +0300 @@ -37,7 +37,6 @@ SOURCE tmstareventhandler.cpp SOURCE tmscenreplistener.cpp SOURCE tmscenrepaudiohandler.cpp -SOURCE tmsdtmfeventhandler.cpp SOURCE tmsaudiotoneutilityimpl.cpp SOURCE tmsaudioinbandtoneplayer.cpp SOURCE tmspubsublistener.cpp @@ -45,6 +44,10 @@ SOURCE tmsrtaudiohdlr.cpp SOURCE tmsrtplayer.cpp SOURCE tmsasyncreqao.cpp +SOURCE tmsdtmftoneplayer.cpp +SOURCE tmsdtmfprovider.cpp +SOURCE tmseteldtmfmonitor.cpp +SOURCE tmseteldtmfstopmonitor.cpp USERINCLUDE ../inc USERINCLUDE ../../inc @@ -76,6 +79,10 @@ LIBRARY apmime.lib LIBRARY charconv.lib LIBRARY caf.lib +// Libraries for ETel +LIBRARY etelmm.lib +LIBRARY etel.lib +LIBRARY customapi.lib SMPSAFE diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsaudioinbandtoneplayer.h --- a/mmserv/tms/tmsserver/inc/tmsaudioinbandtoneplayer.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/inc/tmsaudioinbandtoneplayer.h Wed Aug 18 10:17:22 2010 +0300 @@ -19,6 +19,7 @@ #define TMSAUDIOINBANDTONEPLAYER_H // INCLUDES +#include #include #include #include diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsdtmfeventhandler.h --- a/mmserv/tms/tmsserver/inc/tmsdtmfeventhandler.h Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -#ifndef DTMFEVENTHANDLER_H -#define DTMFEVENTHANDLER_H - -// INCLUDES -#include -#include -#include "tmsserver.h" - -namespace TMS { - -// CLASS DECLARATION -class TMSDtmfEventHandler : public CActive - { -public: - /** - * Two-phased constructor. - */ - static TMSDtmfEventHandler* NewL(TMSServer* aServer); - - /** - * Destructor. - */ - virtual ~TMSDtmfEventHandler(); - -private: - /** - * From CActive - * Cancel outstanding request - */ - void DoCancel(); - - /** - * From CActive - * Implementation of CActive::RunL. - * Called when server request has completed. - */ - void RunL(); - - /** - * From CActive - * Implementation of CActive::RunError. - * Called when RunL leaves. - */ - TInt RunError(TInt aError); - -private: - - /** - * C++ default constructor. - */ - TMSDtmfEventHandler(TMSServer* aServer); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - -private: - TMSServer* iTMSSer; - RProperty iProperty; - }; - -} //namespace TMS - -#endif // DTMFEVENTHANDLER_H - -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsdtmfobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/inc/tmsdtmfobserver.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef TMSDTMFOBSERVER_H +#define TMSDTMFOBSERVER_H + +#include + +namespace TMS { + +/** + * CCP DTMF related events observer class. + * This class is used for notifying DTMF specific events. + */ +class TMSDTMFObserver + { +public: + + /** DTMF Events */ + enum TCCPDtmfEvent + { + /** Unknown */ + ECCPDtmfUnknown = 0, + /** DTMF sending started manually */ + ECCPDtmfManualStart = 5, + /** DTMF sending stopped manually */ + ECCPDtmfManualStop = 6, + /** DTMF sending aborted manually */ + ECCPDtmfManualAbort = 7, + /** Automatic DTMF sending initialized */ + ECCPDtmfSequenceStart = 9, + /** Automatic DTMF sending stopped */ + ECCPDtmfSequenceStop = 10, + /** Automatic DTMF sending aborted */ + ECCPDtmfSequenceAbort = 11, + /** There was stop mark in DTMF string */ + ECCPDtmfStopInDtmfString, + /** DTMF sending completed succesfully */ + ECCPDtmfStringSendingCompleted + }; + + //protected: + /** + * Protects the observer being deleted through the observer interface. + */ + //virtual inline ~TMSDTMFObserver() {}; + +public: + + /** + * HandleDTMFEvents. + * @param event Event type + * @param status Error code + * @param tone Character + * @return none + */ + virtual void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event, + const gint status, const TChar tone) /*const*/ = 0; + }; + +} //namespace TMS + +#endif // TMSDTMFOBSERVER_H + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsdtmfprovider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/inc/tmsdtmfprovider.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef TMSDTMFPROVIDER_H +#define TMSDTMFPROVIDER_H + +#include +#include +#include +#include +#include "tmsdtmfobserver.h" + +namespace TMS { + +// FORWARD DECLARATIONS +class TMSEtelDtmfMonitor; +class TMSEtelDtmfStopMonitor; + +/** + * TMSDTMFProvider class + * Makes asynchronic request to ETel interface according to given request type. + * Provides canceling via CActive::Cancel(). + */ +class TMSDTMFProvider : public CActive + { +public: + + /** + * Two phased constructing of the DTMF provider instance. + * @param aPhone mobile phone handle + * @param aMmCustom custom API handle for special DTMF event + * monitoring. + * @return the DTMF provider instance + */ + static TMSDTMFProvider* NewL(); + + /** + * C++ default destructor + */ + virtual ~TMSDTMFProvider(); + + /** + * HandleDTMFEvents. + * @param aEvent Event type + * @param aError Error code + * @param aTone Character + */ + void NotifyDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent, + const gint aError, const TChar aTone); + + // from base class MCCPDTMFProvider + /** + * Cancels asynchronous DTMF string sending. + * @return KErrNone if succesfull, otherwise another system wide error code + */ + gint CancelDtmfStringSending(); + + /** + * Starts the transmission of a single DTMF tone across a + * connected and active call. + * @param aTone Tone to be played. + * @return KErrNone if succesfull, otherwise another system wide error code + */ + gint StartDtmfTone(const TChar aTone); + + /** + * Stops playing current DTMF tone. + * @return KErrNone if succesfull, otherwise another system wide error code + */ + gint StopDtmfTone(); + + /** + * Plays DTMF string. + * @param aString String to be played. + * @return KErrNone if succesfull, otherwise another system wide error code + * KErrArgument if the specified string contains illegal DTMF characters + */ + gint SendDtmfToneString(const TDesC& aString); + + /** + * Continue or cancel sending DTMF string which was stopped with 'w' + * character in string. + * @param aContinue ETrue if sending of the DTMF string should continue, + * EFalse if the rest of the DTMF string is to be discarded. + * @return KErrNone if succesfull, otherwise another system wide error code + */ + gint ContinueDtmfStringSending(const gboolean aContinue); + + /** + * Add an observer for DTMF related events. + * Plug-in dependent feature if duplicates or more than one observers + * are allowed or not. Currently CCE will set only one observer. + * @param aObserver Observer + * @leave system error if observer adding fails + */ + void AddObserver(const TMSDTMFObserver& aObserver); + + /** + * Remove an observer. + * @param aObserver Observer + * @return KErrNone if removed succesfully. KErrNotFound if observer was + * not found. Any other system error depending on the error. + */ + gint RemoveObserver(const TMSDTMFObserver& aObserver); + + // from base class CActive +protected: + /** + * From CActive + * RunL + */ + void RunL(); + + /** + * From CActive + * Cancels the monitor + */ + void DoCancel(); + +private: + /** + * Constructs the requester. + * + * @param aPhone handle to ETel phone + * @param aMmCustom custom API handle + */ + TMSDTMFProvider(); + + /** + * Constructing the provider in the second phase. + */ + void ConstructL(); + +private: + /** + * DTMF event observer. + */ + RPointerArray iObservers; + + /** + * ETel phone handle for DTMF functionality. + */ + RMobilePhone iPhone; + + /** + * Monitor for DTMF events and changes. + * Own. + */ + TMSEtelDtmfMonitor* iMonitor; + + /** + * Monitor for DTMF stopping. + * Own. + */ + TMSEtelDtmfStopMonitor* iStopMonitor; + + /** + * Custom API reference. + */ + RMmCustomAPI iMmCustom; + + RTelServer iServer; + TBuf<25> iTsyname; + }; + +} //namespace TMS + +#endif //TMSDTMFPROVIDER_H diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsdtmftoneplayer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/inc/tmsdtmftoneplayer.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef TMSAUDIODTMFTONEPLAYER_H +#define TMSAUDIODTMFTONEPLAYER_H + +// INCLUDES +#include +#include +#include "tmsdtmftoneplayerobserver.h" + +// FORWARD DECLARATIONS +class CMMFDevSound; + +// CLASS DECLARATION + +/** + * Plays DTMF tones using media server + */ + +namespace TMS { + +class TMSAudioDtmfTonePlayer : public MDevSoundObserver + { +public: + // Constructors and destructor + + /** + * Two-phased constructor. + */ + static TMSAudioDtmfTonePlayer* NewL(TMSDTMFTonePlayerObserver& obsrvr, + guint audioPreference, guint audioPriority); + + /** + * Destructor. + */ + virtual ~TMSAudioDtmfTonePlayer(); + +public: + + /** + * Sets volume. + * @param aVolume volume value or KDtmfSilent. + * @return None. + */ + void SetVolume(gint volume); + + /** + * Starts playing given dtmf tone infinitely. + * @param aTone Tone to be played. + * @return None. + */ + void PlayDtmfTone(TDes& tone); + + /** + * Cancels playing. + * @param None. + * @return None. + */ + void Cancel(); + +public: + //From MDevSoundObserver + /** + * See MDevSoundObserver + */ + void InitializeComplete(TInt aError); + + /** + * See MDevSoundObserver + */ + void ToneFinished(TInt aError); + + /** + * See MDevSoundObserver + */ + void BufferToBeFilled(CMMFBuffer* /*aBuffer*/) {} + + /** + * See MDevSoundObserver + */ + void PlayError(TInt /*aError*/) {} + + /** + * See MDevSoundObserver + */ + void BufferToBeEmptied(CMMFBuffer* /*aBuffer*/) {} + + /** + * See MDevSoundObserver + */ + void RecordError(TInt /*aError*/) {} + + /** + * See MDevSoundObserver + */ + void ConvertError(TInt /*aError*/) {} + /** + * See MDevSoundObserver + */ + void DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/) {} + +protected: + + /** + * C++ default constructor. + */ + TMSAudioDtmfTonePlayer(TMSDTMFTonePlayerObserver& obsrvr, + guint audioPreference, guint audioPriority); + + void ConstructL(); + + /** + * Normalize tone. + * @param aTone dtmf tone. + * @return None. + */ + void Normalize(TChar& tone); + +private: + //new functions + + /** + * Converts the given value to the one that matches tha range used by + * CMMFDevSound. The CMMFDevSound uses valuess that can from 0 to the + * value returned by a call to CMMFDevSound::MaxVolume(). + */ + gint ConvertVolumeLevel(gint volume); + +protected: + // Data + + // Current volume setting. + gint iVolume; + + // DTMF player instance + CMMFDevSound* iDTMFPlayer; + + TMSDTMFTonePlayerObserver& iObserver; + guint iPref; + guint iPrior; + }; + +} //namespace TMS + +#endif // TMSAUDIODTMFTONEPLAYER_H + +// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsdtmftoneplayerobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/inc/tmsdtmftoneplayerobserver.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef DTMFTONEPLAYEROBSERVER_H +#define DTMFTONEPLAYEROBSERVER_H + +#include + +namespace TMS { + +/** + * Observer interface for knowing when dtmf tone player has been initialized. + */ +class TMSDTMFTonePlayerObserver + { +public: + virtual void DTMFInitCompleted(gint status) = 0; + virtual void DTMFToneFinished(gint status) = 0; + }; +} //namespace TMS + +#endif // DTMFTONEPLAYEROBSERVER_H + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmseteldtmfmonitor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/inc/tmseteldtmfmonitor.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef TMSETELDTMFMONITOR_H +#define TMSETELDTMFMONITOR_H + +#include +#include +#include + +namespace TMS { + +// FORWARD DECLARATIONS +class TMSCSPCall; +class TMSDTMFProvider; + +/** + * TMSEtelDtmfMonitor class + * + * Monitors ETel for DTMF events. + * + * This monitor is applied only for listening incoming calls, i.e. + * line capabilites are not monitored. + * + * @lib csplugin.dll + * + */ +class TMSEtelDtmfMonitor : public CActive + { +public: + /** + * Two-phased constructing for the monitor. + * + * @param aObserver the observer for getting notification + * @param aMmCustom Custom API handle + */ + static TMSEtelDtmfMonitor* NewL(TMSDTMFProvider& aObserver, + RMmCustomAPI& aMmCustom); + + /** + * C++ default destructor + */ + virtual ~TMSEtelDtmfMonitor(); + + /** + * Start monitoring call events + */ + void StartMonitoring(); + +protected: // From CActive + /** + * From CActive + * RunL + */ + void RunL(); + + /** + * From CActive + * Cancels the monitor + */ + void DoCancel(); + +private: + /** + * C++ default constructor + * @param aObserver the observer for status change (incoming call) + * @param aMmCustom Custom API handle + */ + TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver, RMmCustomAPI& aMmCustom); + +private: + /** + * Forwards events. + */ + TMSDTMFProvider& iObserver; + + /** + * Event data. Updated when event occurs. + */ + RMmCustomAPI::TDtmfInfo iEventData; + + /** + * Custom API reference. + */ + RMmCustomAPI& iMmCustom; + }; + +} //namespace TMS + +#endif // TMSETELDTMFMONITOR_H + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmseteldtmfstopmonitor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/inc/tmseteldtmfstopmonitor.h Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#ifndef TMSETELDTMFSTOPMONITOR_H +#define TMSETELDTMFSTOPMONITOR_H + +#include +#include + +namespace TMS { + +// FORWARD DECLARATIONS +class TMSDTMFProvider; + +/** + * TMSEtelDtmfStopMonitor class + * + * Monitors single ETel RMobilePhone for DTMF events. + * + * This monitor is applied only for listening incoming calls, i.e. + * line capabilites are not monitored. + * + */ +class TMSEtelDtmfStopMonitor : public CActive + { +public: + /** + * Two-phased constructing for the monitor. + * + * @param aObserver the observer for getting notification + * @param aPhone the line to monitor + */ + static TMSEtelDtmfStopMonitor* NewL(TMSDTMFProvider& aObserver, + RMobilePhone& aPhone); + + /** + * C++ default destructor + */ + virtual ~TMSEtelDtmfStopMonitor(); + + /** + * Start monitoring call events + */ + void StartMonitoring(); + +protected: // From CActive + /** + * From CActive + * RunL + */ + void RunL(); + + /** + * From CActive + * Cancels the monitor + */ + void DoCancel(); + +private: + /** + * C++ default constructor + * @param aObserver the observer for status change (incoming call) + * @param aPhone the line associated with the call + */ + TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver, RMobilePhone& aPhone); + +private: + /** + * Forwards events. + */ + TMSDTMFProvider& iObserver; + + /** + * Phone that is being observed for incoming call. + */ + RMobilePhone& iPhone; + + /** + * Event received. + */ + RMobilePhone::TMobilePhoneDTMFEvent iEventData; + + }; + +} //namespace TMS + +#endif // TMSETELDTMFSTOPMONITOR_H + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsglobaleffectssettings.h --- a/mmserv/tms/tmsserver/inc/tmsglobaleffectssettings.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/inc/tmsglobaleffectssettings.h Wed Aug 18 10:17:22 2010 +0300 @@ -90,6 +90,12 @@ */ TInt MaxGain() const; + /** + * Resets volume to default if level is 0 when new call starts. + * @return + */ + void ResetDefaultVolume(); + private: /** diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsrtplayer.h --- a/mmserv/tms/tmsserver/inc/tmsrtplayer.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/inc/tmsrtplayer.h Wed Aug 18 10:17:22 2010 +0300 @@ -201,7 +201,7 @@ /** * Initializes ring tone configuration parameters. */ - void InitRtParamsL(TRtPlayerType aPlayerType); + void InitRtParams(TRtPlayerType aPlayerType); /* * from TMSRtAudioHdlrObsrv diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmsserver.h --- a/mmserv/tms/tmsserver/inc/tmsserver.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/inc/tmsserver.h Wed Aug 18 10:17:22 2010 +0300 @@ -15,8 +15,8 @@ * */ -#ifndef __TMSSERVER_H -#define __TMSSERVER_H +#ifndef TMSSERVER_H +#define TMSSERVER_H #include #include @@ -25,6 +25,9 @@ #include "tmsclientserver.h" #include "tmsrtplayerobsrv.h" #include "tmsrtplayer.h" +#include "tmsdtmfobserver.h" +#include "tmsdtmftoneplayerobserver.h" +#include "tmspubsubobserver.h" namespace TMS { @@ -36,14 +39,19 @@ class TMSTarEventHandler; class TMSCSPCenRepListener; class TMSCenRepAudioHandler; -class TMSDtmfEventHandler; +class TMSAudioDtmfTonePlayer; +class TMSDTMFProvider; +class TMSPubSubListener; // ----------------------------------------------------------------------------- // TMSServer class // ----------------------------------------------------------------------------- // class TMSServer : public CServer2, - private TMSRtPlayerObsrv + private TMSRtPlayerObsrv, + private TMSDTMFObserver, + private TMSDTMFTonePlayerObserver, + public TMSPubSubObserver { public: static void RunServerL(); @@ -53,12 +61,6 @@ void DropSession(); TInt SessionCount() const; - void SetDnLinkSession(const TBool aSession); - void SetUpLinkSession(const TBool aSession); - - TBool HasDnLinkSession() const; - TBool HasUpLinkSession() const; - void GetNewTMSCallSessionHandleL(RHandleBase& aHandle); TInt SetOutput(CSession2* sid, TInt output); TInt GetOutput(const RMessage2& aMessage); @@ -75,14 +77,15 @@ TInt GetSupportedCodecs(const TMSStreamType strmType, RArray*& aCodecs); - TInt NotifyTarClients(TRoutingMsgBufPckg routingpckg); + // for DTMF player + TInt InitDTMF(const RMessage2& aMessage); TInt StartDTMF(const RMessage2& aMessage); TInt StopDTMF(const RMessage2& aMessage); TInt ContinueSendingDTMF(const RMessage2& aMessage); - TInt NotifyDtmfClients(TmsMsgBufPckg dtmfpckg); + TInt NotifyDtmfClients(gint aEventType, gint aError); + gint FindActiveCallType(); - void StartDTMFNotifierL(); - void CancelDTMFNotifier(); + TInt NotifyTarClients(TRoutingMsgBufPckg routingpckg); void StartRoutingNotifierL(); void CancelRoutingNotifier(); void StartCenRepHandlerL(); @@ -106,6 +109,18 @@ // from TMSRtPlayerObsrv void RtPlayerEvent(TInt aEventType, TInt aError); + // from TMSDTMFTonePlayerObserver + void DTMFInitCompleted(gint status); + void DTMFToneFinished(gint status); + + // from TMSDTMFObserver + void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event, + const gint status, const TChar tone); + + // from TMSPubSubObserver + void HandleNotifyPSL(const TUid aUid, const TInt& aKey, + const TRequestStatus& aStatus); + private: static TMSServer* NewLC(); TMSServer(); @@ -122,18 +137,15 @@ TInt iSession; TMSServerShutDown *iShutdownTimer; - TBool iDnlinkSession; - TBool iUplinkSession; - mutable RPointerArray iTMSCallServList; TMSGlobalEffectsSettings* iEffectSettings; TMSTarEventHandler* iTarHandler; TMSCenRepAudioHandler* iAudioCenRepHandler; TMSAudioOutput iCurrentRouting; - TMSDtmfEventHandler* iDTMFHandler; TInt iTarHandlerCount; TInt iAudioCenRepHandlerCount; TInt iDTMFHandlerCount; + TMSCallType iActiveCallType; // for RT TMSRingTonePlayer* iTMSRtPlayer; @@ -141,9 +153,15 @@ HBufC8* iRtSequence; HBufC* iTtsText; + // for DTMF + TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer; + TMSAudioDtmfTonePlayer* iDTMFUplinkPlayer; + TMSDTMFProvider* iDTMFUplinkPlayerEtel; + // for codecs count RArray iDnlCodecs; RArray iUplCodecs; + TMSPubSubListener* iSyncVol; }; // ----------------------------------------------------------------------------- @@ -191,6 +209,5 @@ } //namespace TMS -#endif //__TMSSERVER_H +#endif //TMSSERVER_H -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/inc/tmstareventhandler.h --- a/mmserv/tms/tmsserver/inc/tmstareventhandler.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/inc/tmstareventhandler.h Wed Aug 18 10:17:22 2010 +0300 @@ -53,6 +53,12 @@ **/ void RunL(); + /** + * From CActive + * Called when RunL leaves. + **/ + TInt RunError(TInt aError); + private: /** @@ -74,4 +80,3 @@ #endif //TMSTAREVENTHANDLER_H -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsaudioinbandtoneplayer.cpp --- a/mmserv/tms/tmsserver/src/tmsaudioinbandtoneplayer.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmsaudioinbandtoneplayer.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -263,7 +263,7 @@ default: break; } -#ifndef __WINS__ +#ifndef __WINSCW__ //Play the tone iPlayer->Play(); #endif @@ -285,22 +285,6 @@ } // ----------------------------------------------------------------------------- -// TMSAudioInbandTonePlayer::MatoPrepareComplete -// Updates flag values and plays current inbandtone. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void TMSAudioInbandTonePlayer::MatoPrepareComplete(TInt aError) - { - TRACE_PRN_FN_ENT; - if (aError == KErrNone) - { - PlayCurrentTone(); - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- // TMSAudioInbandTonePlayer::SetVolume // ----------------------------------------------------------------------------- // @@ -322,15 +306,40 @@ } // ----------------------------------------------------------------------------- +// TMSAudioInbandTonePlayer::MatoPrepareComplete +// Updates flag values and plays current inbandtone. +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void TMSAudioInbandTonePlayer::MatoPrepareComplete(TInt aError) + { + TRACE_PRN_FN_ENT; + if (aError == KErrNone) + { + PlayCurrentTone(); + } + TRACE_PRN_IF_ERR(aError); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- // TMSAudioInbandTonePlayer::MatoPlayComplete // - // (other items were commented in a header). // ----------------------------------------------------------------------------- // -void TMSAudioInbandTonePlayer::MatoPlayComplete(TInt /*aError*/) +void TMSAudioInbandTonePlayer::MatoPlayComplete( +#ifdef _DEBUG + TInt aError) +#else + TInt /*aError*/) +#endif { TRACE_PRN_FN_ENT; // TODO: process error? +#ifdef _DEBUG + TRACE_PRN_IF_ERR(aError); +#endif TRACE_PRN_FN_EXT; } @@ -360,4 +369,3 @@ TRACE_PRN_FN_EXT; } -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsdtmfeventhandler.cpp --- a/mmserv/tms/tmsserver/src/tmsdtmfeventhandler.cpp Tue Jul 06 14:50:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: Telephony Multimedia Service - * - */ - -// INCLUDE FILES -#include "tmsdtmfeventhandler.h" -#include "tmsclientserver.h" -#include "tmsutility.h" - -using namespace TMS; - -// ----------------------------------------------------------------------------- -// TMSDtmfEventHandler::TMSDtmfEventHandler -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -TMSDtmfEventHandler::TMSDtmfEventHandler(TMSServer* aServer) : - CActive(EPriorityStandard), - iTMSSer(aServer) - { - } - -// ----------------------------------------------------------------------------- -// TMSDtmfEventHandler::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void TMSDtmfEventHandler::ConstructL() - { - TRACE_PRN_FN_ENT; - CActiveScheduler::Add(this); - User::LeaveIfError(iProperty.Attach(KTMSPropertyCategory, EDtmfPs)); - iStatus = KRequestPending; - iProperty.Subscribe(iStatus); - SetActive(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSDtmfEventHandler::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -TMSDtmfEventHandler* TMSDtmfEventHandler::NewL(TMSServer* aServer) - { - TMSDtmfEventHandler* self = new (ELeave) TMSDtmfEventHandler(aServer); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// Destructor -TMSDtmfEventHandler::~TMSDtmfEventHandler() - { - TRACE_PRN_FN_ENT; - if (IsActive()) - { - Cancel(); - } - iProperty.Close(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSDtmfEventHandler::DoCancel -// ----------------------------------------------------------------------------- -// -void TMSDtmfEventHandler::DoCancel() - { - TRACE_PRN_FN_ENT; - iProperty.Cancel(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSDtmfEventHandler::RunL -// ----------------------------------------------------------------------------- -// -void TMSDtmfEventHandler::RunL() - { - TRACE_PRN_FN_ENT; -// Subscribe immediately before analyzing the notification to ensure that we -// don't miss further updates. -//if (iStatus.Int() == KErrNone) -// { - iStatus = KRequestPending; - iProperty.Subscribe(iStatus); - SetActive(); - TmsMsgBufPckg dtmfpckg; - iProperty.Get(dtmfpckg); - iTMSSer->NotifyDtmfClients(dtmfpckg); -// } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSDtmfEventHandler::RunError -// ----------------------------------------------------------------------------- -// -TInt TMSDtmfEventHandler::RunError(TInt aError) - { - return aError; - } - -// End of File - diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsdtmfprovider.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/src/tmsdtmfprovider.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,307 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#include +#include +#include "tmsdtmfprovider.h" +#include "tmsdtmfobserver.h" +#include "tmsutility.h" +#include "tmseteldtmfmonitor.h" +#include "tmseteldtmfstopmonitor.h" + +using namespace TMS; + +TMSDTMFProvider* TMSDTMFProvider::NewL() + { + TRACE_PRN_FN_ENT; + TMSDTMFProvider* self = new (ELeave) TMSDTMFProvider(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + TRACE_PRN_FN_EXT; + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor of the object. +// ----------------------------------------------------------------------------- +// +TMSDTMFProvider::~TMSDTMFProvider() + { + TRACE_PRN_FN_ENT; + Cancel(); + iObservers.Close(); + delete iMonitor; + delete iStopMonitor; + + iMmCustom.Close(); + iPhone.Close(); + iServer.UnloadPhoneModule(iTsyname); + iServer.Close(); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Constructs the requester. +// ----------------------------------------------------------------------------- +// +TMSDTMFProvider::TMSDTMFProvider() : + CActive(EPriorityStandard) + { + TRACE_PRN_FN_ENT; + CActiveScheduler::Add(this); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Constructs the requester in the second phase. +// ----------------------------------------------------------------------------- +// +void TMSDTMFProvider::ConstructL() + { + TRACE_PRN_FN_ENT; + + User::LeaveIfError(iServer.Connect()); + + TRACE_PRN_N(_L("**TMS ETel iServer.Connect")); + + User::LeaveIfError(iServer.GetTsyName(0, iTsyname)); + + //Load in the phone device driver + User::LeaveIfError(iServer.LoadPhoneModule(iTsyname)); + + TRACE_PRN_N(_L("**TMS ETel iServer.LoadPhoneModule")); + + //Find the number of phones available from the tel server + gint numberPhones; + User::LeaveIfError(iServer.EnumeratePhones(numberPhones)); + + TRACE_PRN_N(_L("**TMS ETel iServer.EnumeratePhones")); + + //Check there are available phones + if (numberPhones < 1) + { + User::Leave(KErrNotFound); + } + + //Get info about the first available phone + RTelServer::TPhoneInfo info; + User::LeaveIfError(iServer.GetPhoneInfo(0, info)); + + TRACE_PRN_N(_L("**TMS ETel iServer.GetPhoneInfo")); + + CleanupClosePushL(iPhone); + User::LeaveIfError(iPhone.Open(iServer, info.iName)); + + TRACE_PRN_N(_L("**TMS ETel iPhone.Open")); + + RMobilePhone::TLineInfo lineInfo; + User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo)); + + TRACE_PRN_N(_L("**TMS ETel iPhone.GetLineInfo")); + + gint errorCode = iMmCustom.Open(iPhone); + + if (!iPhone.SubSessionHandle() || !iMmCustom.SubSessionHandle()) + { + User::Leave(KErrArgument); + } + iMonitor = TMSEtelDtmfMonitor::NewL(*this, iMmCustom); + iMonitor->StartMonitoring(); + iStopMonitor = TMSEtelDtmfStopMonitor::NewL(*this, iPhone); + // iStopMonitor->StartMonitoring(); + + CleanupStack::Pop(1);//phone + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Notifies observers about a DTMF event +// ----------------------------------------------------------------------------- +// +void TMSDTMFProvider::NotifyDTMFEvent( + const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError, + const TChar aTone) + { + TRACE_PRN_FN_ENT; + for (gint i = 0; i < iObservers.Count(); i++) + { + TMSDTMFObserver* obs = iObservers[i]; + if (obs) + { + iObservers[i]->HandleDTMFEvent(aEvent, aError, aTone); + } + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Cancel DTMF string sending +// ----------------------------------------------------------------------------- +// +gint TMSDTMFProvider::CancelDtmfStringSending() + { + TRACE_PRN_FN_ENT; + gint ret(KErrAlreadyExists); + if (IsActive()) + { + Cancel(); + ret = KErrNone; + } + TRACE_PRN_FN_EXT; + return ret; + } + +// ----------------------------------------------------------------------------- +// Starts DTMF string sending +// ----------------------------------------------------------------------------- +// +gint TMSDTMFProvider::StartDtmfTone(const TChar aTone) + { + TRACE_PRN_FN_ENT; + gint ret(KErrAlreadyExists); + if (!IsActive()) + { + ret = iPhone.StartDTMFTone(aTone); + } + TRACE_PRN_IF_ERR(ret); + TRACE_PRN_FN_EXT; + return ret; + } + +// ----------------------------------------------------------------------------- +// Stop DTMF tone +// ----------------------------------------------------------------------------- +// +gint TMSDTMFProvider::StopDtmfTone() + { + TRACE_PRN_FN_ENT; + gint ret(KErrAlreadyExists); + if (!IsActive()) + { + ret = iPhone.StopDTMFTone(); + } + TRACE_PRN_IF_ERR(ret); + TRACE_PRN_FN_EXT; + return ret; + } + +// ----------------------------------------------------------------------------- +// Send DTMF string +// ----------------------------------------------------------------------------- +// +gint TMSDTMFProvider::SendDtmfToneString(const TDesC& aString) + { + TRACE_PRN_FN_ENT; + gint ret = KErrInUse; + if (!IsActive()) + { + iStatus = KRequestPending; + iPhone.SendDTMFTones(iStatus, aString); + SetActive(); + ret = KErrNone; + } + TRACE_PRN_IF_ERR(ret); + TRACE_PRN_FN_EXT; + return ret; + } + +// ----------------------------------------------------------------------------- +// Continue DTMF string sending +// ----------------------------------------------------------------------------- +// +gint TMSDTMFProvider::ContinueDtmfStringSending(const gboolean aContinue) + { + TRACE_PRN_FN_ENT; + gint status = iPhone.ContinueDTMFStringSending(aContinue); + TRACE_PRN_FN_EXT; + return status; + } + +// ----------------------------------------------------------------------------- +// Adds observer. +// ----------------------------------------------------------------------------- +// +void TMSDTMFProvider::AddObserver(const TMSDTMFObserver& aObserver) + { + TRACE_PRN_FN_ENT; + if (iObservers.Find(&aObserver) == KErrNotFound) + { + iObservers.Append(&aObserver); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Removes given observer. +// ----------------------------------------------------------------------------- +// +gint TMSDTMFProvider::RemoveObserver(const TMSDTMFObserver& aObserver) + { + TRACE_PRN_FN_ENT; + gint ret = KErrNotFound; + gint found = iObservers.Find(&aObserver); + if (found != KErrNotFound) + { + iObservers.Remove(found); + ret = KErrNone; + } + TRACE_PRN_FN_EXT; + return ret; + } + +// ----------------------------------------------------------------------------- +// From CActive. +// Handles request completion. +// ----------------------------------------------------------------------------- +// +void TMSDTMFProvider::RunL() + { + TRACE_PRN_FN_ENT; + if (iStatus == KErrNone) + { + TMSDTMFObserver::TCCPDtmfEvent event = + TMSDTMFObserver::ECCPDtmfStringSendingCompleted; + NotifyDTMFEvent(event, KErrNone, NULL); + } + else + { + gint error = iStatus.Int(); + if (error != KErrCancel) + { + TMSDTMFObserver::TCCPDtmfEvent event = + TMSDTMFObserver::ECCPDtmfStringSendingCompleted; + NotifyDTMFEvent(event, error, NULL); + TRACE_PRN_IF_ERR(error); + } + // Cancel is not notified + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// From CActive +// Canceling functionality. +// ----------------------------------------------------------------------------- +// +void TMSDTMFProvider::DoCancel() + { + TRACE_PRN_FN_ENT; + iPhone.CancelAsyncRequest(EMobilePhoneSendDTMFTones); + TRACE_PRN_FN_EXT; + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsdtmftoneplayer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/src/tmsdtmftoneplayer.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +// INCLUDE FILES +#include "tmsutility.h" +#include "tmsdtmftoneplayer.h" + +// CONSTANTS +const gint KDTMFMaxBufSize = 64; +const gint KMaxVolumeLevel = 10; + +_LIT(KPhoneTone_Asterisk, "*+w"); + +//from voip +const guint KDTMFToneLengthOn = 250000; +const guint KDTMFToneLengthOff = 50000; +const guint KDTMFToneLengthPause = 2500000; + +using namespace TMS; + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +TMSAudioDtmfTonePlayer* TMSAudioDtmfTonePlayer::NewL( + TMSDTMFTonePlayerObserver& obsrvr, guint audioPreference, + guint audioPriority) + { + TMSAudioDtmfTonePlayer* self = new (ELeave) TMSAudioDtmfTonePlayer(obsrvr, + audioPreference, audioPriority); + + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +//Destructor +TMSAudioDtmfTonePlayer::~TMSAudioDtmfTonePlayer() + { + TRACE_PRN_FN_ENT; + Cancel(); + delete iDTMFPlayer; + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer( + TMSDTMFTonePlayerObserver& obsrvr, guint audioPreference, + guint audioPriority) : + iObserver(obsrvr), + iPref(audioPreference), + iPrior(audioPriority) + { + TRACE_PRN_FN_ENT; + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::ConstructL() + { + TRACE_PRN_FN_ENT; + + TMMFPrioritySettings dtmfClickPlayerPrioritySettings; + iDTMFPlayer = CMMFDevSound::NewL(); + iDTMFPlayer->InitializeL(*this, EMMFStateTonePlaying); + + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::SetVolume +// Sets the volume level that is used when the dtmf tone is played. +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::SetVolume(gint volume) + { + TRACE_PRN_FN_ENT; + gint vol = ConvertVolumeLevel(volume); + + if (vol != iVolume) + { + iVolume = vol; + iDTMFPlayer->SetVolume(iVolume); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::PlayDtmfTone +// Searches the given DTMF tone from iToneArray and calls PlayCurrentTone +// member function. +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::PlayDtmfTone(TDes& tone) + { + TRACE_PRN_FN_ENT; + Cancel(); + + // DTMF signaling. + if (iDTMFPlayer) + { + TBuf key; + key.Append(tone); + TRAP_IGNORE(iDTMFPlayer->PlayDTMFStringL(tone)); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::Cancel +// Cancels the currently playing tone. +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::Cancel() + { + TRACE_PRN_FN_ENT; + iDTMFPlayer->Stop(); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::Normalize +// Lowers case for chars and if its '*','+', or 'w' sets it to asterisk +// char ('*'). +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::Normalize(TChar& tone) + { + TRACE_PRN_FN_ENT; + tone.LowerCase(); + TPtrC ast(KPhoneTone_Asterisk); + + if (ast.Locate(tone) != KErrNotFound) + { + tone = ast[0]; + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::InitializeComplete +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::InitializeComplete(TInt aError) + { + TRACE_PRN_FN_ENT; + + if (aError == KErrNone) + { + TMMFPrioritySettings dtmfPlayerSettings; + dtmfPlayerSettings.iPref = iPref; + dtmfPlayerSettings.iPriority = iPrior; + dtmfPlayerSettings.iState = EMMFStateTonePlaying; + iDTMFPlayer->SetPrioritySettings(dtmfPlayerSettings); + + TTimeIntervalMicroSeconds32 length(KDTMFToneLengthOn); + TTimeIntervalMicroSeconds32 pause(KDTMFToneLengthOff); + TTimeIntervalMicroSeconds32 zero(KDTMFToneLengthPause); + iDTMFPlayer->SetDTMFLengths(length, pause, zero); + iDTMFPlayer->SetVolume(iDTMFPlayer->MaxVolume()); + } + + iObserver.DTMFInitCompleted(aError); + TRACE_PRN_IF_ERR(aError); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::ToneFinished +// ----------------------------------------------------------------------------- +// +void TMSAudioDtmfTonePlayer::ToneFinished(TInt aError) + { + TRACE_PRN_FN_ENT; + iObserver.DTMFToneFinished(aError); + TRACE_PRN_IF_ERR(aError); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSAudioDtmfTonePlayer::ConvertVolumeLevel +// ----------------------------------------------------------------------------- +// +gint TMSAudioDtmfTonePlayer::ConvertVolumeLevel(gint volume) + { + TRACE_PRN_FN_ENT; + gint result = iDTMFPlayer->MaxVolume() * volume / KMaxVolumeLevel; + TRACE_PRN_FN_EXT; + return result; + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmseteldtmfmonitor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/src/tmseteldtmfmonitor.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#include +#include +#include "tmsdtmfprovider.h" +#include "tmsdtmfobserver.h" +#include "tmseteldtmfmonitor.h" +#include "tmsutility.h" + +using namespace TMS; + +// ----------------------------------------------------------------------------- +// TMSEtelDtmfMonitor::NewL. +// ----------------------------------------------------------------------------- +// +TMSEtelDtmfMonitor* TMSEtelDtmfMonitor::NewL(TMSDTMFProvider& aObserver, + RMmCustomAPI& aMmCustom) + { + TRACE_PRN_FN_ENT; + TMSEtelDtmfMonitor* self = new (ELeave) TMSEtelDtmfMonitor(aObserver, + aMmCustom); + TRACE_PRN_FN_EXT; + return self; + } + +// ----------------------------------------------------------------------------- +// Constructs the monitor. +// ----------------------------------------------------------------------------- +// +TMSEtelDtmfMonitor::TMSEtelDtmfMonitor(TMSDTMFProvider& aObserver, + RMmCustomAPI& aMmCustom) : + CActive(EPriorityStandard), + iObserver(aObserver), + iMmCustom(aMmCustom) + { + TRACE_PRN_FN_ENT; + CActiveScheduler::Add(this); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Destructs the object by canceling first ongoing monitoring. +// ----------------------------------------------------------------------------- +// +TMSEtelDtmfMonitor::~TMSEtelDtmfMonitor() + { + TRACE_PRN_FN_ENT; + Cancel(); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Starts the monitor. +// ----------------------------------------------------------------------------- +// +void TMSEtelDtmfMonitor::StartMonitoring() + { + TRACE_PRN_FN_ENT; + if (!IsActive()) + { + iStatus = KRequestPending; + iMmCustom.NotifyDtmfEvent(iStatus, iEventData); + SetActive(); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// From CActive. +// Handles line status change notifying. +// ----------------------------------------------------------------------------- +// +void TMSEtelDtmfMonitor::RunL() + { + TRACE_PRN_FN_ENT; + gint err = iStatus.Int(); + TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: status:%d"), err); + + if (err == KErrNone) + { + TMSDTMFObserver::TCCPDtmfEvent event; + if (iEventData.iEvent == RMmCustomAPI::EDtmfStart + && iEventData.iType == RMmCustomAPI::EDtmfManual) + { + event = TMSDTMFObserver::ECCPDtmfManualStart; + } + else if (iEventData.iEvent == RMmCustomAPI::EDtmfStart + && iEventData.iType == RMmCustomAPI::EDtmfSequence) + { + event = TMSDTMFObserver::ECCPDtmfSequenceStart; + } + else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop + && iEventData.iType == RMmCustomAPI::EDtmfManual) + { + event = TMSDTMFObserver::ECCPDtmfManualStop; + } + else if (iEventData.iEvent == RMmCustomAPI::EDtmfStop + && iEventData.iType == RMmCustomAPI::EDtmfSequence) + { + event = TMSDTMFObserver::ECCPDtmfSequenceStop; + } + else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort + && iEventData.iType == RMmCustomAPI::EDtmfManual) + { + event = TMSDTMFObserver::ECCPDtmfManualAbort; + } + else if (iEventData.iEvent == RMmCustomAPI::EDtmfAbort + && iEventData.iType == RMmCustomAPI::EDtmfSequence) + { + event = TMSDTMFObserver::ECCPDtmfSequenceAbort; + } + else + { + // Refresh and return (no observer notfiying). + TRACE_PRN_N2(_L("**TMS TMSEtelDtmfMonitor::RunL: Unknown event \ + = %¨d, type = %d"), iEventData.iEvent,iEventData.iType); + StartMonitoring(); + return; + } + + iObserver.NotifyDTMFEvent(event, err, iEventData.iTone); + } + else + { + TRACE_PRN_N1(_L("**TMS TMSEtelDtmfMonitor::RunL: Error \ + from DTMF: %d"),err); + } + + // Continue if not in offline mode + if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel + && err != KErrNotSupported) + { + StartMonitoring(); + } + TRACE_PRN_IF_ERR(err); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// From CActive +// Canceling functionality. +// ----------------------------------------------------------------------------- +// +void TMSEtelDtmfMonitor::DoCancel() + { + TRACE_PRN_FN_ENT; + iMmCustom.CancelAsyncRequest(ECustomNotifyDtmfEventIPC); + TRACE_PRN_FN_EXT; + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmseteldtmfstopmonitor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/tms/tmsserver/src/tmseteldtmfstopmonitor.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: Telephony Multimedia Service + * + */ + +#include +#include "tmsutility.h" +#include "tmsdtmfobserver.h" +#include "tmsdtmfprovider.h" +#include "tmseteldtmfstopmonitor.h" + +using namespace TMS; + +// ----------------------------------------------------------------------------- +// TMSEtelDtmfStopMonitor::NewL. +// ----------------------------------------------------------------------------- +// +TMSEtelDtmfStopMonitor* TMSEtelDtmfStopMonitor::NewL(TMSDTMFProvider& aObserver, + RMobilePhone& aPhone) + { + TRACE_PRN_FN_EXT; + TMSEtelDtmfStopMonitor* self = new (ELeave) TMSEtelDtmfStopMonitor( + aObserver, aPhone); + TRACE_PRN_FN_EXT; + return self; + } + +// ----------------------------------------------------------------------------- +// Constructs the monitor. +// ----------------------------------------------------------------------------- +// +TMSEtelDtmfStopMonitor::TMSEtelDtmfStopMonitor(TMSDTMFProvider& aObserver, + RMobilePhone& aPhone) : + CActive(EPriorityStandard), + iObserver(aObserver), + iPhone(aPhone) + { + TRACE_PRN_FN_ENT; + CActiveScheduler::Add(this); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Destructs the object by canceling first ongoing monitoring. +// ----------------------------------------------------------------------------- +// +TMSEtelDtmfStopMonitor::~TMSEtelDtmfStopMonitor() + { + TRACE_PRN_FN_ENT; + Cancel(); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// Starts the monitor. +// ----------------------------------------------------------------------------- +// +void TMSEtelDtmfStopMonitor::StartMonitoring() + { + TRACE_PRN_FN_ENT; + if (!IsActive()) + { + iStatus = KRequestPending; + iPhone.NotifyStopInDTMFString(iStatus); + SetActive(); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// From CActive. +// Handles line status change notifying. +// ----------------------------------------------------------------------------- +// +void TMSEtelDtmfStopMonitor::RunL() + { + TRACE_PRN_FN_ENT; + gint err = iStatus.Int(); + TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: status: %d"), err); + + if (err != KErrCancel && err != KErrServerTerminated) + { + TChar tone = NULL; + TMSDTMFObserver::TCCPDtmfEvent event = + TMSDTMFObserver::ECCPDtmfStopInDtmfString; + iObserver.NotifyDTMFEvent(event, err, tone); + } + else + { + TRACE_PRN_N1(_L("**TMS TMSEtelDtmfStopMonitor::RunL: Error \ + from RMobilePhone: %d"),iStatus.Int()); + } + + // Continue if not in offline mode + if (err != KErrGsmOfflineOpNotAllowed && err != KErrCancel + && err != KErrNotSupported) + { + StartMonitoring(); + } + TRACE_PRN_IF_ERR(err); + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// From CActive +// Canceling functionality. +// ----------------------------------------------------------------------------- +// +void TMSEtelDtmfStopMonitor::DoCancel() + { + TRACE_PRN_FN_ENT; + iPhone.CancelAsyncRequest(EMobilePhoneNotifyStopInDTMFString); + TRACE_PRN_FN_EXT; + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsglobaleffectssettings.cpp --- a/mmserv/tms/tmsserver/src/tmsglobaleffectssettings.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmsglobaleffectssettings.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -18,6 +18,7 @@ // INCLUDE FILES #include "tmsglobaleffectssettings.h" #include "tmsclientserver.h" +#include "tmsutility.h" using namespace TMS; @@ -26,7 +27,7 @@ const TInt KDefaultMaxVolume = 10; const TInt KDefaultGain = 1; -#ifndef __WINS__ +#ifndef __WINSCW__ const TInt KDefaultMaxGain = 1; #else const TInt KDefaultMaxGain = 64; @@ -59,13 +60,17 @@ // void TMSGlobalEffectsSettings::ConstructL() { + TRACE_PRN_FN_ENT; // Create repository instance iRepository = CRepository::NewL(KCRUidTmseffects); if (iRepository) { iRepository->Get(KTmsLoudSpkrVolume, iLoudSpkrVolume); iRepository->Get(KTmsEarPieceVolume, iEarVolume); + TRACE_PRN_N1(_L("loud spkr vol %d"),iLoudSpkrVolume); + TRACE_PRN_N1(_L("ear piece vol %d"),iEarVolume); } + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -94,15 +99,27 @@ // void TMSGlobalEffectsSettings::SetLoudSpkrVolume(TInt aVolume) { + TRACE_PRN_FN_ENT; TInt status(KErrNone); if (iRepository) { - status = iRepository->Set(KTmsLoudSpkrVolume, aVolume); + if (aVolume > 0) + { + status = iRepository->Set(KTmsLoudSpkrVolume, aVolume); + TRACE_PRN_N2(_L("status %d loud spkr vol %d"),status,aVolume); + } + else + { + status = iRepository->Set(KTmsLoudSpkrVolume, KDefaultVolume); + TRACE_PRN_N(_L("loud spkr level 0 store default")); + } if (status == KErrNone) { iLoudSpkrVolume = aVolume; + TRACE_PRN_N1(_L("cached loud spkr vol %d"),iLoudSpkrVolume); } } + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -111,15 +128,27 @@ // void TMSGlobalEffectsSettings::SetEarPieceVolume(TInt aVolume) { + TRACE_PRN_FN_ENT; TInt status(KErrNone); if (iRepository) { - status = iRepository->Set(KTmsEarPieceVolume, aVolume); + if (aVolume > 0) + { + status = iRepository->Set(KTmsEarPieceVolume, aVolume); + TRACE_PRN_N2(_L("status %d ear vol %d"),status,aVolume); + } + else + { + status = iRepository->Set(KTmsEarPieceVolume, KDefaultVolume); + TRACE_PRN_N(_L("ear piece vol level 0 store default")); + } if (status == KErrNone) { iEarVolume = aVolume; + TRACE_PRN_N1(_L("cached ear piece vol %d"),iEarVolume); } } + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -129,6 +158,7 @@ void TMSGlobalEffectsSettings::GetLoudSpkrVolume(TInt& aVolume) { aVolume = iLoudSpkrVolume; + TRACE_PRN_N1(_L("TMSGlobalEffectsSettings GetLoudSpkrVolume %d"),aVolume); } // ----------------------------------------------------------------------------- @@ -138,6 +168,7 @@ void TMSGlobalEffectsSettings::GetEarPieceVolume(TInt& aVolume) { aVolume = iEarVolume; + TRACE_PRN_N1(_L("TMSGlobalEffectsSettings GetEarPieceVolume %d"),aVolume); } // ----------------------------------------------------------------------------- @@ -176,4 +207,21 @@ return iMaxGain; } -// End of File +// ----------------------------------------------------------------------------- +// TMSGlobalEffectsSettings::ResetDefaultVolume +// ----------------------------------------------------------------------------- +// +void TMSGlobalEffectsSettings::ResetDefaultVolume() + { + if (iLoudSpkrVolume == 0) + { + iRepository->Get(KTmsLoudSpkrVolume, iLoudSpkrVolume); + TRACE_PRN_N1(_L("Needed to reset default loudspkr vol %d"),iLoudSpkrVolume); + } + if (iEarVolume == 0) + { + iRepository->Get(KTmsEarPieceVolume, iEarVolume); + TRACE_PRN_N1(_L("Needed to reset default ear vol %d"),iEarVolume); + } + } + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp --- a/mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -392,9 +392,8 @@ void TMSRtAudioHdlr::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/) { - TRACE_PRN_N2( - _L("TMS->TMSRtAudioHdlr::MapcInitComplete: player[%d], err[%d]"), - iRtType, aError); + TRACE_PRN_FN_ENT; + TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); __ASSERT_DEBUG((iFormat == EFormatSample) || ((iFormat == EFormatTts) && (iPlayerStatus == EToneLoading)), @@ -414,6 +413,7 @@ } } iObserver.RtAudioHdlrEvent(ECmdRingToneOpenComplete, aError, iRtType); + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -422,9 +422,8 @@ // void TMSRtAudioHdlr::MapcPlayComplete(TInt aError) { - TRACE_PRN_N2( - _L("TMS->TMSRtAudioHdlr::MapcPlayComplete: player[%d], err[%d]"), - iRtType, aError); + TRACE_PRN_FN_ENT; + TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); iPlayerStatus = EToneReady; @@ -437,6 +436,7 @@ i3DPlugin = NULL; }*/ iObserver.RtAudioHdlrEvent(ECmdRingTonePlayComplete, aError, iRtType); + TRACE_PRN_FN_EXT; } // ----------------------------------------------------------------------------- @@ -445,9 +445,8 @@ // void TMSRtAudioHdlr::MatoPrepareComplete(TInt aError) { - TRACE_PRN_N2( - _L("TMS->TMSRtAudioHdlr::MatoPrepareComplete: player[%d], err[%d]"), - iRtType, aError); + TRACE_PRN_FN_ENT; + TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); __ASSERT_DEBUG(((iFormat == EFormatTone) && (iPlayerStatus == EToneLoading)), PANIC(TMS_RESULT_INVALID_STATE)); @@ -466,6 +465,7 @@ } } iObserver.RtAudioHdlrEvent(ECmdRingToneOpenComplete, aError, iRtType); + TRACE_PRN_FN_ENT; } // ----------------------------------------------------------------------------- @@ -474,12 +474,11 @@ // void TMSRtAudioHdlr::MatoPlayComplete(TInt aError) { - TRACE_PRN_N2( - _L("TMS->TMSRtAudioHdlr::MatoPlayComplete: player[%d], err[%d]"), - iRtType, aError); - + TRACE_PRN_FN_ENT; + TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); iObserver.RtAudioHdlrEvent(ECmdRingTonePlayComplete, aError, iRtType); - } + TRACE_PRN_FN_EXT; + } // ----------------------------------------------------------------------------- // TMSRtAudioHdlr::DoPlay @@ -505,7 +504,7 @@ } else { -#ifdef __WINS__ +#ifdef __WINSCW__ iSamplePlayer->Play(); #else /* @@ -529,7 +528,7 @@ } }*/ iSamplePlayer->Play(); -#endif //__WINS__ +#endif //__WINSCW__ } TRACE_PRN_FN_EXT; @@ -830,4 +829,3 @@ } } -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsrtplayer.cpp --- a/mmserv/tms/tmsserver/src/tmsrtplayer.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmsrtplayer.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -48,7 +48,7 @@ _LIT(KTMSTtsHeader, "(tts)"); -#ifdef __WINS__ +#ifdef __WINSCW__ //_LIT(KTMSDefaultSoundFile, "z:\\data\\sounds\\digital\\Nokia_tune.aac"); _LIT(KTMSDefaultSoundFile, "Z:\\Data\\Sounds\\Digital\\Nokia tune.aac"); //_LIT(KTMSDefaultSoundFile, "c:\\data\\sounds\\digital\\test_8khz.wav"); @@ -67,7 +67,7 @@ \x40\x64\x06\x0B"); _LIT8(KTMSUnsecureVoIPCall, "\x00\x11\x0B\x67\x04\x40\x04\x67\x04\x40\x04\ \x6C\x04\x40\x04\x6D\x04\x0B"); -#endif // __WINS__ +#endif // __WINSCW__ // ----------------------------------------------------------------------------- // TMSRingTonePlayer::NewL @@ -115,7 +115,7 @@ iEngine = ProEngFactory::NewEngineL(); - InitRtParamsL(EPlayerBackup); + InitRtParams(EPlayerBackup); //CreateDefaultRingToneL(); CreateBkpRtPlayerL(); //GetMaxToneFileSizeL(iToneFileSizeLimitKB); @@ -152,10 +152,10 @@ } // ----------------------------------------------------------------------------- -// TMSRingTonePlayer::InitRtParamsL +// TMSRingTonePlayer::InitRtParams // ----------------------------------------------------------------------------- // -void TMSRingTonePlayer::InitRtParamsL(TRtPlayerType aPlayerType) +void TMSRingTonePlayer::InitRtParams(TRtPlayerType aPlayerType) { TRACE_PRN_FN_ENT; @@ -183,7 +183,7 @@ { TRACE_PRN_FN_ENT; - InitRtParamsL(EPlayerDefault); + InitRtParams(EPlayerDefault); LoadProfileRingToneL(); TRACE_PRN_FN_EXT; @@ -371,7 +371,7 @@ delete iBeepOncePlayer; iBeepOncePlayer = NULL; -#ifdef __WINS__ +#ifdef __WINSCW__ TParse* fp = new (ELeave) TParse(); fp->Set(KTMSBeepSequence, NULL, NULL); TFileName fileName(fp->FullName()); @@ -381,7 +381,7 @@ #else iBeepOncePlayer = TMSRtAudioHdlr::NewSeqL(KTMSBeepSequence(), iRtParam.iPriority, iRtParam.iPreference, *this, EPlayerBeepOnce); -#endif // __WINS__ +#endif // __WINSCW__ iRtParam.iType = EPlayerBeepOnce; TRACE_PRN_FN_EXT; @@ -399,7 +399,7 @@ delete iSilentPlayer; iSilentPlayer = NULL; -#ifdef __WINS__ +#ifdef __WINSCW__ TParse* fp = new (ELeave) TParse(); fp->Set(KTMSNoSoundSequence, NULL, NULL); TFileName fileName(fp->FullName()); @@ -409,7 +409,7 @@ #else iSilentPlayer = TMSRtAudioHdlr::NewSeqL(KTMSNoSoundSequence(), iRtParam.iPriority, iRtParam.iPreference, *this, EPlayerSilent); -#endif // __WINS__ +#endif // __WINSCW__ iRtParam.iType = EPlayerSilent; TRACE_PRN_FN_EXT; @@ -426,7 +426,7 @@ delete iUnsecureVoIPTonePlayer; iUnsecureVoIPTonePlayer = NULL; -#ifdef __WINS__ +#ifdef __WINSCW__ TParse* fp = new (ELeave) TParse(); fp->Set(KTMSUnsecureVoIPCall, NULL, NULL); TFileName fileName(fp->FullName()); @@ -438,7 +438,7 @@ iUnsecureVoIPTonePlayer = TMSRtAudioHdlr::NewSeqL(KTMSUnsecureVoIPCall(), iRtParam.iPriority, iRtParam.iPreference, *this, EPlayerUnsecureVoIP); -#endif // __WINS__ +#endif // __WINSCW__ iRtParam.iType = EPlayerUnsecureVoIP; TRACE_PRN_FN_EXT; @@ -449,7 +449,7 @@ // ----------------------------------------------------------------------------- // void TMSRingTonePlayer::CreateCustomSequencePlayerL(const TDesC8& -#ifdef __WINS__ +#ifdef __WINSCW__ /*aSequence*/) #else aSequence) @@ -460,7 +460,7 @@ delete iSequencePlayer; iSequencePlayer = NULL; -#ifdef __WINS__ +#ifdef __WINSCW__ TParse* fp = new (ELeave) TParse(); fp->Set(KTMSBeepSequence, NULL, NULL); TFileName fileName(fp->FullName()); @@ -470,7 +470,7 @@ #else iSequencePlayer = TMSRtAudioHdlr::NewSeqL(aSequence, iRtParam.iPriority, iRtParam.iPreference, *this, EPlayerSequence); -#endif // __WINS__ +#endif // __WINSCW__ iRtParam.iType = EPlayerSequence; TRACE_PRN_FN_EXT; @@ -1378,12 +1378,12 @@ iAudioPlayer = NULL; } -#ifdef __WINS__ +#ifdef __WINSCW__ TRAP_IGNORE(PlayAudioRingToneL()); iTonePlayingStatus = EDefaultTonePlaying; #else TRAP_IGNORE(PlayDefaultToneL()); -#endif +#endif //__WINSCW__ break; } case EDefaultTonePlaying: @@ -1710,4 +1710,3 @@ return audioHdlr; } -// End of File diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsserver.cpp --- a/mmserv/tms/tmsserver/src/tmsserver.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmsserver.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -30,7 +30,9 @@ #include "tmsglobaleffectssettings.h" #include "tmstareventhandler.h" #include "tmscenrepaudiohandler.h" -#include "tmsdtmfeventhandler.h" +#include "tmsdtmftoneplayer.h" +#include "tmsdtmfprovider.h" +#include "tmspubsublistener.h" #include "tmsrtparam.h" #include "tmsserver.h" @@ -83,10 +85,12 @@ delete iEffectSettings; delete iTarHandler; delete iAudioCenRepHandler; - delete iDTMFHandler; DeinitRingTonePlayer(); delete iTMSRtPlayer; - + delete iDTMFUplinkPlayer; + delete iDTMFUplinkPlayerEtel; + delete iDTMFDnlinkPlayer; + delete iSyncVol; TRACE_PRN_FN_EXT; } @@ -134,8 +138,12 @@ iEffectSettings = TMSGlobalEffectsSettings::NewL(); iTarHandler = NULL; iAudioCenRepHandler = NULL; - iDTMFHandler = NULL; iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE; + iDTMFDnlinkPlayer = NULL; + iDTMFUplinkPlayer = NULL; + iDTMFUplinkPlayerEtel = NULL; + iActiveCallType = -1; + iSyncVol = TMSPubSubListener::NewL(KTMSPropertyCategory,ESyncVolume, this); //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode TRAP_IGNORE(InitRingTonePlayerL()); @@ -190,46 +198,6 @@ } // ----------------------------------------------------------------------------- -// TMSServer::SetDnLinkSession -// -// ----------------------------------------------------------------------------- -// -void TMSServer::SetDnLinkSession(const TBool aSession) - { - iDnlinkSession = aSession; - } - -// ----------------------------------------------------------------------------- -// TMSServer::SetUpLinkSession -// -// ----------------------------------------------------------------------------- -// -void TMSServer::SetUpLinkSession(const TBool aSession) - { - iUplinkSession = aSession; - } - -// ----------------------------------------------------------------------------- -// TMSServer::HasDnLinkSession -// -// ----------------------------------------------------------------------------- -// -TBool TMSServer::HasDnLinkSession() const - { - return iDnlinkSession; - } - -// ----------------------------------------------------------------------------- -// TMSServer::HasUpLinkSession -// -// ----------------------------------------------------------------------------- -// -TBool TMSServer::HasUpLinkSession() const - { - return iUplinkSession; - } - -// ----------------------------------------------------------------------------- // TMSServer::GetNewTMSCallSessionHandleL // // ----------------------------------------------------------------------------- @@ -272,7 +240,7 @@ TInt status = TMS_RESULT_SUCCESS; TMSStartAndMonitorTMSCallThread* callServerThread = NULL; - TRAP(status, callServerThread =TMSStartAndMonitorTMSCallThread::NewL( + TRAP(status, callServerThread = TMSStartAndMonitorTMSCallThread::NewL( const_cast(this))); if (status != TMS_RESULT_SUCCESS) { @@ -297,11 +265,13 @@ case TMS_AUDIO_OUTPUT_LOUDSPEAKER: { iEffectSettings->GetLoudSpkrVolume(volume); + TRACE_PRN_N1(_L("loudspk vol %d"),volume); } break; default: { iEffectSettings->GetEarPieceVolume(volume); + TRACE_PRN_N1(_L("ear vol %d"),volume); } break; } @@ -389,40 +359,6 @@ } // ----------------------------------------------------------------------------- -// TMSServer::StartDTMFNotifierL -// -// ----------------------------------------------------------------------------- -// -void TMSServer::StartDTMFNotifierL() - { - TRACE_PRN_FN_ENT; - - if (!iDTMFHandler) - { - iDTMFHandlerCount = 0; - iDTMFHandler = TMSDtmfEventHandler::NewL( - (const_cast (this))); - } - iDTMFHandlerCount++; - - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSServer::CancelDTMFNotifier -// -// ----------------------------------------------------------------------------- -// -void TMSServer::CancelDTMFNotifier() - { - if (--iDTMFHandlerCount <= 0) - { - delete iDTMFHandler; - iDTMFHandler = NULL; - } - } - -// ----------------------------------------------------------------------------- // TMSServer::SetOutput // // ----------------------------------------------------------------------------- @@ -608,9 +544,11 @@ case TMS_AUDIO_OUTPUT_PUBLIC: case TMS_AUDIO_OUTPUT_LOUDSPEAKER: iEffectSettings->GetLoudSpkrVolume(volume); + TRACE_PRN_N1(_L("TMSServer::GetLevel loudspkr vol %d"),volume); break; default: iEffectSettings->GetEarPieceVolume(volume); + TRACE_PRN_N1(_L("TMSServer::GetLevel ear vol %d"),volume); break; } @@ -668,16 +606,12 @@ } iSessionIter.SetToFirst(); - TMSServerSession* serverSession = - static_cast (iSessionIter++); - - while (serverSession != NULL) + TMSServerSession* ss = static_cast (iSessionIter++); + while (ss != NULL) { - serverSession->HandleGlobalEffectChange( - TMS_EVENT_EFFECT_VOL_CHANGED, level, EFalse, - iCurrentRouting); - - serverSession = static_cast (iSessionIter++); + ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, level, + EFalse, iCurrentRouting); + ss = static_cast (iSessionIter++); } } @@ -744,15 +678,11 @@ iAudioCenRepHandler->SetMuteState(level); iEffectSettings->SetGain(level); iSessionIter.SetToFirst(); - - TMSServerSession* serverSession = - static_cast (iSessionIter++); - - while (serverSession != NULL) + TMSServerSession* ss = static_cast (iSessionIter++); + while (ss != NULL) { - serverSession->HandleGlobalEffectChange( - TMS_EVENT_EFFECT_GAIN_CHANGED, level); - serverSession = static_cast (iSessionIter++); + ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_GAIN_CHANGED, level); + ss = static_cast (iSessionIter++); } } @@ -876,27 +806,28 @@ iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER) { iEffectSettings->GetLoudSpkrVolume(vol); + TRACE_PRN_N1(_L("TMSServer::NotifyTarClients loudspkr vol %d"),vol); } else { iEffectSettings->GetEarPieceVolume(vol); + TRACE_PRN_N1(_L("TMSServer::NotifyTarClients ear vol %d"),vol); } TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol); iSessionIter.SetToFirst(); - TMSServerSession* serverSession = - static_cast (iSessionIter++); - while (serverSession != NULL) + TMSServerSession* ss = static_cast (iSessionIter++); + while (ss != NULL) { // Send only if there is a subscriber to TMS routing notifications. if (iTarHandlerCount > 1) { - serverSession->HandleRoutingChange(routingpckg); + ss->HandleRoutingChange(routingpckg); } - serverSession->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, - vol, ETrue, iCurrentRouting); - serverSession = static_cast (iSessionIter++); + ss->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED, vol, ETrue, + iCurrentRouting); + ss = static_cast (iSessionIter++); } TRACE_PRN_FN_EXT; @@ -904,6 +835,49 @@ } // ----------------------------------------------------------------------------- +// TMSServer::InitDTMF +// +// ----------------------------------------------------------------------------- +// +TInt TMSServer::InitDTMF(const RMessage2& aMessage) + { + TRACE_PRN_FN_ENT; + TInt status(TMS_RESULT_SUCCESS); + TMSStreamType strmtype; + strmtype = (TMSStreamType) aMessage.Int0(); + + if (strmtype == TMS_STREAM_UPLINK) + { + if (!iDTMFUplinkPlayerEtel) //CS call + { + // Uses ETel for uplink + TRAP(status, iDTMFUplinkPlayerEtel = TMSDTMFProvider::NewL()); + if (iDTMFUplinkPlayerEtel && status == TMS_RESULT_SUCCESS) + { + iDTMFUplinkPlayerEtel->AddObserver(*this); + } + } + if (!iDTMFUplinkPlayer) //IP call + { + TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, + KAudioDTMFString, KAudioPriorityDTMFString)); + } + } + else if (strmtype == TMS_STREAM_DOWNLINK) + { + if (!iDTMFDnlinkPlayer) //CS or IP call + { + TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this, + KAudioDTMFString, KAudioPriorityDTMFString)); + } + } + + aMessage.Complete(status); + TRACE_PRN_FN_EXT; + return status; + } + +// ----------------------------------------------------------------------------- // TMSServer::StartDTMF // // ----------------------------------------------------------------------------- @@ -915,31 +889,62 @@ TInt status(TMS_RESULT_SUCCESS); TInt len(0); TMSStreamType strmtype; - strmtype = (TMSStreamType) aMessage.Int0(); len = aMessage.GetDesLength(1); - HBufC* tone(NULL); if (len > 0) { - delete tone; - tone = NULL; - TRAP(status,tone = HBufC::NewL(len)); + HBufC* tone(NULL); + TRAP(status, tone = HBufC::NewL(len)); if (status == TMS_RESULT_SUCCESS) { TPtr ptr = tone->Des(); status = aMessage.Read(1, ptr); TRACE_PRN_N(ptr); - TIpcArgs args; - args.Set(0, strmtype); - args.Set(1, &ptr); - status = SendMessageToCallServ(TMS_DTMF_START, args); - delete tone; - tone = NULL; + if (strmtype == TMS_STREAM_UPLINK) + { +#ifdef __WINSCW__ + // Just to hear DTMF tones in Wins + iActiveCallType = TMS_CALL_IP; +#else + FindActiveCallType(); +#endif + if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer) + { + iDTMFUplinkPlayer->PlayDtmfTone(ptr); + status = TMS_RESULT_SUCCESS; + } + else if (iActiveCallType == TMS_CALL_CS && + iDTMFUplinkPlayerEtel) + { + status = iDTMFUplinkPlayerEtel->SendDtmfToneString(ptr); + } + else + { + status = TMS_RESULT_INVALID_STATE; + } + NotifyDtmfClients(ECmdDTMFToneUplPlayStarted, status); + } + else if (strmtype == TMS_STREAM_DOWNLINK) + { + status = TMS_RESULT_INVALID_STATE; + if (iDTMFDnlinkPlayer) + { + iDTMFDnlinkPlayer->PlayDtmfTone(ptr); + status = TMS_RESULT_SUCCESS; + } + NotifyDtmfClients(ECmdDTMFToneDnlPlayStarted, status); + } + else + { + status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED; + } } + delete tone; + tone = NULL; } + aMessage.Complete(status); - TRACE_PRN_FN_EXT; return status; } @@ -953,12 +958,35 @@ { TRACE_PRN_FN_ENT; - TInt status(TMS_RESULT_SUCCESS); + TInt status(TMS_RESULT_INVALID_STATE); TMSStreamType streamtype; streamtype = (TMSStreamType) aMessage.Int0(); - status = SendMessageToCallServ(TMS_DTMF_STOP, streamtype); + + if (streamtype == TMS_STREAM_UPLINK) + { + if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer) + { + iDTMFUplinkPlayer->Cancel(); + status = TMS_RESULT_SUCCESS; + } + else if (iActiveCallType == TMS_CALL_CS && + iDTMFUplinkPlayerEtel) + { + status = iDTMFUplinkPlayerEtel->StopDtmfTone(); + status = TMSUtility::EtelToTMSResult(status); + } + } + else if (streamtype == TMS_STREAM_DOWNLINK) + { + if (iDTMFDnlinkPlayer) + { + iDTMFDnlinkPlayer->Cancel(); + status = TMS_RESULT_SUCCESS; + } + } + iActiveCallType = -1; + NotifyDtmfClients(ECmdDTMFTonePlayFinished, status); aMessage.Complete(status); - TRACE_PRN_FN_EXT; return status; } @@ -971,13 +999,14 @@ TInt TMSServer::ContinueSendingDTMF(const RMessage2& aMessage) { TRACE_PRN_FN_ENT; - - TInt status(TMS_RESULT_SUCCESS); - TBool continuesending; - continuesending = (TBool) aMessage.Int0(); - status = SendMessageToCallServ(TMS_DTMF_CONTINUE, continuesending); + TInt status(TMS_RESULT_INVALID_STATE); + if (iActiveCallType == TMS_CALL_CS && iDTMFUplinkPlayerEtel) + { + TBool continuesnd = (TBool) aMessage.Int0(); + status = iDTMFUplinkPlayerEtel->ContinueDtmfStringSending(continuesnd); + status = TMSUtility::EtelToTMSResult(status); + } aMessage.Complete(status); - TRACE_PRN_FN_EXT; return status; } @@ -987,22 +1016,117 @@ // // ----------------------------------------------------------------------------- // -TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg) +TInt TMSServer::NotifyDtmfClients(gint aEventType, gint aError) + { + TRACE_PRN_FN_ENT; + iSessionIter.SetToFirst(); + TMSServerSession* ss = static_cast (iSessionIter++); + while (ss != NULL) + { + ss->NotifyClient(aEventType, aError); + ss = static_cast (iSessionIter++); + } + TRACE_PRN_FN_EXT; + return TMS_RESULT_SUCCESS; + } + +//From DTMFTonePlayerObserver +// ----------------------------------------------------------------------------- +// TMSServer::DTMFInitCompleted +// +// ----------------------------------------------------------------------------- +// +void TMSServer::DTMFInitCompleted(gint status) + { + TRACE_PRN_FN_ENT; + if (status != TMS_RESULT_SUCCESS) + { + NotifyDtmfClients(ECmdDTMFTonePlayFinished, status); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- +// TMSServer::DTMFToneFinished +// +// ----------------------------------------------------------------------------- +// +void TMSServer::DTMFToneFinished(gint status) { TRACE_PRN_FN_ENT; + TRACE_PRN_IF_ERR(status); - iSessionIter.SetToFirst(); - TMSServerSession* serverSession = - static_cast (iSessionIter++); + // KErrUnderflow indicates end of DTMF playback. + if (status == KErrUnderflow /*|| status == KErrInUse*/) + { + status = TMS_RESULT_SUCCESS; + } + NotifyDtmfClients(ECmdDTMFTonePlayFinished, status); + TRACE_PRN_FN_EXT; + } - while (serverSession != NULL) +// ----------------------------------------------------------------------------- +// TMSServer::FindActiveCallType +// +// ----------------------------------------------------------------------------- +// +gint TMSServer::FindActiveCallType() + { + TInt status(TMS_RESULT_INVALID_STATE); + iActiveCallType = -1; + TInt i = 0; + while (i < iTMSCallServList.Count()) { - serverSession->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus); - serverSession = static_cast (iSessionIter++); + TMSStartAndMonitorTMSCallThread* callThread = iTMSCallServList[i]; + if (callThread) + { + TmsCallMsgBufPckg pckg; + TIpcArgs args(&pckg); + status = callThread->iTMSCallProxyLocal.ReceiveFromCallServer( + TMS_GET_ACTIVE_CALL_PARAMS, args); + if (pckg().iBool || status != TMS_RESULT_SUCCESS) + { + iActiveCallType = static_cast (pckg().iInt); + break; + } + } + i++; + } + return status; + } + +// ----------------------------------------------------------------------------- +// TMSServer::HandleDTMFEvent +// +// ----------------------------------------------------------------------------- +// +void TMSServer::HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event, + const gint status, const TChar /*tone*/) + { + TRACE_PRN_FN_ENT; + TRACE_PRN_IF_ERR(status); + gint cmd = ECmdDTMFTonePlayFinished; + + switch (event) + { + case ECCPDtmfUnknown: //Unknown + break; + case ECCPDtmfManualStart: //DTMF sending started manually + case ECCPDtmfSequenceStart: //Automatic DTMF sending initialized + cmd = ECmdDTMFToneUplPlayStarted; + break; + case ECCPDtmfManualStop: //DTMF sending stopped manually + case ECCPDtmfManualAbort: //DTMF sending aborted manually + case ECCPDtmfSequenceStop: //Automatic DTMF sending stopped + case ECCPDtmfSequenceAbort: //Automatic DTMF sending aborted + case ECCPDtmfStopInDtmfString: //There was stop mark in DTMF string + case ECCPDtmfStringSendingCompleted://DTMF sending success + default: + break; } + NotifyDtmfClients(cmd, status); TRACE_PRN_FN_EXT; - return TMS_RESULT_SUCCESS; } // ----------------------------------------------------------------------------- @@ -1292,6 +1416,22 @@ } // ----------------------------------------------------------------------------- +// TMSServer::HandleNotifyPSL +// +// ----------------------------------------------------------------------------- +// +void TMSServer::HandleNotifyPSL(const TUid aUid, const TInt& aKey, + const TRequestStatus& aStatus) + { + TRACE_PRN_FN_ENT; + if(iEffectSettings) + { + iEffectSettings->ResetDefaultVolume(); + } + TRACE_PRN_FN_EXT; + } + +// ----------------------------------------------------------------------------- // TMSServer::RunServerL // // ----------------------------------------------------------------------------- @@ -1575,4 +1715,3 @@ return r; } -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmsserversession.cpp --- a/mmserv/tms/tmsserver/src/tmsserversession.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmsserversession.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -15,7 +15,6 @@ * */ -#include #include "tmsutility.h" #include "tmsclientserver.h" #include "tmsshared.h" @@ -231,13 +230,8 @@ iServer.MuteRingTone(); aMessage.Complete(TMS_RESULT_SUCCESS); break; - case ETMSStartDTMFNotifier: - iServer.StartDTMFNotifierL(); - aMessage.Complete(TMS_RESULT_SUCCESS); - break; - case ETMSCancelDTMFNotifier: - iServer.CancelDTMFNotifier(); - aMessage.Complete(TMS_RESULT_SUCCESS); + case ETMSInitDTMF: + iServer.InitDTMF(aMessage); break; case ETMSStartDTMF: iServer.StartDTMF(aMessage); @@ -522,4 +516,3 @@ } } -// End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsserver/src/tmstareventhandler.cpp --- a/mmserv/tms/tmsserver/src/tmstareventhandler.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsserver/src/tmstareventhandler.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -108,5 +108,12 @@ TRACE_PRN_FN_EXT; } -// End of File +// ----------------------------------------------------------------------------- +// TMSTarEventHandler::RunError +// ----------------------------------------------------------------------------- +// +TInt TMSTarEventHandler::RunError(TInt aError) + { + return aError; + } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsutility/bwins/tmsutility.def --- a/mmserv/tms/tmsutility/bwins/tmsutility.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsutility/bwins/tmsutility.def Wed Aug 18 10:17:22 2010 +0300 @@ -8,7 +8,8 @@ ?FourCCToTMSFormat@TMSUtility@TMS@@SAHK@Z @ 7 NONAME ; int TMS::TMSUtility::FourCCToTMSFormat(unsigned long) ?NotifyAfter@TMSTimer@TMS@@QAEXHAAVTMSTimerObserver@2@@Z @ 8 NONAME ; void TMS::TMSTimer::NotifyAfter(int, class TMS::TMSTimerObserver &) ?ToTAROutput@TMSUtility@TMS@@SA?AW4TAudioOutput@CTelephonyAudioRouting@@H@Z @ 9 NONAME ; enum CTelephonyAudioRouting::TAudioOutput TMS::TMSUtility::ToTAROutput(int) - ?ToFourCC@TMSUtility@TMS@@SAKH@Z @ 10 NONAME ; unsigned long TMS::TMSUtility::ToFourCC(int) - ??1TMSTimer@TMS@@UAE@XZ @ 11 NONAME ; TMS::TMSTimer::~TMSTimer(void) - ?NotifyAfter@TMSTimer@TMS@@QAEXHVTCallBack@@@Z @ 12 NONAME ; void TMS::TMSTimer::NotifyAfter(int, class TCallBack) + ?SymbianResult@TMSUtility@TMS@@SAHH@Z @ 10 NONAME ; int TMS::TMSUtility::SymbianResult(int) + ?ToFourCC@TMSUtility@TMS@@SAKH@Z @ 11 NONAME ; unsigned long TMS::TMSUtility::ToFourCC(int) + ??1TMSTimer@TMS@@UAE@XZ @ 12 NONAME ; TMS::TMSTimer::~TMSTimer(void) + ?NotifyAfter@TMSTimer@TMS@@QAEXHVTCallBack@@@Z @ 13 NONAME ; void TMS::TMSTimer::NotifyAfter(int, class TCallBack) diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsutility/eabi/tmsutility.def --- a/mmserv/tms/tmsutility/eabi/tmsutility.def Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsutility/eabi/tmsutility.def Wed Aug 18 10:17:22 2010 +0300 @@ -1,18 +1,19 @@ EXPORTS _ZN3TMS10TMSUtility11ToTAROutputEi @ 1 NONAME _ZN3TMS10TMSUtility11ToTMSOutputEN22CTelephonyAudioRouting12TAudioOutputE @ 2 NONAME - _ZN3TMS10TMSUtility15EtelToTMSResultEi @ 3 NONAME - _ZN3TMS10TMSUtility17FourCCToTMSFormatEm @ 4 NONAME - _ZN3TMS10TMSUtility8ToFourCCEi @ 5 NONAME - _ZN3TMS10TMSUtility9TMSResultEi @ 6 NONAME - _ZN3TMS8TMSTimer11NotifyAfterEi9TCallBack @ 7 NONAME - _ZN3TMS8TMSTimer11NotifyAfterEiRNS_16TMSTimerObserverE @ 8 NONAME - _ZN3TMS8TMSTimer12CancelNotifyEv @ 9 NONAME - _ZN3TMS8TMSTimer4NewLEi @ 10 NONAME - _ZN3TMS8TMSTimer9IsRunningEv @ 11 NONAME - _ZN3TMS8TMSTimerD0Ev @ 12 NONAME - _ZN3TMS8TMSTimerD1Ev @ 13 NONAME - _ZN3TMS8TMSTimerD2Ev @ 14 NONAME - _ZTIN3TMS8TMSTimerE @ 15 NONAME - _ZTVN3TMS8TMSTimerE @ 16 NONAME + _ZN3TMS10TMSUtility13SymbianResultEi @ 3 NONAME + _ZN3TMS10TMSUtility15EtelToTMSResultEi @ 4 NONAME + _ZN3TMS10TMSUtility17FourCCToTMSFormatEm @ 5 NONAME + _ZN3TMS10TMSUtility8ToFourCCEi @ 6 NONAME + _ZN3TMS10TMSUtility9TMSResultEi @ 7 NONAME + _ZN3TMS8TMSTimer11NotifyAfterEi9TCallBack @ 8 NONAME + _ZN3TMS8TMSTimer11NotifyAfterEiRNS_16TMSTimerObserverE @ 9 NONAME + _ZN3TMS8TMSTimer12CancelNotifyEv @ 10 NONAME + _ZN3TMS8TMSTimer4NewLEi @ 11 NONAME + _ZN3TMS8TMSTimer9IsRunningEv @ 12 NONAME + _ZN3TMS8TMSTimerD0Ev @ 13 NONAME + _ZN3TMS8TMSTimerD1Ev @ 14 NONAME + _ZN3TMS8TMSTimerD2Ev @ 15 NONAME + _ZTIN3TMS8TMSTimerE @ 16 NONAME + _ZTVN3TMS8TMSTimerE @ 17 NONAME diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/tms/tmsutility/src/tmsutility.cpp --- a/mmserv/tms/tmsutility/src/tmsutility.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/tms/tmsutility/src/tmsutility.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -120,6 +120,52 @@ } // ----------------------------------------------------------------------------- +// TMSUtility::SymbianResult +// +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt TMSUtility::SymbianResult(const gint aError) + { + TInt result(KErrNone); + + if (aError <= TMS_RESULT_SUCCESS) + { + return aError; //return Symbian error + } + + switch (aError) + { + case TMS_RESULT_DOES_NOT_EXIST: + result = KErrNotFound; + break; + case TMS_RESULT_OPERATION_CANCELLED: + result = KErrCancel; + break; + case TMS_RESULT_INSUFFICIENT_MEMORY: + result = KErrNoMemory; + break; + case TMS_RESULT_ILLEGAL_OPERATION: + result = KErrNotSupported; + break; + case TMS_RESULT_INVALID_ARGUMENT: + result = KErrArgument; + break; + case TMS_RESULT_BUFFER_LATENCY_ERROR: + result = KErrUnderflow; + break; + case TMS_RESULT_ALREADY_EXIST: + result = KErrAlreadyExists; + break; + case TMS_RESULT_FATAL_ERROR: + case TMS_RESULT_GENERAL_ERROR: + default: + result = KErrGeneral; + break; + } + return result; + } + +// ----------------------------------------------------------------------------- // TMSUtility::EtelToTMSResult // // ----------------------------------------------------------------------------- diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/voipaudioservices/VoIPIntfc/src/VoIPUtilityFactoryImpl.cpp --- a/mmserv/voipaudioservices/VoIPIntfc/src/VoIPUtilityFactoryImpl.cpp Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/voipaudioservices/VoIPIntfc/src/VoIPUtilityFactoryImpl.cpp Wed Aug 18 10:17:22 2010 +0300 @@ -71,7 +71,7 @@ // deny access to audio resources. iPriorityDn.iPref = KAudioPrefVoipAudioDownlink; iPriorityDn.iPriority = KAudioPriorityVoipAudioDownlink; - iPriorityUp.iPref = KAudioPrefVoipAudioUplink; + iPriorityUp.iPref = KAudioPrefVoipAudioUplinkNonSignal; //for DTMF mixing iPriorityUp.iPriority = KAudioPriorityVoipAudioUplink; } diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/voipaudioservices/VoIPServer/inc/VoIPQueueHandlerSrv.h --- a/mmserv/voipaudioservices/VoIPServer/inc/VoIPQueueHandlerSrv.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/voipaudioservices/VoIPServer/inc/VoIPQueueHandlerSrv.h Wed Aug 18 10:17:22 2010 +0300 @@ -22,8 +22,6 @@ #include #include #include "VoIPAudioClientServer.h" // for TVoIPMsgBuf -// FORWARD DECLARATIONS - /** * MQueueHandlerObserver diff -r 94fc26b6e006 -r 1fa3fb47b1e3 mmserv/voipaudioservices/VoIPServer/inc/VoIPServerThread.h --- a/mmserv/voipaudioservices/VoIPServer/inc/VoIPServerThread.h Tue Jul 06 14:50:35 2010 +0300 +++ b/mmserv/voipaudioservices/VoIPServer/inc/VoIPServerThread.h Wed Aug 18 10:17:22 2010 +0300 @@ -16,8 +16,8 @@ * */ -#ifndef __VOIPAUDIOSERVERTHREAD_H -#define __VOIPAUDIOSERVERTHREAD_H +#ifndef VOIPAUDIOSERVERTHREAD_H +#define VOIPAUDIOSERVERTHREAD_H #include #include @@ -281,6 +281,6 @@ }; -#endif // __VOIPAUDIOSERVERTHREAD_H +#endif // VOIPAUDIOSERVERTHREAD_H // End of file diff -r 94fc26b6e006 -r 1fa3fb47b1e3 package_definition.xml --- a/package_definition.xml Tue Jul 06 14:50:35 2010 +0300 +++ b/package_definition.xml Wed Aug 18 10:17:22 2010 +0300 @@ -1,79 +1,178 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 94fc26b6e006 -r 1fa3fb47b1e3 package_map.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package_map.xml Wed Aug 18 10:17:22 2010 +0300 @@ -0,0 +1,1 @@ +