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_STREAMING_DATA_SOURCE_H_INCLUDED 19 #define PVMF_STREAMING_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 OSCL_STRING_CONTAINERS_H_INCLUDED 28 #include "oscl_string_containers.h" 29 #endif 30 #ifndef PV_UUID_H_INCLUDED 31 #include "pv_uuid.h" 32 #endif 33 #ifndef PV_INTERFACE_H_INCLUDED 34 #include "pv_interface.h" 35 #endif 36 37 #define PVMF_STREAMING_DATASOURCE_UUID PVUuid(0x0b3fabc5,0x9f20,0x4197,0xa8,0x1c,0x32,0x54,0x0f,0xb6,0xbe,0x2c) 38 39 class OsclFileHandle; 40 class PVMFCPMPluginAccessInterfaceFactory; 41 42 #define BITMASK_PVMF_SOURCE_INTENT_PLAY 0x00000001 43 #define BITMASK_PVMF_SOURCE_INTENT_GETMETADATA 0x00000002 44 #define BITMASK_PVMF_SOURCE_INTENT_PREVIEW 0x00000004 45 #define BITMASK_PVMF_SOURCE_INTENT_THUMBNAILS 0x00000008 46 47 //Source data for local file playback (format type PVMF_MPEG4FF & others) 48 class PVMFStreamingDataSource : public PVInterface 49 { 50 public: 51 //default constructor 52 PVMFStreamingDataSource(OsclFileHandle*aFileHandle = NULL) iFileHandle(aFileHandle)53 : iFileHandle(aFileHandle) 54 , iPreviewMode(false) 55 , iIntent(BITMASK_PVMF_SOURCE_INTENT_PLAY) 56 { 57 } 58 59 //copy constructor PVMFStreamingDataSource(const PVMFStreamingDataSource & source)60 PVMFStreamingDataSource(const PVMFStreamingDataSource& source) : PVInterface(source) 61 , iFileHandle(source.iFileHandle) 62 , iStreamStatsLoggingURL(source.iStreamStatsLoggingURL) 63 , iPreviewMode(source.iPreviewMode) 64 , iIntent(source.iIntent) 65 {} 66 67 /* From PVInterface */ addRef()68 void addRef() 69 { 70 iRefCounter++; 71 } removeRef()72 void removeRef() 73 { 74 iRefCounter--; 75 } queryInterface(const PVUuid & uuid,PVInterface * & iface)76 bool queryInterface(const PVUuid& uuid, PVInterface*& iface) 77 { 78 if (uuid == PVUuid(PVMF_STREAMING_DATASOURCE_UUID)) 79 { 80 iface = this; 81 return true; 82 } 83 else 84 { 85 iface = NULL; 86 return false; 87 } 88 } 89 int32 iRefCounter; 90 91 OsclFileHandle* iFileHandle; 92 //Optional file handle. 93 //When not NULL, the sdp file will be accessed using this handle. 94 //When NULL, the file will be opened using its string URL. 95 96 OSCL_wHeapString<OsclMemAllocator> iStreamStatsLoggingURL; 97 //Optional logging url. 98 //When present, streaming stats will be sent to this URL. 99 //Typically applies to MS HTTP Streaming sessions 100 101 bool iPreviewMode; 102 //Optional field to indicate if the source that is being 103 //passed in will be played back in a preview mode. 104 105 uint32 iIntent; 106 //Optional field to indicate if the source that is being 107 //passed in will be used for play back or just for metadata retrieval 108 109 OSCL_wHeapString<OsclMemAllocator> iProxyName; 110 //HTTP proxy name, either ip or dns 111 int32 iProxyPort; 112 //HTTP proxy port 113 }; 114 115 116 #endif //PVMF_STREAMING_DATA_SOURCE_H_INCLUDED 117 118