upnpavcontroller/upnpavcontrollerhelper/inc/upnptranscodehelper.h
branchIOP_Improvements
changeset 40 08b5eae9f9ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontroller/upnpavcontrollerhelper/inc/upnptranscodehelper.h	Wed Nov 03 11:45:09 2010 +0200
@@ -0,0 +1,136 @@
+/*
+* Copyright (c) 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:  UPnP transcode helper
+*
+*/
+
+#ifndef C_UPNPTRANSCODEHELPER_H
+#define C_UPNPTRANSCODEHELPER_H
+
+// INCLUDES
+#include <e32base.h>
+
+#include "upnpgstwrapperobserver.h"
+
+class CUpnpItem;
+class CUpnpAVDevice;
+class CUpnpGstWrapper;
+
+
+NONSHARABLE_CLASS(CUpnpTranscodeHelper) : public CBase
+                           , public MUpnpGstWrapperObserver
+    {
+    
+    enum TContainerType
+        {
+        EUnknownContainer,
+        EMp4Container,
+        ETsContainer
+        };
+    
+public: // construction / destruction
+    
+    /**
+     * Static NewL
+     *
+     * @param none
+     * @return instance to CUpnpTranscodeHelper
+     */
+     static CUpnpTranscodeHelper* CUpnpTranscodeHelper::NewL();
+
+    /**
+     * Destructor
+     */
+     virtual ~CUpnpTranscodeHelper();
+    
+private: // construction, private part
+    
+    /**
+     * Constructor
+     */
+    CUpnpTranscodeHelper();  
+    
+    /**
+     * 2nd phrase Constructor
+     */
+    void ConstructL();  
+     
+public:
+    
+     /**
+      * Fetch pre-defined transcoding pipeline and protocol info for renderer
+      * 
+      * @param aRenderer Reference to renderer
+      * @param aUpnpItem Reference to original upnp item  
+      * @param aPipeline Reference pointer to descriptor where parsed 
+      *        transcoding pipeline will be allocated
+      * @param aProtocolInfo Reference pointer to descriptor where parsed 
+      *        protocol info will be allocated
+      */
+     void PreDefinedCfgL( const CUpnpAVDevice& aRenderer, 
+             CUpnpItem& aUpnpItem, HBufC8*& aPipeline, 
+             HBufC8*& aProtocolInfo );
+    
+    /**
+     * Create transcoding pipeline 
+     * 
+     * @param aUpnpItem Reference to original upnp item
+     * @param aRendererProtocolInfos Reference to descriptor array containing
+     *        protocol list from the renderer
+     * @return Pointer to descriptor containing transcoding pipeline; 
+     *         NULL if match not found
+     */
+    HBufC8* PipelineL( CUpnpItem& aUpnpItem, 
+            const CDesC8Array& aRendererProtocolInfos );    
+    
+    /**
+     * Add a valid protocol info according to transcoding pipeline
+     * 
+     * @param aUpnpItem Reference to original upnp item
+     * @param aPipeline Reference to pipeline descriptor
+     * @param aProtocolMatches Reference to descriptor array containing
+     *        protocol list from the renderer
+     */    
+    void AddValidResElementL( CUpnpItem& aUpnpItem, 
+            const TDesC8& aPipeline, const CDesC8Array& aProtocolMatches );        
+    
+
+    void ReplaceResourceL( CUpnpItem& aUpnpItem, const TDesC8& aProtocolInfo );
+    
+    /*
+     * Start transcoding
+     * 
+     * @param aPipeline Reference to pipeline descriptor
+     */
+    void TranscodeL( const TDesC8& aPipeline );
+    
+private:
+    
+    HBufC8* GeneratePipelineL( const TDesC8& aOriginalFilePath, 
+            TContainerType aDestContainerType );
+    
+    HBufC8* PathToLinuxSyntaxL( const TDesC& aOriginalPath );
+    
+private:
+    
+    void HandleGstEvent( Gst::TEvent aEvent );
+    
+private:
+    
+    RFs iFs;
+    CUpnpGstWrapper* iGstWrapper;
+    
+    };
+
+#endif // C_UPNPTRANSCODEHELPER_H