• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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