windows-nt/Source/XPSP1/NT/net/tapi/inc/h245if.h
2020-09-26 16:20:57 +08:00

1374 lines
45 KiB
C++

/* 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 <t H245VideoCapabilityMap> 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 <t pResourceBoundArray>.
*
* @field FormatResourceBounds* | pResourceBoundArray | Specifies an array
* of <t FormatResourceBounds> 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 <t H245MediaCapabilityTable> structure
* is used to specify the set of formats that are supported by the TAPI MSP
* filters.
*
* @field UINT | uMappedCapabilities | Specifies the number of
* <t H245VideoCapabilityMap> structures in <t pCapabilityArray>.
*
* @field H245MediaCapabilityMap* | pCapabilityArray | Specifies a pointer
* to an array of <t H245MediaCapabilityMap> 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__