Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __DEVSOUNDSTANDARDCUSTOMINTERFACES_H__
17 #define __DEVSOUNDSTANDARDCUSTOMINTERFACES_H__
21 /*****************************************************************************/
23 UID associated with the custom interface MMMFDevSoundCustomInterfaceBitRate.
27 const TUid KUidCustomInterfaceDevSoundBitRate = {0x101F7DD5};
32 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.
75 const TUid KUidCustomInterfaceDevSoundFileBlockLength = {0x10273806};
78 Custom interface class for setting the file's block length on the hwdevice.
80 Note also that this interface is just a simple interface to
81 set file's block length. No checking is perfomed on the values sent (hence the
82 Set methods do not return an error code).
87 class MMMFDevSoundCustomInterfaceFileBlockLength
91 Sets the file's block length on the hwdevice
93 The file's block length
95 virtual void SetFileBlockLength(TUint aBlockAlign)=0;
98 /*****************************************************************************/
100 UID associated with the Custom interface MMMFGsmConfig
105 const TUid KUidGsmConfig = {0x102825FC};
108 This class provides an interface to set and retrive the GSM conversion format.
116 /** The GSM conversion format */
117 enum TMMFGsmConversionFormat
119 /** no conversion specified */
121 /** for use in Full rate (06.10) and half rate (GSM 06.20 Half Rate (HR)) Vocoder */
123 /** for use in Full rate (06.10) and half rate (GSM 06.20 Half Rate (HR)) Vocoder */
125 /** for use in GSM 06.60 Enhanced Full Rate (EFR) Vocoder.*/
130 Set the conversion format using the TMMFGsmConversionFormat enum.
131 This conversion must be set before the coder/decoder is started.
133 @param aConvFormat - format desired. For encoding behaviour, format will
134 be the input format and for decoding behaviour format will be the output
137 @return KErrNone - Format change supported, KErrNotSupported - Format
138 change not supported, KErrInUse - Format change attempted whilst decoding.
140 virtual TInt SetConversionFormat(TMMFGsmConversionFormat aConvFormat) = 0;
143 Provides the current conversion format. Can be called at any time.
145 @param aConvFormat - after the call contains the current format.
146 For encoding behaviour, format will be the input format and for decoding
147 behaviour format will be the output format.
149 @return KErrNone if value returned successfully,
150 KErrUnknown if value has not been successfully configured using
151 SetConversionFormat() at least once for the current instance of the
152 interface and there is no default value.
153 KErrGeneral for all other error scenario.
155 virtual TInt ConversionFormat(TMMFGsmConversionFormat& aConvFormat) const = 0;
159 /*****************************************************************************/
161 UID associated with the Custom interface MSpeechEncoderConfig
166 const TUid KUidSpeechEncoderConfig = {0x102825FB};
169 This class provides an interface to those CMMFHwDevices providing speech encoding.
170 This interface is used for querying and configuring the operational modes of speech
171 encoders as supported by those specific encoders.
172 If a speech encoder does not support a mode provided by the interface, it will return KErrNotSupported.
178 class MSpeechEncoderConfig
182 Controls voice activity detection (VAD) mode.
183 This method can be called at all times - while actively encoding or not.
184 It should be noted that a VAD mode change could also instigate a change in the
185 mode of encoding (fixed rate encoding versus variable rate) e.g. in cases where
186 VAD requires variable rate encoding.
187 The effects of activating VAD mode behaviour should be documented in the
188 CMMFHwDevice specification implementing it.
190 @param aVadModeOn ETrue=On, EFalse=Off
191 @return KErrNone if successful. KErrNotSupported if this method is not implemented
192 or not supported by the encoder.
194 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
197 Gets the current state of the voice activity detection (VAD) mode.
198 This method can be called at all times - while actively encoding or not.
200 @param aVadModeOn On output ETrue = On, EFalse = Off
201 @return KErrNone if successful, KErrNotSupported if this method is not implemented
202 or not supported by the encoder.
204 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
207 /*****************************************************************************/
209 UID associated with the Custom interface MAacDecoderConfig
214 const TUid KUidAacDecoderConfig = {0x102825FD};
217 This class provides an interface to the AAC decoder CMMFHwDevice in order
218 to provide additional configuration information for decoding raw AAC data blocks.
220 The sample rate can be configured via the CMMFHwDevice::SetConfig() method.
221 An extension mechanism will be provided for further functionality as required.
222 The CMMFHwDevice does not contain Output channel configuration at time of writing.
223 The HWA decoders to date have been hardcoded for 2ch (left / right) output.
224 Additional configuration information may be provided by using extension mechanisms.
229 class MAacDecoderConfig
234 This is a class containing an enumerated type that defines the audio object types
235 required for configuring the AAC decoder for decoding raw AACDefined within TAudioConfig.
240 /** The audio object type */
241 enum TAudioObjectType
256 TAudioObjectType iAudioObjectType;
261 Sets additional configuration parameters required for decoding raw AAC.
263 This method can be called when encoding is not active - anytime before the CMMFHwDevice is started.
265 For consistent configuration, this method should be called sometime before each
266 start is called on the CMMFHwDevice when decoding raw AAC. That is to say the
267 CMMFHwDevice is not required to retain prior configuration information, detect raw
268 AAC sent to it, and reconfigure the decoder with this saved information after stop
269 is called on the CMMFHwDevice. However, calling pause on the CMMFHwDevice implies
270 that the next start call will be resuming same content. For this condition, this API
271 is not required when restarting the CMMFHwDevice.
273 @param aAudioConfig The structure containing the additional information required for decoding the raw AAC.
275 @return KErrNone if successful or KErrInUse if this method is used when decoding is active.
277 virtual TInt SetAudioConfig(TAudioConfig& aAudioConfig) = 0;
280 Gets additional configuration parameters supported for decoding raw AAC.
282 This method is allowable when encoding is not active - anytime before the CMMFHwDevice is started.
284 @param aSupportedAudioConfigs An array of structures containing the additional supported configurations.
286 @return KErrNone if successful.
287 KErrInUse if this method is used when decoding is active.
289 virtual TInt GetSupportedAudioConfigs(RArray<TAudioConfig>& aSupportedAudioConfigs) = 0;
292 /*****************************************************************************/
294 UID associated with the Custom interface MEAacPlusDecoderIntfc
299 const TUid KUidEAacPlusDecoderIntfc = {0x102825FF};
302 This class provides an interface to the eAAC+ decoder hwdevice in order to provide configuration information.
304 The Get.. methods can be used to retrieve the last successfully applied configuration parameters.
305 A message is not sent to adaptation or the decoder. Instead, a locally saved set of the
306 parameters will be updated upon successful use of ApplyConfig(). It is these saved values that
307 the proxy maintains that will be returned to the user. For instance, if two interfaces are used
308 and one interface is used to modify the settings, the other interface's Get… methods would not
309 return those settings. The Get.. methods will return an error if a successful use of ApplyConfig()
310 has not been performed.
312 The Set.. methods are used to update a configuration structure within the implementation of the
313 interface. When the interface is instantiated, the state of SBR and Downsampled modes will be
314 disabled. Therefore it is not necessary to configure these parameters before using
315 ApplyConfig() the first time. However, once modified using this instance of the interface, they
316 remain in that state until Set.. again. The values of these items are updated in an internal
317 structure when each Set.. is called.
319 The ApplyConfig() method is used to configure the encoder with the parameters specified by
320 the Set.. methods. ApplyConfig will send back an error (KErrUnknown) if not all items are
321 Set at least once. This check and the parameter values returned will be implemented in the interface proxy
322 and will not query the actual decoder. The exception to this is for configuration parameters with defined
323 default values (see next paragraph).
325 Calling ApplyConfig() will send these values using a single message to the message handler.
326 ApplyConfig() should fail if it is used during decoding with a KErrInUse (or, as previously stated,
327 KErrUnknown if a value without a default is not set). Since the interface proxy is not aware of decoding state,
328 this check would have to be done in the adaptation implementation for this interface.
333 class MEAacPlusDecoderIntfc
337 Defines additional configuration elements required to decode eAAC+.
339 enum TAudioObjectType
350 Sets the value of the sampling frequency of the decoder to be configured by the ApplyConfig()
351 method. This is the sample rate of the core decoder, not the output sampling frequency of the decoder.
352 This method can be called at all times but if ApplyConfig() is subsequently called
353 after changing this value whilst decoding, a KErrInUse error will result.
355 @param aInputSamplingFrequency value of the sampling frequency.
357 virtual void SetInputSamplingFrequency(TUint aInputSamplingFrequency) = 0;
360 Sets the object type of the core decoder to be configured by the ApplyConfig() method.
362 This method can be called at all times but if ApplyConfig() is subsequently called after
363 changing this value whilst decoding, a KErrInUse error will result.
365 @param aAudioObjectType TAudioObjectType for core decoder as supported by the decoder.
367 virtual void SetAudioObjectType(TAudioObjectType aAudioObjectType) = 0;
370 Sets the number of channels for the output of the decoder to be configured by the ApplyConfig()
371 method. The use of this method is to ensure coordination of output channels rendered by the decoder
372 and channel configuration of the audio system. This method does not imply that stereo to mono downmix
373 is supported by the decoder. The main purpose is for the case considering the presence of PS. A user
374 may not know if the decoder output will be mono or stereo based on header information alone, but may
375 configure the decoder for two channel output to match the audio system configuration. If the user were
376 to set the output to 1 channel and stereo data is present, the decoder may choose only one channel to
377 output or to downmix the stereo to mono. Regarding this interface, it would be more desirable to configure
378 the decoder when it is known to be mono source data and rely on downmix from the audio system instead of
379 from the decoder. The decoder, however, would provide for duplicating mono data into 2 channel data when
380 configured for 2 channels and the source data contains only 1 channel.
381 This method is allowable at all times - while actively encoding or not, but using ApplyConfig()
382 if changing this value while encoding will return an error.
384 @param aNumOfChannels 1 - output one channel audio = 0; 2 - output two channel audio.
386 virtual void SetNumOfChannels(TUint aNumOfChannels) = 0;
389 Controls the SBR mode of the decoder to be configured by the ApplyConfig() method.
391 If SBR is enabled and no SBR data is present, the audio data will be upsampled,
392 unless Down Sampled mode is enabled.
394 This method can be called at all times but if ApplyConfig() is subsequently called
395 after changing this value whilst decoding, a KErrInUse error will result.
397 @param aSbrEnabled ETrue - SBR mode enabled, EFalse - SBR mode disabled
399 virtual void SetSbr(TBool aSbrEnabled) = 0;
402 Controls the downsampled mode of the decoder to be configured by the ApplyConfig() method. This setting is only meaningful if SBR is enabled.
404 This method can be called at all times but if ApplyConfig() is subsequently called after
405 changing this value whilst decoding, a KErrInUse error will result.
407 @param aDsmEnabled ETrue - downsampled mode enabled, EFalse - downsampled mode disabled.
409 virtual void SetDownSampledMode(TBool aDsmEnabled) = 0;
412 Used to configure the decoder with parameters passed in the Set methods.
414 This method can be called all times but will return an KErrInUse if the configuration
415 parameters would change while decoding (as none of the set parameters can be changed
416 during decoding). This checking operational state of the decoder would be done by the
417 adaptation implementation of this interface since the interface proxy is not aware of
418 the decoder state. The adaptation implementation will return an error if incorrect values
419 are used to configure the decoder.
421 @return KErrNone if successful, KErrNotSupported if this method is not implemented,
422 KErrInUse if encoding in active and values are changed that are not allowed to be
423 changed during encoding, KErrArgument if one of the configuration items is not appropriate or not set.
425 virtual TInt ApplyConfig() = 0;
428 Returns the value of the sampling frequency of the decoder that was last successfully
429 configured by the ApplyConfig() method.
431 This method can be called at all times but must be called after a value has been set via
434 @param aInputSamplingFrequency last setting successfully applied using ApplyConfig().
436 @return KErrNone if value returned successfully,
437 KErrUnknown if value has not been successfully configured using ApplyConfig() at
438 least once for the current instance of the interface or
439 KErrInUse if the encoder is active.
441 virtual TInt GetInputSamplingFrequency(TUint& aInputSamplingFrequency) = 0;
444 Returns the object type of the core decoder that was last successfully configured by the
445 ApplyConfig() method.
447 This method can be called at all times.
449 @param aAudioObjectType last setting successfully applied using ApplyConfig().
451 @return KErrNone if value returned successfully,
452 KErrUnknown if value has not been successfully configured using ApplyConfig()
453 at least once for the current instance of the interface.
455 virtual TInt GetAudioObjectType(TAudioObjectType& aAudioObjectType) = 0;
458 Returns the number of channels that was last successfully configured by the
459 ApplyConfig() method.
461 This method can be called at all times. It will return an error if used before
462 ApplyConfig() has been used successfully.
464 @param aNumOfChannels last setting successfully applied using ApplyConfig().
466 @return KErrNone if value returned successfully,
467 KErrUnknown if value has not been successfully configured using ApplyConfig()
468 at least once for the current instance of the interface.
470 virtual TInt GetNumOfChannels(TUint& aNumOfChannels) = 0;
473 Returns the SBR mode that was last successfully configured by the ApplyConfig() method.
475 This method can be called at all times. It will return an error if used before
476 ApplyConfig() has been used successfully.
478 @param aSbrEnabled last setting successfully applied using ApplyConfig().
480 @return KErrNone if value returned successfully,
481 KErrUnknown if value has not been successfully configured using ApplyConfig()
482 at least once for the current instance of the interface.
484 virtual TInt GetSbr(TBool& aSbrEnabled) = 0;
487 Returns the downsampled mode that was last successfully configured by the ApplyConfig() method.
489 This method can be called at all times. It will return an error if used before
490 ApplyConfig() has been used successfully.
492 @param aDsmEnabled last setting successfully applied using ApplyConfig().
494 @return KErrNone if value returned successfully,
495 KErrUnknown if value has not been successfully configured using ApplyConfig() at least
496 once for the current instance of the interface.
498 virtual TInt GetDownSampledMode(TBool& aDsmEnabled) = 0;
501 /*****************************************************************************/
503 UID associated with the Custom interface MSbcEncoderIntfc
508 const TUid KUidSbcEncoderIntfc = {0x10282600};
511 This class provides an interface to the SBC encoder hwdevice in order to provide configuration information.
513 The Get... supported methods can be used to check capabilities of the encoder by retrieving
514 the last successfully applied configuration parameters. The purpose of the Get
515 functions is to return the last successfully applied configuration of decoder by this
516 interface. A message is not sent to adaptation or the decoder. Instead, a locally saved set
517 of the parameters will be updated upon successful use of ApplyConfig(). The Get.. methods
518 return an error (KErrUnknown ) if a successful use of ApplyConfig() has not been performed
519 apart from the following methods, which return the range of properties supported by the
520 implementation ( GetSupportedSamplingFrequencies, GetSupportedChannelModes,
521 GetSupportedNumOfSubbands, GetSupportedAllocationMethods, GetSupportedNumOfBlocks,
522 GetSupportedBitpoolRange). These methods do not have setter functions as they are not
523 configurable and hence will return valid data at all times.
525 ApplyConfig() will send these values using one message with these values in the internally
526 defined structure. The message handler should define this structure in the SBC messages
527 header file. ApplyConfig() should fail (KErrInUse) if it is used during encoding and any
528 values are changed other than bitpool value. Since the interface proxy is not aware of
529 encoding state, this check would have to be done in the adaptation implementation for
530 this interface. The Bitpool can be updated during encoding to change the bitrate. This would
531 require the use of the SetBitpoolSize() and ApplyConfig() methods. Any other parameters can
532 be changed but will result in a KErrInUse when ApplyConfig() is called.
534 The Set... methods are used update a client-side maintained configuration structure within the
535 implementation of the interface. When the structure is completed, ApplyConfig() should be called
536 to send these client side settings to the actual hwdevice implementation. There are no default
537 values for the configuration parameters (hence all values must be set before ApplyConfig() is
538 called or an error (KErrArgument) will result).
540 @note This constraint is only true for configurations
541 where this is supported (e.g. If GetSupportedChannelModes returns KErrNotSupported then SetChannelMode
542 does not need to be set before ApplyConfig() is called). This check and the parameter values
543 returned will be implemented in the interface proxy and will not query the actual encoder. If
544 multiple instances of the interface are created, each would have this requirement.
549 class MSbcEncoderIntfc
553 Defines the channel modes for the SBC encoder
557 /** SbcChannelMono */
559 /** SbcChannelDual */
561 /** SbcChannelStereo */
563 /** SbcChannelJointStereo */
564 ESbcChannelJointStereo
568 This type defines the allocation methods for the SBC encoder.
570 enum TSbcAllocationMethod
572 /** SbcAllocationSNR */
574 /** SbcAllocationLoudness */
575 ESbcAllocationLoudness
579 Retrieves the sampling frequencies supported by the encoder. See the class comments for details.
580 This method can be called at all times.
582 @param aSamplingFrequencies Reference to the location to store the array of supported
583 sampling frequencies.
585 @return KErrNone if successful, KErrNotSupported if this method is not supported.
587 virtual TInt GetSupportedSamplingFrequencies(RArray<TUint>& aSamplingFrequencies) = 0;
590 Retrieves the channel encoding supported by the encoder. See the class comments for details.
592 This method can be called at all times.
594 @param aChannelModes Reference to the location to store the array of supported channel encoding modes.
596 @return KErrNone if successful, KErrNotSupported if this method is not supported.
598 virtual TInt GetSupportedChannelModes(RArray<TSbcChannelMode>& aChannelModes) = 0;
601 Retrieves the number of subbands supported by the encoder. See the class comments for details.
603 This method can be called at all times.
605 @param aNumOfSubbands Reference to the location to store the array of supported number of subbands.
607 @return KErrNone if successful, KErrNotSupported if this method is not supported.
609 virtual TInt GetSupportedNumOfSubbands(RArray<TUint>& aNumOfSubbands) = 0;
612 Retrieves the allocation methods supported by the encoder. See the class comments for details.
614 This method can be called at all times.
616 @param aAllocationMethods Reference to the location to store the array of supported allocation methods.
618 @return KErrNone if successful, KErrNotSupported if this method is not supported.
620 virtual TInt GetSupportedAllocationMethods(RArray<TSbcAllocationMethod>& aAllocationMethods) = 0;
623 Retrieves the number of blocks supported by the encoder. See the class comments for details.
625 This method can be called at all times but if ApplyConfig() is subsequently called
626 after changing this value whilst encoding, a KErrInUse error will result.
628 @param aNumOfBlocks Reference to the location to store the array of supported number of blocks.
630 @return KErrNone if successful, KErrNotSupported if this method is not supported.
632 virtual TInt GetSupportedNumOfBlocks(RArray<TUint>& aNumOfBlocks) = 0;
635 Retrieves the min and max bitpool values supported by the encoder. See the class comments for details.
637 This method can be called at all times but and ApplyConfig() can be called to change the value whilst encoding.
639 @param aMinSupportedBitpoolSize minimum bitpool value allowed by the encoder.
640 @param aMaxSupportedBitpoolSize maximum bitpool value allowed by the encoder.
642 @return KErrNone if successful, KErrNotSupported if this method is not supported.
644 virtual TInt GetSupportedBitpoolRange(TUint& aMinSupportedBitpoolSize, TUint& aMaxSupportedBitpoolSize) = 0;
647 Sets the value of the sampling frequency of the encoder to be configured by the ApplyConfig() method.
649 This method can be called at all times but if ApplyConfig() is subsequently called
650 after changing this value whilst encoding, a KErrInUse error will result.
652 @param aSamplingFrequency values according to standard and supported by encoder.
654 virtual void SetSamplingFrequency(TUint aSamplingFrequency) = 0;
657 Sets the channel mode of the encoder to be configured by the ApplyConfig() method.
658 See the class comments for details.
660 This method can be called at all times but if ApplyConfig() is subsequently called after
661 changing this value whilst encoding, a KErrInUse error will result.
663 @param aChannelMode (ESbcChannelMono, ESbcChannelDual, ESbcChannelStereo,
664 ESbcChannelJointStereo) when supported by encoder.
667 virtual void SetChannelMode(TSbcChannelMode aChannelMode) = 0;
670 Sets the channel mode of the encoder to be configured by the ApplyConfig() method.
672 This method can be called at all times but if ApplyConfig() is subsequently called after
673 changing this value whilst encoding, a KErrInUse error will result.
675 @param aNumOfSubbands values according to standard and supported by encoder.
678 virtual void SetNumOfSubbands(TUint aNumOfSubbands) = 0;
681 Sets the allocation method of the encoder to be configured by the ApplyConfig() method.
683 This method can be called at all times but if ApplyConfig() is subsequently called after
684 changing this value whilst encoding, a KErrInUse error will result.
686 @param aAllocationMethod ESbcAllocationSNR, ESbcAllocationLoudness when supported by encoder
689 virtual void SetAllocationMethod(TSbcAllocationMethod aAllocationMethod) = 0;
692 Sets the number of blocks of the encoder to be configured by the ApplyConfig() method.
694 This method can be called at all times but if ApplyConfig() is subsequently called after
695 changing this value whilst encoding, a KErrInUse error will result.
697 @param aNumOfBlocks values according to standard and supported by encoder.
699 virtual void SetNumOfBlocks(TUint aNumOfBlocks) = 0;
702 Sets the size of the bitpool of the encoder to be configured by the ApplyConfig() method.
704 This method is allowable at all times - while actively encoding or not.
706 @param aBitpoolSize values according to standard and supported by encoder.
709 virtual void SetBitpoolSize(TUint aBitpoolSize) = 0;
712 Used to configure the encoder with parameters passed in the Set… methods.
713 This method can be called at all times - while actively encoding or not.
714 An error (KErrInUse) will be returned if any configuration parameter, other
715 than bitpool size, is changed while encoding. This checking operational
716 state of the encoder would be done by the adaptation implementation of this
717 interface since the interface proxy is not aware of the encoder state. Also,
718 the adaptation implementation will return an error if incorrect values are
719 used to configure the encoder.
721 @note Even though some preliminary checking is done in the set methods (to see
722 if it is valid to set the values at all) it is expected that
724 @return KErrNone if successful,
725 KErrNotSupported if this method is not implemented,
726 KErrInUse if encoding in active and values are changed that are not
727 allowed to be changed during encoding,
728 KErrArgument if one of the configuration items is not appropriate or
729 if all the values are not set (unless some of the values are not
730 supported, in which case these values should be ignored).
732 virtual TInt ApplyConfig() = 0;
735 Gets the value of the sampling frequency of the encoder that was last successfully
736 configured by the ApplyConfig() method.
738 This method can be called at all times - while actively encoding or not, but will
739 return an error if used before ApplyConfig() has been used successfully.
741 @param aSamplingFrequency last setting successfully applied using ApplyConfig().
743 @return KErrNone if value returned successfully,
744 KErrUnknown if value has not been successfully configured using ApplyConfig()
745 at least once for the current instance of the interface,
746 KErrNotSupported if this method is not implemented (to match its set and
747 getsupported methods).
749 virtual TInt GetSamplingFrequency(TUint& aSamplingFrequency) = 0;
752 Gets the channel mode of the encoder that was last successfully configured by the
753 ApplyConfig() method.
755 This method can be called at all times - while actively encoding or not, but will
756 return an error if used before ApplyConfig() has been used successfully.
758 @param aChannelMode last setting successfully applied using ApplyConfig().
760 @return KErrNone if value returned successfully,
761 KErrUnknown if value has not been successfully configured using ApplyConfig()
762 at least once for the current instance of the interface.
764 virtual TInt GetChannelMode(TSbcChannelMode& aChannelMode) = 0;
767 Gets the channel mode of the encoder that was last successfully configured by the
768 ApplyConfig() method.
770 This method can be called at all times - while actively encoding or not,
771 but will return an error if used before ApplyConfig() has been used successfully.
773 @param aNumOfSubbands last setting successfully applied using ApplyConfig().
775 @return KErrNone if value returned successfully,
776 KErrUnknown if value has not been successfully configured using ApplyConfig()
777 at least once for the current instance of the interface,
778 KErrNotSupported if this method is not implemented (to match its set and
779 getsupported methods)
781 virtual TInt GetNumOfSubbands(TUint& aNumOfSubbands) = 0;
784 Gets the number of blocks of the encoder that was last successfully configured by
785 the ApplyConfig() method.
787 This method can be called at all times - while actively encoding or not, but will
788 return an error if used before ApplyConfig() has been used successfully.
790 @param aNumOfBlocks last setting successfully applied using ApplyConfig().
792 @return KErrNone if value returned successfully,
793 KErrUnknown if value has not been successfully configured using ApplyConfig()
794 at least once for the current instance of the interface,
795 KErrNotSupported if this method is not implemented (to match its set and
796 getsupported methods)
798 virtual TInt GetNumOfBlocks(TUint& aNumOfBlocks) = 0;
801 Gets the allocation method of the encoder that was last successfully configured
802 by the ApplyConfig() method.
804 This method can be called at all times - while actively encoding or not, but will
805 return an error if used before ApplyConfig() has been used successfully.
806 @param aAllocationMethod last setting successfully applied using ApplyConfig().
808 @return KErrNone if value returned successfully,
809 KErrUnknown if value has not been successfully configured using ApplyConfig()
810 at least once for the current instance of the interface,
811 KErrNotSupported if this method is not implemented (to match its set and
812 getsupported methods).
814 virtual TInt GetAllocationMethod(TSbcAllocationMethod& aAllocationMethod) = 0;
817 Gets the size of the bitpool of the encoder that was last successfully
818 configured by the ApplyConfig() method.
820 This method can be called at all times - while actively encoding or not, but
821 will return an error if used before ApplyConfig() has been used successfully.
823 @param aBitpoolSize last setting successfully applied using ApplyConfig().
825 @return KErrNone if value returned successfully,
826 KErrUnknown if value has not been successfully configured using ApplyConfig()
827 at least once for the current instance of the interface,
828 KErrNotSupported if this method is not implemented (to match its set and
829 getsupported methods).
831 virtual TInt GetBitpoolSize(TUint& aBitpoolSize) = 0;
834 /*****************************************************************************/
836 UID associated with the Custom interface MG711DecoderIntfc
841 const TUid KUidG711DecoderIntfc = {0x10282601};
844 This class provides an interface to the G711 decoder CMMFHwDevice in order to provide
845 additional configuration information.
850 class MG711DecoderIntfc
853 /** The Decoder mode */
863 Informs the decoder of the encoded data format that will be sent to it.
865 This method can be called when decoding is not active - anytime before started
867 @param aDecodeMode the decode mode.
869 @return KErrNone if successful.
870 KErrInUse if this method is used when encoding is active.
871 KErrNotSupported if this method is not implemented.
873 virtual TInt SetDecoderMode(TDecodeMode aDecodeMode) = 0;
876 Queries the decoder of the encoded data format that has been active.
878 This method can be called at all times.
879 @param aDecodeMode the decode mode.
881 @return KErrNone if successful.
882 KErrInUse if this method is used when encoding is active.
883 KErrNotSupported if this method is not implemented.
885 virtual TInt GetDecoderMode(TDecodeMode& aDecodeMode) = 0;
888 Used to enable and disable the comfort noise generation capability.
890 This method can be called when decoding is not active - anytime before started
893 @param aCng ETrue = Comfort Noise Generation enabled; EFalse = Comfort Noise
896 @return KErrNone if successful.
897 KErrInUse if this method is used when encoding is active.
898 KErrNotSupported if this method is not implemented.
900 virtual TInt SetComfortNoiseGeneration(TBool aCng) = 0;
903 Used to find out if comfort noise generation is enabled or not.
905 This method can be called when decoding is not active - anytime before started
908 @param aCng ETrue = Comfort Noise Generation enabled; EFalse = Comfort Noise
911 @return KErrNone if successful.
912 KErrInUse if this method is used when encoding is active.
913 KErrNotSupported if this method is not implemented.
915 virtual TInt GetComfortNoiseGeneration(TBool& aCng) = 0;
918 Used to enable and disable the packet loss concealment capability.
920 This can be called when decoding is not active - anytime before started or after
923 @param aPlc ETrue = plc enabled; EFalse = plc disabled
925 @return KErrNone if successful. KErrInUse if this method is used when encoding is
926 active. KErrNotSupported if this method is not implemented.
928 virtual TInt SetPacketLossConcealment(TBool aPlc) = 0;
931 Used to find out if packet loss concealment capability is enabled or not.
933 This method can be called when decoding is not active - anytime before started or
936 @param aPlc ETrue = packet loss concealment enabled; EFalse = packet loss
939 @return KErrNone if successful. KErrInUse if this method is used when encoding is active.
940 KErrNotSupported if this method is not implemented.
942 virtual TInt GetPacketLossConcealment(TBool& aPlc) = 0;
946 /*****************************************************************************/
948 UID associated with the Custom interface MG711EncoderIntfc
953 const TUid KUidG711EncoderIntfc = {0x10282602};
956 This class provides an interface to the G711 encoder CMMFHwDevice in order to provide
957 additional configuration information.
962 class MG711EncoderIntfc
965 /** The encoder mode */
975 Configures the encoder's encoding format.
977 This method can be called when decoding is not active - anytime before started or
980 @param aEncodeMode the encode mode.
982 @return KErrNone if successful. KErrInUse if this method is used when encoding is active.
983 KErrNotSupported if this method is not implemented.
985 virtual TInt SetEncoderMode(TEncodeMode aEncodeMode) = 0;
988 Controls voice activity detection (VAD) mode.
990 This method can be called at all times.
992 @param aVadModeOn ETrue=On, EFalse=Off
994 @return KErrNone if successful,
995 KErrNotSupported if this method is not implemented or not supported by the encoder
997 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
1000 Gets the current state of the voice activity detection (VAD) mode.
1002 This method can be called at all times - while actively encoding or not.
1004 @param aVadModeOn On output ETrue=On, EFalse=Off
1006 @return KErrNone if successful.
1007 KErrNotSupported if this method is not implemented or VAD is not supported by the encoder.
1009 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
1012 /*****************************************************************************/
1014 UID associated with the Custom interface MG729DecoderIntfc
1019 const TUid KUidG729DecoderIntfc = {0x10282603};
1022 This class provides an interface to the G729 decoder CMMFHwDevice in order to provide additional
1023 configuration information.
1028 class MG729DecoderIntfc
1032 Informs the decoder that the next buffer sent to it will contain bad LSF data.
1034 This method can be called when decoding is active.
1036 This method will be called after a buffer has been received from the CMMFHwDevice,
1037 and before it is returned to the CMMFHwDevice.
1039 @return KErrNone if successful.
1040 KErrInUse if this method is used out of sequence.
1041 KErrNotSupported if this method is not implemented.
1043 virtual TInt BadLsfNextBuffer() = 0;
1046 /*****************************************************************************/
1048 UID associated with the Custom interface MG729EncoderIntfc
1053 const TUid KUidG729EncoderIntfc = {0x10282604};
1056 This class provides an interface to the G729 encoder CMMFHwDevice in order to provide
1057 additional configuration information.
1062 class MG729EncoderIntfc
1066 Controls voice activity detection (VAD) mode.
1068 This method is allowable at all times - while actively encoding or not.
1069 @param aVadModeOn ETrue=On, EFalse=Off
1071 @return KErrNone if successful. KErrNotSupported if this method is not implemented
1072 or not supported by the encoder.
1074 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
1077 Gets the current state of the voice activity detection (VAD) mode.
1079 This method can be called at all times - while actively encoding or not.
1081 @param aVadModeOn On output ETrue=On, EFalse=Off
1082 @return KErrNone if successful. KErrNotSupported if this method is not implemented
1083 or VAD is not supported by the encoder.
1085 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
1088 /*****************************************************************************/
1090 UID associated with the Custom interface MIlbcDecoderIntfc
1095 const TUid KUidIlbcDecoderIntfc = {0x10282605};
1098 This class provides an interface to the Ilbc decoder CMMFHwDevice in order to provide
1099 additional configuration information.
1104 class MIlbcDecoderIntfc
1107 /** The Ibc decoder mode */
1117 Informs the decoder of the encoded data format that will be sent to it.
1119 This method can be called when decoding is not active - anytime before started or
1122 @param aDecodeMode the decode mode.
1124 @return KErrNone if successful.
1125 KErrInUse if this method is used when decoding is active.
1126 KErrNotSupported if this method is not implemented.
1128 virtual TInt SetDecoderMode(TDecodeMode aDecodeMode) = 0;
1131 Used to enable and disable the comfort noise generation capability.
1133 This method is allowable when decoding is not active - anytime before started or
1136 @param aCng ETrue = comfort noise generation enabled; EFalse = comfort noise
1139 @return KErrNone if successful.
1140 KErrInUse if this method is used when encoding is active.
1141 KErrNotSupported if this method is not implemented.
1143 virtual TInt SetComfortNoiseGeneration(TBool aCng) = 0;
1146 Used to find out if comfort noise generation is enabled or not.
1148 This method is allowable when decoding is not active - anytime before started or
1151 @param aCng On output ETrue = comfort noise generation enabled; EFalse = comfort
1152 noise generation disabled
1154 @return KErrNone if successful.
1155 KErrInUse if this method is used when encoding is active.
1156 KErrNotSupported if this method is not implemented.
1158 virtual TInt GetComfortNoiseGeneration(TBool& aCng) = 0;
1161 /*****************************************************************************/
1163 UID associated with the Custom interface MIlbcEncoderIntfc
1168 const TUid KUidIlbcEncoderIntfc = {0x10282606};
1171 This class provides an interface to the Ilbc encoder CMMFHwDevice in order to provide
1172 additional configuration information.
1177 class MIlbcEncoderIntfc
1180 /** The Ibc encoder mode*/
1190 Configures the encoder's encoding format.
1192 This method is allowable when encoding is not active - anytime before started or
1195 @param aEncodeMode the encode mode.
1197 @return KErrNone if successful.
1198 KErrInUse if this method is used when encoding is active.
1199 KErrNotSupported if this method is not implemented.
1201 virtual TInt SetEncoderMode(TEncodeMode aEncodeMode) = 0;
1204 Controls voice activity detection (VAD) mode.
1206 This method is allowable at all times - while actively encoding or not.
1208 @param aVadModeOn ETrue=On, EFalse=Off
1210 @return KErrNone if successful.
1211 KErrNotSupported if this method is not implemented or not supported by the encoder.
1213 virtual TInt SetVadMode(TBool aVadModeOn) = 0;
1216 Gets the encoder's current encoding format.
1218 This method is allowable when encoding is not active - anytime before started or
1221 @param &aEncodeMode the encode mode.
1223 @return KErrNone if successful.
1224 KErrInUse if this method is used when encoding is active.
1225 KErrNotSupported if this method is not implemented.
1227 virtual TInt GetEncoderMode(TEncodeMode &aEncodeMode) = 0;
1230 Gets the current state of the voice activity detection (VAD) mode.
1232 This method is allowable at all times - while actively encoding or not.
1234 @param aVadModeOn On output ETrue=On, EFalse=Off
1236 @return KErrNone if successful.
1237 KErrNotSupported if this method is not implemented or VAD is not supported
1240 virtual TInt GetVadMode(TBool& aVadModeOn) = 0;
1243 /*****************************************************************************/
1245 UID associated with the Custom interface MMMFErrorConcealmentIntfc
1250 const TUid KUidErrorConcealmentIntfc = {0x10282607};
1253 This custom interface can be used to indicate that data has been lost. Typical usage
1254 would be during streaming. Lost packets of audio data would not get played, but the
1255 video data may still be available for playback. If video playback is synchronized to
1256 audio then this API can be used to indicate that audio data is lost so that video
1257 playback can continue. It could also be used for an audio-only source to maintain
1258 synchronization in time if data is lost.
1263 class MMMFErrorConcealmentIntfc
1267 Indicates that next buffer sent to CMMFHwDevice will not contain any valid data,
1268 and that a single frame of data has been lost, and that error concealment should
1269 be provided for that lost frame. This method will be called after a buffer has been
1270 received from the Hardware Device, and before it is returned to the Hardware Device.
1272 @return KErrNone if successful.
1273 KErrInUse if this method is used out of sequence.
1274 KErrNotSupported if this method is not implemented.
1276 virtual TInt ConcealErrorForNextBuffer() = 0;
1278 Puts the CMMFHwDevice into frame-based operation. This may be required in cases where
1279 the decoder only supports error concealment in a frame-based mode of operation.
1280 Operating in frame-based mode means that the decoder requires that each buffer it
1281 receives contains only complete data frames.
1283 Frame mode is limited to a single frame per buffer. The alternative to frame-based mode
1284 is buffer-based mode, the default interface for CMMFHwDevices and decoders.
1286 In buffer-based mode, complete data frames are not required to be contained within a
1287 single buffer. A data frame may span consecutive data buffers in buffer-based mode.
1289 As it is less efficient than buffer-based mode, Frame-based mode should be used as a
1290 less-preferred option where errors are present and the CMMFHwDevice implementation would
1291 not be tolerant to buffer-based mode error. This condition would be indicated by
1292 FrameModeRqrdForEC resulting in its parameter being set to ETrue.
1294 This method can be called when decoding is not active - anytime before the CMMFHwDevice
1295 is started, or after it is stopped.
1297 @param aFrameModeOn ETrue = frame mode on; EFalse = frame mode off.
1299 @return KErrNone if successful.
1300 KErrInUse if this method is used out of sequence.
1301 KErrNotSupported if this method is not implemented.
1303 virtual TInt SetFrameMode(TBool aFrameModeOn) = 0;
1306 Queries the CMMFHwDevice to find out if frame mode is required by the implementing
1307 CMMFHwDevice in order for it to support error concealment.
1309 This method is allowable when decoding is not active - anytime before the CMMFHwDevice
1310 is started, or after it is stopped.
1311 @param aFrameModeRqrd ETrue = frame mode required; EFalse = frame mode not required
1312 @return KErrNone if successful.
1313 KErrInUse if this method is used during decoding.
1314 KErrNotSupported if this method is not implemented.
1316 virtual TInt FrameModeRqrdForEC(TBool& aFrameModeRqrd) = 0;
1319 /*****************************************************************************/
1321 UID associated with the Custom interface MAudioVibraControl
1326 const TUid KUidAudioVibraControl = {0x10282608};
1329 This class provides an interface for controlling vibra. DevSound should interpret the
1330 instantiation of this interface as a vibra control request by the user. The default vibra
1331 behavior implemented by the DevSound for the associated stream will not be performed while
1332 the user has control, In other words whilst this interface is instantiated. DevSound default vibra behavior
1333 for the associated stream will return once this interface is deleted. Other instances of
1334 DevSound may be instantiated for other audio streams at the same time. When multiple instances
1335 of DevSound are instantiated, priority and preference values are used to determine which audio
1336 streams are rendered. Prioritization of vibra control is determined by adaptation. Due to
1337 resource conflicts, and prioritization by adaptation, it may be possible that an audio stream
1338 is played, but not the vibra that accompanies that audio. For instance, if audio is mixed and
1339 two audio streams are rendered, vibra playback might not be mixed. Vibra playback may be
1340 prioritized by adaptation to a single controller. The behavior in these cases would be based
1341 on adaptation implementation. The user is not notified if vibra is not played.
1346 class MAudioVibraControl
1352 @return KErrNone if successful KErrNotSupported if this method is not implemented.
1354 virtual TInt StartVibra() = 0;
1359 @return KErrNone if successful. KErrNotSupported if this method is not implemented.
1361 virtual TInt StopVibra() = 0;
1364 /*****************************************************************************/
1366 UID associated with the Custom interface MMMFSampleBuffering
1371 const TUid KUidSampleBuffering = {0x10282609};
1374 Custom interface class to allow DevSound to support buffering of samples before playback begins.
1375 This allows playback to be more robust to underflow errors when playback begins at the expense
1376 of higher latency before playback starts.
1381 class MMMFSampleBuffering
1385 Enables buffering up of samples before playback begins. This function is only effective before
1386 CMMFDevSound::PlayInit() is called - calling the function after this will have no effect.
1387 @return "This method may return one of the system-wide error codes."
1389 virtual TInt MmsbEnableSampleBufferingBeforePlayback() = 0;
1392 Disables buffering up of samples before playback begins. This function is only effective before
1393 CMMFDevSound::PlayInit() is called - calling the function after this will have no effect.
1394 @return "This method may return one of the system-wide error codes."
1396 virtual TInt MmsbDisableSampleBufferingBeforePlayback() = 0;
1399 Asynchronous request that completes when Playback actually starts.
1400 @param "aStatus" "TRequestStatus that will be completed when play actually starts"
1402 virtual void MmsbNotifyPlayStarted(TRequestStatus& aStatus) = 0;
1405 Cancel any outstanding asynchronous NotifyPlayStarted requests.
1407 virtual void MmsbCancelNotifyPlayStarted() = 0;
1410 /*****************************************************************************/
1412 UID associated with the Custom interface MMMFPlaybackStatus.
1417 const TUid KUidPlaybackStatus = {0x10273811};
1420 Custom interface class to enable access to the DevSound implementation to report the number of
1421 consumed input bytes, number of successfully decoded samples, samples played, system time and
1422 total samples played.
1427 class MMMFPlaybackStatus
1430 /** Play back status information */
1431 struct TMMFPlaybackStatus
1433 /** Number of consumed input bytes */
1435 /** Number of successfully decoded samples */
1436 TInt64 aDecodedSamples;
1437 /** Number of decoded samples played */
1438 TInt64 aDecodedSamplesPlayed;
1439 /** Current system time */
1441 /** Total samples played */
1442 TInt64 aTotalSamplesPlayed;
1445 A method to query for detailed status information from a playing DevSound.
1446 including timestamp information from the DSP.
1447 @param aStatus the current playback status.
1448 @return "This method may return one of the system-wide error codes."
1450 virtual TInt MmpsGetPlaybackStatusInformation(TMMFPlaybackStatus& aStatus)= 0;
1453 Request notification of loss of sync during decode - the notification will be received
1454 in the DevSound client callback SendEventToClient with the event type set to KMMFEventLossOfDecodeSync.
1456 @return "This method may return one of the system-wide error codes."
1458 virtual TInt MmpsRequestLossOfSyncNotification() = 0;
1461 Cancel the request for notification of loss of sync.
1463 @return "This method may return one of the system-wide error codes."
1465 virtual TInt MmpsCancelLossOfSyncNotification() = 0;
1468 /*****************************************************************************/
1470 UID associated with the Custom interface MMMFDSPControl
1475 const TUid KUidDSPControl = {0x1028260A};
1478 Custom interface class to allow control of DSP behaviour.
1483 class MMMFDSPControl
1488 Get the timestamp information from the DSP
1490 @param aSamplesPlayed - number of audio samples played so far.
1491 @param aSystemTime - current system time
1492 @param aB - bytes consumed by the decoder
1493 @param aT - bytes successfully decoded by the decoder.
1495 @return "This method may return one of the system-wide error codes."
1497 virtual TInt MmdspcGetAudioPlaybackInfo(TInt64& aSamplesPlayed, TInt64& aSystemTime, TUint& aB, TUint& aT) = 0;
1500 Place DevSound in a mode where overflow/underflow errors on recording are ignored.
1501 @return "This method may return one of the system-wide error codes."
1503 virtual TInt MmdspcAcceptRecordBuffersInvalidFollowingStop() = 0;
1506 Place DevSound in a mode where overflow/underflow errors on playing are ignored.
1507 @return "This method may return one of the system-wide error codes."
1509 virtual TInt MmdspcAcceptPlaybackBuffersInvalidFollowingStop() = 0;
1512 /*****************************************************************************/
1514 UID associated with the Custom interface MMMFUnderflowAutoStopControl
1519 const TUid KUidUnderflowAutoStopControl = {0x1028260B};
1522 Custom interface class to control underflow behaviour.
1527 class MMMFUnderflowAutoStopControl
1531 Turn off the default DevSound behaviour of automatically Stopping when an underflow
1532 occurs. The underflow will be reported but play can continue when the client sends
1533 more data - it is up to the client to call stop even in the case of end of file.
1535 @return "This method may return one of the system-wide error codes."
1537 virtual TInt MmuascTurnOffUnderflowAutoStop() = 0;
1540 /*****************************************************************************/
1542 UID associated with the Custom interface MMMFSetDRMProtected
1547 const TUid KUidSetDRMProtected = {0x1028260C};
1550 This class provides an interface to mark data being played as DRM protected.
1555 class MMMFSetDRMProtected
1559 Indicate whether the data being played is DRM protected or not
1561 @param aDRMProtected the required DRM state.
1562 @return "This method may return one of the system-wide error codes."
1564 virtual TInt MmsdpMarkDataAsDRMProtected(TBool aDRMProtected) = 0;
1567 /*****************************************************************************/
1569 UID associated with the Custom interface MMMFBufferFramesConfig.
1574 const TUid KUidBufferFramesConfig = {0x1028260D};
1577 This class provides an interface to configure and retrive the buffer frames.
1582 class MMMFBufferFramesConfig
1586 For use when encoding to set the number of encoded frames contained in each buffer
1587 sent back to the client. The method should be called after CMMFDevSound::InitilaizeL
1588 but before RecordInitL.
1590 @param aFrameCount - Number of frames per buffer
1591 @param aSamplesPerFrame - numer of samples per frame
1592 @return "This method may return one of the system-wide error codes."
1594 virtual TInt MmbfcSetNumberOfFramesPerInputBuffer(TInt aFrameCount, TInt aSamplesPerFrame)=0;
1597 For use when decoding to set the number of encoded frames contained in each buffer sent
1598 down to DevsSund for playback. The method should be called after CMMFDevSound::InitilaizeL
1599 but before PlayInitL.
1601 @param aFrameCount - Number of frames per buffer
1602 @param aSamplesPerFrame - numer of samples per frame
1604 @return "This method may return one of the system-wide error codes."
1606 virtual TInt MmbfcSetNumberOfFramesPerOutputBuffer(TInt aFrameCount, TInt aSamplesPerFrame)=0;
1609 /*****************************************************************************/
1611 UID associated with the Custom interface MMMFGetTimestamps
1616 const TUid KUidGetTimestamps = {0x1028260E};
1619 This class provides an interface to configure and retrive time stamps.
1624 class MMMFGetTimestamps
1628 Enable or disable support for system timestamps during recording, used for Audio / Video sync.
1629 This method can only be called after recording has been initialised, but before recording
1630 has started. Once recording is underway, the setting cannot be changed.
1632 @param aEnable ETrue to enable recording timestamps, EFalse to disable it.
1634 @return KErrNotReady if DevSound has not yet been initialised, KErrNotSupported if
1635 DevSound is not in recording mode or KErrInUse if recording is already underway.
1637 virtual TInt MmgtSetRecordSystemTimestampsEnabled(TBool aEnable) = 0;
1640 This method returns the system timestamp corresponding to the CMMFDataBuffer with the
1641 given position within the recording stream. This timestamp is the system time at which
1642 the buffers timestamp, as returned by CMMFBuffer::TimeToPlay, was valid.
1643 This method can only be used if the recording timestamps were enabled before recording
1644 started using the SetRecordSystemTimestampsEnabled method.
1646 @param aBufferPosition The timestamp from the buffer, as returned by CMMFBuffer::TimeToPlay.
1647 @param aTimestamp Returns the corresponding system time, in universal time.
1649 @return A System error code.
1650 KErrNotSupported if recording is not ongoing;
1651 KErrNotReady if DevSound is not initialized, or TimeStamps have not been enabled;
1652 KErrNotFound if the timestamp given does not correspond to a recent record buffer.
1654 virtual TInt MmgtGetSystemTimestampForBuffer(const TTimeIntervalMicroSeconds& aBufferPosition,
1655 TTime& aTimestamp) const = 0;
1658 /*****************************************************************************/
1660 UID associated with the Custom interface MMMFAdvancedAACEncodeSettings
1665 const TUid KUidAdvancedAACEncoderSettings = {0x102825FE};
1668 Advanced AAC Encode Bit-rate Configuration
1673 class MMMFAdvancedAACEncodeSettings
1676 /** AAC BItrate mode */
1677 enum TAACBitrateMode
1679 /** AACBitrateModeNone */
1680 EAACBitrateModeNone,
1681 /** AACBitrateModeAbsolute */
1682 EAACBitrateModeAbsolute,
1683 /** AACBitrateModeVariable */
1684 EAACBitrateModeVariable,
1685 /** AACBitrateModeFixed */
1686 EAACBitrateModeFixed
1689 SetAACEncodeBitrateMode
1691 Set the bitrate mode for AAC encoding. This must be called before the encoding starts.
1693 @param aBitrateMode the structure containing the additional information required for decoding the raw AAC.
1694 @return KErrNone if successful. KErrInUse if this method is used when decoding is active.
1696 virtual TInt SetAACEncodeBitrateMode(TAACBitrateMode aBitrateMode)=0;
1699 This interface returns the current AACEncoding bitrate mode.
1701 @param aBitrateMode the structure containing the additional information.
1702 @return KErrNone if successful. KErrNotSupported if this method is not implemented.
1704 virtual TInt GetAACEncodeBitrateMode(TAACBitrateMode& aBitrateMode) = 0;
1707 /*****************************************************************************/