williamr@2: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __MMFBASE_H__ williamr@2: #define __MMFBASE_H__ williamr@2: williamr@2: // Standard EPOC32 includes williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: The priority for clients accessing a sound output device for audio playback or audio streaming. williamr@2: williamr@2: This is a value between EMdaPriorityMin and EMdaPriorityMax. The higher value indicates a more williamr@2: important request. It is used to resolve conflicts when more than one client tries to access the williamr@2: same hardware resource simultaneously. williamr@2: williamr@2: One of these values is passed in the first parameter to CMdaAudioOutputStream::SetPriority(). williamr@2: williamr@2: @see CMdaAudioOutputStream::SetPriority() williamr@2: */ williamr@2: enum TMdaPriority williamr@2: { williamr@2: /** williamr@2: The lowest priority (= – 100). This indicates that the client can be interrupted williamr@2: by any other client. williamr@2: */ williamr@2: EMdaPriorityMin = -100, williamr@2: /** williamr@2: Normal priority. This indicates that the client can be interrupted but only by higher priority clients. williamr@2: */ williamr@2: EMdaPriorityNormal = 0, williamr@2: /** williamr@2: The highest priority (= 100). This indicates that the client cannot be interrupted by other clients. williamr@2: */ williamr@2: EMdaPriorityMax = 100 williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@4: Audio priority preference values. These are to be interpreted as discrete values and not separate flags. williamr@2: */ williamr@2: enum TMdaPriorityPreference williamr@2: { williamr@2: /** williamr@4: Default value - no specific meaning. williamr@2: */ williamr@4: EMdaPriorityPreferenceNone = 0, williamr@2: /** williamr@4: The audio data is time sensitive. The playback operation may fail if it cannot happen when williamr@4: requested but degraded output such as mixing or muting is allowed. Note that this is the williamr@4: default behaviour anyway, but this declaration is maintained for compatability. */ williamr@4: EMdaPriorityPreferenceTime = 1, williamr@4: /** williamr@4: The audio data should be played at the best possible quality (for example, it should not be degraded by williamr@4: muting or mixing). This is an advisory to the adaptation and can be ignored. williamr@2: */ williamr@4: EMdaPriorityPreferenceQuality = 2, williamr@2: /** williamr@4: The audio data is both time and quality sensitive. Identical in behaviour to EMdaPriorityPreferenceQuality. williamr@2: */ williamr@4: EMdaPriorityPreferenceTimeAndQuality = 3 williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: Holds the current state of DevSound. williamr@2: */ williamr@2: enum TMMFState williamr@2: { williamr@2: /** Idle state. williamr@2: */ williamr@2: EMMFStateIdle, williamr@2: /** The MMF is currently playing. williamr@2: */ williamr@2: EMMFStatePlaying, williamr@2: /** The MMF is playing a tone. williamr@2: */ williamr@2: EMMFStateTonePlaying, williamr@2: /** The MMF is currently recording. williamr@2: */ williamr@2: EMMFStateRecording, williamr@2: /** The MMF is playing and recording. williamr@2: */ williamr@2: EMMFStatePlayingRecording, williamr@2: /** The MMF is converting data. williamr@2: */ williamr@2: EMMFStateConverting williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: A class type representing the audio client's priority, williamr@2: priority preference and state settings. williamr@4: williamr@4: Note: The Priority Value and Priority Preference are used primarily when deciding what to do when williamr@4: several audio clients attempt to play or record simultaneously. In addition to the Priority Value and Preference, williamr@4: the adaptation may consider other parameters such as the SecureId and Capabilities of the client process. williamr@4: Whatever, the decision as to what to do in such situations is up to the audio adaptation, and may williamr@4: vary between different phones. Portable applications are advised not to assume any specific behaviour. williamr@4: williamr@2: */ williamr@2: class TMMFPrioritySettings williamr@2: { williamr@2: public: williamr@2: TMMFPrioritySettings(); williamr@2: /** williamr@4: The Priority Value - this client's relative priority. This is a value between EMdaPriorityMin and williamr@4: EMdaPriorityMax and represents a relative priority. A higher value indicates a more important request. williamr@2: */ williamr@2: TInt iPriority; williamr@2: williamr@2: /** williamr@4: The Priority Preference - an additional audio policy parameter. The suggested default is williamr@4: EMdaPriorityPreferenceNone. Further values are given by TMdaPriorityPreference, and additional williamr@4: values may be supported by given phones and/or platforms, but should not be depended upon by williamr@4: portable code. williamr@2: */ williamr@4: TInt iPref; williamr@2: williamr@2: /** williamr@2: The state of the MMF player such as idle, playing, recording and so on. See the TMMFState enum for possible states. williamr@2: */ williamr@2: TMMFState iState; williamr@2: private: williamr@2: /** williamr@2: This member is internal and not intended for use. williamr@2: */ williamr@2: TInt iReserved1; williamr@2: }; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: This is a TPckgBuf package of a TMMFPrioritySettings. williamr@2: */ williamr@2: typedef TPckgBuf TMMFPrioritySettingsPckg; williamr@2: williamr@2: /** williamr@2: Initializes the object with arbitrary values. williamr@2: */ williamr@2: inline TMMFPrioritySettings::TMMFPrioritySettings() : iPriority(EMdaPriorityNormal), iPref(EMdaPriorityPreferenceNone), iState(EMMFStateIdle), iReserved1(0) williamr@2: { williamr@2: } williamr@2: williamr@2: #endif