• 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 COMMONINFO_H
20 #define COMMONINFO_H
21 
22 
23 #include "rtsp_range_utils.h"
24 #include "oscl_types.h"
25 #include "oscl_string_containers.h"
26 #include "sdp_memory.h"
27 #include "pvmi_kvp.h"
28 
29 #define MAX_METRICS_NAME    7
30 #define ASSET_NAME_SIZE     13
31 #define MAX_ALTERNATIVES    16
32 #define ALT_SIZE            128
33 
34 
35 //code in basemediainfoparser.cpp depends on FIRST_STATIC_PAYLOAD == 0
36 #define FIRST_STATIC_PAYLOAD 0
37 #define LAST_STATIC_PAYLOAD 33
38 
39 #define PVMF_PCMU 0
40 #define PVMF_PCMA 8
41 
42 #define PVMF_MIME_PCMU "PCMU"
43 #define PVMF_MIME_PCMA "PCMA"
44 
45 
46 
47 struct QoEMetricsType
48 {
49     enum
50     {
51         INITIAL_BUFFERING_DURATION, REBUFFERING_DURATION,
52         CORRUPTION_DURATION, SUCESSIVE_LOSS, FRAMERATE_DEVIATION,
53         JITTER_DURATION, DECODED_BYTES
54     };
55 
56     //if a Metrics_Name is present, corresponding array component will be true.
57     bool name[MAX_METRICS_NAME];
58     enum { END, VAL };
59     int rateFmt;
60     union
61     {
62         char rateEnd;
63         int  rateVal;
64     };
65 
66     RtspRangeType range;
67 
68     enum { STATUS, IDIGIT, FDIGIT };
69     int paramFmt;
70     union
71     {
72         bool paramExtStat;  // (true = On)/(false = Off)
73         int paramExtIdigit;
74         OsclFloat paramExtFdigit;
75     };
76 
77 
78 };
79 
80 #define MAX_ASSET_INFO_KEYWORDS 256
81 
82 class AssetInfoType
83 {
84     public:
85         enum
86         {
87             TITLE = 0,
88             DESCRIPTION = 1,
89             COPYRIGHT = 2,
90             PERFORMER = 3,
91             AUTHOR = 4,
92             GENRE = 5,
93             RATING = 6,
94             CLASSIFICATION = 7,
95             KEYWORDS = 8,
96             LOCATION = 9,
97             ALBUM = 10,
98             RECORDINGYEAR = 11,
99             ASSET_EXTENTION = 12
100         };
101 
AssetInfoType()102         AssetInfoType()
103         {
104             ResetAssetInfoType();
105         };
106 
ResetAssetInfoType()107         void ResetAssetInfoType()
108         {
109             URL = NULL;
110             int ii;
111             for (ii = 0; ii < ASSET_NAME_SIZE; ii++)
112             {
113                 Box[ii] = NULL;
114             }
115             oTitlePresent = false;
116             oDescriptionPresent = false;
117             oCopyRightPresent = false;
118             oPerformerPresent = false;
119             oAuthorPresent = false;
120             oGenrePresent  = false;
121             oRatingPresent  = false;
122             oClassificationPresent = false;
123             oKeyWordsPresent = false;
124             iNumKeyWords = 0;
125             for (ii = 0; ii < MAX_ASSET_INFO_KEYWORDS; ii++)
126             {
127                 KeyWords[ii] = NULL;
128             }
129             oLocationPresent = false;
130             oAlbumPresent = false;
131             oRecordingYearPresent = false;
132             oAssetExtensionPresent = false;
133             iRecordingYear = 0;
134             CleanUp();
135         };
136 
CleanUp()137         void CleanUp()
138         {
139             if (iLocationStruct._location_name != NULL)
140             {
141                 oscl_free(iLocationStruct._location_name);
142                 iLocationStruct._location_name = NULL;
143             }
144             if (iLocationStruct._astronomical_body != NULL)
145             {
146                 oscl_free(iLocationStruct._astronomical_body);
147                 iLocationStruct._astronomical_body = NULL;
148             }
149             if (iLocationStruct._additional_notes != NULL)
150             {
151                 oscl_free(iLocationStruct._additional_notes);
152                 iLocationStruct._additional_notes = NULL;
153             }
154         };
155 
156         AssetInfoType& operator=(const AssetInfoType& a)
157         {
158             if (&a != this)
159             {
160                 MyCopy(a);
161             }
162             return *this;
163         }
164 
165         OSCL_HeapString<SDPParserAlloc> URL;
166         OSCL_HeapString<SDPParserAlloc> Box[ASSET_NAME_SIZE];
167         bool oTitlePresent;
168         bool oDescriptionPresent;
169         bool oCopyRightPresent;
170         bool oPerformerPresent;
171         bool oAuthorPresent;
172         bool oGenrePresent;
173         bool oRatingPresent;
174         bool oClassificationPresent;
175         bool oKeyWordsPresent;
176         uint32 iNumKeyWords;
177         OSCL_HeapString<SDPParserAlloc> KeyWords[MAX_ASSET_INFO_KEYWORDS];
178         bool oLocationPresent;
179         bool oAlbumPresent;
180         bool oAssetExtensionPresent;
181         bool oRecordingYearPresent;
182         uint16 iRecordingYear;
183         PvmfAssetInfo3GPPLocationStruct iLocationStruct;
184 
185     private:
MyCopy(const AssetInfoType & a)186         void MyCopy(const AssetInfoType&a)
187         {
188             URL = a.URL;
189             int ii = 0;
190             for (ii = 0; ii < ASSET_NAME_SIZE; ii++)
191             {
192                 Box[ii] = a.Box[ii];
193             }
194             oTitlePresent = a.oTitlePresent;
195             oDescriptionPresent = a.oDescriptionPresent;
196             oCopyRightPresent = a.oCopyRightPresent;
197             oPerformerPresent = a.oPerformerPresent;
198             oAuthorPresent = a.oAuthorPresent;
199             oGenrePresent  = a.oGenrePresent;
200             oRatingPresent  = a.oRatingPresent;
201             oClassificationPresent = a.oClassificationPresent;
202             oKeyWordsPresent = a.oKeyWordsPresent;
203             iNumKeyWords = a.iNumKeyWords;
204             for (ii = 0; ii < MAX_ASSET_INFO_KEYWORDS; ii++)
205             {
206                 KeyWords[ii] = a.KeyWords[ii];
207             }
208             oLocationPresent = a.oLocationPresent;
209             oAlbumPresent = a.oAlbumPresent;
210             oRecordingYearPresent = a.oRecordingYearPresent;
211             iRecordingYear = a.iRecordingYear;
212             oAssetExtensionPresent = a.oAssetExtensionPresent;
213             iLocationStruct = a.iLocationStruct;
214         }
215 };
216 
217 
218 struct altGpBWType
219 {
220 
221     uint32 group;   //4 bits represent one alt-id hence "group" can represent
222     //a group of 8 alt-ids. e.g for a=alt-group=BW:AS:28=1,2,4,5
223     //group represent 1,2,4,5. Hence group=0x5421
224     uint32 val;
225 
226 };
227 
228 struct altGpLANGType
229 {
230 
231     uint32 group;   //4 bits represent one alt-id hence "group" can represent
232     //a group of 8 alt-ids. e.g for a=alt-group=LANG:RFC3066:en-US=1,2,4,5
233     //group represent 1,2,4,5. Hence group=0x5421
234     OSCL_HeapString<SDPParserAlloc> val;
235 };
236 
237 typedef struct _connectionInfo
238 {
239     OSCL_HeapString<SDPParserAlloc> connectionNetworkType; //Add set and get methods.
240     OSCL_HeapString<SDPParserAlloc> connectionAddressType;
241     OSCL_HeapString<SDPParserAlloc> connectionAddress;
242 
243 
244 } connectionInfo;
245 
246 #endif
247