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 // ----------------------------------------------------------------------
     19 //
     20 // This Software is an original work of authorship of PacketVideo Corporation.
     21 // Portions of the Software were developed in collaboration with NTT  DoCoMo,
     22 // Inc. or were derived from the public domain or materials licensed from
     23 // third parties.  Title and ownership, including all intellectual property
     24 // rights in and to the Software shall remain with PacketVideo Corporation
     25 // and NTT DoCoMo, Inc.
     26 //
     27 // -----------------------------------------------------------------------
     28 /*****************************************************************************/
     29 /*  file name            : tsc_capability.h                                  */
     30 /*  file contents        :                                                   */
     31 /*  draw                 : '96.10.09                                         */
     32 /*---------------------------------------------------------------------------*/
     33 /*  amendment                                                                */
     34 /*              Copyright (C) 1996 NTT DoCoMo                                */
     35 /*****************************************************************************/
     36 
     37 #ifndef TSCCAPABILILTY_H_INCLUDED
     38 #define TSCCAPABILILTY_H_INCLUDED
     39 
     40 
     41 #ifndef PVLOGGER_H_INCLUDED
     42 #include "pvlogger.h"
     43 #endif
     44 
     45 #ifndef TSC_H_INCLUDED
     46 #include "tsc.h"
     47 #endif
     48 
     49 #ifndef H245DEF_H_INCLUDED
     50 #include "h245def.h"
     51 #endif
     52 
     53 #ifndef H245PRI_H_INCLUDED
     54 #include "h245pri.h"
     55 #endif
     56 
     57 #ifndef TSC_CONSTANTS_H_INCLUDED
     58 #include "tsc_constants.h"
     59 #endif
     60 
     61 
     62 class TSC_statemanager;
     63 class TSC_component;
     64 
     65 class TSC_capability
     66 {
     67     public:
     68         TSC_capability(TSC_statemanager& aTSCstatemanager) :
     69                 iTSCstatemanager(aTSCstatemanager),
     70                 iRemoteCapability(NULL)
     71         {
     72             iLogger = PVLogger::GetLoggerObject("3g324m.h245user");
     73         };
     74 
     75         ~TSC_capability();
     76 
     77         void SetMembers(TSC_component* aTSCcomponent)
     78         {
     79             iTSCcomponent = aTSCcomponent;
     80         }
     81         void InitVarsSession();
     82         void InitVarsLocal();
     83 
     84         CPvtTerminalCapability* GetRemoteCapability();
     85         uint32 GetRemoteBitrate(PVCodecType_t codec_type);
     86         void ResetCapability();
     87         void CreateNewCapability(Oscl_Vector<CPvtMediaCapability*, OsclMemAllocator> aCapabilityItems)
     88         {
     89             iRemoteCapability = new CPvtTerminalCapability(aCapabilityItems);
     90         }
     91         void ExtractTcsParameters(PS_VideoCapability apVideo, CPvtH263Capability *aMedia_capability);
     92         void ExtractTcsParameters(PS_VideoCapability pVideo, CPvtMpeg4Capability *aMedia_capability);
     93         void ParseTcsCapabilities(S_Capability &aCapability, Oscl_Vector<CPvtMediaCapability*, OsclMemAllocator> &aMedia_capability, uint32 userInputCapabilities, S_UserInputCapability *aUserInputCapability);
     94         bool IsSegmentable(TPVDirection direction, PV2WayMediaType media_type);
     95 
     96         PS_DataType GetOutgoingDataType(PVCodecType_t codecType, uint32 bitrate, uint16 csi_len, uint8* csi);
     97         PS_H223LogicalChannelParameters GetOutgoingLcnParams(PV2WayMediaType media_type,
     98                 PS_AdaptationLayerType adaptation_layer);
     99         PVMFStatus ValidateIncomingDataType(bool forRev, PS_DataType pDataType);
    100         PVMFStatus ValidateIncomingH223LcnParams(PS_H223LogicalChannelParameters h223params, TPVDirection dir);
    101         PVMFStatus ValidateForwardReverseParams(PS_ForwardReverseParam forRevParams, TPVDirection dir);
    102         bool VerifyReverseParameters(PS_ForwardReverseParam forRevParams,
    103                                      TSCObserver* aObserver,
    104                                      PVMFStatus& status);
    105         uint32 GetMaxBitrateForOutgoingChannel(PVCodecType_t codecType);
    106         PS_DataType GetDataType(PVCodecType_t codecType, uint32 bitrate, const uint8* dci, uint16 dci_len);
    107         uint16 GetSupportedCodecCapabilityInfo(TPVDirection dir,
    108                                                PV2WayMediaType mediaType,
    109                                                Oscl_Vector<CodecCapabilityInfo*, OsclMemAllocator>& cci);
    110         bool HasSymmetryConstraint(Oscl_Vector<CodecCapabilityInfo*, OsclMemAllocator>& codec_list);
    111         CodecCapabilityInfo* SelectOutgoingCodec(Oscl_Vector<CodecCapabilityInfo*, OsclMemAllocator>* remote_list,
    112                 Oscl_Vector<CodecCapabilityInfo*, OsclMemAllocator>* local_list);
    113         CodecCapabilityInfo* SelectOutgoingCodec(Oscl_Vector<CodecCapabilityInfo*, OsclMemAllocator>* remote_list);
    114 
    115 
    116         Oscl_Vector<PVMFVideoResolutionRange, OsclMemAllocator> GetResolutions(TPVDirection dir);
    117         void SetVideoResolutions(TPVDirection dir,
    118                                  Oscl_Vector<PVMFVideoResolutionRange, OsclMemAllocator>& resolutions);
    119 
    120 
    121     private:
    122 
    123         // -------------------------------------------------
    124         // Parameters extracted from incoming TCS (RAN-32K)
    125         // -------------------------------------------------
    126         uint32 iTcsIn_H263_sqcifMPI;        // Units 1/30 second
    127         uint32 iTcsIn_H263_qcifMPI;     // Units 1/30 second
    128         uint32 iTcsIn_H263_cifMPI;      // Units 1/30 second
    129         uint32 iTcsIn_H263_4cifMPI;     // Units 1/30 second
    130         uint32 iTcsIn_H263_16cifMPI;        // Units 1/30 second
    131 
    132 
    133         /* Video resolutions */
    134         Oscl_Vector<PVMFVideoResolutionRange, OsclMemAllocator> iResolutionsRx;
    135         Oscl_Vector<PVMFVideoResolutionRange, OsclMemAllocator> iResolutionsTx;
    136 
    137         TSC_statemanager& iTSCstatemanager;
    138         /* Capability of local and remote and mutual capabiliites */
    139         CPvtTerminalCapability* iRemoteCapability;
    140         PVLogger* iLogger;
    141 
    142 
    143         TSC_component* iTSCcomponent;
    144 };
    145 
    146 #endif
    147 
    148