• 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 
19 #ifndef PVPVXPARSER_H_INCLUDED
20 #define PVPVXPARSER_H_INCLUDED
21 
22 #ifndef OSCL_BASE_H_INCLUDED
23 #include "oscl_base.h"
24 #endif
25 #ifndef OSCLCONFIG_IO_H_INCLUDED
26 #include "osclconfig_io.h"
27 #endif
28 #ifndef OSCL_FILE_IO_H_INCLUDED
29 #include "oscl_file_io.h"
30 #endif
31 #ifndef OSCL_STRING_H_INCLUDED
32 #include "oscl_string.h"
33 #endif
34 #ifndef OSCL_PRIQUEUE_H_INCLUDED
35 #include "oscl_priqueue.h"
36 #endif
37 #ifndef OSCL_SCHEDULER_AO_H_INCLUDED
38 #include "oscl_scheduler_ao.h"
39 #endif
40 #ifndef OSCL_MEM_MEMPOOL_H_INCLUDED
41 #include "oscl_mem_mempool.h"
42 #endif
43 #ifndef PVLOGGER_H_INCLUDED
44 #include "pvlogger.h"
45 #endif
46 
47 #ifndef OSCL_TYPES_H_INCLUDED
48 #include "oscl_types.h"
49 #endif
50 
51 #ifndef OSCL_STRING_CONTAINERS_H_INCLUDED
52 #include "oscl_string_containers.h"
53 #endif
54 
55 #ifndef OSCL_UTF8CONV_H
56 #include "oscl_utf8conv.h"
57 #endif
58 
59 #define MAX_PVXUSERID_LEN           256
60 #define MAX_PVXAPPSPECIFICSTRING_LEN        256
61 #define MAX_PVXSESSIONID_LEN            36
62 #define MAX_PVXEXPIRYTIMESTAMP_LEN      20
63 #define MAX_PVXRANDOMFILLER_LEN         16
64 #define MAX_PVXDIGITALSIGNATURE_LEN     40
65 
66 class CPVXInfo
67 {
68     public:
69         OSCL_IMPORT_REF CPVXInfo(void);
70         OSCL_IMPORT_REF ~CPVXInfo();
71         void Reset(void);
72         bool iSecurity;
73         OSCL_StackString<MAX_PVXUSERID_LEN>iUserID;
74         OSCL_StackString<MAX_PVXAPPSPECIFICSTRING_LEN>iAppSpecificString;
75         OSCL_StackString<MAX_PVXSESSIONID_LEN>iSessionID;
76         OSCL_StackString<MAX_PVXEXPIRYTIMESTAMP_LEN>iExpiryTimeStamp;
77         OSCL_StackString<MAX_PVXRANDOMFILLER_LEN>iRandomFiller;
78         OSCL_StackString<MAX_PVXDIGITALSIGNATURE_LEN>iDigitalSignature;
79 
80         typedef enum
81         {
82             ENoAction           = 0,
83             ECloseApp,
84             ENextUrl
85         } TPVEndOfClipAction;
86 
87         typedef enum        // For Download only
88         {
89             ENoPlayback         = 0,
90             EAfterDownload,
91             EAsap,
92             EReserve
93         } TPVPlaybackControl;
94 
95         // Imperial specific data
96         int16 iPVXVersion;
97         int32 iStartTime;
98         int32 iEndTime;
99         int32 iFlags;
100         bool iDownload;
101         bool iPurge;
102         bool iRandomPos;
103         TPVPlaybackControl  iPlaybackControl;
104         bool iUserPlayback;
105         TPVEndOfClipAction  iEndOfClip;
106         OSCL_wHeapStringA iLaunchURL;
107 };
108 
109 
110 class CPVXParser
111 {
112     public:
113 
114         typedef enum
115         {
116             CPVXParser_Success,
117             CPVXParser_InvalidSize,
118             CPVXParser_URLCorrupted
119         } CPVXParserStatus;
120         /**
121          * This routine parses the .pvx file.
122          * @param aPVX: (input param) .pvx file.
123          * @param aClipURL: (output param) the target URL
124          * @param aPVXInfo: (output param) additional information in the .pvx file
125          * @return Error code
126          */
127         OSCL_IMPORT_REF CPVXParserStatus ParsePVX(OsclMemoryFragment &aPVX, OSCL_HeapString<OsclMemAllocator>& aClipURL, CPVXInfo& aPVXInfo);
128         OSCL_IMPORT_REF CPVXParser(void);
129 
130     private:
131         int16 BufToShortInt(uint8* data);
132         int32 BufToLongInt(uint8* data);
133         PVLogger* iLogger;
134 };
135 
136 # endif
137 
138