diff -r cbb1bfb7ebfb -r edd273b3192a mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataproviderdescriptionutility.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataproviderdescriptionutility.cpp Fri May 14 16:21:14 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataproviderdescriptionutility.cpp Thu May 27 13:19:19 2010 +0300 @@ -84,28 +84,125 @@ } CMTPTypeInterdependentPropDesc* interdependentPropDesc = CMTPTypeInterdependentPropDesc::NewL(); + CleanupStack::PushL( interdependentPropDesc ); // + interdependentPropDesc if ( audioWaveCodecSupported && audioBitRateSupported ) { - CMTPTypeInterdependentProperties* properties = CMTPTypeInterdependentProperties::NewL(); - properties->AppendL( NewAudioWaveCodecPropDescL( aFormatCode ) ); - properties->AppendL( NewAudioBitratePropDescL( aFormatCode ) ); - interdependentPropDesc->AppendL( properties ); + if ( ( aFormatCode == EMTPFormatCodeWMA ) + || ( aFormatCode == EMTPFormatCodeWMV ) + || ( aFormatCode == EMTPFormatCodeASF ) ) + { + AppendWMAudioInterdepentPropDescL( interdependentPropDesc ); + } + else + { + CMTPTypeInterdependentProperties* properties = CMTPTypeInterdependentProperties::NewL(); + CleanupStack::PushL( properties ); + + CMTPTypeObjectPropDesc* propertyDesc1 = NewAudioWaveCodecPropDescL( aFormatCode ); + CleanupStack::PushL( propertyDesc1 ); // + propertyDesc1 + properties->AppendL( propertyDesc1 ); + CleanupStack::Pop( propertyDesc1 ); // - propertyDesc1 + + CMTPTypeObjectPropDesc* propertyDesc2 = NewAudioBitratePropDescL( aFormatCode ); + CleanupStack::PushL( propertyDesc2 ); // + propertyDesc2 + properties->AppendL( propertyDesc2 ); + CleanupStack::Pop( propertyDesc2 ); // - propertyDesc2 + + interdependentPropDesc->AppendL( properties ); + CleanupStack::Pop( properties ); + } } if ( videoFourCcCodecSupported && videoBitRateSupported ) { CMTPTypeInterdependentProperties* properties = CMTPTypeInterdependentProperties::NewL(); - properties->AppendL( NewVideoFourCCCodecPropDescL( aFormatCode ) ); - properties->AppendL( NewVideoBitratePropDescL( aFormatCode ) ); + CleanupStack::PushL( properties ); // + properties + + CMTPTypeObjectPropDesc* propertyDesc1 = NewVideoFourCCCodecPropDescL( aFormatCode ); + CleanupStack::PushL( propertyDesc1 ); // + propertyDesc1 + properties->AppendL( propertyDesc1 ); + CleanupStack::Pop( propertyDesc1 ); // - propertyDesc1 + + CMTPTypeObjectPropDesc* propertyDesc2 = NewVideoBitratePropDescL( aFormatCode ); + CleanupStack::PushL( propertyDesc2 ); // + propertyDesc2 + properties->AppendL( propertyDesc2 ); + CleanupStack::Pop( propertyDesc2 ); // - propertyDesc2 + interdependentPropDesc->AppendL( properties ); + CleanupStack::Pop( properties ); // - properties } PRINT( _L( "MM MTP <= CMediaMtpDataProviderDescriptionUtility::NewInterdepentPropDescL" ) ); + CleanupStack::Pop( interdependentPropDesc ); // - interdependentPropDesc return interdependentPropDesc; } // ----------------------------------------------------------------------------- +// CMediaMtpDataProviderDescriptionUtility::NewWMAudioInterdepentPropDescL +// Append WM Audio specific to interdpendent property description. +// ----------------------------------------------------------------------------- +// +void CMediaMtpDataProviderDescriptionUtility::AppendWMAudioInterdepentPropDescL(CMTPTypeInterdependentPropDesc* aInterdependentPropDesc) + { + PRINT( _L( "MM MTP => CMediaMtpDataProviderDescriptionUtility::AppendWMAudioInterdepentPropDescL" ) ); + + CMTPTypeInterdependentProperties* properties1 = CMTPTypeInterdependentProperties::NewL(); + CleanupStack::PushL( properties1 ); // + properties1 + + CMTPTypeObjectPropDescEnumerationForm* form = CMTPTypeObjectPropDescEnumerationForm::NewL( EMTPTypeUINT32 ); + CleanupStack::PushL( form ); // + form + form->AppendSupportedValueL( TMTPTypeUint32( EMTPAudioWAVECodecWMA ) ); + + CMTPTypeObjectPropDesc* propertyDesc1 = CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeAudioWAVECodec, *form ); + + CleanupStack::PopAndDestroy( form ); // - form + CleanupStack::PushL( propertyDesc1 ); // + propertyDesc1 + properties1->AppendL( propertyDesc1 ); + CleanupStack::Pop( propertyDesc1 ); // - propertyDesc1 + + CMTPTypeObjectPropDesc* propertyDesc2 = NewRangeFormDescriptionL( EMTPObjectPropCodeAudioBitRate, + EMTPWMAMinBitrate, + EMTPWMAMaxBitrate, + EMTPAudioBitrateStep ); + + CleanupStack::PushL( propertyDesc2 ); // + propertyDesc2 + properties1->AppendL( propertyDesc2 ); + CleanupStack::Pop( propertyDesc2 ); // - propertyDesc2 + + aInterdependentPropDesc->AppendL( properties1 ); + CleanupStack::Pop( properties1 ); // - properties1 + + CMTPTypeInterdependentProperties* properties2 = CMTPTypeInterdependentProperties::NewL(); + CleanupStack::PushL( properties2 ); // + properties2 + + form = CMTPTypeObjectPropDescEnumerationForm::NewL( EMTPTypeUINT32 ); + CleanupStack::PushL( form ); // + form + form->AppendSupportedValueL( TMTPTypeUint32( EMTPAudioWAVECodecWMAPro ) ); + + CMTPTypeObjectPropDesc* propertyDesc3 = CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeAudioWAVECodec, *form ); + + CleanupStack::PopAndDestroy( form ); // - form + CleanupStack::PushL( propertyDesc3 ); // + propertyDesc3 + properties2->AppendL( propertyDesc3 ); + CleanupStack::Pop( propertyDesc3 ); // - propertyDesc3 + + CMTPTypeObjectPropDesc* propertyDesc4 = NewRangeFormDescriptionL( EMTPObjectPropCodeAudioBitRate, + EMTPWMAProMinBitrate, + EMTPWMAProMaxBitrate, + EMTPAudioBitrateStep ); + + CleanupStack::PushL( propertyDesc4 ); // + propertyDesc4 + properties2->AppendL( propertyDesc4 ); + CleanupStack::Pop( propertyDesc4 ); // - propertyDesc4 + + aInterdependentPropDesc->AppendL( properties2 ); + CleanupStack::Pop( properties2 ); // - properties2 + + PRINT( _L( "MM MTP <= CMediaMtpDataProviderDescriptionUtility::AppendWMAudioInterdepentPropDescL" ) ); + } + +// ----------------------------------------------------------------------------- // CMediaMtpDataProviderDescriptionUtility::NewSpecificPropDescL // Construct media dp specific property description. // ----------------------------------------------------------------------------- @@ -236,6 +333,7 @@ case EMTPFormatCodeWMV: case EMTPFormatCodeASF: form->AppendSupportedValueL( TMTPTypeUint32( EMTPAudioWAVECodecWMA ) ); + form->AppendSupportedValueL( TMTPTypeUint32( EMTPAudioWAVECodecWMAPro ) ); break; case EMTPFormatCodeMP3: @@ -281,7 +379,7 @@ case EMTPFormatCodeASF: propertyDesc = NewRangeFormDescriptionL( EMTPObjectPropCodeAudioBitRate, EMTPWMAMinBitrate, - EMTPWMAMaxBitrate, + EMTPWMAProMaxBitrate, EMTPAudioBitrateStep ); break; @@ -383,7 +481,7 @@ ETrue ); } - PRINT( _L( "MM MTP <= MmMtpDpDescriptionUtiliNewviceVideoBitratePropDescL" ) ); + PRINT( _L( "MM MTP <= CMediaMtpDataProviderDescriptionUtility::NewVideoBitratePropDescL" ) ); return propertyDesc; }