1 /* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18 #ifndef PVMF_DOWNLOAD_DATA_SOURCE_H_INCLUDED 19 #define PVMF_DOWNLOAD_DATA_SOURCE_H_INCLUDED 20 21 #ifndef OSCL_BASE_H_INCLUDED 22 #include "oscl_base.h" 23 #endif 24 #ifndef OSCL_STRING_H_INCLUDED 25 #include "oscl_string.h" 26 #endif 27 #ifndef PV_UUID_H_INCLUDED 28 #include "pv_uuid.h" 29 #endif 30 #ifndef PV_INTERFACE_H_INCLUDED 31 #include "pv_interface.h" 32 #endif 33 34 #define PVMF_DOWNLOAD_DATASOURCE_HTTP_UUID PVUuid(0xdea36265,0x6a59,0x4d8b,0xb3,0xea,0xdf,0x68,0x4d,0x7e,0x0e,0x08) 35 36 //Source data for HTTP Progressive download (format type PVMF_DATA_SOURCE_HTTP_URL) 37 class PVMFDownloadDataSourceHTTP : public PVInterface 38 { 39 public: 40 bool bIsNewSession; //true if the downloading a new file 41 //false if keep downloading a partial downloading file 42 OSCL_wString &iConfigFileName; //download config file 43 OSCL_wString &iDownloadFileName; //local file name of the downloaded clip 44 uint32 iMaxFileSize; //the max size of the file. 45 OSCL_String &iProxyName; //HTTP proxy name, either ip or dns 46 int32 iProxyPort; //HTTP proxy port 47 48 typedef enum // For Download only 49 { 50 ENoPlayback = 0, 51 EAfterDownload, 52 EAsap, 53 ENoSaveToFile, 54 EReserve 55 } TPVPlaybackControl; 56 TPVPlaybackControl iPlaybackControl; 57 PVMFDownloadDataSourceHTTP(bool aIsNewSession,OSCL_wString & aConfigFile,OSCL_wString & aDownloadFileName,uint32 aMaxSize,OSCL_String & aProxyName,int32 aProxyPort,TPVPlaybackControl aPlaybackControl)58 PVMFDownloadDataSourceHTTP(bool aIsNewSession 59 , OSCL_wString &aConfigFile 60 , OSCL_wString &aDownloadFileName 61 , uint32 aMaxSize 62 , OSCL_String &aProxyName 63 , int32 aProxyPort 64 , TPVPlaybackControl aPlaybackControl) 65 : bIsNewSession(aIsNewSession) 66 , iConfigFileName(aConfigFile) 67 , iDownloadFileName(aDownloadFileName) 68 , iMaxFileSize(aMaxSize) 69 , iProxyName(aProxyName) 70 , iProxyPort(aProxyPort) 71 , iPlaybackControl(aPlaybackControl) 72 { 73 } 74 75 /* From PVInterface */ addRef()76 void addRef() 77 { 78 iRefCounter++; 79 } removeRef()80 void removeRef() 81 { 82 iRefCounter--; 83 } queryInterface(const PVUuid & uuid,PVInterface * & iface)84 bool queryInterface(const PVUuid& uuid, PVInterface*& iface) 85 { 86 if (uuid == PVUuid(PVMF_DOWNLOAD_DATASOURCE_HTTP_UUID)) 87 { 88 iface = this; 89 return true; 90 } 91 else 92 { 93 iface = NULL; 94 return false; 95 } 96 } 97 int32 iRefCounter; 98 }; 99 100 #define PVMF_DOWNLOAD_DATASOURCE_PVX_UUID PVUuid(0xc3873d74,0x5759,0x42da,0xaa,0x27,0xfa,0x63,0xb1,0xa0,0xef,0x4e) 101 102 class CPVXInfo; 103 104 //Source data for Fasttrack download (format type PVMF_DATA_SOURCE_PVX_FILE) 105 class PVMFDownloadDataSourcePVX : public PVInterface 106 { 107 public: 108 bool bIsNewSession; //true if the downloading a new file 109 //false if keep downloading a partial downloading file 110 OSCL_wString &iConfigFileName; //download config file 111 OSCL_wString &iDownloadFileName; //local file name of the downloaded clip 112 uint32 iMaxFileSize; //the max size of the file. 113 OSCL_String &iProxyName; //HTTP proxy name, either ip or dns 114 int32 iProxyPort; //HTTP proxy port 115 116 CPVXInfo &iPvxInfo; //class which contains all the info in the .pvx file except the URL 117 PVMFDownloadDataSourcePVX(bool aIsNewSession,OSCL_wString & aConfigFile,OSCL_wString & aDownloadFileName,uint32 aMaxSize,OSCL_String & aProxyName,int32 aProxyPort,CPVXInfo & p)118 PVMFDownloadDataSourcePVX(bool aIsNewSession, OSCL_wString &aConfigFile, OSCL_wString &aDownloadFileName, uint32 aMaxSize, OSCL_String &aProxyName, int32 aProxyPort, CPVXInfo &p) 119 : bIsNewSession(aIsNewSession) 120 , iConfigFileName(aConfigFile) 121 , iDownloadFileName(aDownloadFileName) 122 , iMaxFileSize(aMaxSize) 123 , iProxyName(aProxyName) 124 , iProxyPort(aProxyPort) 125 , iPvxInfo(p) 126 {} 127 128 /* From PVInterface */ addRef()129 void addRef() 130 { 131 iRefCounter++; 132 } removeRef()133 void removeRef() 134 { 135 iRefCounter--; 136 } queryInterface(const PVUuid & uuid,PVInterface * & iface)137 bool queryInterface(const PVUuid& uuid, PVInterface*& iface) 138 { 139 if (uuid == PVUuid(PVMF_DOWNLOAD_DATASOURCE_PVX_UUID)) 140 { 141 iface = this; 142 return true; 143 } 144 else 145 { 146 iface = NULL; 147 return false; 148 } 149 } 150 int32 iRefCounter; 151 }; 152 153 #endif //PVMF_DATA_SOURCE_INIT_EXTENSION_H_INCLUDED 154 155