Home | History | Annotate | Download | only in include
      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_SOURCE_CONTEXT_DATA_H_INCLUDED
     19 #define PVMF_SOURCE_CONTEXT_DATA_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_SOURCE_CONTEXT_DATA_UUID PVUuid(0xf218cdfc,0x797d,0x453e,0x9c,0x94,0x8f,0x0e,0x83,0x8a,0xa1,0x99)
     38 
     39 #define PVMF_SOURCE_CONTEXT_DATA_COMMON_UUID PVUuid(0xa6b5f829,0x8ead,0x4c21,0xad,0x40,0x8c,0xc5,0x10,0x05,0xb5,0xfa)
     40 #define PVMF_SOURCE_CONTEXT_DATA_STREAMING_UUID PVUuid(0x0b8a0087,0xd539,0x4ee0,0x88,0x8d,0x0c,0x1c,0x70,0xf0,0x33,0x59)
     41 #define PVMF_SOURCE_CONTEXT_DATA_DOWNLOAD_HTTP_UUID PVUuid(0x731e4269,0x849b,0x4123,0x92,0x6f,0xaf,0x27,0xc9,0x8a,0x2e,0xab)
     42 #define PVMF_SOURCE_CONTEXT_DATA_DOWNLOAD_PVX_UUID PVUuid(0x3dbb1b51,0x49ea,0x4933,0xa6,0xec,0x26,0x97,0x43,0x12,0xb6,0xd6)
     43 #define PVMF_SOURCE_CONTEXT_DATA_PVR_UUID PVUuid(0x442059a2,0x76b6,0x11dc,0x83,0x14,0x08,0x00,0x20,0x0c,0x9a,0x66)
     44 #define PVMF_SOURCE_CONTEXT_DATA_PACKETSOURCE_UUID PVUuid(0x7f064f8c,0xa90d,0x11dc,0x83,0x14,0x08,0x00,0x20,0x0c,0x9a,0x66)
     45 //3f9c615e-31e2-474c-9add-29c61dd07ead
     46 
     47 class OsclFileHandle;
     48 class PVMFCPMPluginAccessInterfaceFactory;
     49 
     50 #define BITMASK_PVMF_SOURCE_INTENT_PLAY          0x00000001
     51 #define BITMASK_PVMF_SOURCE_INTENT_GETMETADATA   0x00000002
     52 #define BITMASK_PVMF_SOURCE_INTENT_PREVIEW       0x00000004
     53 #define BITMASK_PVMF_SOURCE_INTENT_THUMBNAILS    0x00000008
     54 
     55 class PVMFSourceContextDataCommon : public PVInterface
     56 {
     57     public:
     58         PVMFSourceContextDataCommon()
     59         {
     60             iRefCounter = 0;
     61             iFileHandle = NULL;
     62             iPreviewMode = false;
     63             iIntent = BITMASK_PVMF_SOURCE_INTENT_PLAY;
     64             iContentAccessFactory = NULL;
     65             iRecognizerDataStreamFactory = NULL;
     66         };
     67 
     68         PVMFSourceContextDataCommon(const PVMFSourceContextDataCommon& aSrc) : PVInterface(aSrc)
     69         {
     70             iRefCounter = 0;
     71             MyCopy(aSrc);
     72         };
     73 
     74         PVMFSourceContextDataCommon& operator=(const PVMFSourceContextDataCommon& aSrc)
     75         {
     76             if (&aSrc != this)
     77             {
     78                 MyCopy(aSrc);
     79             }
     80             return *this;
     81         };
     82 
     83         /* From PVInterface */
     84         void addRef()
     85         {
     86             iRefCounter++;
     87         }
     88         void removeRef()
     89         {
     90             iRefCounter--;
     91         }
     92         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
     93         {
     94             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_COMMON_UUID))
     95             {
     96                 iface = this;
     97                 return true;
     98             }
     99             else
    100             {
    101                 iface = NULL;
    102                 return false;
    103             }
    104         }
    105         int32 iRefCounter;
    106 
    107         //Optional file handle.
    108         OsclFileHandle* iFileHandle;
    109 
    110         //Optional field to indicate if the source that is being
    111         //passed in will be played back in a preview mode.
    112         bool iPreviewMode;
    113 
    114         //Optional field to indicate if the source that is being
    115         //passed in will be used for play back or just for metadata retrieval
    116         uint32 iIntent;
    117 
    118         //HTTP proxy name, either ip or dns, for DRM License Acquisition purposes
    119         OSCL_wHeapString<OsclMemAllocator> iDRMLicenseProxyName;
    120 
    121         //HTTP proxy port, for DRM for DRM License Acquisition purposes
    122         int32 iDRMLicenseProxyPort;
    123 
    124         //external datastream for usecases where the input file is controlled by the app
    125         PVMFCPMPluginAccessInterfaceFactory* iContentAccessFactory;
    126 
    127         //external datastream for usecases where input file to be recognized is controlled by the app
    128         PVMFCPMPluginAccessInterfaceFactory* iRecognizerDataStreamFactory;
    129 
    130     private:
    131         void MyCopy(const PVMFSourceContextDataCommon& aSrc)
    132         {
    133             iFileHandle             = aSrc.iFileHandle;
    134             iPreviewMode            = aSrc.iPreviewMode;
    135             iIntent                 = aSrc.iIntent;
    136             iDRMLicenseProxyName    = aSrc.iDRMLicenseProxyName;
    137             iDRMLicenseProxyPort    = aSrc.iDRMLicenseProxyPort;
    138             iContentAccessFactory   = aSrc.iContentAccessFactory;
    139             iRecognizerDataStreamFactory = aSrc.iRecognizerDataStreamFactory;
    140         };
    141 };
    142 
    143 class PVMFSourceContextDataStreaming : public PVInterface
    144 {
    145     public:
    146         //default constructor
    147         PVMFSourceContextDataStreaming()
    148         {
    149             iRefCounter = 0;
    150             iProxyPort = 0;
    151         };
    152 
    153         PVMFSourceContextDataStreaming(const PVMFSourceContextDataStreaming& aSrc) : PVInterface(aSrc)
    154         {
    155             iRefCounter = 0;
    156             MyCopy(aSrc);
    157         };
    158 
    159         PVMFSourceContextDataStreaming& operator=(const PVMFSourceContextDataStreaming& aSrc)
    160         {
    161             if (&aSrc != this)
    162             {
    163                 MyCopy(aSrc);
    164             }
    165             return *this;
    166         };
    167 
    168         /* From PVInterface */
    169         void addRef()
    170         {
    171             iRefCounter++;
    172         }
    173         void removeRef()
    174         {
    175             iRefCounter--;
    176         }
    177         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
    178         {
    179             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_STREAMING_UUID))
    180             {
    181                 iface = this;
    182                 return true;
    183             }
    184             else
    185             {
    186                 iface = NULL;
    187                 return false;
    188             }
    189         }
    190         int32 iRefCounter;
    191 
    192         //Optional logging url.
    193         //When present, streaming stats will be sent to this URL.
    194         //Typically applies to MS HTTP Streaming sessions
    195         OSCL_wHeapString<OsclMemAllocator> iStreamStatsLoggingURL;
    196 
    197         //HTTP proxy name, either ip or dns
    198         OSCL_wHeapString<OsclMemAllocator> iProxyName;
    199 
    200         //HTTP proxy port
    201         int32 iProxyPort;
    202 
    203         // Optional UserID and UserAuthentication (e.g. password) string
    204         // used for HTTP basic/digest authentication
    205         OSCL_HeapString<OsclMemAllocator> iUserID;
    206         OSCL_HeapString<OsclMemAllocator> iUserPasswd;
    207 
    208     private:
    209         void MyCopy(const PVMFSourceContextDataStreaming& aSrc)
    210         {
    211             iStreamStatsLoggingURL  = aSrc.iStreamStatsLoggingURL;
    212             iProxyName              = aSrc.iProxyName;
    213             iProxyPort              = aSrc.iProxyPort;
    214             iUserID                 = aSrc.iUserID;
    215             iUserPasswd             = aSrc.iUserPasswd;
    216         };
    217 };
    218 
    219 //Source data for HTTP Progressive download (format type PVMF_DATA_SOURCE_HTTP_URL)
    220 class PVMFSourceContextDataDownloadHTTP : public PVInterface
    221 {
    222     public:
    223         PVMFSourceContextDataDownloadHTTP()
    224         {
    225             iRefCounter = 0;
    226             bIsNewSession = true;
    227             iMaxFileSize = 0;
    228         };
    229 
    230         PVMFSourceContextDataDownloadHTTP(const PVMFSourceContextDataDownloadHTTP& aSrc) : PVInterface(aSrc)
    231         {
    232             iRefCounter = 0;
    233             MyCopy(aSrc);
    234         };
    235 
    236         PVMFSourceContextDataDownloadHTTP& operator=(const PVMFSourceContextDataDownloadHTTP& aSrc)
    237         {
    238             if (&aSrc != this)
    239             {
    240                 MyCopy(aSrc);
    241             }
    242             return *this;
    243         };
    244 
    245         /* From PVInterface */
    246         void addRef()
    247         {
    248             iRefCounter++;
    249         }
    250         void removeRef()
    251         {
    252             iRefCounter--;
    253         }
    254         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
    255         {
    256             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_DOWNLOAD_HTTP_UUID))
    257             {
    258                 iface = this;
    259                 return true;
    260             }
    261             else
    262             {
    263                 iface = NULL;
    264                 return false;
    265             }
    266         }
    267         int32 iRefCounter;
    268 
    269         bool    bIsNewSession;              //true if the downloading a new file
    270         //false if keep downloading a partial downloading file
    271         OSCL_wHeapString<OsclMemAllocator> iConfigFileName;     //download config file
    272         OSCL_wHeapString<OsclMemAllocator> iDownloadFileName;   //local file name of the downloaded clip
    273         uint32  iMaxFileSize;               //the max size of the file.
    274         OSCL_HeapString<OsclMemAllocator> iProxyName;           //HTTP proxy name, either ip or dns
    275         int32   iProxyPort;                 //HTTP proxy port
    276 
    277         typedef enum        // For Download only
    278         {
    279             ENoPlayback         = 0,
    280             EAfterDownload,
    281             EAsap,
    282             ENoSaveToFile,
    283             EReserve
    284         } TPVPlaybackControl;
    285         TPVPlaybackControl  iPlaybackControl;
    286 
    287         // Optional UserID and UserAuthentication (e.g. password) string
    288         // used for HTTP basic/digest authentication
    289         OSCL_HeapString<OsclMemAllocator> iUserID;
    290         OSCL_HeapString<OsclMemAllocator> iUserPasswd;
    291 
    292     private:
    293         void MyCopy(const PVMFSourceContextDataDownloadHTTP& aSrc)
    294         {
    295             bIsNewSession       = aSrc.bIsNewSession;
    296             iConfigFileName     = aSrc.iConfigFileName;
    297             iDownloadFileName   = aSrc.iDownloadFileName;
    298             iMaxFileSize        = aSrc.iMaxFileSize;
    299             iProxyName          = aSrc.iProxyName;
    300             iProxyPort          = aSrc.iProxyPort;
    301             iUserID             = aSrc.iUserID;
    302             iUserPasswd         = aSrc.iUserPasswd;
    303         };
    304 };
    305 
    306 class CPVXInfo;
    307 
    308 //Source data for Fasttrack download (format type PVMF_DATA_SOURCE_PVX_FILE)
    309 class PVMFSourceContextDataDownloadPVX : public PVInterface
    310 {
    311     public:
    312         PVMFSourceContextDataDownloadPVX()
    313         {
    314             iRefCounter = 0;
    315             bIsNewSession = true;
    316             iMaxFileSize = 0;
    317         }
    318 
    319         PVMFSourceContextDataDownloadPVX(const PVMFSourceContextDataDownloadPVX& aSrc) : PVInterface(aSrc)
    320         {
    321             iRefCounter = 0;
    322             MyCopy(aSrc);
    323         };
    324 
    325         PVMFSourceContextDataDownloadPVX& operator=(const PVMFSourceContextDataDownloadPVX& aSrc)
    326         {
    327             if (&aSrc != this)
    328             {
    329                 MyCopy(aSrc);
    330             }
    331             return *this;
    332         };
    333 
    334         /* From PVInterface */
    335         void addRef()
    336         {
    337             iRefCounter++;
    338         }
    339         void removeRef()
    340         {
    341             iRefCounter--;
    342         }
    343         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
    344         {
    345             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_DOWNLOAD_PVX_UUID))
    346             {
    347                 iface = this;
    348                 return true;
    349             }
    350             else
    351             {
    352                 iface = NULL;
    353                 return false;
    354             }
    355         }
    356         int32 iRefCounter;
    357 
    358         bool    bIsNewSession;              //true if the downloading a new file
    359         //false if keep downloading a partial downloading file
    360         OSCL_wHeapString<OsclMemAllocator> iConfigFileName;     //download config file
    361         OSCL_wHeapString<OsclMemAllocator> iDownloadFileName;   //local file name of the downloaded clip
    362         uint32  iMaxFileSize;               //the max size of the file.
    363         OSCL_HeapString<OsclMemAllocator> iProxyName;           //HTTP proxy name, either ip or dns
    364         int32   iProxyPort;                 //HTTP proxy port
    365 
    366         CPVXInfo *iPvxInfo;                 //class which contains all the info in the .pvx file except the URL
    367 
    368     private:
    369         void MyCopy(const PVMFSourceContextDataDownloadPVX& aSrc)
    370         {
    371             bIsNewSession = aSrc.bIsNewSession;
    372             iConfigFileName = aSrc.iConfigFileName;
    373             iDownloadFileName = aSrc.iDownloadFileName;
    374             iMaxFileSize = aSrc.iMaxFileSize;
    375             iProxyName = aSrc.iProxyName;
    376             iProxyPort = aSrc.iProxyPort;
    377             iPvxInfo = aSrc.iPvxInfo;
    378         };
    379 };
    380 
    381 
    382 //Source Context Data for PVR
    383 class PVMFPVRControl;
    384 
    385 class PVMFSourceContextDataPVR : public PVInterface
    386 {
    387     public:
    388         //default constructor
    389         PVMFSourceContextDataPVR()
    390         {
    391             iRefCounter = 0;
    392             iPVMFPVRControl = NULL;
    393             iLiveBufferSizeInSeconds = 0;
    394         };
    395 
    396         PVMFSourceContextDataPVR(const PVMFSourceContextDataPVR& aSrc) : PVInterface(aSrc)
    397         {
    398             iRefCounter = 0;
    399             iPVMFPVRControl = NULL;
    400             iLiveBufferSizeInSeconds = 0;
    401             MyCopy(aSrc);
    402         };
    403 
    404         PVMFSourceContextDataPVR& operator=(const PVMFSourceContextDataPVR& aSrc)
    405         {
    406             if (&aSrc != this)
    407             {
    408                 MyCopy(aSrc);
    409             }
    410             return *this;
    411         };
    412 
    413         void SetPVRControl(PVMFPVRControl* aPVMFPVRControl)
    414         {
    415             iPVMFPVRControl = aPVMFPVRControl;
    416         }
    417 
    418         PVMFPVRControl* GetPVRControl()
    419         {
    420             return iPVMFPVRControl;
    421         }
    422 
    423 
    424 //  void SetLiveBufferSizeInSeconds(uint32 aLiveBufferSizeInSeconds)
    425 //  {
    426 //      iLiveBufferSizeInSeconds = aLiveBufferSizeInSeconds;
    427 //  }
    428 
    429 //  uint32 LiveBufferSizeInSeconds()
    430 //  {
    431 //      return iLiveBufferSizeInSeconds;
    432 //  }
    433 
    434         /* From PVInterface */
    435         void addRef()
    436         {
    437             iRefCounter++;
    438         }
    439         void removeRef()
    440         {
    441             iRefCounter--;
    442         }
    443 
    444         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
    445         {
    446             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_PVR_UUID))
    447             {
    448                 iface = this;
    449                 return true;
    450             }
    451             else
    452             {
    453                 iface = NULL;
    454                 return false;
    455             }
    456         }
    457 
    458     private:
    459         void MyCopy(const PVMFSourceContextDataPVR& aSrc)
    460         {
    461             // \todo: check this copy constructor
    462             iPVMFPVRControl = aSrc.iPVMFPVRControl;
    463             iLiveBufferSizeInSeconds = aSrc.iLiveBufferSizeInSeconds;
    464         };
    465 
    466         // reference counter
    467         int32 iRefCounter;
    468 
    469 
    470         // This class doesn't own PVMFPVRControl
    471         PVMFPVRControl* iPVMFPVRControl;
    472 
    473         // temp buffer size in seconds
    474         uint32 iLiveBufferSizeInSeconds;
    475 };
    476 
    477 
    478 class PVMFPacketSource;
    479 
    480 class PVMFSourceContextDataPacketSource : public PVInterface
    481 {
    482     public:
    483         //default constructor
    484         PVMFSourceContextDataPacketSource()
    485         {
    486             iRefCounter = 0;
    487             iPacketSourcePlugin = NULL;
    488         };
    489 
    490         PVMFSourceContextDataPacketSource(const PVMFSourceContextDataPacketSource& aSrc) : PVInterface(aSrc)
    491         {
    492             iRefCounter = 0;
    493             MyCopy(aSrc);
    494         };
    495 
    496         PVMFSourceContextDataPacketSource& operator=(const PVMFSourceContextDataPacketSource& aSrc)
    497         {
    498             if (&aSrc != this)
    499             {
    500                 MyCopy(aSrc);
    501             }
    502             return *this;
    503         };
    504 
    505         void SetPacketSourcePlugin(PVMFPacketSource* aPacketSourcePlugin)
    506         {
    507             iPacketSourcePlugin = aPacketSourcePlugin;
    508         }
    509 
    510         PVMFPacketSource* GetPacketSourcePlugin()
    511         {
    512             return iPacketSourcePlugin;
    513         }
    514 
    515         /* From PVInterface */
    516         void addRef()
    517         {
    518             iRefCounter++;
    519         }
    520         void removeRef()
    521         {
    522             iRefCounter--;
    523         }
    524 
    525         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
    526         {
    527             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_PACKETSOURCE_UUID))
    528             {
    529                 iface = this;
    530                 return true;
    531             }
    532             else
    533             {
    534                 iface = NULL;
    535                 return false;
    536             }
    537         }
    538 
    539     private:
    540         void MyCopy(const PVMFSourceContextDataPacketSource& aSrc)
    541         {
    542             // \todo: check this copy constructor
    543             iPacketSourcePlugin = aSrc.iPacketSourcePlugin;
    544         };
    545 
    546         // reference counter
    547         int32 iRefCounter;
    548 
    549         // This class doesn't own PVMFPVRControl
    550         PVMFPacketSource* iPacketSourcePlugin;
    551 };
    552 
    553 class PVMFSourceContextData : public PVInterface
    554 {
    555     public:
    556         PVMFSourceContextData()
    557         {
    558             iRefCounter = 0;
    559             iCommonDataContextValid = false;
    560             iStreamingDataContextValid = false;
    561             iDownloadHTTPDataContextValid = false;
    562             iDownloadPVXDataContextValid = false;
    563             iPVRDataContextValid = false;
    564             iPacketSourceDataContextValid = false;
    565         };
    566 
    567         PVMFSourceContextData(const PVMFSourceContextData& aSrc) : PVInterface(aSrc)
    568         {
    569             iRefCounter = 0;
    570             MyCopy(aSrc);
    571         };
    572 
    573         PVMFSourceContextData& operator=(const PVMFSourceContextData& aSrc)
    574         {
    575             if (&aSrc != this)
    576             {
    577                 MyCopy(aSrc);
    578             }
    579             return *this;
    580         };
    581 
    582         /* From PVInterface */
    583         void addRef()
    584         {
    585             iRefCounter++;
    586         }
    587         void removeRef()
    588         {
    589             iRefCounter--;
    590         }
    591         bool queryInterface(const PVUuid& uuid, PVInterface*& iface)
    592         {
    593             if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_UUID))
    594             {
    595                 iface = this;
    596                 return true;
    597             }
    598             else if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_COMMON_UUID))
    599             {
    600                 if (iCommonDataContextValid == true)
    601                 {
    602                     iface = &iPVMFSourceContextDataCommon;
    603                     return true;
    604                 }
    605             }
    606             else if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_STREAMING_UUID))
    607             {
    608                 if (iStreamingDataContextValid == true)
    609                 {
    610                     iface = &iPVMFSourceContextDataStreaming;
    611                     return true;
    612                 }
    613             }
    614             else if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_DOWNLOAD_HTTP_UUID))
    615             {
    616                 if (iDownloadHTTPDataContextValid == true)
    617                 {
    618                     iface = &iPVMFSourceContextDataDownloadHTTP;
    619                     return true;
    620                 }
    621             }
    622             else if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_DOWNLOAD_PVX_UUID))
    623             {
    624                 if (iDownloadPVXDataContextValid == true)
    625                 {
    626                     iface = &iPVMFSourceContextDataDownloadPVX;
    627                     return true;
    628                 }
    629             }
    630             else if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_PVR_UUID))
    631             {
    632                 if (iPVRDataContextValid == true)
    633                 {
    634                     iface = &iPVMFSourceContextDataPVR;
    635                     return true;
    636                 }
    637             }
    638             else if (uuid == PVUuid(PVMF_SOURCE_CONTEXT_DATA_PACKETSOURCE_UUID))
    639             {
    640                 if (iPacketSourceDataContextValid == true)
    641                 {
    642                     iface = &iPVMFSourceContextDataPacketSource;
    643                     return true;
    644                 }
    645             }
    646 
    647             iface = NULL;
    648             return false;
    649         }
    650 
    651         void EnableCommonSourceContext()
    652         {
    653             iCommonDataContextValid = true;
    654         }
    655         void EnableStreamingSourceContext()
    656         {
    657             iStreamingDataContextValid = true;
    658         }
    659         void EnableDownloadHTTPSourceContext()
    660         {
    661             iDownloadHTTPDataContextValid = true;
    662         }
    663         void EnableDownloadPVXSourceContext()
    664         {
    665             iDownloadPVXDataContextValid = true;
    666         }
    667         void EnablePVRSourceContext()
    668         {
    669             iPVRDataContextValid = true;
    670         }
    671         void EnablePacketSourceSourceContext()
    672         {
    673             iPacketSourceDataContextValid = true;
    674         }
    675         void DisableCommonSourceContext()
    676         {
    677             iCommonDataContextValid = false;
    678         }
    679         void DisableStreamingSourceContext()
    680         {
    681             iStreamingDataContextValid = false;
    682         }
    683         void DisableeDownloadHTTPSourceContext()
    684         {
    685             iDownloadHTTPDataContextValid = false;
    686         }
    687         void DisableDownloadPVXSourceContext()
    688         {
    689             iDownloadPVXDataContextValid = false;
    690         }
    691         void DisablePVRSourceContext()
    692         {
    693             iPVRDataContextValid = false;
    694         }
    695         void DisablePacketSourceSourceContext()
    696         {
    697             iPacketSourceDataContextValid = false;
    698         }
    699         PVMFSourceContextDataCommon* CommonData()
    700         {
    701             return iCommonDataContextValid ? &iPVMFSourceContextDataCommon : NULL;
    702         }
    703         PVMFSourceContextDataStreaming* StreamingData()
    704         {
    705             return iStreamingDataContextValid ? &iPVMFSourceContextDataStreaming : NULL;
    706         }
    707         PVMFSourceContextDataDownloadHTTP* DownloadHTTPData()
    708         {
    709             return iDownloadHTTPDataContextValid ? &iPVMFSourceContextDataDownloadHTTP : NULL;
    710         }
    711         PVMFSourceContextDataDownloadPVX* DownloadPVXData()
    712         {
    713             return iDownloadPVXDataContextValid ? &iPVMFSourceContextDataDownloadPVX : NULL;
    714         }
    715         PVMFSourceContextDataPVR* PVRData()
    716         {
    717             return iPVRDataContextValid ? &iPVMFSourceContextDataPVR : NULL;
    718         }
    719         PVMFSourceContextDataPacketSource* PacketSourceData()
    720         {
    721             return iPacketSourceDataContextValid ? &iPVMFSourceContextDataPacketSource : NULL;
    722         }
    723 
    724     private:
    725         int32 iRefCounter;
    726         bool iCommonDataContextValid;
    727         bool iStreamingDataContextValid;
    728         bool iDownloadHTTPDataContextValid;
    729         bool iDownloadPVXDataContextValid;
    730         bool iPVRDataContextValid;
    731         bool iPacketSourceDataContextValid;
    732 
    733         PVMFSourceContextDataCommon iPVMFSourceContextDataCommon;
    734         PVMFSourceContextDataStreaming iPVMFSourceContextDataStreaming;
    735         PVMFSourceContextDataDownloadHTTP iPVMFSourceContextDataDownloadHTTP;
    736         PVMFSourceContextDataDownloadPVX iPVMFSourceContextDataDownloadPVX;
    737         PVMFSourceContextDataPVR iPVMFSourceContextDataPVR;
    738         PVMFSourceContextDataPacketSource iPVMFSourceContextDataPacketSource;
    739 
    740         void MyCopy(const PVMFSourceContextData& aSrc)
    741         {
    742             iCommonDataContextValid = aSrc.iCommonDataContextValid;
    743             iStreamingDataContextValid = aSrc.iStreamingDataContextValid;
    744             iDownloadHTTPDataContextValid = aSrc.iDownloadHTTPDataContextValid;
    745             iDownloadPVXDataContextValid = aSrc.iDownloadPVXDataContextValid;
    746             iPVRDataContextValid = aSrc.iPVRDataContextValid;
    747             iPacketSourceDataContextValid = aSrc.iPacketSourceDataContextValid;
    748 
    749             iPVMFSourceContextDataCommon = aSrc.iPVMFSourceContextDataCommon;
    750             iPVMFSourceContextDataStreaming = aSrc.iPVMFSourceContextDataStreaming;
    751             iPVMFSourceContextDataDownloadHTTP = aSrc.iPVMFSourceContextDataDownloadHTTP;
    752             iPVMFSourceContextDataDownloadPVX = aSrc.iPVMFSourceContextDataDownloadPVX;
    753             iPVMFSourceContextDataPVR = aSrc.iPVMFSourceContextDataPVR;
    754             iPVMFSourceContextDataPacketSource = aSrc.iPVMFSourceContextDataPacketSource;
    755         };
    756 };
    757 
    758 #endif //PVMF_SOURCE_CONTEXT_DATA_H_INCLUDED
    759 
    760