/* Copyright (C) Microsoft Corporation 1999, All rights reserved. */ #ifndef __H245FMT_H__ #define __H245FMT_H__ #ifdef __cplusplus extern "C" { #endif /* This file defines the structural interface that exists between installable H.245-compatible filter components and core TAPI MSP components. */ // FORMAT_H245VERSION indicates the version number of H.245 that // was in effect at the time the module was compiled. Core MSP // maintain backward compatibility with modules compiled using this // header file. #define FORMAT_H245VERSION 3 /* The following data types are defined here to be consistent with the ASN.1 library that is/was used to build TAPI core components. If the ASN core files are also to be included, they must be included before including this file. */ #ifndef __MS_ASN1_H__ // avoid duplicate definitions when msasn1.h is included #define __MS_ASN1_H__ /* ------ Basic integer types ------ */ typedef unsigned char ASN1uint8_t; typedef signed char ASN1int8_t; typedef unsigned short ASN1uint16_t; typedef signed short ASN1int16_t; typedef unsigned long ASN1uint32_t; typedef signed long ASN1int32_t; typedef ASN1int32_t ASN1enum_t; // enumerated type typedef ASN1uint16_t ASN1choice_t; // choice /* ------ Basic ASN.1 types ------ */ typedef ASN1uint8_t ASN1octet_t; typedef ASN1uint8_t ASN1bool_t; typedef struct ASN1objectidentifier_s { struct ASN1objectidentifier_s *next; ASN1uint32_t value; }*ASN1objectidentifier_t; typedef struct tagASN1octetstring_t { ASN1uint32_t length; ASN1octet_t *value; }ASN1octetstring_t; #endif __MS_ASN1_H__ #ifndef _H245ASN_Module_H_ // avoid duplicate definitions when h245asn.h is included #define _H245ASN_Module_H_ /* ------ H.245 audio and video structures ------ */ typedef ASN1uint16_t CustomPictureFormat_pixelAspectInformation_pixelAspectCode_Set; typedef ASN1uint16_t RTPH263VideoRedundancyEncoding_containedThreads_Seq; typedef ASN1uint16_t RTPH263VideoRedundancyFrameMapping_frameSequence_Seq; typedef struct RedundancyEncodingCapability_secondaryEncoding * PRedundancyEncodingCapability_secondaryEncoding; typedef struct RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom * PRTPH263VideoRedundancyEncoding_frameToThreadMapping_custom; typedef struct H263Options_customPictureFormat * PH263Options_customPictureFormat; typedef struct H263Options_customPictureClockFrequency * PH263Options_customPictureClockFrequency; typedef struct H263Options_modeCombos * PH263Options_modeCombos; typedef struct EnhancementLayerInfo_bPictureEnhancement * PEnhancementLayerInfo_bPictureEnhancement; typedef struct EnhancementLayerInfo_spatialEnhancement * PEnhancementLayerInfo_spatialEnhancement; typedef struct EnhancementLayerInfo_snrEnhancement * PEnhancementLayerInfo_snrEnhancement; typedef struct H2250Capability_redundancyEncodingCapability * PH2250Capability_redundancyEncodingCapability; typedef struct EncryptionCapability * PEncryptionCapability; typedef ASN1uint16_t CapabilityTableEntryNumber; typedef struct NonStandardIdentifier_h221NonStandard { ASN1uint16_t t35CountryCode; ASN1uint16_t t35Extension; ASN1uint16_t manufacturerCode; } NonStandardIdentifier_h221NonStandard; typedef struct NonStandardIdentifier { ASN1choice_t choice; union { # define object_chosen 1 ASN1objectidentifier_t object; # define h221NonStandard_chosen 2 NonStandardIdentifier_h221NonStandard h221NonStandard; } u; } NonStandardIdentifier; typedef struct NonStandardParameter { NonStandardIdentifier nonStandardIdentifier; ASN1octetstring_t data; } NonStandardParameter; typedef struct CustomPictureFormat_pixelAspectInformation_extendedPAR_Set { ASN1uint16_t width; ASN1uint16_t height; } CustomPictureFormat_pixelAspectInformation_extendedPAR_Set; typedef struct CustomPictureFormat_mPI_customPCF_Set { ASN1uint16_t clockConversionCode; ASN1uint16_t clockDivisor; ASN1uint16_t customMPI; } CustomPictureFormat_mPI_customPCF_Set; typedef struct VCCapability_availableBitRates_type_rangeOfBitRates { ASN1uint16_t lowerBitRate; ASN1uint16_t higherBitRate; } VCCapability_availableBitRates_type_rangeOfBitRates; typedef struct CustomPictureFormat_mPI_customPCF { ASN1uint32_t count; CustomPictureFormat_mPI_customPCF_Set value[16]; } CustomPictureFormat_mPI_customPCF; typedef struct CustomPictureFormat_pixelAspectInformation_extendedPAR { ASN1uint32_t count; CustomPictureFormat_pixelAspectInformation_extendedPAR_Set value[256]; } CustomPictureFormat_pixelAspectInformation_extendedPAR; typedef struct CustomPictureFormat_pixelAspectInformation_pixelAspectCode { ASN1uint32_t count; CustomPictureFormat_pixelAspectInformation_pixelAspectCode_Set value[14]; } CustomPictureFormat_pixelAspectInformation_pixelAspectCode; typedef struct H263VideoMode_resolution { ASN1choice_t choice; # define sqcif_chosen 1 # define H263VideoMode_resolution_qcif_chosen 2 # define H263VideoMode_resolution_cif_chosen 3 # define cif4_chosen 4 # define cif16_chosen 5 } H263VideoMode_resolution; typedef struct H262VideoMode_profileAndLevel { ASN1choice_t choice; # define profileAndLevel_SPatML_chosen 1 # define profileAndLevel_MPatLL_chosen 2 # define profileAndLevel_MPatML_chosen 3 # define profileAndLevel_MPatH_14_chosen 4 # define profileAndLevel_MPatHL_chosen 5 # define profileAndLevel_SNRatLL_chosen 6 # define profileAndLevel_SNRatML_chosen 7 # define profileAndLevel_SpatialatH_14_chosen 8 # define profileAndLevel_HPatML_chosen 9 # define profileAndLevel_HPatH_14_chosen 10 # define profileAndLevel_HPatHL_chosen 11 } H262VideoMode_profileAndLevel; typedef struct H261VideoMode_resolution { ASN1choice_t choice; # define H261VideoMode_resolution_qcif_chosen 1 # define H261VideoMode_resolution_cif_chosen 2 } H261VideoMode_resolution; typedef struct CustomPictureFormat_pixelAspectInformation { ASN1choice_t choice; union { # define anyPixelAspectRatio_chosen 1 ASN1bool_t anyPixelAspectRatio; # define pixelAspectCode_chosen 2 CustomPictureFormat_pixelAspectInformation_pixelAspectCode pixelAspectCode; # define extendedPAR_chosen 3 CustomPictureFormat_pixelAspectInformation_extendedPAR extendedPAR; } u; } CustomPictureFormat_pixelAspectInformation; typedef struct CustomPictureFormat_mPI { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define standardMPI_present 0x80 ASN1uint16_t standardMPI; # define customPCF_present 0x40 CustomPictureFormat_mPI_customPCF customPCF; } CustomPictureFormat_mPI; typedef struct RefPictureSelection_videoBackChannelSend { ASN1choice_t choice; # define RefPictureSelection_videoBackChannelSend_none_chosen 1 # define ackMessageOnly_chosen 2 # define nackMessageOnly_chosen 3 # define ackOrNackMessageOnly_chosen 4 # define ackAndNackMessage_chosen 5 } RefPictureSelection_videoBackChannelSend; typedef struct RefPictureSelection_additionalPictureMemory { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define sqcifAdditionalPictureMemory_present 0x80 ASN1uint16_t sqcifAdditionalPictureMemory; # define qcifAdditionalPictureMemory_present 0x40 ASN1uint16_t qcifAdditionalPictureMemory; # define cifAdditionalPictureMemory_present 0x20 ASN1uint16_t cifAdditionalPictureMemory; # define cif4AdditionalPictureMemory_present 0x10 ASN1uint16_t cif4AdditionalPictureMemory; # define cif16AdditionalPictureMemory_present 0x8 ASN1uint16_t cif16AdditionalPictureMemory; # define bigCpfAdditionalPictureMemory_present 0x4 ASN1uint16_t bigCpfAdditionalPictureMemory; } RefPictureSelection_additionalPictureMemory; typedef struct RTPH263VideoRedundancyFrameMapping_frameSequence { ASN1uint32_t count; RTPH263VideoRedundancyFrameMapping_frameSequence_Seq value[256]; } RTPH263VideoRedundancyFrameMapping_frameSequence; typedef struct RTPH263VideoRedundancyEncoding_containedThreads { ASN1uint32_t count; RTPH263VideoRedundancyEncoding_containedThreads_Seq value[256]; } RTPH263VideoRedundancyEncoding_containedThreads; typedef struct RTPH263VideoRedundancyEncoding_frameToThreadMapping { ASN1choice_t choice; union { # define roundrobin_chosen 1 # define custom_chosen 2 PRTPH263VideoRedundancyEncoding_frameToThreadMapping_custom custom; } u; } RTPH263VideoRedundancyEncoding_frameToThreadMapping; typedef struct RedundancyEncodingCapability_secondaryEncoding { PRedundancyEncodingCapability_secondaryEncoding next; CapabilityTableEntryNumber value; } RedundancyEncodingCapability_secondaryEncoding_Element; typedef struct RTPH263VideoRedundancyEncoding { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1uint16_t numberOfThreads; ASN1uint16_t framesBetweenSyncPoints; RTPH263VideoRedundancyEncoding_frameToThreadMapping frameToThreadMapping; # define containedThreads_present 0x80 RTPH263VideoRedundancyEncoding_containedThreads containedThreads; } RTPH263VideoRedundancyEncoding; typedef struct RTPH263VideoRedundancyFrameMapping { ASN1uint16_t threadNumber; RTPH263VideoRedundancyFrameMapping_frameSequence frameSequence; } RTPH263VideoRedundancyFrameMapping; typedef struct H261VideoCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define H261VideoCapability_qcifMPI_present 0x80 ASN1uint16_t qcifMPI; # define H261VideoCapability_cifMPI_present 0x40 ASN1uint16_t cifMPI; ASN1bool_t temporalSpatialTradeOffCapability; ASN1uint16_t maxBitRate; ASN1bool_t stillImageTransmission; } H261VideoCapability; typedef struct H262VideoCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1bool_t profileAndLevel_SPatML; ASN1bool_t profileAndLevel_MPatLL; ASN1bool_t profileAndLevel_MPatML; ASN1bool_t profileAndLevel_MPatH_14; ASN1bool_t profileAndLevel_MPatHL; ASN1bool_t profileAndLevel_SNRatLL; ASN1bool_t profileAndLevel_SNRatML; ASN1bool_t profileAndLevel_SpatialatH_14; ASN1bool_t profileAndLevel_HPatML; ASN1bool_t profileAndLevel_HPatH_14; ASN1bool_t profileAndLevel_HPatHL; # define H262VideoCapability_videoBitRate_present 0x80 ASN1uint32_t videoBitRate; # define H262VideoCapability_vbvBufferSize_present 0x40 ASN1uint32_t vbvBufferSize; # define H262VideoCapability_samplesPerLine_present 0x20 ASN1uint16_t samplesPerLine; # define H262VideoCapability_linesPerFrame_present 0x10 ASN1uint16_t linesPerFrame; # define H262VideoCapability_framesPerSecond_present 0x8 ASN1uint16_t framesPerSecond; # define H262VideoCapability_luminanceSampleRate_present 0x4 ASN1uint32_t luminanceSampleRate; } H262VideoCapability; typedef struct EnhancementLayerInfo { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1bool_t baseBitRateConstrained; # define snrEnhancement_present 0x80 PEnhancementLayerInfo_snrEnhancement snrEnhancement; # define spatialEnhancement_present 0x40 PEnhancementLayerInfo_spatialEnhancement spatialEnhancement; # define bPictureEnhancement_present 0x20 PEnhancementLayerInfo_bPictureEnhancement bPictureEnhancement; } EnhancementLayerInfo; typedef struct TransparencyParameters { ASN1uint16_t presentationOrder; ASN1int32_t offset_x; ASN1int32_t offset_y; ASN1uint16_t scale_x; ASN1uint16_t scale_y; } TransparencyParameters; typedef struct RefPictureSelection { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define additionalPictureMemory_present 0x80 RefPictureSelection_additionalPictureMemory additionalPictureMemory; ASN1bool_t videoMux; RefPictureSelection_videoBackChannelSend videoBackChannelSend; } RefPictureSelection; typedef struct CustomPictureClockFrequency { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1uint16_t clockConversionCode; ASN1uint16_t clockDivisor; # define CustomPictureClockFrequency_sqcifMPI_present 0x80 ASN1uint16_t sqcifMPI; # define CustomPictureClockFrequency_qcifMPI_present 0x40 ASN1uint16_t qcifMPI; # define CustomPictureClockFrequency_cifMPI_present 0x20 ASN1uint16_t cifMPI; # define CustomPictureClockFrequency_cif4MPI_present 0x10 ASN1uint16_t cif4MPI; # define CustomPictureClockFrequency_cif16MPI_present 0x8 ASN1uint16_t cif16MPI; } CustomPictureClockFrequency; typedef struct CustomPictureFormat { ASN1uint16_t maxCustomPictureWidth; ASN1uint16_t maxCustomPictureHeight; ASN1uint16_t minCustomPictureWidth; ASN1uint16_t minCustomPictureHeight; CustomPictureFormat_mPI mPI; CustomPictureFormat_pixelAspectInformation pixelAspectInformation; } CustomPictureFormat; typedef struct H263ModeComboFlags { ASN1bool_t unrestrictedVector; ASN1bool_t arithmeticCoding; ASN1bool_t advancedPrediction; ASN1bool_t pbFrames; ASN1bool_t advancedIntraCodingMode; ASN1bool_t deblockingFilterMode; ASN1bool_t unlimitedMotionVectors; ASN1bool_t slicesInOrder_NonRect; ASN1bool_t slicesInOrder_Rect; ASN1bool_t slicesNoOrder_NonRect; ASN1bool_t slicesNoOrder_Rect; ASN1bool_t improvedPBFramesMode; ASN1bool_t referencePicSelect; ASN1bool_t dynamicPictureResizingByFour; ASN1bool_t dynamicPictureResizingSixteenthPel; ASN1bool_t dynamicWarpingHalfPel; ASN1bool_t dynamicWarpingSixteenthPel; ASN1bool_t reducedResolutionUpdate; ASN1bool_t independentSegmentDecoding; ASN1bool_t alternateInterVLCMode; ASN1bool_t modifiedQuantizationMode; } H263ModeComboFlags; typedef struct IS11172VideoCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1bool_t constrainedBitstream; # define IS11172VideoCapability_videoBitRate_present 0x80 ASN1uint32_t videoBitRate; # define IS11172VideoCapability_vbvBufferSize_present 0x40 ASN1uint32_t vbvBufferSize; # define IS11172VideoCapability_samplesPerLine_present 0x20 ASN1uint16_t samplesPerLine; # define IS11172VideoCapability_linesPerFrame_present 0x10 ASN1uint16_t linesPerFrame; # define IS11172VideoCapability_pictureRate_present 0x8 ASN1uint16_t pictureRate; # define IS11172VideoCapability_luminanceSampleRate_present 0x4 ASN1uint32_t luminanceSampleRate; } IS11172VideoCapability; typedef struct H261VideoMode { H261VideoMode_resolution resolution; ASN1uint16_t bitRate; ASN1bool_t stillImageTransmission; } H261VideoMode; typedef struct H262VideoMode { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; H262VideoMode_profileAndLevel profileAndLevel; # define H262VideoMode_videoBitRate_present 0x80 ASN1uint32_t videoBitRate; # define H262VideoMode_vbvBufferSize_present 0x40 ASN1uint32_t vbvBufferSize; # define H262VideoMode_samplesPerLine_present 0x20 ASN1uint16_t samplesPerLine; # define H262VideoMode_linesPerFrame_present 0x10 ASN1uint16_t linesPerFrame; # define H262VideoMode_framesPerSecond_present 0x8 ASN1uint16_t framesPerSecond; # define H262VideoMode_luminanceSampleRate_present 0x4 ASN1uint32_t luminanceSampleRate; } H262VideoMode; typedef struct IS11172VideoMode { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1bool_t constrainedBitstream; # define IS11172VideoMode_videoBitRate_present 0x80 ASN1uint32_t videoBitRate; # define IS11172VideoMode_vbvBufferSize_present 0x40 ASN1uint32_t vbvBufferSize; # define IS11172VideoMode_samplesPerLine_present 0x20 ASN1uint16_t samplesPerLine; # define IS11172VideoMode_linesPerFrame_present 0x10 ASN1uint16_t linesPerFrame; # define IS11172VideoMode_pictureRate_present 0x8 ASN1uint16_t pictureRate; # define IS11172VideoMode_luminanceSampleRate_present 0x4 ASN1uint32_t luminanceSampleRate; } IS11172VideoMode; typedef struct RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom { PRTPH263VideoRedundancyEncoding_frameToThreadMapping_custom next; RTPH263VideoRedundancyFrameMapping value; } RTPH263VideoRedundancyEncoding_frameToThreadMapping_custom_Element; typedef struct H263VideoModeCombos_h263VideoCoupledModes { ASN1uint32_t count; H263ModeComboFlags value[16]; } H263VideoModeCombos_h263VideoCoupledModes; typedef struct H263Options_customPictureFormat { PH263Options_customPictureFormat next; CustomPictureFormat value; } H263Options_customPictureFormat_Element; typedef struct H263Options_customPictureClockFrequency { PH263Options_customPictureClockFrequency next; CustomPictureClockFrequency value; } H263Options_customPictureClockFrequency_Element; typedef struct H263VideoModeCombos { H263ModeComboFlags h263VideoUncoupledModes; H263VideoModeCombos_h263VideoCoupledModes h263VideoCoupledModes; } H263VideoModeCombos; typedef struct H263Options_modeCombos { PH263Options_modeCombos next; H263VideoModeCombos value; } H263Options_modeCombos_Element; typedef struct H263Options { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1bool_t advancedIntraCodingMode; ASN1bool_t deblockingFilterMode; ASN1bool_t improvedPBFramesMode; ASN1bool_t unlimitedMotionVectors; ASN1bool_t fullPictureFreeze; ASN1bool_t partialPictureFreezeAndRelease; ASN1bool_t resizingPartPicFreezeAndRelease; ASN1bool_t fullPictureSnapshot; ASN1bool_t partialPictureSnapshot; ASN1bool_t videoSegmentTagging; ASN1bool_t progressiveRefinement; ASN1bool_t dynamicPictureResizingByFour; ASN1bool_t dynamicPictureResizingSixteenthPel; ASN1bool_t dynamicWarpingHalfPel; ASN1bool_t dynamicWarpingSixteenthPel; ASN1bool_t independentSegmentDecoding; ASN1bool_t slicesInOrder_NonRect; ASN1bool_t slicesInOrder_Rect; ASN1bool_t slicesNoOrder_NonRect; ASN1bool_t slicesNoOrder_Rect; ASN1bool_t alternateInterVLCMode; ASN1bool_t modifiedQuantizationMode; ASN1bool_t reducedResolutionUpdate; # define transparencyParameters_present 0x80 TransparencyParameters transparencyParameters; ASN1bool_t separateVideoBackChannel; # define refPictureSelection_present 0x40 RefPictureSelection refPictureSelection; # define customPictureClockFrequency_present 0x20 PH263Options_customPictureClockFrequency customPictureClockFrequency; # define customPictureFormat_present 0x10 PH263Options_customPictureFormat customPictureFormat; # define modeCombos_present 0x8 PH263Options_modeCombos modeCombos; } H263Options; typedef struct H263VideoMode { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; H263VideoMode_resolution resolution; ASN1uint16_t bitRate; ASN1bool_t unrestrictedVector; ASN1bool_t arithmeticCoding; ASN1bool_t advancedPrediction; ASN1bool_t pbFrames; # define H263VideoMode_errorCompensation_present 0x80 ASN1bool_t errorCompensation; # define H263VideoMode_enhancementLayerInfo_present 0x40 EnhancementLayerInfo enhancementLayerInfo; # define H263VideoMode_h263Options_present 0x20 H263Options h263Options; } H263VideoMode; typedef struct H263VideoCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[2]; }; # define H263VideoCapability_sqcifMPI_present 0x80 ASN1uint16_t sqcifMPI; # define H263VideoCapability_qcifMPI_present 0x40 ASN1uint16_t qcifMPI; # define H263VideoCapability_cifMPI_present 0x20 ASN1uint16_t cifMPI; # define H263VideoCapability_cif4MPI_present 0x10 ASN1uint16_t cif4MPI; # define H263VideoCapability_cif16MPI_present 0x8 ASN1uint16_t cif16MPI; ASN1uint32_t maxBitRate; ASN1bool_t unrestrictedVector; ASN1bool_t arithmeticCoding; ASN1bool_t advancedPrediction; ASN1bool_t pbFrames; ASN1bool_t temporalSpatialTradeOffCapability; # define hrd_B_present 0x4 ASN1uint32_t hrd_B; # define bppMaxKb_present 0x2 ASN1uint16_t bppMaxKb; # define H263VideoCapability_slowSqcifMPI_present 0x8000 ASN1uint16_t slowSqcifMPI; # define H263VideoCapability_slowQcifMPI_present 0x4000 ASN1uint16_t slowQcifMPI; # define H263VideoCapability_slowCifMPI_present 0x2000 ASN1uint16_t slowCifMPI; # define H263VideoCapability_slowCif4MPI_present 0x1000 ASN1uint16_t slowCif4MPI; # define H263VideoCapability_slowCif16MPI_present 0x800 ASN1uint16_t slowCif16MPI; # define H263VideoCapability_errorCompensation_present 0x400 ASN1bool_t errorCompensation; # define H263VideoCapability_enhancementLayerInfo_present 0x200 EnhancementLayerInfo enhancementLayerInfo; # define H263VideoCapability_h263Options_present 0x100 H263Options h263Options; } H263VideoCapability; typedef struct EnhancementOptions { union { ASN1uint16_t bit_mask; ASN1octet_t o[2]; }; # define EnhancementOptions_sqcifMPI_present 0x80 ASN1uint16_t sqcifMPI; # define EnhancementOptions_qcifMPI_present 0x40 ASN1uint16_t qcifMPI; # define EnhancementOptions_cifMPI_present 0x20 ASN1uint16_t cifMPI; # define EnhancementOptions_cif4MPI_present 0x10 ASN1uint16_t cif4MPI; # define EnhancementOptions_cif16MPI_present 0x8 ASN1uint16_t cif16MPI; ASN1uint32_t maxBitRate; ASN1bool_t unrestrictedVector; ASN1bool_t arithmeticCoding; ASN1bool_t temporalSpatialTradeOffCapability; # define EnhancementOptions_slowSqcifMPI_present 0x4 ASN1uint16_t slowSqcifMPI; # define EnhancementOptions_slowQcifMPI_present 0x2 ASN1uint16_t slowQcifMPI; # define EnhancementOptions_slowCifMPI_present 0x1 ASN1uint16_t slowCifMPI; # define EnhancementOptions_slowCif4MPI_present 0x8000 ASN1uint16_t slowCif4MPI; # define EnhancementOptions_slowCif16MPI_present 0x4000 ASN1uint16_t slowCif16MPI; ASN1bool_t errorCompensation; # define EnhancementOptions_h263Options_present 0x2000 H263Options h263Options; } EnhancementOptions; typedef struct BEnhancementParameters { EnhancementOptions enhancementOptions; ASN1uint16_t numberOfBPictures; } BEnhancementParameters; typedef struct EnhancementLayerInfo_bPictureEnhancement { PEnhancementLayerInfo_bPictureEnhancement next; BEnhancementParameters value; } EnhancementLayerInfo_bPictureEnhancement_Element; typedef struct VideoMode { ASN1choice_t choice; union { # define VideoMode_nonStandard_chosen 1 NonStandardParameter nonStandard; # define h261VideoMode_chosen 2 H261VideoMode h261VideoMode; # define h262VideoMode_chosen 3 H262VideoMode h262VideoMode; # define h263VideoMode_chosen 4 H263VideoMode h263VideoMode; # define is11172VideoMode_chosen 5 IS11172VideoMode is11172VideoMode; } u; } VideoMode; typedef struct VideoCapability { ASN1choice_t choice; union { # define VideoCapability_nonStandard_chosen 1 NonStandardParameter nonStandard; # define h261VideoCapability_chosen 2 H261VideoCapability h261VideoCapability; # define h262VideoCapability_chosen 3 H262VideoCapability h262VideoCapability; # define h263VideoCapability_chosen 4 H263VideoCapability h263VideoCapability; # define is11172VideoCapability_chosen 5 IS11172VideoCapability is11172VideoCapability; } u; } VideoCapability; /****************************************************************************** Audio Format/Capability definitions and structures ******************************************************************************* */ typedef struct G7231AnnexCCapability_g723AnnexCAudioMode { ASN1uint16_t highRateMode0; ASN1uint16_t highRateMode1; ASN1uint16_t lowRateMode0; ASN1uint16_t lowRateMode1; ASN1uint16_t sidMode0; ASN1uint16_t sidMode1; } G7231AnnexCCapability_g723AnnexCAudioMode; typedef struct G7231AnnexCCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; ASN1uint16_t maxAl_sduAudioFrames; ASN1bool_t silenceSuppression; # define g723AnnexCAudioMode_present 0x80 G7231AnnexCCapability_g723AnnexCAudioMode g723AnnexCAudioMode; } G7231AnnexCCapability; typedef struct IS11172AudioCapability { ASN1bool_t audioLayer1; ASN1bool_t audioLayer2; ASN1bool_t audioLayer3; ASN1bool_t audioSampling32k; ASN1bool_t audioSampling44k1; ASN1bool_t audioSampling48k; ASN1bool_t singleChannel; ASN1bool_t twoChannels; ASN1uint16_t bitRate; } IS11172AudioCapability; typedef struct IS13818AudioCapability { ASN1bool_t audioLayer1; ASN1bool_t audioLayer2; ASN1bool_t audioLayer3; ASN1bool_t audioSampling16k; ASN1bool_t audioSampling22k05; ASN1bool_t audioSampling24k; ASN1bool_t audioSampling32k; ASN1bool_t audioSampling44k1; ASN1bool_t audioSampling48k; ASN1bool_t singleChannel; ASN1bool_t twoChannels; ASN1bool_t threeChannels2_1; ASN1bool_t threeChannels3_0; ASN1bool_t fourChannels2_0_2_0; ASN1bool_t fourChannels2_2; ASN1bool_t fourChannels3_1; ASN1bool_t fiveChannels3_0_2_0; ASN1bool_t fiveChannels3_2; ASN1bool_t lowFrequencyEnhancement; ASN1bool_t multilingual; ASN1uint16_t bitRate; } IS13818AudioCapability; typedef struct GSMAudioCapability { ASN1uint16_t audioUnitSize; ASN1bool_t comfortNoise; ASN1bool_t scrambled; } GSMAudioCapability; typedef struct AudioMode_g7231 { ASN1choice_t choice; # define noSilenceSuppressionLowRate_chosen 1 # define noSilenceSuppressionHighRate_chosen 2 # define silenceSuppressionLowRate_chosen 3 # define silenceSuppressionHighRate_chosen 4 } AudioMode_g7231; typedef struct AudioCapability_g7231 { ASN1uint16_t maxAl_sduAudioFrames; ASN1bool_t silenceSuppression; } AudioCapability_g7231; typedef struct G7231AnnexCMode_g723AnnexCAudioMode { ASN1uint16_t highRateMode0; ASN1uint16_t highRateMode1; ASN1uint16_t lowRateMode0; ASN1uint16_t lowRateMode1; ASN1uint16_t sidMode0; ASN1uint16_t sidMode1; } G7231AnnexCMode_g723AnnexCAudioMode; typedef struct G7231AnnexCMode { ASN1uint16_t maxAl_sduAudioFrames; ASN1bool_t silenceSuppression; G7231AnnexCMode_g723AnnexCAudioMode g723AnnexCAudioMode; } G7231AnnexCMode; typedef struct IS13818AudioMode_multichannelType { ASN1choice_t choice; # define IS13818AudioMode_multichannelType_singleChannel_chosen 1 # define IS13818AudioMode_multichannelType_twoChannelStereo_chosen 2 # define IS13818AudioMode_multichannelType_twoChannelDual_chosen 3 # define threeChannels2_1_chosen 4 # define threeChannels3_0_chosen 5 # define fourChannels2_0_2_0_chosen 6 # define fourChannels2_2_chosen 7 # define fourChannels3_1_chosen 8 # define fiveChannels3_0_2_0_chosen 9 # define fiveChannels3_2_chosen 10 } IS13818AudioMode_multichannelType; typedef struct IS13818AudioMode_audioSampling { ASN1choice_t choice; # define audioSampling16k_chosen 1 # define audioSampling22k05_chosen 2 # define audioSampling24k_chosen 3 # define IS13818AudioMode_audioSampling_audioSampling32k_chosen 4 # define IS13818AudioMode_audioSampling_audioSampling44k1_chosen 5 # define IS13818AudioMode_audioSampling_audioSampling48k_chosen 6 } IS13818AudioMode_audioSampling; typedef struct IS13818AudioMode_audioLayer { ASN1choice_t choice; # define IS13818AudioMode_audioLayer_audioLayer1_chosen 1 # define IS13818AudioMode_audioLayer_audioLayer2_chosen 2 # define IS13818AudioMode_audioLayer_audioLayer3_chosen 3 } IS13818AudioMode_audioLayer; typedef struct IS11172AudioMode_multichannelType { ASN1choice_t choice; # define IS11172AudioMode_multichannelType_singleChannel_chosen 1 # define IS11172AudioMode_multichannelType_twoChannelStereo_chosen 2 # define IS11172AudioMode_multichannelType_twoChannelDual_chosen 3 } IS11172AudioMode_multichannelType; typedef struct IS11172AudioMode_audioSampling { ASN1choice_t choice; # define IS11172AudioMode_audioSampling_audioSampling32k_chosen 1 # define IS11172AudioMode_audioSampling_audioSampling44k1_chosen 2 # define IS11172AudioMode_audioSampling_audioSampling48k_chosen 3 } IS11172AudioMode_audioSampling; typedef struct IS11172AudioMode_audioLayer { ASN1choice_t choice; # define IS11172AudioMode_audioLayer_audioLayer1_chosen 1 # define IS11172AudioMode_audioLayer_audioLayer2_chosen 2 # define IS11172AudioMode_audioLayer_audioLayer3_chosen 3 } IS11172AudioMode_audioLayer; typedef struct IS11172AudioMode { IS11172AudioMode_audioLayer audioLayer; IS11172AudioMode_audioSampling audioSampling; IS11172AudioMode_multichannelType multichannelType; ASN1uint16_t bitRate; } IS11172AudioMode; typedef struct IS13818AudioMode { IS13818AudioMode_audioLayer audioLayer; IS13818AudioMode_audioSampling audioSampling; IS13818AudioMode_multichannelType multichannelType; ASN1bool_t lowFrequencyEnhancement; ASN1bool_t multilingual; ASN1uint16_t bitRate; } IS13818AudioMode; typedef struct AudioCapability { ASN1choice_t choice; union { # define AudioCapability_nonStandard_chosen 1 NonStandardParameter nonStandard; # define AudioCapability_g711Alaw64k_chosen 2 ASN1uint16_t g711Alaw64k; # define AudioCapability_g711Alaw56k_chosen 3 ASN1uint16_t g711Alaw56k; # define AudioCapability_g711Ulaw64k_chosen 4 ASN1uint16_t g711Ulaw64k; # define AudioCapability_g711Ulaw56k_chosen 5 ASN1uint16_t g711Ulaw56k; # define AudioCapability_g722_64k_chosen 6 ASN1uint16_t g722_64k; # define AudioCapability_g722_56k_chosen 7 ASN1uint16_t g722_56k; # define AudioCapability_g722_48k_chosen 8 ASN1uint16_t g722_48k; # define AudioCapability_g7231_chosen 9 AudioCapability_g7231 g7231; # define AudioCapability_g728_chosen 10 ASN1uint16_t g728; # define AudioCapability_g729_chosen 11 ASN1uint16_t g729; # define AudioCapability_g729AnnexA_chosen 12 ASN1uint16_t g729AnnexA; # define is11172AudioCapability_chosen 13 IS11172AudioCapability is11172AudioCapability; # define is13818AudioCapability_chosen 14 IS13818AudioCapability is13818AudioCapability; # define AudioCapability_g729wAnnexB_chosen 15 ASN1uint16_t g729wAnnexB; # define AudioCapability_g729AnnexAwAnnexB_chosen 16 ASN1uint16_t g729AnnexAwAnnexB; # define g7231AnnexCCapability_chosen 17 G7231AnnexCCapability g7231AnnexCCapability; # define AudioCapability_gsmFullRate_chosen 18 GSMAudioCapability gsmFullRate; # define AudioCapability_gsmHalfRate_chosen 19 GSMAudioCapability gsmHalfRate; # define AudioCapability_gsmEnhancedFullRate_chosen 20 GSMAudioCapability gsmEnhancedFullRate; } u; } AudioCapability; typedef struct AudioMode { ASN1choice_t choice; union { # define AudioMode_nonStandard_chosen 1 NonStandardParameter nonStandard; # define AudioMode_g711Alaw64k_chosen 2 # define AudioMode_g711Alaw56k_chosen 3 # define AudioMode_g711Ulaw64k_chosen 4 # define AudioMode_g711Ulaw56k_chosen 5 # define AudioMode_g722_64k_chosen 6 # define AudioMode_g722_56k_chosen 7 # define AudioMode_g722_48k_chosen 8 # define AudioMode_g728_chosen 9 # define AudioMode_g729_chosen 10 # define AudioMode_g729AnnexA_chosen 11 # define AudioMode_g7231_chosen 12 AudioMode_g7231 g7231; # define is11172AudioMode_chosen 13 IS11172AudioMode is11172AudioMode; # define is13818AudioMode_chosen 14 IS13818AudioMode is13818AudioMode; # define AudioMode_g729wAnnexB_chosen 15 ASN1uint16_t g729wAnnexB; # define AudioMode_g729AnnexAwAnnexB_chosen 16 ASN1uint16_t g729AnnexAwAnnexB; # define g7231AnnexCMode_chosen 17 G7231AnnexCMode g7231AnnexCMode; # define AudioMode_gsmFullRate_chosen 18 GSMAudioCapability gsmFullRate; # define AudioMode_gsmHalfRate_chosen 19 GSMAudioCapability gsmHalfRate; # define AudioMode_gsmEnhancedFullRate_chosen 20 GSMAudioCapability gsmEnhancedFullRate; } u; } AudioMode; typedef struct T84Profile_t84Restricted { ASN1bool_t qcif; ASN1bool_t cif; ASN1bool_t ccir601Seq; ASN1bool_t ccir601Prog; ASN1bool_t hdtvSeq; ASN1bool_t hdtvProg; ASN1bool_t g3FacsMH200x100; ASN1bool_t g3FacsMH200x200; ASN1bool_t g4FacsMMR200x100; ASN1bool_t g4FacsMMR200x200; ASN1bool_t jbig200x200Seq; ASN1bool_t jbig200x200Prog; ASN1bool_t jbig300x300Seq; ASN1bool_t jbig300x300Prog; ASN1bool_t digPhotoLow; ASN1bool_t digPhotoMedSeq; ASN1bool_t digPhotoMedProg; ASN1bool_t digPhotoHighSeq; ASN1bool_t digPhotoHighProg; } T84Profile_t84Restricted; typedef struct V42bis { ASN1uint32_t numberOfCodewords; ASN1uint16_t maximumStringLength; } V42bis; typedef struct T84Profile { ASN1choice_t choice; union { # define t84Unrestricted_chosen 1 # define t84Restricted_chosen 2 T84Profile_t84Restricted t84Restricted; } u; } T84Profile; typedef struct CompressionType { ASN1choice_t choice; union { # define v42bis_chosen 1 V42bis v42bis; } u; } CompressionType; typedef struct DataProtocolCapability_v76wCompression { ASN1choice_t choice; union { # define transmitCompression_chosen 1 CompressionType transmitCompression; # define receiveCompression_chosen 2 CompressionType receiveCompression; # define transmitAndReceiveCompression_chosen 3 CompressionType transmitAndReceiveCompression; } u; } DataProtocolCapability_v76wCompression; typedef struct DataProtocolCapability { ASN1choice_t choice; union { # define DataProtocolCapability_nonStandard_chosen 1 NonStandardParameter nonStandard; # define v14buffered_chosen 2 # define v42lapm_chosen 3 # define hdlcFrameTunnelling_chosen 4 # define h310SeparateVCStack_chosen 5 # define h310SingleVCStack_chosen 6 # define transparent_chosen 7 # define segmentationAndReassembly_chosen 8 # define hdlcFrameTunnelingwSAR_chosen 9 # define v120_chosen 10 # define separateLANStack_chosen 11 # define v76wCompression_chosen 12 DataProtocolCapability_v76wCompression v76wCompression; } u; } DataProtocolCapability; typedef struct DataMode_application_nlpid { DataProtocolCapability nlpidProtocol; ASN1octetstring_t nlpidData; } DataMode_application_nlpid; typedef struct DataMode_application { ASN1choice_t choice; union { # define DataMode_application_nonStandard_chosen 1 NonStandardParameter nonStandard; # define DataMode_application_t120_chosen 2 DataProtocolCapability t120; # define DataMode_application_dsm_cc_chosen 3 DataProtocolCapability dsm_cc; # define DataMode_application_userData_chosen 4 DataProtocolCapability userData; # define DataMode_application_t84_chosen 5 DataProtocolCapability t84; # define DataMode_application_t434_chosen 6 DataProtocolCapability t434; # define DataMode_application_h224_chosen 7 DataProtocolCapability h224; # define DataMode_application_nlpid_chosen 8 DataMode_application_nlpid nlpid; # define DataMode_application_dsvdControl_chosen 9 # define DataMode_application_h222DataPartitioning_chosen 10 DataProtocolCapability h222DataPartitioning; # define DataMode_application_t30fax_chosen 11 DataProtocolCapability t30fax; # define DataMode_application_t140_chosen 12 DataProtocolCapability t140; } u; } DataMode_application; typedef struct DataMode { DataMode_application application; ASN1uint32_t bitRate; } DataMode; typedef struct EncryptionMode { ASN1choice_t choice; union { # define EncryptionMode_nonStandard_chosen 1 NonStandardParameter nonStandard; # define h233Encryption_chosen 2 } u; } EncryptionMode; typedef struct AuthenticationCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define AuthenticationCapability_nonStandard_present 0x80 NonStandardParameter nonStandard; } AuthenticationCapability; typedef struct IntegrityCapability { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define IntegrityCapability_nonStandard_present 0x80 NonStandardParameter nonStandard; } IntegrityCapability; typedef struct EncryptionAuthenticationAndIntegrity { union { ASN1uint16_t bit_mask; ASN1octet_t o[1]; }; # define encryptionCapability_present 0x80 PEncryptionCapability encryptionCapability; # define authenticationCapability_present 0x40 AuthenticationCapability authenticationCapability; # define integrityCapability_present 0x20 IntegrityCapability integrityCapability; } EncryptionAuthenticationAndIntegrity; typedef struct H235Mode_mediaMode { ASN1choice_t choice; union { # define H235Mode_mediaMode_nonStandard_chosen 1 NonStandardParameter nonStandard; # define H235Mode_mediaMode_videoMode_chosen 2 VideoMode videoMode; # define H235Mode_mediaMode_audioMode_chosen 3 AudioMode audioMode; # define H235Mode_mediaMode_dataMode_chosen 4 DataMode dataMode; } u; } H235Mode_mediaMode; typedef struct H235Mode { EncryptionAuthenticationAndIntegrity encryptionAuthenticationAndIntegrity; H235Mode_mediaMode mediaMode; } H235Mode; typedef struct ModeElement_type { ASN1choice_t choice; union { # define ModeElement_type_nonStandard_chosen 1 NonStandardParameter nonStandard; # define ModeElement_type_videoMode_chosen 2 VideoMode videoMode; # define ModeElement_type_audioMode_chosen 3 AudioMode audioMode; # define ModeElement_type_dataMode_chosen 4 DataMode dataMode; # define encryptionMode_chosen 5 EncryptionMode encryptionMode; # define h235Mode_chosen 6 H235Mode h235Mode; } u; } ModeElement_type; #endif // _H245ASN_Module_H_ typedef VideoCapability H245VideoCapability; typedef AudioCapability H245AudioCapability; typedef ModeElement_type H245_MODE_ELEMENT; typedef struct { DWORD dwApplicationCapID; ASN1choice_t choiceSetupProcedure; BOOL fRestrictAudio; BOOL fRestrictVideo; DataProtocolCapability T120ProtocolCap; //NonStandardParameter *pNonStandardParameter; }H245T120Capability; typedef enum { H245MediaType_Audio, H245MediaType_Video, H245MediaType_T120 }H245MediaCapabilityType; // media capability structure typedef struct tag_H245MediaCapability { H245MediaCapabilityType media_type; union { H245AudioCapability audio_cap; H245VideoCapability video_cap; H245T120Capability T120_cap; }capability; }H245MediaCapability; typedef struct tag_FormatResourceBounds { DWORD dwBitsPerSecond; DWORD dwCPUUtilization; } FormatResourceBounds; #ifdef __cplusplus /***************************************************************************** * @doc INTERNAL H245VIDCSTRUCTENUM * * @struct H245VideoCapabilityMap | The structure * is used to specify the relationship between supported formats and * estimated maximum system resources for the supported format. * * @field H245MediaCapability | h245MediaCapability | Specifies the H.245 * video/audio format, including all parameters and options. This structure * is H.245 version specific: its definition depends on the version of * H.245 used by the TAPI MSP filters. For video, this structure may indicate * format parameters for more than one standard video size at a time if * the resource requirements are similar for all sizes. * * @field GUID | filterGuid | Specifies a GUID value that uniquely * identifies the TAPI MSP filter. * * @field DWORD | dwUniqueID | Specifies a DWORD value that uniquely * identifies the capability of the TAPI MSP filter. * * @field UINT | uNumEntries | This indicates the number of elements * referenced by . * * @field FormatResourceBounds* | pResourceBoundArray | Specifies an array * of structures that indicate the approximate * resource bounds of each entry. ***************************************************************************/ typedef struct tag_H245MediaCapabilityMap { H245MediaCapability h245MediaCapability; GUID filterGuid; DWORD dwUniqueID; UINT uNumEntries; FormatResourceBounds *pResourceBoundArray; } H245MediaCapabilityMap; /***************************************************************************** * @doc INTERNAL H245VIDCSTRUCTENUM * * @struct H245MediaCapabilityTable | The structure * is used to specify the set of formats that are supported by the TAPI MSP * filters. * * @field UINT | uMappedCapabilities | Specifies the number of * structures in . * * @field H245MediaCapabilityMap* | pCapabilityArray | Specifies a pointer * to an array of structures. ***************************************************************************/ typedef struct tag_H245MediaCapabilityTable { UINT uMappedCapabilities; H245MediaCapabilityMap *pCapabilityArray; } H245MediaCapabilityTable; /***************************************************************************** * @doc INTERNAL CONST * * @const int | TAPI_H245_VERSION_ID | Specifies the H.245 platform * version 3. ***************************************************************************/ #define TAPI_H245_VERSION_ID 3 // H.245 video capability interface (pin interface) interface DECLSPEC_UUID("ec35770f-b64d-405d-a5f2-4514164ba87a") IH245Capability : public IUnknown { public: virtual STDMETHODIMP GetH245VersionID(OUT DWORD *pdwVersionID) PURE; virtual STDMETHODIMP GetFormatTable(OUT H245MediaCapabilityTable *pTable) PURE; virtual STDMETHODIMP ReleaseFormatTable(IN H245MediaCapabilityTable *pTable) PURE; virtual STDMETHODIMP IntersectFormats( IN DWORD dwUniqueID, IN const H245MediaCapability *pLocalCapability, IN const H245MediaCapability *pRemoteCapability, OUT H245MediaCapability **ppIntersectedCapability, OUT DWORD *pdwPayloadType ) PURE; virtual STDMETHODIMP Refine(IN OUT H245MediaCapability *pLocalCapability, IN DWORD dwUniqueID, IN DWORD dwResourceBoundIndex) PURE; virtual STDMETHODIMP GetLocalFormat(IN DWORD dwUniqueID, IN const H245MediaCapability *pIntersectedCapability, OUT AM_MEDIA_TYPE **ppAMMediaType) PURE; virtual STDMETHODIMP ReleaseNegotiatedCapability(IN H245MediaCapability *pIntersectedCapability) PURE; virtual STDMETHODIMP FindIDByRange(IN const AM_MEDIA_TYPE *pAMMediaType, OUT DWORD *pdwUniqueID) PURE; }; // IH245EncoderCommand interface (pin interface) interface DECLSPEC_UUID("b4263e5b-f216-4b58-9968-ba9ab7808ab3") IH245EncoderCommand : public IUnknown { public: virtual STDMETHODIMP videoFastUpdatePicture() PURE; virtual STDMETHODIMP videoFastUpdateGOB(IN DWORD dwFirstGOB, IN DWORD dwNumberOfGOBs) PURE; virtual STDMETHODIMP videoFastUpdateMB(IN DWORD dwFirstGOB, IN DWORD dwFirstMB, IN DWORD dwNumberOfMBs) PURE; virtual STDMETHODIMP videoSendSyncEveryGOB(IN BOOL fEnable) PURE; virtual STDMETHODIMP videoNotDecodedMBs(IN DWORD dwFirstMB, IN DWORD dwNumberOfMBs, IN DWORD dwTemporalReference) PURE; }; // IH245DecoderCommand interface (pin interface) interface DECLSPEC_UUID("a542d119-6abd-48a5-92db-dac1dfe6995c") IH245DecoderCommand : public IUnknown { public: virtual STDMETHODIMP videoFreezePicture() PURE; }; #ifdef USE_PROGRESSIVE_REFINEMENT // Progressive refinement interface (pin interface) interface DECLSPEC_UUID("46a02824-6d1f-49d9-9e62-e1694f28ab1a") IProgressiveRefinement : public IUnknown { public: virtual STDMETHODIMP doOneProgression() PURE; virtual STDMETHODIMP doContinuousProgressions() PURE; virtual STDMETHODIMP doOneIndependentProgression() PURE; virtual STDMETHODIMP doContinuousIndependentProgressions() PURE; virtual STDMETHODIMP progressiveRefinementAbortOne() PURE; virtual STDMETHODIMP progressiveRefinementAbortContinuous() PURE; }; #endif #if !defined(STREAM_INTERFACES_DEFINED) #define MAX_DESCRIPTION_LEN 256 typedef enum tagStreamConfigCapsType { AudioStreamConfigCaps, VideoStreamConfigCaps } StreamConfigCapsType; typedef struct _TAPI_AUDIO_STREAM_CONFIG_CAPS { WCHAR Description[MAX_DESCRIPTION_LEN]; ULONG MinimumChannels; ULONG MaximumChannels; ULONG ChannelsGranularity; ULONG MinimumBitsPerSample; ULONG MaximumBitsPerSample; ULONG BitsPerSampleGranularity; ULONG MinimumSampleFrequency; ULONG MaximumSampleFrequency; ULONG SampleFrequencyGranularity; ULONG MinimumAvgBytesPerSec; ULONG MaximumAvgBytesPerSec; ULONG AvgBytesPerSecGranularity; } TAPI_AUDIO_STREAM_CONFIG_CAPS, *PTAPI_AUDIO_STREAM_CONFIG_CAPS; typedef struct _TAPI_VIDEO_STREAM_CONFIG_CAPS { WCHAR Description[MAX_DESCRIPTION_LEN]; ULONG VideoStandard; SIZE InputSize; SIZE MinCroppingSize; SIZE MaxCroppingSize; int CropGranularityX; int CropGranularityY; int CropAlignX; int CropAlignY; SIZE MinOutputSize; SIZE MaxOutputSize; int OutputGranularityX; int OutputGranularityY; int StretchTapsX; int StretchTapsY; int ShrinkTapsX; int ShrinkTapsY; LONGLONG MinFrameInterval; LONGLONG MaxFrameInterval; LONG MinBitsPerSecond; LONG MaxBitsPerSecond; } TAPI_VIDEO_STREAM_CONFIG_CAPS, *PTAPI_VIDEO_STREAM_CONFIG_CAPS; typedef struct tagTAPI_STREAM_CONFIG_CAPS { StreamConfigCapsType CapsType; union { TAPI_VIDEO_STREAM_CONFIG_CAPS VideoCap; TAPI_AUDIO_STREAM_CONFIG_CAPS AudioCap; }; } TAPI_STREAM_CONFIG_CAPS, *PTAPI_STREAM_CONFIG_CAPS; #endif // used in SetFormat when the payload type is unknown. const DWORD UNKNOWN_PAYLOAD = (DWORD)(-1); // IStreamConfig interface (pin interface) interface DECLSPEC_UUID("c5888472-8f4f-475b-8f5b-93b6c8e7567f") IStreamConfig : public IUnknown { // TODO, we need to introduce a new interface to handle all the RTP payload type // related issues. The payload type info shouldn't be in this interface. public: virtual STDMETHODIMP SetFormat(IN DWORD dwRTPPayLoadType, IN AM_MEDIA_TYPE *pMediaType) PURE; virtual STDMETHODIMP GetFormat(OUT DWORD *pdwRTPPayLoadType, OUT AM_MEDIA_TYPE **ppMediaType) PURE; virtual STDMETHODIMP GetNumberOfCapabilities(OUT DWORD *pdwCount) PURE; virtual STDMETHODIMP GetStreamCaps(IN DWORD dwIndex, OUT AM_MEDIA_TYPE **ppMediaType, OUT TAPI_STREAM_CONFIG_CAPS *pTSCC, OUT DWORD *pdwRTPPayLoadType) PURE; }; #endif // __cplusplus #ifdef __cplusplus } #endif #endif // __H245FMT_H__