/* ------------------------------------------------------------------ * 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 COMMONINFO_H #define COMMONINFO_H #include "rtsp_range_utils.h" #include "oscl_types.h" #include "oscl_string_containers.h" #include "sdp_memory.h" #include "pvmi_kvp.h" #define MAX_METRICS_NAME 7 #define ASSET_NAME_SIZE 13 #define MAX_ALTERNATIVES 16 #define ALT_SIZE 128 //code in basemediainfoparser.cpp depends on FIRST_STATIC_PAYLOAD == 0 #define FIRST_STATIC_PAYLOAD 0 #define LAST_STATIC_PAYLOAD 33 #define PVMF_PCMU 0 #define PVMF_PCMA 8 #define PVMF_MIME_PCMU "PCMU" #define PVMF_MIME_PCMA "PCMA" struct QoEMetricsType { enum { INITIAL_BUFFERING_DURATION, REBUFFERING_DURATION, CORRUPTION_DURATION, SUCESSIVE_LOSS, FRAMERATE_DEVIATION, JITTER_DURATION, DECODED_BYTES }; //if a Metrics_Name is present, corresponding array component will be true. bool name[MAX_METRICS_NAME]; enum { END, VAL }; int rateFmt; union { char rateEnd; int rateVal; }; RtspRangeType range; enum { STATUS, IDIGIT, FDIGIT }; int paramFmt; union { bool paramExtStat; // (true = On)/(false = Off) int paramExtIdigit; OsclFloat paramExtFdigit; }; }; #define MAX_ASSET_INFO_KEYWORDS 256 class AssetInfoType { public: enum { TITLE = 0, DESCRIPTION = 1, COPYRIGHT = 2, PERFORMER = 3, AUTHOR = 4, GENRE = 5, RATING = 6, CLASSIFICATION = 7, KEYWORDS = 8, LOCATION = 9, ALBUM = 10, RECORDINGYEAR = 11, ASSET_EXTENTION = 12 }; AssetInfoType() { ResetAssetInfoType(); }; void ResetAssetInfoType() { URL = NULL; int ii; for (ii = 0; ii < ASSET_NAME_SIZE; ii++) { Box[ii] = NULL; } oTitlePresent = false; oDescriptionPresent = false; oCopyRightPresent = false; oPerformerPresent = false; oAuthorPresent = false; oGenrePresent = false; oRatingPresent = false; oClassificationPresent = false; oKeyWordsPresent = false; iNumKeyWords = 0; for (ii = 0; ii < MAX_ASSET_INFO_KEYWORDS; ii++) { KeyWords[ii] = NULL; } oLocationPresent = false; oAlbumPresent = false; oRecordingYearPresent = false; oAssetExtensionPresent = false; iRecordingYear = 0; CleanUp(); }; void CleanUp() { if (iLocationStruct._location_name != NULL) { oscl_free(iLocationStruct._location_name); iLocationStruct._location_name = NULL; } if (iLocationStruct._astronomical_body != NULL) { oscl_free(iLocationStruct._astronomical_body); iLocationStruct._astronomical_body = NULL; } if (iLocationStruct._additional_notes != NULL) { oscl_free(iLocationStruct._additional_notes); iLocationStruct._additional_notes = NULL; } }; AssetInfoType& operator=(const AssetInfoType& a) { if (&a != this) { MyCopy(a); } return *this; } OSCL_HeapString URL; OSCL_HeapString Box[ASSET_NAME_SIZE]; bool oTitlePresent; bool oDescriptionPresent; bool oCopyRightPresent; bool oPerformerPresent; bool oAuthorPresent; bool oGenrePresent; bool oRatingPresent; bool oClassificationPresent; bool oKeyWordsPresent; uint32 iNumKeyWords; OSCL_HeapString KeyWords[MAX_ASSET_INFO_KEYWORDS]; bool oLocationPresent; bool oAlbumPresent; bool oAssetExtensionPresent; bool oRecordingYearPresent; uint16 iRecordingYear; PvmfAssetInfo3GPPLocationStruct iLocationStruct; private: void MyCopy(const AssetInfoType&a) { URL = a.URL; int ii = 0; for (ii = 0; ii < ASSET_NAME_SIZE; ii++) { Box[ii] = a.Box[ii]; } oTitlePresent = a.oTitlePresent; oDescriptionPresent = a.oDescriptionPresent; oCopyRightPresent = a.oCopyRightPresent; oPerformerPresent = a.oPerformerPresent; oAuthorPresent = a.oAuthorPresent; oGenrePresent = a.oGenrePresent; oRatingPresent = a.oRatingPresent; oClassificationPresent = a.oClassificationPresent; oKeyWordsPresent = a.oKeyWordsPresent; iNumKeyWords = a.iNumKeyWords; for (ii = 0; ii < MAX_ASSET_INFO_KEYWORDS; ii++) { KeyWords[ii] = a.KeyWords[ii]; } oLocationPresent = a.oLocationPresent; oAlbumPresent = a.oAlbumPresent; oRecordingYearPresent = a.oRecordingYearPresent; iRecordingYear = a.iRecordingYear; oAssetExtensionPresent = a.oAssetExtensionPresent; iLocationStruct = a.iLocationStruct; } }; struct altGpBWType { uint32 group; //4 bits represent one alt-id hence "group" can represent //a group of 8 alt-ids. e.g for a=alt-group=BW:AS:28=1,2,4,5 //group represent 1,2,4,5. Hence group=0x5421 uint32 val; }; struct altGpLANGType { uint32 group; //4 bits represent one alt-id hence "group" can represent //a group of 8 alt-ids. e.g for a=alt-group=LANG:RFC3066:en-US=1,2,4,5 //group represent 1,2,4,5. Hence group=0x5421 OSCL_HeapString val; }; typedef struct _connectionInfo { OSCL_HeapString connectionNetworkType; //Add set and get methods. OSCL_HeapString connectionAddressType; OSCL_HeapString connectionAddress; } connectionInfo; #endif