Update contrib.
1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
22 #ifndef __DEVSOUNDSTANDARDCUSTOMINTERFACES_H__
23 #define __DEVSOUNDSTANDARDCUSTOMINTERFACES_H__
28 UID associated with the custom interface MMMFDevSoundCustomInterfaceBitRate.
30 const TUid KUidCustomInterfaceDevSoundBitRate = {0x101F7DD5};
35 This class provides an interface to set and retrive the DevSound bit rate.
37 class MMMFDevSoundCustomInterfaceBitRate
42 Gets the bit rates that are supported by DevSound in its current configuration.
44 @param aSupportedBitRates
45 The supported bit rates, in bits per second, shall be appended to this array. Note that
46 the array shall be reset by this method.
48 virtual void GetSupportedBitRatesL(RArray<TInt>& aSupportedBitRates) = 0;
51 Returns the current bit rate.
53 @return The current bit rate, in bits per second.
55 virtual TInt BitRateL() = 0;
58 Sets the bit rate to a new value.
61 The new bit rate, in bits per second.
63 virtual void SetBitRateL(TInt aBitRate) = 0;
67 /*****************************************************************************/
69 UID associated with the Custom interface MMMFDevSoundCustomInterfaceFileBlockLength.
71 const TUid KUidCustomInterfaceDevSoundFileBlockLength = {0x10273806};
74 Custom interface class for setting the file's block length on the hwdevice.
76 Note also that this interface is just a simple interface to
77 set file's block length. No checking is perfomed on the values sent (hence the
78 Set methods do not return an error code).
80 class MMMFDevSoundCustomInterfaceFileBlockLength
84 Sets the file's block length on the hwdevice
86 The file's block length
88 virtual void SetFileBlockLength(TUint aBlockAlign)=0;
91 /*****************************************************************************/
93 UID associated with the Custom interface MMMFGsmConfig
95 const TUid KUidGsmConfig = {0x102825FC};
98 This class provides an interface to set and retrive the GSM conversion format.
103 /** The GSM conversion format */
104 enum TMMFGsmConversionFormat
106 /** no conversion specified */
108 /** for use in Full rate (06.10) and half rate (GSM 06.20 Half Rate (HR)) Vocoder */
110 /** for use in Full rate (06.10) and half rate (GSM 06.20 Half Rate (HR)) Vocoder */
112 /** for use in GSM 06.60 Enhanced Full Rate (EFR) Vocoder.*/
117 Set the conversion format using the TMMFGsmConversionFormat enum.
118 This conversion must be set before the coder/decoder is started.
120 @param aConvFormat - format desired. For encoding behaviour, format will
121 be the input format and for decoding behaviour format will be the output
124 @return KErrNone - Format change supported, KErrNotSupported - Format
125 change not supported, KErrInUse - Format change attempted whilst decoding.
127 virtual TInt SetConversionFormat(TMMFGsmConversionFormat aConvFormat) = 0;
130 Provides the current conversion format. Can be called at any time.
132 @param aConvFormat - after the call contains the current format.
133 For encoding behaviour, format will be the input format and for decoding
134 behaviour format will be the output format.
136 @return KErrNone if value returned successfully,
137 KErrUnknown if value has not been successfully configured using
138 SetConversionFormat() at least once for the current instance of the
139 interface and there is no default value.
140 KErrGeneral for all other error scenario.
142 virtual TInt ConversionFormat(TMMFGsmConversionFormat& aConvFormat) const = 0;
146 /*****************************************************************************/
148 UID associated with the Custom interface MSpeechEncoderConfig
150 const TUid KUidSpeechEncoderConfig = {0x102825FB};
153 This class provides an interface to those CMMFHwDevices providing speech encoding.
154 This interface is used for querying and configuring the operational modes of speech
155 encoders as supported by those specific encoders.
156 If a speech encoder does not support a mode provided by the interface, it will return KErrNotSupported.
158 class MSpeechEncoderConfig
162 Controls voice activity detection (VAD) mode.
163 This method can be called at all times - while actively encoding or not.
164 It should be noted that a VAD mode change could also instigate a change in the
165 mode of encoding (fixed rate encoding versus variable rate) e.g. in cases where
166 VAD requires variable rate encoding.
167 The effects of activating VAD mode behaviour should be documented in the
168 CMMFHwDevice specification implementing it.
170 @param aVadModeOn ETrue=On, EFalse=Off
171 @return KErrNone if successful. KErrNotSupported if this method is not implemented
172 or not supported by the encoder.
174 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
177 Gets the current state of the voice activity detection (VAD) mode.
178 This method can be called at all times - while actively encoding or not.
180 @param aVadModeOn On output ETrue = On, EFalse = Off
181 @return KErrNone if successful, KErrNotSupported if this method is not implemented
182 or not supported by the encoder.
184 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
187 /*****************************************************************************/
189 UID associated with the Custom interface MAacDecoderConfig
191 const TUid KUidAacDecoderConfig = {0x102825FD};
194 This class provides an interface to the AAC decoder CMMFHwDevice in order
195 to provide additional configuration information for decoding raw AAC data blocks.
197 The sample rate can be configured via the CMMFHwDevice::SetConfig() method.
198 An extension mechanism will be provided for further functionality as required.
199 The CMMFHwDevice does not contain Output channel configuration at time of writing.
200 The HWA decoders to date have been hardcoded for 2ch (left / right) output.
201 Additional configuration information may be provided by using extension mechanisms.
203 class MAacDecoderConfig
208 This is a class containing an enumerated type that defines the audio object types
209 required for configuring the AAC decoder for decoding raw AACDefined within TAudioConfig.
214 /** The audio object type */
215 enum TAudioObjectType
230 TAudioObjectType iAudioObjectType;
235 Sets additional configuration parameters required for decoding raw AAC.
237 This method can be called when encoding is not active - anytime before the CMMFHwDevice is started.
239 For consistent configuration, this method should be called sometime before each
240 start is called on the CMMFHwDevice when decoding raw AAC. That is to say the
241 CMMFHwDevice is not required to retain prior configuration information, detect raw
242 AAC sent to it, and reconfigure the decoder with this saved information after stop
243 is called on the CMMFHwDevice. However, calling pause on the CMMFHwDevice implies
244 that the next start call will be resuming same content. For this condition, this API
245 is not required when restarting the CMMFHwDevice.
247 @param aAudioConfig The structure containing the additional information required for decoding the raw AAC.
249 @return KErrNone if successful or KErrInUse if this method is used when decoding is active.
251 virtual TInt SetAudioConfig(TAudioConfig& aAudioConfig) = 0;
254 Gets additional configuration parameters supported for decoding raw AAC.
256 This method is allowable when encoding is not active - anytime before the CMMFHwDevice is started.
258 @param aSupportedAudioConfigs An array of structures containing the additional supported configurations.
260 @return KErrNone if successful.
261 KErrInUse if this method is used when decoding is active.
263 virtual TInt GetSupportedAudioConfigs(RArray<TAudioConfig>& aSupportedAudioConfigs) = 0;
266 /*****************************************************************************/
268 UID associated with the Custom interface MEAacPlusDecoderIntfc
270 const TUid KUidEAacPlusDecoderIntfc = {0x102825FF};
273 This class provides an interface to the eAAC+ decoder hwdevice in order to provide configuration information.
275 The Get.. methods can be used to retrieve the last successfully applied configuration parameters.
276 A message is not sent to adaptation or the decoder. Instead, a locally saved set of the
277 parameters will be updated upon successful use of ApplyConfig(). It is these saved values that
278 the proxy maintains that will be returned to the user. For instance, if two interfaces are used
279 and one interface is used to modify the settings, the other interface's Get… methods would not
280 return those settings. The Get.. methods will return an error if a successful use of ApplyConfig()
281 has not been performed.
283 The Set.. methods are used to update a configuration structure within the implementation of the
284 interface. When the interface is instantiated, the state of SBR and Downsampled modes will be
285 disabled. Therefore it is not necessary to configure these parameters before using
286 ApplyConfig() the first time. However, once modified using this instance of the interface, they
287 remain in that state until Set.. again. The values of these items are updated in an internal
288 structure when each Set.. is called.
290 The ApplyConfig() method is used to configure the encoder with the parameters specified by
291 the Set.. methods. ApplyConfig will send back an error (KErrUnknown) if not all items are
292 Set at least once. This check and the parameter values returned will be implemented in the interface proxy
293 and will not query the actual decoder. The exception to this is for configuration parameters with defined
294 default values (see next paragraph).
296 Calling ApplyConfig() will send these values using a single message to the message handler.
297 ApplyConfig() should fail if it is used during decoding with a KErrInUse (or, as previously stated,
298 KErrUnknown if a value without a default is not set). Since the interface proxy is not aware of decoding state,
299 this check would have to be done in the adaptation implementation for this interface.
301 class MEAacPlusDecoderIntfc
305 Defines additional configuration elements required to decode eAAC+.
307 enum TAudioObjectType
318 Sets the value of the sampling frequency of the decoder to be configured by the ApplyConfig()
319 method. This is the sample rate of the core decoder, not the output sampling frequency of the decoder.
320 This method can be called at all times but if ApplyConfig() is subsequently called
321 after changing this value whilst decoding, a KErrInUse error will result.
323 @param aInputSamplingFrequency value of the sampling frequency.
325 virtual void SetInputSamplingFrequency(TUint aInputSamplingFrequency) = 0;
328 Sets the object type of the core decoder to be configured by the ApplyConfig() method.
330 This method can be called at all times but if ApplyConfig() is subsequently called after
331 changing this value whilst decoding, a KErrInUse error will result.
333 @param aAudioObjectType TAudioObjectType for core decoder as supported by the decoder.
335 virtual void SetAudioObjectType(TAudioObjectType aAudioObjectType) = 0;
338 Sets the number of channels for the output of the decoder to be configured by the ApplyConfig()
339 method. The use of this method is to ensure coordination of output channels rendered by the decoder
340 and channel configuration of the audio system. This method does not imply that stereo to mono downmix
341 is supported by the decoder. The main purpose is for the case considering the presence of PS. A user
342 may not know if the decoder output will be mono or stereo based on header information alone, but may
343 configure the decoder for two channel output to match the audio system configuration. If the user were
344 to set the output to 1 channel and stereo data is present, the decoder may choose only one channel to
345 output or to downmix the stereo to mono. Regarding this interface, it would be more desirable to configure
346 the decoder when it is known to be mono source data and rely on downmix from the audio system instead of
347 from the decoder. The decoder, however, would provide for duplicating mono data into 2 channel data when
348 configured for 2 channels and the source data contains only 1 channel.
349 This method is allowable at all times - while actively encoding or not, but using ApplyConfig()
350 if changing this value while encoding will return an error.
352 @param aNumOfChannels 1 - output one channel audio = 0; 2 - output two channel audio.
354 virtual void SetNumOfChannels(TUint aNumOfChannels) = 0;
357 Controls the SBR mode of the decoder to be configured by the ApplyConfig() method.
359 If SBR is enabled and no SBR data is present, the audio data will be upsampled,
360 unless Down Sampled mode is enabled.
362 This method can be called at all times but if ApplyConfig() is subsequently called
363 after changing this value whilst decoding, a KErrInUse error will result.
365 @param aSbrEnabled ETrue - SBR mode enabled, EFalse - SBR mode disabled
367 virtual void SetSbr(TBool aSbrEnabled) = 0;
370 Controls the downsampled mode of the decoder to be configured by the ApplyConfig() method. This setting is only meaningful if SBR is enabled.
372 This method can be called at all times but if ApplyConfig() is subsequently called after
373 changing this value whilst decoding, a KErrInUse error will result.
375 @param aDsmEnabled ETrue - downsampled mode enabled, EFalse - downsampled mode disabled.
377 virtual void SetDownSampledMode(TBool aDsmEnabled) = 0;
380 Used to configure the decoder with parameters passed in the Set methods.
382 This method can be called all times but will return an KErrInUse if the configuration
383 parameters would change while decoding (as none of the set parameters can be changed
384 during decoding). This checking operational state of the decoder would be done by the
385 adaptation implementation of this interface since the interface proxy is not aware of
386 the decoder state. The adaptation implementation will return an error if incorrect values
387 are used to configure the decoder.
389 @return KErrNone if successful, KErrNotSupported if this method is not implemented,
390 KErrInUse if encoding in active and values are changed that are not allowed to be
391 changed during encoding, KErrArgument if one of the configuration items is not appropriate or not set.
393 virtual TInt ApplyConfig() = 0;
396 Returns the value of the sampling frequency of the decoder that was last successfully
397 configured by the ApplyConfig() method.
399 This method can be called at all times but must be called after a value has been set via
402 @param aInputSamplingFrequency last setting successfully applied using ApplyConfig().
404 @return KErrNone if value returned successfully,
405 KErrUnknown if value has not been successfully configured using ApplyConfig() at
406 least once for the current instance of the interface or
407 KErrInUse if the encoder is active.
409 virtual TInt GetInputSamplingFrequency(TUint& aInputSamplingFrequency) = 0;
412 Returns the object type of the core decoder that was last successfully configured by the
413 ApplyConfig() method.
415 This method can be called at all times.
417 @param aAudioObjectType last setting successfully applied using ApplyConfig().
419 @return KErrNone if value returned successfully,
420 KErrUnknown if value has not been successfully configured using ApplyConfig()
421 at least once for the current instance of the interface.
423 virtual TInt GetAudioObjectType(TAudioObjectType& aAudioObjectType) = 0;
426 Returns the number of channels that was last successfully configured by the
427 ApplyConfig() method.
429 This method can be called at all times. It will return an error if used before
430 ApplyConfig() has been used successfully.
432 @param aNumOfChannels last setting successfully applied using ApplyConfig().
434 @return KErrNone if value returned successfully,
435 KErrUnknown if value has not been successfully configured using ApplyConfig()
436 at least once for the current instance of the interface.
438 virtual TInt GetNumOfChannels(TUint& aNumOfChannels) = 0;
441 Returns the SBR mode that was last successfully configured by the ApplyConfig() method.
443 This method can be called at all times. It will return an error if used before
444 ApplyConfig() has been used successfully.
446 @param aSbrEnabled last setting successfully applied using ApplyConfig().
448 @return KErrNone if value returned successfully,
449 KErrUnknown if value has not been successfully configured using ApplyConfig()
450 at least once for the current instance of the interface.
452 virtual TInt GetSbr(TBool& aSbrEnabled) = 0;
455 Returns the downsampled mode that was last successfully configured by the ApplyConfig() method.
457 This method can be called at all times. It will return an error if used before
458 ApplyConfig() has been used successfully.
460 @param aDsmEnabled last setting successfully applied using ApplyConfig().
462 @return KErrNone if value returned successfully,
463 KErrUnknown if value has not been successfully configured using ApplyConfig() at least
464 once for the current instance of the interface.
466 virtual TInt GetDownSampledMode(TBool& aDsmEnabled) = 0;
469 /*****************************************************************************/
471 UID associated with the Custom interface MSbcEncoderIntfc
473 const TUid KUidSbcEncoderIntfc = {0x10282600};
476 This class provides an interface to the SBC encoder hwdevice in order to provide configuration information.
478 The Get... supported methods can be used to check capabilities of the encoder by retrieving
479 the last successfully applied configuration parameters. The purpose of the Get
480 functions is to return the last successfully applied configuration of decoder by this
481 interface. A message is not sent to adaptation or the decoder. Instead, a locally saved set
482 of the parameters will be updated upon successful use of ApplyConfig(). The Get.. methods
483 return an error (KErrUnknown ) if a successful use of ApplyConfig() has not been performed
484 apart from the following methods, which return the range of properties supported by the
485 implementation ( GetSupportedSamplingFrequencies, GetSupportedChannelModes,
486 GetSupportedNumOfSubbands, GetSupportedAllocationMethods, GetSupportedNumOfBlocks,
487 GetSupportedBitpoolRange). These methods do not have setter functions as they are not
488 configurable and hence will return valid data at all times.
490 ApplyConfig() will send these values using one message with these values in the internally
491 defined structure. The message handler should define this structure in the SBC messages
492 header file. ApplyConfig() should fail (KErrInUse) if it is used during encoding and any
493 values are changed other than bitpool value. Since the interface proxy is not aware of
494 encoding state, this check would have to be done in the adaptation implementation for
495 this interface. The Bitpool can be updated during encoding to change the bitrate. This would
496 require the use of the SetBitpoolSize() and ApplyConfig() methods. Any other parameters can
497 be changed but will result in a KErrInUse when ApplyConfig() is called.
499 The Set... methods are used update a client-side maintained configuration structure within the
500 implementation of the interface. When the structure is completed, ApplyConfig() should be called
501 to send these client side settings to the actual hwdevice implementation. There are no default
502 values for the configuration parameters (hence all values must be set before ApplyConfig() is
503 called or an error (KErrArgument) will result).
505 @note This constraint is only true for configurations
506 where this is supported (e.g. If GetSupportedChannelModes returns KErrNotSupported then SetChannelMode
507 does not need to be set before ApplyConfig() is called). This check and the parameter values
508 returned will be implemented in the interface proxy and will not query the actual encoder. If
509 multiple instances of the interface are created, each would have this requirement.
511 class MSbcEncoderIntfc
515 Defines the channel modes for the SBC encoder
519 /** SbcChannelMono */
521 /** SbcChannelDual */
523 /** SbcChannelStereo */
525 /** SbcChannelJointStereo */
526 ESbcChannelJointStereo
530 This type defines the allocation methods for the SBC encoder.
532 enum TSbcAllocationMethod
534 /** SbcAllocationSNR */
536 /** SbcAllocationLoudness */
537 ESbcAllocationLoudness
541 Retrieves the sampling frequencies supported by the encoder. See the class comments for details.
542 This method can be called at all times.
544 @param aSamplingFrequencies Reference to the location to store the array of supported
545 sampling frequencies.
547 @return KErrNone if successful, KErrNotSupported if this method is not supported.
549 virtual TInt GetSupportedSamplingFrequencies(RArray<TUint>& aSamplingFrequencies) = 0;
552 Retrieves the channel encoding supported by the encoder. See the class comments for details.
554 This method can be called at all times.
556 @param aChannelModes Reference to the location to store the array of supported channel encoding modes.
558 @return KErrNone if successful, KErrNotSupported if this method is not supported.
560 virtual TInt GetSupportedChannelModes(RArray<TSbcChannelMode>& aChannelModes) = 0;
563 Retrieves the number of subbands supported by the encoder. See the class comments for details.
565 This method can be called at all times.
567 @param aNumOfSubbands Reference to the location to store the array of supported number of subbands.
569 @return KErrNone if successful, KErrNotSupported if this method is not supported.
571 virtual TInt GetSupportedNumOfSubbands(RArray<TUint>& aNumOfSubbands) = 0;
574 Retrieves the allocation methods supported by the encoder. See the class comments for details.
576 This method can be called at all times.
578 @param aAllocationMethods Reference to the location to store the array of supported allocation methods.
580 @return KErrNone if successful, KErrNotSupported if this method is not supported.
582 virtual TInt GetSupportedAllocationMethods(RArray<TSbcAllocationMethod>& aAllocationMethods) = 0;
585 Retrieves the number of blocks supported by the encoder. See the class comments for details.
587 This method can be called at all times but if ApplyConfig() is subsequently called
588 after changing this value whilst encoding, a KErrInUse error will result.
590 @param aNumOfBlocks Reference to the location to store the array of supported number of blocks.
592 @return KErrNone if successful, KErrNotSupported if this method is not supported.
594 virtual TInt GetSupportedNumOfBlocks(RArray<TUint>& aNumOfBlocks) = 0;
597 Retrieves the min and max bitpool values supported by the encoder. See the class comments for details.
599 This method can be called at all times but and ApplyConfig() can be called to change the value whilst encoding.
601 @param aMinSupportedBitpoolSize minimum bitpool value allowed by the encoder.
602 @param aMaxSupportedBitpoolSize maximum bitpool value allowed by the encoder.
604 @return KErrNone if successful, KErrNotSupported if this method is not supported.
606 virtual TInt GetSupportedBitpoolRange(TUint& aMinSupportedBitpoolSize, TUint& aMaxSupportedBitpoolSize) = 0;
609 Sets the value of the sampling frequency of the encoder to be configured by the ApplyConfig() method.
611 This method can be called at all times but if ApplyConfig() is subsequently called
612 after changing this value whilst encoding, a KErrInUse error will result.
614 @param aSamplingFrequency values according to standard and supported by encoder.
616 virtual void SetSamplingFrequency(TUint aSamplingFrequency) = 0;
619 Sets the channel mode of the encoder to be configured by the ApplyConfig() method.
620 See the class comments for details.
622 This method can be called at all times but if ApplyConfig() is subsequently called after
623 changing this value whilst encoding, a KErrInUse error will result.
625 @param aChannelMode (ESbcChannelMono, ESbcChannelDual, ESbcChannelStereo,
626 ESbcChannelJointStereo) when supported by encoder.
629 virtual void SetChannelMode(TSbcChannelMode aChannelMode) = 0;
632 Sets the channel mode of the encoder to be configured by the ApplyConfig() method.
634 This method can be called at all times but if ApplyConfig() is subsequently called after
635 changing this value whilst encoding, a KErrInUse error will result.
637 @param aNumOfSubbands values according to standard and supported by encoder.
640 virtual void SetNumOfSubbands(TUint aNumOfSubbands) = 0;
643 Sets the allocation method of the encoder to be configured by the ApplyConfig() method.
645 This method can be called at all times but if ApplyConfig() is subsequently called after
646 changing this value whilst encoding, a KErrInUse error will result.
648 @param aAllocationMethod ESbcAllocationSNR, ESbcAllocationLoudness when supported by encoder
651 virtual void SetAllocationMethod(TSbcAllocationMethod aAllocationMethod) = 0;
654 Sets the number of blocks of the encoder to be configured by the ApplyConfig() method.
656 This method can be called at all times but if ApplyConfig() is subsequently called after
657 changing this value whilst encoding, a KErrInUse error will result.
659 @param aNumOfBlocks values according to standard and supported by encoder.
661 virtual void SetNumOfBlocks(TUint aNumOfBlocks) = 0;
664 Sets the size of the bitpool of the encoder to be configured by the ApplyConfig() method.
666 This method is allowable at all times - while actively encoding or not.
668 @param aBitpoolSize values according to standard and supported by encoder.
671 virtual void SetBitpoolSize(TUint aBitpoolSize) = 0;
674 Used to configure the encoder with parameters passed in the Set… methods.
675 This method can be called at all times - while actively encoding or not.
676 An error (KErrInUse) will be returned if any configuration parameter, other
677 than bitpool size, is changed while encoding. This checking operational
678 state of the encoder would be done by the adaptation implementation of this
679 interface since the interface proxy is not aware of the encoder state. Also,
680 the adaptation implementation will return an error if incorrect values are
681 used to configure the encoder.
683 @note Even though some preliminary checking is done in the set methods (to see
684 if it is valid to set the values at all) it is expected that
686 @return KErrNone if successful,
687 KErrNotSupported if this method is not implemented,
688 KErrInUse if encoding in active and values are changed that are not
689 allowed to be changed during encoding,
690 KErrArgument if one of the configuration items is not appropriate or
691 if all the values are not set (unless some of the values are not
692 supported, in which case these values should be ignored).
694 virtual TInt ApplyConfig() = 0;
697 Gets the value of the sampling frequency of the encoder that was last successfully
698 configured by the ApplyConfig() method.
700 This method can be called at all times - while actively encoding or not, but will
701 return an error if used before ApplyConfig() has been used successfully.
703 @param aSamplingFrequency last setting successfully applied using ApplyConfig().
705 @return KErrNone if value returned successfully,
706 KErrUnknown if value has not been successfully configured using ApplyConfig()
707 at least once for the current instance of the interface,
708 KErrNotSupported if this method is not implemented (to match its set and
709 getsupported methods).
711 virtual TInt GetSamplingFrequency(TUint& aSamplingFrequency) = 0;
714 Gets the channel mode of the encoder that was last successfully configured by the
715 ApplyConfig() method.
717 This method can be called at all times - while actively encoding or not, but will
718 return an error if used before ApplyConfig() has been used successfully.
720 @param aChannelMode last setting successfully applied using ApplyConfig().
722 @return KErrNone if value returned successfully,
723 KErrUnknown if value has not been successfully configured using ApplyConfig()
724 at least once for the current instance of the interface.
726 virtual TInt GetChannelMode(TSbcChannelMode& aChannelMode) = 0;
729 Gets the channel mode of the encoder that was last successfully configured by the
730 ApplyConfig() method.
732 This method can be called at all times - while actively encoding or not,
733 but will return an error if used before ApplyConfig() has been used successfully.
735 @param aNumOfSubbands last setting successfully applied using ApplyConfig().
737 @return KErrNone if value returned successfully,
738 KErrUnknown if value has not been successfully configured using ApplyConfig()
739 at least once for the current instance of the interface,
740 KErrNotSupported if this method is not implemented (to match its set and
741 getsupported methods)
743 virtual TInt GetNumOfSubbands(TUint& aNumOfSubbands) = 0;
746 Gets the number of blocks of the encoder that was last successfully configured by
747 the ApplyConfig() method.
749 This method can be called at all times - while actively encoding or not, but will
750 return an error if used before ApplyConfig() has been used successfully.
752 @param aNumOfBlocks last setting successfully applied using ApplyConfig().
754 @return KErrNone if value returned successfully,
755 KErrUnknown if value has not been successfully configured using ApplyConfig()
756 at least once for the current instance of the interface,
757 KErrNotSupported if this method is not implemented (to match its set and
758 getsupported methods)
760 virtual TInt GetNumOfBlocks(TUint& aNumOfBlocks) = 0;
763 Gets the allocation method of the encoder that was last successfully configured
764 by the ApplyConfig() method.
766 This method can be called at all times - while actively encoding or not, but will
767 return an error if used before ApplyConfig() has been used successfully.
768 @param aAllocationMethod last setting successfully applied using ApplyConfig().
770 @return KErrNone if value returned successfully,
771 KErrUnknown if value has not been successfully configured using ApplyConfig()
772 at least once for the current instance of the interface,
773 KErrNotSupported if this method is not implemented (to match its set and
774 getsupported methods).
776 virtual TInt GetAllocationMethod(TSbcAllocationMethod& aAllocationMethod) = 0;
779 Gets the size of the bitpool of the encoder that was last successfully
780 configured by the ApplyConfig() method.
782 This method can be called at all times - while actively encoding or not, but
783 will return an error if used before ApplyConfig() has been used successfully.
785 @param aBitpoolSize last setting successfully applied using ApplyConfig().
787 @return KErrNone if value returned successfully,
788 KErrUnknown if value has not been successfully configured using ApplyConfig()
789 at least once for the current instance of the interface,
790 KErrNotSupported if this method is not implemented (to match its set and
791 getsupported methods).
793 virtual TInt GetBitpoolSize(TUint& aBitpoolSize) = 0;
796 /*****************************************************************************/
798 UID associated with the Custom interface MG711DecoderIntfc
800 const TUid KUidG711DecoderIntfc = {0x10282601};
803 This class provides an interface to the G711 decoder CMMFHwDevice in order to provide
804 additional configuration information.
806 class MG711DecoderIntfc
809 /** The Decoder mode */
819 Informs the decoder of the encoded data format that will be sent to it.
821 This method can be called when decoding is not active - anytime before started
823 @param aDecodeMode the decode mode.
825 @return KErrNone if successful.
826 KErrInUse if this method is used when encoding is active.
827 KErrNotSupported if this method is not implemented.
829 virtual TInt SetDecoderMode(TDecodeMode aDecodeMode) = 0;
832 Queries the decoder of the encoded data format that has been active.
834 This method can be called at all times.
835 @param aDecodeMode the decode mode.
837 @return KErrNone if successful.
838 KErrInUse if this method is used when encoding is active.
839 KErrNotSupported if this method is not implemented.
841 virtual TInt GetDecoderMode(TDecodeMode& aDecodeMode) = 0;
844 Used to enable and disable the comfort noise generation capability.
846 This method can be called when decoding is not active - anytime before started
849 @param aCng ETrue = Comfort Noise Generation enabled; EFalse = Comfort Noise
852 @return KErrNone if successful.
853 KErrInUse if this method is used when encoding is active.
854 KErrNotSupported if this method is not implemented.
856 virtual TInt SetComfortNoiseGeneration(TBool aCng) = 0;
859 Used to find out if comfort noise generation is enabled or not.
861 This method can be called when decoding is not active - anytime before started
864 @param aCng ETrue = Comfort Noise Generation enabled; EFalse = Comfort Noise
867 @return KErrNone if successful.
868 KErrInUse if this method is used when encoding is active.
869 KErrNotSupported if this method is not implemented.
871 virtual TInt GetComfortNoiseGeneration(TBool& aCng) = 0;
874 Used to enable and disable the packet loss concealment capability.
876 This can be called when decoding is not active - anytime before started or after
879 @param aPlc ETrue = plc enabled; EFalse = plc disabled
881 @return KErrNone if successful. KErrInUse if this method is used when encoding is
882 active. KErrNotSupported if this method is not implemented.
884 virtual TInt SetPacketLossConcealment(TBool aPlc) = 0;
887 Used to find out if packet loss concealment capability is enabled or not.
889 This method can be called when decoding is not active - anytime before started or
892 @param aPlc ETrue = packet loss concealment enabled; EFalse = packet loss
895 @return KErrNone if successful. KErrInUse if this method is used when encoding is active.
896 KErrNotSupported if this method is not implemented.
898 virtual TInt GetPacketLossConcealment(TBool& aPlc) = 0;
902 /*****************************************************************************/
904 UID associated with the Custom interface MG711EncoderIntfc
906 const TUid KUidG711EncoderIntfc = {0x10282602};
909 This class provides an interface to the G711 encoder CMMFHwDevice in order to provide
910 additional configuration information.
912 class MG711EncoderIntfc
915 /** The encoder mode */
925 Configures the encoder's encoding format.
927 This method can be called when decoding is not active - anytime before started or
930 @param aEncodeMode the encode mode.
932 @return KErrNone if successful. KErrInUse if this method is used when encoding is active.
933 KErrNotSupported if this method is not implemented.
935 virtual TInt SetEncoderMode(TEncodeMode aEncodeMode) = 0;
938 Controls voice activity detection (VAD) mode.
940 This method can be called at all times.
942 @param aVadModeOn ETrue=On, EFalse=Off
944 @return KErrNone if successful,
945 KErrNotSupported if this method is not implemented or not supported by the encoder
947 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
950 Gets the current state of the voice activity detection (VAD) mode.
952 This method can be called at all times - while actively encoding or not.
954 @param aVadModeOn On output ETrue=On, EFalse=Off
956 @return KErrNone if successful.
957 KErrNotSupported if this method is not implemented or VAD is not supported by the encoder.
959 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
962 /*****************************************************************************/
964 UID associated with the Custom interface MG729DecoderIntfc
966 const TUid KUidG729DecoderIntfc = {0x10282603};
969 This class provides an interface to the G729 decoder CMMFHwDevice in order to provide additional
970 configuration information.
972 class MG729DecoderIntfc
976 Informs the decoder that the next buffer sent to it will contain bad LSF data.
978 This method can be called when decoding is active.
980 This method will be called after a buffer has been received from the CMMFHwDevice,
981 and before it is returned to the CMMFHwDevice.
983 @return KErrNone if successful.
984 KErrInUse if this method is used out of sequence.
985 KErrNotSupported if this method is not implemented.
987 virtual TInt BadLsfNextBuffer() = 0;
990 /*****************************************************************************/
992 UID associated with the Custom interface MG729EncoderIntfc
994 const TUid KUidG729EncoderIntfc = {0x10282604};
997 This class provides an interface to the G729 encoder CMMFHwDevice in order to provide
998 additional configuration information.
1000 class MG729EncoderIntfc
1004 Controls voice activity detection (VAD) mode.
1006 This method is allowable at all times - while actively encoding or not.
1007 @param aVadModeOn ETrue=On, EFalse=Off
1009 @return KErrNone if successful. KErrNotSupported if this method is not implemented
1010 or not supported by the encoder.
1012 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
1015 Gets the current state of the voice activity detection (VAD) mode.
1017 This method can be called at all times - while actively encoding or not.
1019 @param aVadModeOn On output ETrue=On, EFalse=Off
1020 @return KErrNone if successful. KErrNotSupported if this method is not implemented
1021 or VAD is not supported by the encoder.
1023 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
1026 /*****************************************************************************/
1028 UID associated with the Custom interface MIlbcDecoderIntfc
1030 const TUid KUidIlbcDecoderIntfc = {0x10282605};
1033 This class provides an interface to the Ilbc decoder CMMFHwDevice in order to provide
1034 additional configuration information.
1036 class MIlbcDecoderIntfc
1039 /** The Ibc decoder mode */
1049 Informs the decoder of the encoded data format that will be sent to it.
1051 This method can be called when decoding is not active - anytime before started or
1054 @param aDecodeMode the decode mode.
1056 @return KErrNone if successful.
1057 KErrInUse if this method is used when decoding is active.
1058 KErrNotSupported if this method is not implemented.
1060 virtual TInt SetDecoderMode(TDecodeMode aDecodeMode) = 0;
1063 Used to enable and disable the comfort noise generation capability.
1065 This method is allowable when decoding is not active - anytime before started or
1068 @param aCng ETrue = comfort noise generation enabled; EFalse = comfort noise
1071 @return KErrNone if successful.
1072 KErrInUse if this method is used when encoding is active.
1073 KErrNotSupported if this method is not implemented.
1075 virtual TInt SetComfortNoiseGeneration(TBool aCng) = 0;
1078 Used to find out if comfort noise generation is enabled or not.
1080 This method is allowable when decoding is not active - anytime before started or
1083 @param aCng On output ETrue = comfort noise generation enabled; EFalse = comfort
1084 noise generation disabled
1086 @return KErrNone if successful.
1087 KErrInUse if this method is used when encoding is active.
1088 KErrNotSupported if this method is not implemented.
1090 virtual TInt GetComfortNoiseGeneration(TBool& aCng) = 0;
1093 /*****************************************************************************/
1095 UID associated with the Custom interface MIlbcEncoderIntfc
1097 const TUid KUidIlbcEncoderIntfc = {0x10282606};
1100 This class provides an interface to the Ilbc encoder CMMFHwDevice in order to provide
1101 additional configuration information.
1103 class MIlbcEncoderIntfc
1106 /** The Ibc encoder mode*/
1116 Configures the encoder's encoding format.
1118 This method is allowable when encoding is not active - anytime before started or
1121 @param aEncodeMode the encode mode.
1123 @return KErrNone if successful.
1124 KErrInUse if this method is used when encoding is active.
1125 KErrNotSupported if this method is not implemented.
1127 virtual TInt SetEncoderMode(TEncodeMode aEncodeMode) = 0;
1130 Controls voice activity detection (VAD) mode.
1132 This method is allowable at all times - while actively encoding or not.
1134 @param aVadModeOn ETrue=On, EFalse=Off
1136 @return KErrNone if successful.
1137 KErrNotSupported if this method is not implemented or not supported by the encoder.
1139 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
1142 Gets the encoder's current encoding format.
1144 This method is allowable when encoding is not active - anytime before started or
1147 @param &aEncodeMode the encode mode.
1149 @return KErrNone if successful.
1150 KErrInUse if this method is used when encoding is active.
1151 KErrNotSupported if this method is not implemented.
1153 virtual TInt GetEncoderMode(TEncodeMode &aEncodeMode) = 0;
1156 Gets the current state of the voice activity detection (VAD) mode.
1158 This method is allowable at all times - while actively encoding or not.
1160 @param aVadModeOn On output ETrue=On, EFalse=Off
1162 @return KErrNone if successful.
1163 KErrNotSupported if this method is not implemented or VAD is not supported
1166 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
1169 /*****************************************************************************/
1171 UID associated with the Custom interface MMMFErrorConcealmentIntfc
1173 const TUid KUidErrorConcealmentIntfc = {0x10282607};
1176 This custom interface can be used to indicate that data has been lost. Typical usage
1177 would be during streaming. Lost packets of audio data would not get played, but the
1178 video data may still be available for playback. If video playback is synchronized to
1179 audio then this API can be used to indicate that audio data is lost so that video
1180 playback can continue. It could also be used for an audio-only source to maintain
1181 synchronization in time if data is lost.
1183 class MMMFErrorConcealmentIntfc
1187 Indicates that next buffer sent to CMMFHwDevice will not contain any valid data,
1188 and that a single frame of data has been lost, and that error concealment should
1189 be provided for that lost frame. This method will be called after a buffer has been
1190 received from the Hardware Device, and before it is returned to the Hardware Device.
1192 @return KErrNone if successful.
1193 KErrInUse if this method is used out of sequence.
1194 KErrNotSupported if this method is not implemented.
1196 virtual TInt ConcealErrorForNextBuffer() = 0;
1198 Puts the CMMFHwDevice into frame-based operation. This may be required in cases where
1199 the decoder only supports error concealment in a frame-based mode of operation.
1200 Operating in frame-based mode means that the decoder requires that each buffer it
1201 receives contains only complete data frames.
1203 Frame mode is limited to a single frame per buffer. The alternative to frame-based mode
1204 is buffer-based mode, the default interface for CMMFHwDevices and decoders.
1206 In buffer-based mode, complete data frames are not required to be contained within a
1207 single buffer. A data frame may span consecutive data buffers in buffer-based mode.
1209 As it is less efficient than buffer-based mode, Frame-based mode should be used as a
1210 less-preferred option where errors are present and the CMMFHwDevice implementation would
1211 not be tolerant to buffer-based mode error. This condition would be indicated by
1212 FrameModeRqrdForEC resulting in its parameter being set to ETrue.
1214 This method can be called when decoding is not active - anytime before the CMMFHwDevice
1215 is started, or after it is stopped.
1217 @param aFrameModeOn ETrue = frame mode on; EFalse = frame mode off.
1219 @return KErrNone if successful.
1220 KErrInUse if this method is used out of sequence.
1221 KErrNotSupported if this method is not implemented.
1223 virtual TInt SetFrameMode(TBool aFrameModeOn) = 0;
1226 Queries the CMMFHwDevice to find out if frame mode is required by the implementing
1227 CMMFHwDevice in order for it to support error concealment.
1229 This method is allowable when decoding is not active - anytime before the CMMFHwDevice
1230 is started, or after it is stopped.
1231 @param aFrameModeRqrd ETrue = frame mode required; EFalse = frame mode not required
1232 @return KErrNone if successful.
1233 KErrInUse if this method is used during decoding.
1234 KErrNotSupported if this method is not implemented.
1236 virtual TInt FrameModeRqrdForEC(TBool& aFrameModeRqrd) = 0;
1239 /*****************************************************************************/
1241 UID associated with the Custom interface MAudioVibraControl
1243 const TUid KUidAudioVibraControl = {0x10282608};
1246 This class provides an interface for controlling vibra. DevSound should interpret the
1247 instantiation of this interface as a vibra control request by the user. The default vibra
1248 behavior implemented by the DevSound for the associated stream will not be performed while
1249 the user has control, In other words whilst this interface is instantiated. DevSound default vibra behavior
1250 for the associated stream will return once this interface is deleted. Other instances of
1251 DevSound may be instantiated for other audio streams at the same time. When multiple instances
1252 of DevSound are instantiated, priority and preference values are used to determine which audio
1253 streams are rendered. Prioritization of vibra control is determined by adaptation. Due to
1254 resource conflicts, and prioritization by adaptation, it may be possible that an audio stream
1255 is played, but not the vibra that accompanies that audio. For instance, if audio is mixed and
1256 two audio streams are rendered, vibra playback might not be mixed. Vibra playback may be
1257 prioritized by adaptation to a single controller. The behavior in these cases would be based
1258 on adaptation implementation. The user is not notified if vibra is not played.
1260 class MAudioVibraControl
1266 @return KErrNone if successful KErrNotSupported if this method is not implemented.
1268 virtual TInt StartVibra() = 0;
1273 @return KErrNone if successful. KErrNotSupported if this method is not implemented.
1275 virtual TInt StopVibra() = 0;
1278 /*****************************************************************************/
1280 UID associated with the Custom interface MMMFSampleBuffering
1282 const TUid KUidSampleBuffering = {0x10282609};
1285 Custom interface class to allow DevSound to support buffering of samples before playback begins.
1286 This allows playback to be more robust to underflow errors when playback begins at the expense
1287 of higher latency before playback starts.
1289 class MMMFSampleBuffering
1293 Enables buffering up of samples before playback begins. This function is only effective before
1294 CMMFDevSound::PlayInit() is called - calling the function after this will have no effect.
1295 @return "This method may return one of the system-wide error codes."
1297 virtual TInt MmsbEnableSampleBufferingBeforePlayback() = 0;
1300 Disables buffering up of samples before playback begins. This function is only effective before
1301 CMMFDevSound::PlayInit() is called - calling the function after this will have no effect.
1302 @return "This method may return one of the system-wide error codes."
1304 virtual TInt MmsbDisableSampleBufferingBeforePlayback() = 0;
1307 Asynchronous request that completes when Playback actually starts.
1308 @param "aStatus" "TRequestStatus that will be completed when play actually starts"
1310 virtual void MmsbNotifyPlayStarted(TRequestStatus& aStatus) = 0;
1313 Cancel any outstanding asynchronous NotifyPlayStarted requests.
1315 virtual void MmsbCancelNotifyPlayStarted() = 0;
1318 /*****************************************************************************/
1320 UID associated with the Custom interface MMMFPlaybackStatus.
1322 const TUid KUidPlaybackStatus = {0x10273811};
1325 Custom interface class to enable access to the DevSound implementation to report the number of
1326 consumed input bytes, number of successfully decoded samples, samples played, system time and
1327 total samples played.
1329 class MMMFPlaybackStatus
1332 /** Play back status information */
1333 struct TMMFPlaybackStatus
1335 /** Number of consumed input bytes */
1337 /** Number of successfully decoded samples */
1338 TInt64 aDecodedSamples;
1339 /** Number of decoded samples played */
1340 TInt64 aDecodedSamplesPlayed;
1341 /** Current system time */
1343 /** Total samples played */
1344 TInt64 aTotalSamplesPlayed;
1347 A method to query for detailed status information from a playing DevSound.
1348 including timestamp information from the DSP.
1349 @param aStatus the current playback status.
1350 @return "This method may return one of the system-wide error codes."
1352 virtual TInt MmpsGetPlaybackStatusInformation(TMMFPlaybackStatus& aStatus)= 0;
1355 Request notification of loss of sync during decode - the notification will be received
1356 in the DevSound client callback SendEventToClient with the event type set to KMMFEventLossOfDecodeSync.
1358 @return "This method may return one of the system-wide error codes."
1360 virtual TInt MmpsRequestLossOfSyncNotification() = 0;
1363 Cancel the request for notification of loss of sync.
1365 @return "This method may return one of the system-wide error codes."
1367 virtual TInt MmpsCancelLossOfSyncNotification() = 0;
1370 /*****************************************************************************/
1372 UID associated with the Custom interface MMMFDSPControl
1374 const TUid KUidDSPControl = {0x1028260A};
1377 Custom interface class to allow control of DSP behaviour.
1379 class MMMFDSPControl
1384 Get the timestamp information from the DSP
1386 @param aSamplesPlayed - number of audio samples played so far.
1387 @param aSystemTime - current system time
1388 @param aB - bytes consumed by the decoder
1389 @param aT - bytes successfully decoded by the decoder.
1391 @return "This method may return one of the system-wide error codes."
1393 virtual TInt MmdspcGetAudioPlaybackInfo(TInt64& aSamplesPlayed, TInt64& aSystemTime, TUint& aB, TUint& aT) = 0;
1396 Place DevSound in a mode where overflow/underflow errors on recording are ignored.
1397 @return "This method may return one of the system-wide error codes."
1399 virtual TInt MmdspcAcceptRecordBuffersInvalidFollowingStop() = 0;
1402 Place DevSound in a mode where overflow/underflow errors on playing are ignored.
1403 @return "This method may return one of the system-wide error codes."
1405 virtual TInt MmdspcAcceptPlaybackBuffersInvalidFollowingStop() = 0;
1408 /*****************************************************************************/
1410 UID associated with the Custom interface MMMFUnderflowAutoStopControl
1412 const TUid KUidUnderflowAutoStopControl = {0x1028260B};
1415 Custom interface class to control underflow behaviour.
1417 class MMMFUnderflowAutoStopControl
1421 Turn off the default DevSound behaviour of automatically Stopping when an underflow
1422 occurs. The underflow will be reported but play can continue when the client sends
1423 more data - it is up to the client to call stop even in the case of end of file.
1425 @return "This method may return one of the system-wide error codes."
1427 virtual TInt MmuascTurnOffUnderflowAutoStop() = 0;
1430 /*****************************************************************************/
1432 UID associated with the Custom interface MMMFSetDRMProtected
1434 const TUid KUidSetDRMProtected = {0x1028260C};
1437 This class provides an interface to mark data being played as DRM protected.
1439 class MMMFSetDRMProtected
1443 Indicate whether the data being played is DRM protected or not
1445 @param aDRMProtected the required DRM state.
1446 @return "This method may return one of the system-wide error codes."
1448 virtual TInt MmsdpMarkDataAsDRMProtected(TBool aDRMProtected) = 0;
1451 /*****************************************************************************/
1453 UID associated with the Custom interface MMMFBufferFramesConfig.
1455 const TUid KUidBufferFramesConfig = {0x1028260D};
1458 This class provides an interface to configure and retrive the buffer frames.
1460 class MMMFBufferFramesConfig
1464 For use when encoding to set the number of encoded frames contained in each buffer
1465 sent back to the client. The method should be called after CMMFDevSound::InitilaizeL
1466 but before RecordInitL.
1468 @param aFrameCount - Number of frames per buffer
1469 @param aSamplesPerFrame - numer of samples per frame
1470 @return "This method may return one of the system-wide error codes."
1472 virtual TInt MmbfcSetNumberOfFramesPerInputBuffer(TInt aFrameCount, TInt aSamplesPerFrame)=0;
1475 For use when decoding to set the number of encoded frames contained in each buffer sent
1476 down to DevsSund for playback. The method should be called after CMMFDevSound::InitilaizeL
1477 but before PlayInitL.
1479 @param aFrameCount - Number of frames per buffer
1480 @param aSamplesPerFrame - numer of samples per frame
1482 @return "This method may return one of the system-wide error codes."
1484 virtual TInt MmbfcSetNumberOfFramesPerOutputBuffer(TInt aFrameCount, TInt aSamplesPerFrame)=0;
1487 /*****************************************************************************/
1489 UID associated with the Custom interface MMMFGetTimestamps
1491 const TUid KUidGetTimestamps = {0x1028260E};
1494 This class provides an interface to configure and retrive time stamps.
1496 class MMMFGetTimestamps
1500 Enable or disable support for system timestamps during recording, used for Audio / Video sync.
1501 This method can only be called after recording has been initialised, but before recording
1502 has started. Once recording is underway, the setting cannot be changed.
1504 @param aEnable ETrue to enable recording timestamps, EFalse to disable it.
1506 @return KErrNotReady if DevSound has not yet been initialised, KErrNotSupported if
1507 DevSound is not in recording mode or KErrInUse if recording is already underway.
1509 virtual TInt MmgtSetRecordSystemTimestampsEnabled(TBool aEnable) = 0;
1512 This method returns the system timestamp corresponding to the CMMFDataBuffer with the
1513 given position within the recording stream. This timestamp is the system time at which
1514 the buffers timestamp, as returned by CMMFBuffer::TimeToPlay, was valid.
1515 This method can only be used if the recording timestamps were enabled before recording
1516 started using the SetRecordSystemTimestampsEnabled method.
1518 @param aBufferPosition The timestamp from the buffer, as returned by CMMFBuffer::TimeToPlay.
1519 @param aTimestamp Returns the corresponding system time, in universal time.
1521 @return A System error code.
1522 KErrNotSupported if recording is not ongoing;
1523 KErrNotReady if DevSound is not initialized, or TimeStamps have not been enabled;
1524 KErrNotFound if the timestamp given does not correspond to a recent record buffer.
1526 virtual TInt MmgtGetSystemTimestampForBuffer(const TTimeIntervalMicroSeconds& aBufferPosition,
1527 TTime& aTimestamp) const = 0;
1530 /*****************************************************************************/
1532 UID associated with the Custom interface MMMFAdvancedAACEncodeSettings
1534 const TUid KUidAdvancedAACEncoderSettings = {0x102825FE};
1537 Advanced AAC Encode Bit-rate Configuration
1539 class MMMFAdvancedAACEncodeSettings
1542 /** AAC BItrate mode */
1543 enum TAACBitrateMode
1545 /** AACBitrateModeNone */
1546 EAACBitrateModeNone,
1547 /** AACBitrateModeAbsolute */
1548 EAACBitrateModeAbsolute,
1549 /** AACBitrateModeVariable */
1550 EAACBitrateModeVariable,
1551 /** AACBitrateModeFixed */
1552 EAACBitrateModeFixed
1555 SetAACEncodeBitrateMode
1557 Set the bitrate mode for AAC encoding. This must be called before the encoding starts.
1559 @param aBitrateMode the structure containing the additional information required for decoding the raw AAC.
1560 @return KErrNone if successful. KErrInUse if this method is used when decoding is active.
1562 virtual TInt SetAACEncodeBitrateMode(TAACBitrateMode aBitrateMode)=0;
1565 This interface returns the current AACEncoding bitrate mode.
1567 @param aBitrateMode the structure containing the additional information.
1568 @return KErrNone if successful. KErrNotSupported if this method is not implemented.
1570 virtual TInt GetAACEncodeBitrateMode(TAACBitrateMode& aBitrateMode) = 0;
1573 /*****************************************************************************/