blob: 70fcd1f3e61cf377e59c7f86d5f7e17bd951f0f9 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 1998-2009 PacketVideo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
* -------------------------------------------------------------------
*/
#ifndef PVMF_DOWNLOAD_DATA_SOURCE_H_INCLUDED
#define PVMF_DOWNLOAD_DATA_SOURCE_H_INCLUDED
#ifndef OSCL_BASE_H_INCLUDED
#include "oscl_base.h"
#endif
#ifndef OSCL_STRING_H_INCLUDED
#include "oscl_string.h"
#endif
#ifndef PV_UUID_H_INCLUDED
#include "pv_uuid.h"
#endif
#ifndef PV_INTERFACE_H_INCLUDED
#include "pv_interface.h"
#endif
#define PVMF_DOWNLOAD_DATASOURCE_HTTP_UUID PVUuid(0xdea36265,0x6a59,0x4d8b,0xb3,0xea,0xdf,0x68,0x4d,0x7e,0x0e,0x08)
//Source data for HTTP Progressive download (format type PVMF_DATA_SOURCE_HTTP_URL)
class PVMFDownloadDataSourceHTTP : public PVInterface
{
public:
bool bIsNewSession; //true if the downloading a new file
//false if keep downloading a partial downloading file
OSCL_wString &iConfigFileName; //download config file
OSCL_wString &iDownloadFileName; //local file name of the downloaded clip
uint32 iMaxFileSize; //the max size of the file.
OSCL_String &iProxyName; //HTTP proxy name, either ip or dns
int32 iProxyPort; //HTTP proxy port
typedef enum // For Download only
{
ENoPlayback = 0,
EAfterDownload,
EAsap,
ENoSaveToFile,
EReserve
} TPVPlaybackControl;
TPVPlaybackControl iPlaybackControl;
//Optional CPM usage flag.
//If true, CPM will be used during playback.
//If false, CPM will not be used during playback.
bool iUseCPMPluginRegistryForPlayback;
PVMFDownloadDataSourceHTTP(bool aIsNewSession
, OSCL_wString &aConfigFile
, OSCL_wString &aDownloadFileName
, uint32 aMaxSize
, OSCL_String &aProxyName
, int32 aProxyPort
, TPVPlaybackControl aPlaybackControl
, bool aUseCPMPluginRegistryForPlayback = false)
: bIsNewSession(aIsNewSession)
, iConfigFileName(aConfigFile)
, iDownloadFileName(aDownloadFileName)
, iMaxFileSize(aMaxSize)
, iProxyName(aProxyName)
, iProxyPort(aProxyPort)
, iPlaybackControl(aPlaybackControl)
, iUseCPMPluginRegistryForPlayback(aUseCPMPluginRegistryForPlayback)
{}
/* From PVInterface */
void addRef()
{
iRefCounter++;
}
void removeRef()
{
iRefCounter--;
}
bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
{
if (uuid == PVUuid(PVMF_DOWNLOAD_DATASOURCE_HTTP_UUID))
{
iface = this;
return true;
}
else
{
iface = NULL;
return false;
}
}
int32 iRefCounter;
};
#define PVMF_DOWNLOAD_DATASOURCE_PVX_UUID PVUuid(0xc3873d74,0x5759,0x42da,0xaa,0x27,0xfa,0x63,0xb1,0xa0,0xef,0x4e)
class CPVXInfo;
//Source data for Fasttrack download (format type PVMF_DATA_SOURCE_PVX_FILE)
class PVMFDownloadDataSourcePVX : public PVInterface
{
public:
bool bIsNewSession; //true if the downloading a new file
//false if keep downloading a partial downloading file
OSCL_wString &iConfigFileName; //download config file
OSCL_wString &iDownloadFileName; //local file name of the downloaded clip
uint32 iMaxFileSize; //the max size of the file.
OSCL_String &iProxyName; //HTTP proxy name, either ip or dns
int32 iProxyPort; //HTTP proxy port
CPVXInfo &iPvxInfo; //class which contains all the info in the .pvx file except the URL
PVMFDownloadDataSourcePVX(bool aIsNewSession, OSCL_wString &aConfigFile, OSCL_wString &aDownloadFileName, uint32 aMaxSize, OSCL_String &aProxyName, int32 aProxyPort, CPVXInfo &p)
: bIsNewSession(aIsNewSession)
, iConfigFileName(aConfigFile)
, iDownloadFileName(aDownloadFileName)
, iMaxFileSize(aMaxSize)
, iProxyName(aProxyName)
, iProxyPort(aProxyPort)
, iPvxInfo(p)
{}
/* From PVInterface */
void addRef()
{
iRefCounter++;
}
void removeRef()
{
iRefCounter--;
}
bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
{
if (uuid == PVUuid(PVMF_DOWNLOAD_DATASOURCE_PVX_UUID))
{
iface = this;
return true;
}
else
{
iface = NULL;
return false;
}
}
int32 iRefCounter;
};
#endif //PVMF_DATA_SOURCE_INIT_EXTENSION_H_INCLUDED