1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/mmlibs/mmfw/inc/mmf/ControllerFramework/mmfstandardcustomcommandsimpl.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,1118 @@
1.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +#ifndef __MMFSTANDARDCUSTOMCOMMANDS_IMPL_H
1.20 +#define __MMFSTANDARDCUSTOMCOMMANDS_IMPL_H
1.21 +
1.22 +#include <mmf/common/mmfcontroller.h>
1.23 +#include <mmf/common/mmfvideo.h>
1.24 +#include <mmf/common/mmcaf.h>
1.25 +
1.26 +class CMMFVideoFrameMessage;
1.27 +class CFbsBitmap;
1.28 +class CDesC8Array;
1.29 +
1.30 +
1.31 +/**
1.32 +@publishedPartner
1.33 +@released
1.34 +
1.35 +Client class to allow setting the initial screen for video display.
1.36 +
1.37 +*/
1.38 +class RMMFVideoSetInitScreenCustomCommands : public RMMFCustomCommandsBase
1.39 + {
1.40 +public:
1.41 +
1.42 + /**
1.43 + Constructor.
1.44 +
1.45 + @param aController
1.46 + The client side controller object to be used by this custom command interface.
1.47 +
1.48 + */
1.49 + IMPORT_C RMMFVideoSetInitScreenCustomCommands(RMMFController& aController);
1.50 +
1.51 + /**
1.52 + Sets the initial screen number for the video display on the controller.
1.53 +
1.54 + @param aScreenNumber
1.55 + The screen number
1.56 +
1.57 + */
1.58 + IMPORT_C TInt SetInitScreenNumber(TInt aScreenNumber);
1.59 + };
1.60 +
1.61 +
1.62 +
1.63 +/**
1.64 +@publishedPartner
1.65 +@released
1.66 +
1.67 +Mixin class to be derived from controller plugins that could support setting the initial screen for displaying video.
1.68 +*/
1.69 +class MMMFVideoSetInitScreenCustomCommandImplementor
1.70 + {
1.71 +public:
1.72 +
1.73 + /**
1.74 + Sets the initial screen number.
1.75 +
1.76 + @param aScreenNumber
1.77 + The screen number
1.78 + */
1.79 + virtual void MvsdSetInitScreenNumber(TInt aScreenNumber)=0;
1.80 + };
1.81 +
1.82 +
1.83 +/**
1.84 +@publishedPartner
1.85 +@released
1.86 +
1.87 +Custom command parser class to be used by controller plugins wishing to support setting the initial screen
1.88 +number for the video display.
1.89 +
1.90 +The controller plugin should create an object of this type and add it to the list of custom command parsers
1.91 +in the controller framework. The controller plugin must be derived from MMMFVideoSetInitScreenCustomCommandImplementor
1.92 +to use this class.
1.93 +*/
1.94 +class CMMFVideoSetInitScreenCustomCommandParser : public CMMFCustomCommandParserBase
1.95 + {
1.96 +public:
1.97 +
1.98 + /**
1.99 + Creates a new custom command parser that supports setting screen device for video dusplay.
1.100 +
1.101 + @param aImplementor
1.102 + A reference to the controller plugin that owns this new object.
1.103 +
1.104 + @return A pointer to the object created.
1.105 +
1.106 + */
1.107 + IMPORT_C static CMMFVideoSetInitScreenCustomCommandParser* NewL(MMMFVideoSetInitScreenCustomCommandImplementor& aImplementor);
1.108 +
1.109 + /**
1.110 + Destructor.
1.111 +
1.112 + */
1.113 + IMPORT_C ~CMMFVideoSetInitScreenCustomCommandParser();
1.114 +
1.115 + /**
1.116 + Handles a request from the client. Called by the controller framework.
1.117 +
1.118 + @param aMessage
1.119 + The message to be handled.
1.120 +
1.121 + */
1.122 + void HandleRequest(TMMFMessage& aMessage);
1.123 +
1.124 +private:
1.125 + /**
1.126 + Constructor.
1.127 +
1.128 + @param aImplementor
1.129 + A reference to the controller plugin that owns this new object.
1.130 + */
1.131 + CMMFVideoSetInitScreenCustomCommandParser(MMMFVideoSetInitScreenCustomCommandImplementor& aImplementor);
1.132 + void DoHandleRequestL(TMMFMessage& aMessage);
1.133 + TBool DoSetInitScreenNumberL(TMMFMessage& aMessage);
1.134 +
1.135 +private:
1.136 + MMMFVideoSetInitScreenCustomCommandImplementor& iImplementor;
1.137 + };
1.138 +
1.139 +
1.140 +/**
1.141 +WARNING: For internal use ONLY. Compatibility is not guaranteed in future releases.
1.142 +@internalComponent
1.143 +*/
1.144 +enum TMMFVideoPixelAspectRatioMessages
1.145 + {
1.146 + EMMFVideoGetPixelAspectRatio,
1.147 + EMMFVideoSetPixelAspectRatio,
1.148 + EMMFVideoGetSupportedPixelAspectRatios,
1.149 + EMMFVideoPixelAspectRatioCopyArrayData
1.150 + };
1.151 +
1.152 +/**
1.153 +WARNING: For internal use ONLY. Compatibility is not guaranteed in future releases.
1.154 +@internalComponent
1.155 +*/
1.156 +enum TMMFVideoAudioSamplingRateAndChannelConfigMessages
1.157 + {
1.158 + EMMFVideoGetAudioChannels,
1.159 + EMMFVideoSetAudioChannels,
1.160 + EMMFVideoGetSupportedAudioChannels,
1.161 + EMMFVideoGetAudioSampleRate,
1.162 + EMMFVideoSetAudioSampleRate,
1.163 + EMMFVideoGetSupportedAudioSampleRates,
1.164 + EMMFVideoAudioSamplingRateAndChannelConfigCopyArrayData
1.165 + };
1.166 +
1.167 +
1.168 +/**
1.169 +@publishedPartner
1.170 +@released
1.171 +
1.172 +Client class to allow setting and getting the pixel aspect ratio for video recording.
1.173 +
1.174 +*/
1.175 +class RMMFVideoPixelAspectRatioCustomCommands : public RMMFCustomCommandsBase
1.176 + {
1.177 +public:
1.178 +
1.179 + /**
1.180 + Constructor.
1.181 +
1.182 + @param aController
1.183 + The client side controller object to be used by this custom command interface.
1.184 +
1.185 + */
1.186 + IMPORT_C RMMFVideoPixelAspectRatioCustomCommands(RMMFController& aController);
1.187 +
1.188 + /**
1.189 + Sets the pixel aspect ratio for the video recording on the controller.
1.190 +
1.191 + @param aAspectRatio
1.192 + The new pixel aspect ratio. The default pixel aspect ratio is 1:1.
1.193 +
1.194 + @return One of the system-wide error codes.
1.195 +
1.196 + */
1.197 + IMPORT_C TInt SetPixelAspectRatio(const TVideoAspectRatio& aAspectRatio);
1.198 +
1.199 + /**
1.200 + Gets the current pixel aspect ratio for the video recording on the controller.
1.201 +
1.202 + @param aAspectRatio
1.203 + The current video pixel aspect ratio.
1.204 +
1.205 + @return One of the system-wide error codes.
1.206 + */
1.207 + IMPORT_C TInt GetPixelAspectRatio(TVideoAspectRatio& aAspectRatio) const;
1.208 +
1.209 + /**
1.210 + Gets the list of supported pixel aspect ratios for the video recording on the controller.
1.211 +
1.212 + @param aAspectRatios
1.213 + The supported pixel aspect ratios.
1.214 +
1.215 + @leave This method may leave with one of the system-wide error codes.
1.216 + */
1.217 + IMPORT_C void GetSupportedPixelAspectRatiosL(RArray<TVideoAspectRatio>& aAspectRatios) const;
1.218 +
1.219 +private:
1.220 + void DoGetVideoPixelAspectRatioArrayL(RArray<TVideoAspectRatio>& aArray, TMMFVideoPixelAspectRatioMessages aIpc) const;
1.221 + };
1.222 +
1.223 +
1.224 +/**
1.225 +@publishedPartner
1.226 +@released
1.227 +
1.228 +Mixin class to be derived from controller plug-ins that could support setting and getting the pixel aspect ratio for video recording.
1.229 +*/
1.230 +class MMMFVideoPixelAspectRatioCustomCommandImplementor
1.231 + {
1.232 +public:
1.233 +
1.234 + /**
1.235 + Sets the pixel aspect ratio.
1.236 +
1.237 + @param aAspectRatio
1.238 + The pixel aspect ratio to use.
1.239 + */
1.240 + virtual void MvparSetPixelAspectRatioL(const TVideoAspectRatio& aAspectRatio) = 0;
1.241 +
1.242 + /**
1.243 + Gets the current pixel aspect ratio.
1.244 +
1.245 + @param aAspectRatio
1.246 + The current pixel aspect ratio.
1.247 + */
1.248 + virtual void MvparGetPixelAspectRatioL(TVideoAspectRatio& aAspectRatio) = 0;
1.249 +
1.250 + /**
1.251 + Gets the list of supported pixel aspect ratios.
1.252 +
1.253 + @param aAspectRatios
1.254 + The list of supported pixel aspect ratios.
1.255 + */
1.256 + virtual void MvparGetSupportedPixelAspectRatiosL(RArray<TVideoAspectRatio>& aAspectRatios) = 0;
1.257 + };
1.258 +
1.259 +
1.260 +/**
1.261 +@publishedPartner
1.262 +@released
1.263 +
1.264 +Custom command parser class to be used by controller plug-ins wishing to support setting and getting the pixel aspect
1.265 +ratio for the video recording.
1.266 +
1.267 +The controller plug-in should create an object of this type and add it to the list of custom command parsers
1.268 +in the controller framework. The controller plug-in must be derived from MMMFVideoPixelAspectRatioCustomCommandImplementor
1.269 +to use this class.
1.270 +*/
1.271 +class CMMFVideoPixelAspectRatioCustomCommandParser : public CMMFCustomCommandParserBase
1.272 + {
1.273 +public:
1.274 +
1.275 + /**
1.276 + Creates a new custom command parser that supports setting and getting pixel aspect ratio for video recording.
1.277 +
1.278 + @param aImplementor
1.279 + A reference to the controller plug-in that owns this new object.
1.280 +
1.281 + @return A pointer to the object created.
1.282 +
1.283 + */
1.284 + IMPORT_C static CMMFVideoPixelAspectRatioCustomCommandParser* NewL(MMMFVideoPixelAspectRatioCustomCommandImplementor& aImplementor);
1.285 +
1.286 + /**
1.287 + Destructor.
1.288 +
1.289 + */
1.290 + IMPORT_C ~CMMFVideoPixelAspectRatioCustomCommandParser();
1.291 +
1.292 + /**
1.293 + Handles a request from the client. Called by the controller framework.
1.294 +
1.295 + @param aMessage
1.296 + The message to be handled.
1.297 +
1.298 + */
1.299 + void HandleRequest(TMMFMessage& aMessage);
1.300 +
1.301 +private:
1.302 + CMMFVideoPixelAspectRatioCustomCommandParser(MMMFVideoPixelAspectRatioCustomCommandImplementor& aImplementor);
1.303 + void DoHandleRequestL(TMMFMessage& aMessage);
1.304 + TBool DoSetPixelAspectRatioL(TMMFMessage& aMessage);
1.305 + TBool DoGetPixelAspectRatioL(TMMFMessage& aMessage);
1.306 + TBool DoGetSupportedPixelAspectRatiosL(TMMFMessage& aMessage);
1.307 + TBool DoCopyArrayDataL(TMMFMessage& aMessage);
1.308 + void DoCreateBufFromVideoAspectRatioArrayL(RArray<TVideoAspectRatio>& aArray);
1.309 +
1.310 +private:
1.311 + MMMFVideoPixelAspectRatioCustomCommandImplementor& iImplementor;
1.312 +
1.313 + CBufFlat* iDataCopyBuffer;
1.314 + };
1.315 +
1.316 +
1.317 +/**
1.318 +@publishedPartner
1.319 +@released
1.320 +
1.321 +Client class to allow the audio sampling rate and channels configuration for video recording.
1.322 +
1.323 +*/
1.324 +class RMMFVideoAudioSamplingRateAndChannelConfigCustomCommands : public RMMFCustomCommandsBase
1.325 + {
1.326 +public:
1.327 +
1.328 + /**
1.329 + Constructor.
1.330 +
1.331 + @param aController
1.332 + The client side controller object to be used by this custom command interface.
1.333 +
1.334 + */
1.335 + IMPORT_C RMMFVideoAudioSamplingRateAndChannelConfigCustomCommands(RMMFController& aController);
1.336 +
1.337 + /**
1.338 + Sets the number of audio channels to record (1 for mono, 2 for stereo).
1.339 +
1.340 + @param aChannels
1.341 + The number of audio channels to record.
1.342 +
1.343 + @return One of the system-wide error codes.
1.344 +
1.345 + */
1.346 + IMPORT_C TInt SetAudioChannels(const TUint aChannels);
1.347 +
1.348 + /**
1.349 + Gets the current number of audio channels to record (1 for mono, 2 for stereo).
1.350 +
1.351 + @param aChannels
1.352 + The current number of audio channels to record.
1.353 +
1.354 + @return One of the system-wide error codes.
1.355 +
1.356 + */
1.357 + IMPORT_C TInt GetAudioChannels(TUint& aChannels) const;
1.358 +
1.359 + /**
1.360 + Gets the list of supported number of audio channels for video recording.
1.361 +
1.362 + @param aChannels
1.363 + The supported numbers of audio channels.
1.364 +
1.365 + @leave This method may leave with one of the system-wide error codes.
1.366 + */
1.367 + IMPORT_C void GetSupportedAudioChannelsL(RArray<TUint>& aChannels) const;
1.368 +
1.369 + /**
1.370 + Sets the audio sample rate for video recording.
1.371 +
1.372 + @param aSampleRate
1.373 + The sample rate for audio recording.
1.374 +
1.375 + @return One of the system-wide error codes.
1.376 +
1.377 + */
1.378 + IMPORT_C TInt SetAudioSampleRate(const TUint aSampleRate);
1.379 +
1.380 + /**
1.381 + Gets the current audio sample rate for recording.
1.382 +
1.383 + @param aSampleRate
1.384 + The current audio sample rate for recording.
1.385 +
1.386 + @return One of the system-wide error codes.
1.387 +
1.388 + */
1.389 + IMPORT_C TInt GetAudioSampleRate(TUint& aSampleRate) const;
1.390 +
1.391 + /**
1.392 + Gets the list of supported audio sample rates for video recording.
1.393 +
1.394 + @param aSampleRates
1.395 + The supported audio sample rates.
1.396 +
1.397 + @leave This method may leave with one of the system-wide error codes.
1.398 + */
1.399 + IMPORT_C void GetSupportedAudioSampleRatesL(RArray<TUint>& aSampleRates) const;
1.400 +
1.401 +private:
1.402 + void DoGetUintArrayL(RArray<TUint>& aArray, TMMFVideoAudioSamplingRateAndChannelConfigMessages aIpc) const;
1.403 + };
1.404 +
1.405 +
1.406 +/**
1.407 +@publishedPartner
1.408 +@released
1.409 +
1.410 +Mixin class to be derived from controller plug-ins that could support the audio sampling rate and channels configuration.
1.411 +*/
1.412 +class MMMFVideoAudioSamplingRateAndChannelConfigCustomCommandImplementor
1.413 + {
1.414 +public:
1.415 +
1.416 + /**
1.417 + Sets the number of audio channels.
1.418 +
1.419 + @param aChannels
1.420 + The number of audio channels to use.
1.421 + */
1.422 + virtual void MvasrccSetAudioChannelsL(const TUint aChannels) = 0;
1.423 +
1.424 + /**
1.425 + Gets the current number of audio channels.
1.426 +
1.427 + @param aChannels
1.428 + The current number of audio channels.
1.429 + */
1.430 + virtual void MvasrccGetAudioChannelsL(TUint& aChannels) = 0;
1.431 +
1.432 + /**
1.433 + Gets the list of supported number of audio channels.
1.434 +
1.435 + @param aChannels
1.436 + The list of supported number of audio channels.
1.437 + */
1.438 + virtual void MvasrccGetSupportedAudioChannelsL(RArray<TUint>& aChannels) = 0;
1.439 +
1.440 + /**
1.441 + Sets the audio sample rate.
1.442 +
1.443 + @param aSampleRate
1.444 + The audio sample rate to use.
1.445 + */
1.446 + virtual void MvasrccSetAudioSampleRateL(const TUint aSampleRate) = 0;
1.447 +
1.448 + /**
1.449 + Gets the current audio sample rate.
1.450 +
1.451 + @param aSampleRate
1.452 + The current audio sample rate.
1.453 + */
1.454 + virtual void MvasrccGetAudioSampleRateL(TUint& aSampleRate) = 0;
1.455 +
1.456 + /**
1.457 + Gets the list of supported audio sample rates.
1.458 +
1.459 + @param aSampleRates
1.460 + The list of supported audio sample rates.
1.461 + */
1.462 + virtual void MvasrccGetSupportedAudioSampleRatesL(RArray<TUint>& aSampleRates) = 0;
1.463 + };
1.464 +
1.465 +/**
1.466 +@publishedPartner
1.467 +@released
1.468 +
1.469 +Custom command parser class to be used by controller plug-ins wishing to support the audio sampling rate and channels
1.470 +configuration for the video recording.
1.471 +
1.472 +The controller plug-in should create an object of this type and add it to the list of custom command parsers
1.473 +in the controller framework. The controller plug-in must be derived from MMMFVideoAudioSamplingRateAndChannelConfigCustomCommandImplementor
1.474 +to use this class.
1.475 +*/
1.476 +class CMMFVideoAudioSamplingRateAndChannelConfigCustomCommandParser : public CMMFCustomCommandParserBase
1.477 + {
1.478 +public:
1.479 +
1.480 + /**
1.481 + Creates a new custom command parser that supports the audio sampling rate and channels configuration for video recording.
1.482 +
1.483 + @param aImplementor
1.484 + A reference to the controller plug-in that owns this new object.
1.485 +
1.486 + @return A pointer to the object created.
1.487 +
1.488 + */
1.489 + IMPORT_C static CMMFVideoAudioSamplingRateAndChannelConfigCustomCommandParser* NewL(MMMFVideoAudioSamplingRateAndChannelConfigCustomCommandImplementor& aImplementor);
1.490 +
1.491 + /**
1.492 + Destructor.
1.493 +
1.494 + */
1.495 + IMPORT_C ~CMMFVideoAudioSamplingRateAndChannelConfigCustomCommandParser();
1.496 +
1.497 + /**
1.498 + Handles a request from the client. Called by the controller framework.
1.499 +
1.500 + @param aMessage
1.501 + The message to be handled.
1.502 +
1.503 + */
1.504 + void HandleRequest(TMMFMessage& aMessage);
1.505 +
1.506 +private:
1.507 + CMMFVideoAudioSamplingRateAndChannelConfigCustomCommandParser(MMMFVideoAudioSamplingRateAndChannelConfigCustomCommandImplementor& aImplementor);
1.508 + void DoHandleRequestL(TMMFMessage& aMessage);
1.509 + TBool DoSetAudioChannelsL(TMMFMessage& aMessage);
1.510 + TBool DoGetAudioChannelsL(TMMFMessage& aMessage);
1.511 + TBool DoGetSupportedAudioChannelsL(TMMFMessage& aMessage);
1.512 +
1.513 + TBool DoSetAudioSampleRateL(TMMFMessage& aMessage);
1.514 + TBool DoGetAudioSampleRateL(TMMFMessage& aMessage);
1.515 + TBool DoGetSupportedAudioSampleRatesL(TMMFMessage& aMessage);
1.516 +
1.517 + TBool DoCopyArrayDataL(TMMFMessage& aMessage);
1.518 +
1.519 + void DoCreateBufFromUintArrayL(RArray<TUint>& aArray);
1.520 +
1.521 +private:
1.522 + MMMFVideoAudioSamplingRateAndChannelConfigCustomCommandImplementor& iImplementor;
1.523 +
1.524 + CBufFlat* iDataCopyBuffer;
1.525 + };
1.526 +
1.527 +/**
1.528 +@publishedPartner
1.529 +@released
1.530 +*/
1.531 +const TUid KUidInterfaceMMFVideoPlayExt = {0x10283437};
1.532 +
1.533 +class TVideoPlayRateCapabilities;
1.534 +
1.535 +/**
1.536 +Mixin class to be derived from controller plug-ins that could support
1.537 +play velocity, enabling/disabling audio/video, and auto scaling.
1.538 +
1.539 +@publishedPartner
1.540 +@released
1.541 +*/
1.542 +class MMMFVideoPlayControllerExtCustomCommandImplementor
1.543 + {
1.544 +public:
1.545 +
1.546 + /**
1.547 + Sets play velocity.
1.548 + Behaviour is same as CVideoPlayerUtility::SetPlayVelocityL
1.549 +
1.550 + @see CVideoPlayerUtility::SetPlayVelocityL
1.551 + */
1.552 + virtual void MvpecSetPlayVelocityL(TInt aVelocity)=0;
1.553 +
1.554 + /**
1.555 + Gets play velocity.
1.556 + Behaviour is same as CVideoPlayerUtility::PlayVelocityL
1.557 +
1.558 + @see CVideoPlayerUtility::PlayVelocityL
1.559 + */
1.560 + virtual TInt MvpecPlayVelocityL()=0;
1.561 +
1.562 + /**
1.563 + Steps through frames in pause mode.
1.564 + Behaviour is same as CVideoPlayerUtility::StepFrameL
1.565 +
1.566 + @see CVideoPlayerUtility::StepFrameL
1.567 + */
1.568 + virtual void MvpecStepFrameL(TInt aStep)=0;
1.569 +
1.570 + /**
1.571 + Gets play rate capabilities.
1.572 + Behaviour is same as CVideoPlayerUtility::GetPlayRateCapabilitiesL
1.573 +
1.574 + @see CVideoPlayerUtility::GetPlayRateCapabilitiesL
1.575 + */
1.576 + virtual void MvpecGetPlayRateCapabilitiesL(TVideoPlayRateCapabilities& aCapabilities)=0;
1.577 +
1.578 + /**
1.579 + Enables/Disables video playback.
1.580 + Behaviour is same as CVideoPlayerUtility::SetVideoEnabledL
1.581 +
1.582 + @see CVideoPlayerUtility::SetVideoEnabledL
1.583 + */
1.584 + virtual void MvpecSetVideoEnabledL(TBool aVideoEnabled)=0;
1.585 +
1.586 + /**
1.587 + Queries whether video playback is currently enabled or not.
1.588 + Behaviour is same as CVideoPlayerUtility::VideoEnabledL
1.589 +
1.590 + @see CVideoPlayerUtility::VideoEnabledL
1.591 + */
1.592 + virtual TBool MvpecVideoEnabledL()=0;
1.593 +
1.594 + /**
1.595 + Enables or disables audio playback.
1.596 + Behaviour is same as CVideoPlayerUtility::SetAudioEnabled
1.597 +
1.598 + @see CVideoPlayerUtility::SetAudioEnabled
1.599 + */
1.600 + virtual void MvpecSetAudioEnabledL(TBool aAudioEnabled)=0;
1.601 +
1.602 + /**
1.603 + Sets Auto scale mode.
1.604 + Behaviour is same as CVideoPlayerUtility::SetAutoScaleL
1.605 +
1.606 + @see CVideoPlayerUtility::SetAutoScaleL
1.607 + */
1.608 + virtual void MvpecSetAutoScaleL(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos)=0;
1.609 + };
1.610 +
1.611 +
1.612 +
1.613 +/**
1.614 +Custom command parser class to be used by controller plug-ins wishing to support play velocity,
1.615 +enabling/disabling audio/video, and auto scaling.
1.616 +
1.617 +The controller plug-in should create an object of this type and add it to the list of custom command parsers
1.618 +in the controller framework. The controller plug-in must be derived from MMMFVideoPlayControllerExtCustomCommandImplementor
1.619 +to use this class.
1.620 +
1.621 +@publishedPartner
1.622 +@released
1.623 +*/
1.624 +class CMMFVideoPlayControllerExtCustomCommandParser : public CMMFCustomCommandParserBase
1.625 + {
1.626 +public:
1.627 +
1.628 + /**
1.629 + Creates a new custom command parser that supports the video rate control and auto scaling.
1.630 +
1.631 + @param aImplementor
1.632 + A reference to the controller plug-in that owns this new object.
1.633 +
1.634 + @return A pointer to the object created.
1.635 +
1.636 + */
1.637 + IMPORT_C static CMMFVideoPlayControllerExtCustomCommandParser* NewL(MMMFVideoPlayControllerExtCustomCommandImplementor& aImplementor);
1.638 +
1.639 + /**
1.640 + Destructor.
1.641 +
1.642 + */
1.643 + IMPORT_C ~CMMFVideoPlayControllerExtCustomCommandParser();
1.644 +
1.645 + /**
1.646 + Handles a request from the client. Called by the controller framework.
1.647 +
1.648 + @param aMessage
1.649 + The message to be handled.
1.650 +
1.651 + */
1.652 + void HandleRequest(TMMFMessage& aMessage);
1.653 +
1.654 +private:
1.655 + CMMFVideoPlayControllerExtCustomCommandParser(MMMFVideoPlayControllerExtCustomCommandImplementor& aImplementor);
1.656 + void DoHandleRequestL(TMMFMessage& aMessage);
1.657 + TBool DoSetPlayVelocityL(TMMFMessage& aMessage);
1.658 + TBool DoPlayVelocityL(TMMFMessage& aMessage);
1.659 + TBool DoStepFrameL(TMMFMessage& aMessage);
1.660 + TBool DoGetPlayRateCapabilitiesL(TMMFMessage& aMessage);
1.661 + TBool DoSetVideoEnabledL(TMMFMessage& aMessage);
1.662 + TBool DoVideoEnabledL(TMMFMessage& aMessage);
1.663 + TBool DoSetAudioEnabledL(TMMFMessage& aMessage);
1.664 + TBool DoSetAutoScaleL(TMMFMessage& aMessage);
1.665 +private:
1.666 + MMMFVideoPlayControllerExtCustomCommandImplementor& iImplementor;
1.667 + };
1.668 +
1.669 +/**
1.670 +Resource class to be used by player utility for sending custom commands.
1.671 +
1.672 +@publishedPartner
1.673 +@released
1.674 +*/
1.675 +class RMMFVideoPlayControllerExtCustomCommands: public RMMFCustomCommandsBase
1.676 + {
1.677 +public:
1.678 + /**
1.679 + Constructor.
1.680 +
1.681 + @param aController
1.682 + The client side controller object to be used by this custom command interface.
1.683 + */
1.684 + IMPORT_C RMMFVideoPlayControllerExtCustomCommands(RMMFController& aController);
1.685 +
1.686 + /**
1.687 + Sets play velocity.
1.688 + Behaviour is same as CVideoPlayerUtility::SetPlayVelocityL
1.689 +
1.690 + @param aVelocity
1.691 + Velocity of the playback.
1.692 +
1.693 + @return One of the system-wide error codes.
1.694 +
1.695 + @see CVideoPlayerUtility::SetPlayVelocityL
1.696 + */
1.697 + IMPORT_C TInt SetPlayVelocity(TInt aVelocity);
1.698 +
1.699 + /**
1.700 + Gets play velocity.
1.701 + Behaviour is same as CVideoPlayerUtility::PlayVelocityL
1.702 +
1.703 + @param aVelocity
1.704 + Velocity of the playback.
1.705 +
1.706 + @return One of the system-wide error codes.
1.707 +
1.708 + @see CVideoPlayerUtility::PlayVelocityL
1.709 + */
1.710 + IMPORT_C TInt PlayVelocity(TInt &aVelocity)const;
1.711 +
1.712 + /**
1.713 + Steps through frames in pause mode.
1.714 + Behaviour is same as CVideoPlayerUtility::StepFrameL
1.715 +
1.716 + @param aStep
1.717 + Count indicating number of frames to step playback position.
1.718 +
1.719 + @return One of the system-wide error codes.
1.720 +
1.721 + @see CVideoPlayerUtility::StepFrameL
1.722 + */
1.723 + IMPORT_C TInt StepFrame(TInt aStep);
1.724 +
1.725 + /**
1.726 + Gets play rate capabilities.
1.727 + Behaviour is same as CVideoPlayerUtility::GetPlayRateCapabilitiesL
1.728 +
1.729 + @param aCapabilities Playback rate capabilities
1.730 +
1.731 + @return One of the system-wide error codes.
1.732 +
1.733 + @see CVideoPlayerUtility::GetPlayRateCapabilitiesL
1.734 + */
1.735 + IMPORT_C TInt GetPlayRateCapabilities(TVideoPlayRateCapabilities& aCapabilities)const;
1.736 +
1.737 + /**
1.738 + Enables/Disables video playback.
1.739 + Behaviour is same as CVideoPlayerUtility::SetVideoEnabledL
1.740 +
1.741 + @param aVideoEnabled ETrue to enable video playback, EFalse to disable
1.742 +
1.743 + @return One of the system-wide error codes.
1.744 +
1.745 + @see CVideoPlayerUtility::SetVideoEnabledL
1.746 + */
1.747 + IMPORT_C TInt SetVideoEnabled(TBool aVideoEnabled);
1.748 +
1.749 + /**
1.750 + Queries whether video playback is currently enabled or not.
1.751 + Behaviour is same as CVideoPlayerUtility::VideoEnabledL
1.752 +
1.753 + @param aVideoEnabled
1.754 + Out parameter returns ETrue if video playback is enabled, EFalse if not.
1.755 +
1.756 + @return One of the system-wide error codes.
1.757 +
1.758 + @see CVideoPlayerUtility::VideoEnabledL
1.759 + */
1.760 + IMPORT_C TInt VideoEnabled(TBool &aVideoEnabled)const;
1.761 +
1.762 + /**
1.763 + Enables or disables audio playback.
1.764 + Behaviour is same as CVideoPlayerUtility::SetAudioEnabledL
1.765 +
1.766 + @param aVideoEnabled ETrue to enable audio playback, EFalse to disable
1.767 +
1.768 + @return One of the system-wide error codes.
1.769 +
1.770 + @see CVideoPlayerUtility::SetAudioEnabledL
1.771 + */
1.772 + IMPORT_C TInt SetAudioEnabled(TBool aAudioEnabled);
1.773 +
1.774 + /**
1.775 + Sets Auto scale mode.
1.776 + Behaviour is same as CVideoPlayerUtility::SetAutoScaleL
1.777 +
1.778 + @param aScaleType Automatic scaling type
1.779 + @param aHorizPos Video picture horizontal position, relative to the
1.780 + video window.
1.781 + @param aVertPos Video picture vertical position, relative to the
1.782 + video window.
1.783 + @return One of the system-wide error codes.
1.784 +
1.785 + @see CVideoPlayerUtility::SetAutoScaleL
1.786 + */
1.787 + IMPORT_C TInt SetAutoScale(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos);
1.788 + };
1.789 +
1.790 +/**
1.791 +@publishedPartner
1.792 +@released
1.793 +*/
1.794 +const TUid KUidInterfaceMMFVideoRecorderExt = {0x10283438};
1.795 +
1.796 +/**
1.797 +Mixin class to be derived from controller plug-ins that could support quality and enabling video.
1.798 +
1.799 +@publishedPartner
1.800 +@released
1.801 +*/
1.802 +class MMMFVideoRecordControllerExtCustomCommandImplementor
1.803 + {
1.804 +public:
1.805 +
1.806 + /**
1.807 + Enabled or disables video in recorder.
1.808 + Behaviour is same as CVideoRecorderUtility::SetVideoEnabledL
1.809 +
1.810 + @see CVideoRecorderUtility::SetVideoEnabledL
1.811 + */
1.812 + virtual void MvrecSetVideoEnabledL(TBool aEnabled)=0;
1.813 + /**
1.814 + Gets the flag that indicates video enabled or not.
1.815 + Behaviour is same as CVideoRecorderUtility::VideoEnabledL
1.816 +
1.817 + @see CVideoRecorderUtility::VideoEnabledL
1.818 + */
1.819 + virtual TBool MvrecVideoEnabledL() const=0;
1.820 + /**
1.821 + Sets the quality of video being recorded.
1.822 + Behaviour is same as CVideoRecorderUtility::SetVideoQualityL
1.823 +
1.824 + @see CVideoRecorderUtility::SetVideoQualityL
1.825 + */
1.826 + virtual void MvrecSetVideoQualityL(TInt aQuality)=0;
1.827 + /**
1.828 + Gets video quality level set using SetVideoQualityL.
1.829 + Behaviour is same as CVideoRecorderUtility::VideoQualityL
1.830 +
1.831 + @see CVideoRecorderUtility::VideoQualityL
1.832 + */
1.833 + virtual TInt MvrecVideoQualityL() const=0;
1.834 + /**
1.835 + Sets the video framerate to fixed.
1.836 + Behaviour is same as CVideoRecorderUtility::SetVideoFrameRateFixedL
1.837 +
1.838 + @see CVideoRecorderUtility::SetVideoFrameRateFixedL
1.839 + */
1.840 + virtual void MvrecSetVideoFrameRateFixedL(TBool aFixedFrameRate)=0;
1.841 + /**
1.842 + Gets FrameRateFixed flag set using SetVideoFrameRateFixedL.
1.843 + Behaviour is same as CVideoRecorderUtility::VideoFrameRateFixedL
1.844 +
1.845 + @see CVideoRecorderUtility::VideoFrameRateFixedL
1.846 + */
1.847 + virtual TBool MvrecVideoFrameRateFixedL() const=0;
1.848 + };
1.849 +
1.850 +
1.851 +
1.852 +/**
1.853 +Custom command parser class to be used by controller plug-ins wishing to implement VideoRecorderExt custom commands.
1.854 +
1.855 +The controller plug-in should create an object of this type and add it to the list of custom command parsers
1.856 +in the controller framework. The controller plug-in must be derived from MMMFVideoRecordControllerExtCustomCommandImplementor
1.857 +to use this class.
1.858 +
1.859 +@publishedPartner
1.860 +@released
1.861 +*/
1.862 +class CMMFVideoRecordControllerExtCustomCommandParser : public CMMFCustomCommandParserBase
1.863 + {
1.864 +public:
1.865 +
1.866 + /**
1.867 + Creates a new custom command parser that supports the video rate control and auto scaling.
1.868 +
1.869 + @param aImplementor A reference to the controller plug-in that owns this new object.
1.870 + @return A pointer to the object created.
1.871 + */
1.872 + IMPORT_C static CMMFVideoRecordControllerExtCustomCommandParser* NewL(MMMFVideoRecordControllerExtCustomCommandImplementor& aImplementor);
1.873 +
1.874 + /**
1.875 + Destructor.
1.876 + */
1.877 + IMPORT_C ~CMMFVideoRecordControllerExtCustomCommandParser();
1.878 +
1.879 + /**
1.880 + Handles a request from the client. Called by the controller framework.
1.881 +
1.882 + @param aMessage The message to be handled.
1.883 + */
1.884 + void HandleRequest(TMMFMessage& aMessage);
1.885 +
1.886 +private:
1.887 + CMMFVideoRecordControllerExtCustomCommandParser(MMMFVideoRecordControllerExtCustomCommandImplementor& aImplementor);
1.888 + void DoHandleRequestL(TMMFMessage& aMessage);
1.889 + TBool DoSetVideoEnabledL(TMMFMessage& aMessage);
1.890 + TBool DoVideoEnabledL(TMMFMessage& aMessage);
1.891 + TBool DoSetVideoQualityL(TMMFMessage& aMessage);
1.892 + TBool DoVideoQualityL(TMMFMessage& aMessage);
1.893 + TBool DoSetVideoFrameRateFixedL(TMMFMessage& aMessage);
1.894 + TBool DoVideoFrameRateFixedL(TMMFMessage& aMessage);
1.895 +private:
1.896 + MMMFVideoRecordControllerExtCustomCommandImplementor& iImplementor;
1.897 + };
1.898 +
1.899 +/**
1.900 +Resource class to be used by Recorder utility for sending custom commands.
1.901 +
1.902 +@publishedPartner
1.903 +@released
1.904 +*/
1.905 +class RMMFVideoRecordControllerExtCustomCommands: public RMMFCustomCommandsBase
1.906 + {
1.907 +public:
1.908 + /**
1.909 + Constructor.
1.910 +
1.911 + @param aController
1.912 + The client side controller object to be used by this custom command interface.
1.913 + @return One of the system-wide error codes.
1.914 + */
1.915 + IMPORT_C RMMFVideoRecordControllerExtCustomCommands(RMMFController& aController);
1.916 +
1.917 + /**
1.918 + Enabled or disables video in recorder.
1.919 + Behaviour is same as CVideoRecorderUtility::SetVideoEnabledL
1.920 +
1.921 + @param aEnabled ETrue to enable video recording, EFalse to enable it
1.922 +
1.923 + @return One of the system-wide error codes.
1.924 + @see CVideoRecorderUtility::SetVideoEnabledL
1.925 + */
1.926 + IMPORT_C TInt SetVideoEnabled(TBool aEnabled);
1.927 +
1.928 + /**
1.929 + Gets the flag that indicates video enabled or not.
1.930 + Behaviour is same as CVideoRecorderUtility::VideoEnabledL
1.931 +
1.932 + @param aEnabled
1.933 + Out parameter returns ETrue if video recording is enabled , EFalse otherwise.
1.934 +
1.935 + @return One of the system-wide error codes.
1.936 + @see CVideoRecorderUtility::VideoEnabledL
1.937 + */
1.938 + IMPORT_C TInt VideoEnabled(TBool &aEnabled) const;
1.939 +
1.940 + /**
1.941 + Sets the quality of video being recorded.
1.942 + Behaviour is same as CVideoRecorderUtility::SetVideoQualityL
1.943 +
1.944 + @param aQuality Video quality, in the range of 0 to 100, inclusive.
1.945 +
1.946 + @return One of the system-wide error codes.
1.947 + @see CVideoRecorderUtility::SetVideoQualityL
1.948 + */
1.949 + IMPORT_C TInt SetVideoQuality(TInt aQuality);
1.950 +
1.951 + /**
1.952 + Gets video quality level set using SetVideoQualityL.
1.953 + Behaviour is same as CVideoRecorderUtility::VideoQualityL
1.954 +
1.955 + @param aQuality Out parameter returning Video quality in the range 0-100.
1.956 +
1.957 + @return One of the system-wide error codes.
1.958 + @see CVideoRecorderUtility::VideoQualityL
1.959 + */
1.960 + IMPORT_C TInt VideoQuality(TInt &aQuality) const;
1.961 +
1.962 + /**
1.963 + Sets the video framerate to fixed.
1.964 + Behaviour is same as CVideoRecorderUtility::SetVideoFrameRateFixedL
1.965 +
1.966 + @param aFixedFrameRate ETrue to request a fixed framerate, EFalse to
1.967 + request a variable framerate.
1.968 +
1.969 + @return One of the system-wide error codes.
1.970 + @see CVideoRecorderUtility::SetVideoFrameRateFixedL
1.971 + */
1.972 + IMPORT_C TInt SetVideoFrameRateFixed(TBool aFixedFrameRate);
1.973 +
1.974 + /**
1.975 + Gets FrameRateFixed flag set using SetVideoFrameRateFixedL.
1.976 + Behaviour is same as CVideoRecorderUtility::VideoFrameRateFixedL
1.977 +
1.978 + @param aFixedFrameRate Out parameter returns ETrue if fixed framerate
1.979 + is enabled, EFalse otherwise.
1.980 +
1.981 + @return One of the system-wide error codes.
1.982 + @see CVideoRecorderUtility::VideoFrameRateFixedL
1.983 + */
1.984 + IMPORT_C TInt VideoFrameRateFixed(TBool &aFixedFrameRate) const;
1.985 + };
1.986 +
1.987 +/**
1.988 +@publishedPartner
1.989 +@released
1.990 +
1.991 +Interface UID and messages for the Audio Play Controller Set Repeats API.
1.992 +*/
1.993 +const TUid KUidInterfaceMMFAudioPlaySetRepeatsController = {0x102834D5};
1.994 +
1.995 +
1.996 +/**
1.997 +@publishedPartner
1.998 +@released
1.999 +
1.1000 +Client class to access loop play functionality of audio play controller.
1.1001 +
1.1002 +The class uses the custom command function of the controller plugin, and removes the necessity
1.1003 +for the client to formulate the custom commands.
1.1004 +*/
1.1005 +class RMMFAudioPlayControllerSetRepeatsCustomCommands : public RMMFCustomCommandsBase
1.1006 + {
1.1007 +public:
1.1008 +
1.1009 + /**
1.1010 + Constructor.
1.1011 +
1.1012 + @param aController
1.1013 + The client side controller object to be used by this custom command interface.
1.1014 + */
1.1015 + IMPORT_C RMMFAudioPlayControllerSetRepeatsCustomCommands(RMMFController& aController);
1.1016 +
1.1017 + /**
1.1018 + Sets the number of times the audio sample to be repeated and the trailing silence period
1.1019 +
1.1020 + @param aRepeatNumberOfTimes
1.1021 + The number of times the audio sample needs to be repeated
1.1022 +
1.1023 + @param aTrailingSilence
1.1024 + The time interval of the trailing silence in microseconds.
1.1025 +
1.1026 + @return KErrNotSupported if the controller plugin does not support the loop play functionality.
1.1027 + */
1.1028 + IMPORT_C TInt SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
1.1029 + };
1.1030 +
1.1031 +/**
1.1032 +@publishedPartner
1.1033 +@released
1.1034 +
1.1035 +Mixin class to be derived from by controller plugins that could support the set repeats custom command.
1.1036 +*/
1.1037 +class MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor
1.1038 + {
1.1039 +public:
1.1040 +
1.1041 + /**
1.1042 + Sets the number of times the audio sample is to be repeated during the playback operation.
1.1043 + A period of silence can follow each playing of the sample. The audio sample can be repeated indefinitely.
1.1044 +
1.1045 + @param aRepeatNumberOfTimes
1.1046 + The number of times the audio sample, together with the trailing silence, is to be repeated.
1.1047 + If this is set to KMdaRepeatForever, then the audio sample, together with the trailing silence,
1.1048 + is repeated indefinitely or until Stop() is called.
1.1049 + If this is set to zero, then the audio sample is not repeated.
1.1050 +
1.1051 + @param aTrailingSilence
1.1052 + The time interval of the trailing silence in microseconds.
1.1053 +
1.1054 + @return KErrNone if the controller plugin supports the loop play functionality
1.1055 + KErrNotSupported if the controller plugin does not support the loop play functionality
1.1056 + KErrNotReady if the controller plugin is not yet added the audio sink
1.1057 + */
1.1058 + virtual TInt MapcSetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence) = 0;
1.1059 + };
1.1060 +
1.1061 +/**
1.1062 +@publishedPartner
1.1063 +@released
1.1064 +
1.1065 +Custom command parser class to be used by controller plugins wishing to support set repeats functionality
1.1066 +
1.1067 +The controller plugin should create an object of this type and add it to the list of custom command parsers
1.1068 +in the controller framework. The controller plugin must be derived from
1.1069 +MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor to use this class.
1.1070 +*/
1.1071 +
1.1072 +class CMMFAudioPlayControllerSetRepeatsCustomCommandParser : public CMMFCustomCommandParserBase
1.1073 + {
1.1074 +public:
1.1075 +
1.1076 + /**
1.1077 + Creates a new custom command parser capable of handling set repeats controller commands.
1.1078 +
1.1079 + @param aImplementor
1.1080 + A reference to the controller plugin that owns this new object.
1.1081 +
1.1082 + @return A pointer to the object created.
1.1083 +
1.1084 + */
1.1085 + IMPORT_C static CMMFAudioPlayControllerSetRepeatsCustomCommandParser* NewL(MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor& aImplementor);
1.1086 +
1.1087 + /**
1.1088 + Destructor.
1.1089 +
1.1090 + */
1.1091 + IMPORT_C ~CMMFAudioPlayControllerSetRepeatsCustomCommandParser();
1.1092 +
1.1093 + /**
1.1094 + Handles a request from the client. Called by the controller framework.
1.1095 +
1.1096 + @param aMessage
1.1097 + The message to be handled.
1.1098 +
1.1099 + */
1.1100 + void HandleRequest(TMMFMessage& aMessage);
1.1101 +private:
1.1102 +
1.1103 + /**
1.1104 + Constructor.
1.1105 +
1.1106 + @param aImplementor
1.1107 + A reference to the controller plugin that owns this new object.
1.1108 +
1.1109 + */
1.1110 + CMMFAudioPlayControllerSetRepeatsCustomCommandParser(MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor& aImplementor);
1.1111 + // Internal request handling methods.
1.1112 + void DoHandleRequestL(TMMFMessage& aMessage);
1.1113 + TBool DoSetRepeatsL(TMMFMessage& aMessage);
1.1114 +private:
1.1115 + /**
1.1116 + The object that implements the set repeats custom command i.e controller plugin
1.1117 + */
1.1118 + MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor& iImplementor;
1.1119 + };
1.1120 +
1.1121 +#endif