--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/inc/mmf/ControllerFramework/mmfvideosubtitlecustomcommands.h Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,231 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef MMFVIDEOSUBTITLECUSTOMCOMMANDS_H
+#define MMFVIDEOSUBTITLECUSTOMCOMMANDS_H
+
+#include <mmf/common/mmfcontroller.h>
+#include <mmf/common/mmfvideo.h>
+#include <gdi.h>
+#include <w32std.h>
+
+/**
+ * Unique identifier for subtitle custom command interface
+ * @publishedPartner
+ * @prototype
+ */
+const TUid KUidInterfaceMMFVideoPlaySubtitleSupport = {0x10285C9D};
+
+/**
+ * Identifier for subtitle message Crp Ready, used by AviController to indicate
+ * the CRP is ready to be drawn.
+ * @publishedPartner
+ * @prototype
+ */
+const TUid KMMFEventCategoryVideoSubtitleCrpReady = {0x10285C9E};
+
+/**
+ * Class encapsulates all window information required for DevSubtitle to initialize the CRP.
+ * @publishedPartner
+ * @prototype
+ * This class is used to send subtitle window client configuration to controller
+ */
+class TMMFSubtitleWindowConfig
+ {
+public:
+ /** Window unique identifier */
+ TInt iWindowId;
+
+ /** Video window clip rectangle */
+ TRect iWindowClipRect;
+
+ /** Video window display mode */
+ TDisplayMode iDisplayMode;
+
+ /** Video rotation angle */
+ TVideoRotation iRotation;
+ };
+
+/**
+ * @publishedPartner
+ * @prototype
+ *
+ * Mixin class for subtitle custom commands implemented by the controller. The custom
+ * command parser calls methods in this class to deliver the requests to the
+ * controller.
+ */
+class MMMFVideoPlaySubtitleSupportCustomCommandImplementor
+ {
+public:
+ /**
+ * Gets the CRP parameters associated with a display
+ *
+ * @param aWindowId Unique identifier of the window.
+ * @param aId Return the CRP id associated with the given display id
+ * @param aCrpRect Return the subtitle region for drawing the CRP
+ */
+ virtual void MvpsusGetCrpParametersL(TInt aWindowId, TWsGraphicId& aId, TRect& aCrpRect) = 0;
+
+ /**
+ * Adds subtitle configuration data for a window.
+ *
+ * @param aConfig Subtitle configuration data for a window.
+ */
+ virtual void MvpsusAddSubtitleConfigL(const TMMFSubtitleWindowConfig& aConfig) = 0;
+
+ /**
+ * Removes the subtitle configuration data associated with the given window.
+ *
+ * @param aWindowId Unique identifier of the window associated with the
+ * configuration data being removed.
+ */
+ virtual void MvpsusRemoveSubtitleConfigL(TInt aWindowId) = 0;
+
+ /**
+ * Reconfigures the subtitle configuration.
+ *
+ * @param aConfig Subtitle configuration data for a window.
+ */
+ virtual void MvpsusUpdateSubtitleConfigL(const TMMFSubtitleWindowConfig& aConfig) = 0;
+
+ /**
+ * Checks if subtitles are available in the current video stream.
+ *
+ * @param aAvailable When this method returns, this is set the ETrue if the
+ * current video stream subtitles.
+ * @leave KErrNotSupported if the controller does not support subtitles. Otherwise
+ * another system-wide error code.
+ */
+ virtual void MvpsusGetSubtitlesAvailableL(TBool& aAvailable) = 0;
+
+ /**
+ * Disables subtitles during video playback.
+ *
+ * @leave System wide error code
+ */
+ virtual void MvpsusDisableSubtitlesL() = 0;
+
+ /**
+ * Enables subtitles during video playback.
+ *
+ * @leave KErrNotSupported if subtitles are not supported
+ * @leave KErrNotFound if subtitle data is not found
+ * @leave Otherwise leaves with any of the system wide error codes.
+ */
+ virtual void MvpsusEnableSubtitlesL() = 0;
+
+ /**
+ * Gets the current subtitle language
+ *
+ * @param aLanguage When this method returns, this is set the the current subtitle language.
+ * @leave KErrNotSupported The enabled subtitle does not contain language
+ * information.
+ * @leave Otherwise leaves with any of the system wide error codes.
+ */
+ virtual void MvpsusGetSubtitleLanguageL(TLanguage& aLanguage) = 0;
+
+ /**
+ * Gets array of all supported languages that are available in the current
+ * video player.
+ *
+ * @param aAvailable When this function returns, this array will hold the
+ * supported languages.
+ * @leave KErrNotSupported The enabled subtitle does not contain language
+ * information
+ * @leave Otherwise leaves with any of the system wide error codes.
+ */
+ virtual void MvpsusGetSupportedSubtitleLanguagesL(RArray<TLanguage>& aAvailable) = 0;
+
+ /**
+ * Sets the current subtitle language
+ *
+ * @param aLanguage Language to be used for subtitle stream.
+ * @leave KErrNotSupported The enabled subtitle does not support the requested
+ * language.
+ * @leave Otherwise leaves with any of the system wide error codes.
+ */
+ virtual void MvpsusSetSubtitleLanguageL(TLanguage aLanguage) = 0;
+ };
+
+/**
+ * @publishedPartner
+ * @prototype
+ *
+ * Custom command parser class to be used by controller plugins wishing to support
+ * custom subtitle commands in a video play controller.
+ *
+ * The controller plugin must be derived from
+ * MMMFVideoPlaySubtitleSupportCustomCommandImplementor to use this class. The
+ * controller plugin should create an object of this type and add it to the list of
+ * custom command parsers in the controller framework.
+ *
+ * @see MMMFVideoPlaySubtitleSupportCustomCommandImplementor
+ * @see RMMFVideoPlaySubtitleSupportCustomCommands
+ */
+class CMMFVideoPlaySubtitleSupportCustomCommandParser : public CMMFCustomCommandParserBase
+ {
+public:
+ IMPORT_C static CMMFVideoPlaySubtitleSupportCustomCommandParser* NewL(MMMFVideoPlaySubtitleSupportCustomCommandImplementor& aImplementor);
+ IMPORT_C ~CMMFVideoPlaySubtitleSupportCustomCommandParser();
+ void HandleRequest(TMMFMessage& aMessage);
+
+private:
+ CMMFVideoPlaySubtitleSupportCustomCommandParser(MMMFVideoPlaySubtitleSupportCustomCommandImplementor& aImplementor);
+
+ void DoHandleRequestL(TMMFMessage& aMessage);
+
+ void DoAddSubtitleConfigL(TMMFMessage& aMessage);
+ void DoRemoveSubtitleConfigL(TMMFMessage& aMessage);
+ void DoUpdateSubtitleConfigL(TMMFMessage& aMessage);
+ void DoGetSubtitlesAvailableL(TMMFMessage& aMessage);
+ void DoDisableSubtitlesL(TMMFMessage& aMessage);
+ void DoEnableSubtitlesL(TMMFMessage& aMessage);
+ void DoGetSupportedLanguagesDataL(TMMFMessage& aMessage);
+ void DoGetSupportedLanguagesCountL(TMMFMessage& aMessage);
+ void DoGetSubtitleLanguageL(TMMFMessage& aMessage);
+ void DoSetSubtitleLanguageL(TMMFMessage& aMessage);
+ void DoGetCrpParametersL(TMMFMessage& aMessage);
+
+private:
+ MMMFVideoPlaySubtitleSupportCustomCommandImplementor& iImplementor;
+ RArray<TLanguage> iAvailableLanguages;
+ };
+
+/**
+ * @publishedPartner
+ * @prototype
+ *
+ * Client class to access functionality specific to a subtitle supported playback
+ * controller. The class uses the custom command function of the controller plugin,
+ * and removes the necessity for the client to formulate the custom commands.
+ */
+class RMMFVideoPlaySubtitleSupportCustomCommands : public RMMFCustomCommandsBase
+ {
+public:
+
+ IMPORT_C RMMFVideoPlaySubtitleSupportCustomCommands(RMMFController& aController);
+ IMPORT_C TInt AddSubtitleConfig(const TMMFSubtitleWindowConfig& aConfig);
+ IMPORT_C TInt RemoveSubtitleConfig(TInt aWindowId);
+ IMPORT_C TInt UpdateSubtitleConfig(const TMMFSubtitleWindowConfig& aConfig);
+ IMPORT_C TInt GetSubtitlesAvailable(TBool& aAvailable);
+ IMPORT_C TInt DisableSubtitles();
+ IMPORT_C TInt EnableSubtitles();
+ IMPORT_C TInt GetCrpParameters(TInt aWindowId, TWsGraphicId& aId, TRect& aCrpRect);
+ IMPORT_C TInt GetSubtitleLanguage(TLanguage& aLanguage);
+ IMPORT_C void GetSupportedSubtitleLanguagesL(RArray<TLanguage>& aSubtitleLanguages);
+ IMPORT_C TInt SetSubtitleLanguage(TLanguage aSubtitleLanguage);
+ };
+
+#endif // MMFVIDEOSUBTITLECUSTOMCOMMANDS_H