This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/appavcap.h

150 lines
5.5 KiB
C

//****************************************************************************
// File: APPAVCAP.H
// Content:
// Network audio/video application capability interface. Provides
// data structures for adding, removing, enumerating, prioritizing,
// and enabling/disabling codecs independently for send/receive.
//
// Copyright (c) Microsoft Corporation 1997, All rights reserved
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//****************************************************************************
#ifndef _APPAVCAP_H
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _APPAVCAP_H
#include <mmreg.h>
#include <msacm.h>
#include <pshpack8.h> /* Assume 8 byte packing throughout */
// For use as dimension for variable size arrays
#define VARIABLE_DIM 1
// CPU utilization numbers for NetMeeting-provided codecs
#define LNH_48_CPU 97
#define LNH_8_CPU 47
#define LNH_12_CPU 48
#define LNH_16_CPU 49
#define MS_G723_CPU 70
#define CCITT_A_CPU 24
#define CCITT_U_CPU 25
// AUDIO_FORMAT_ID is an index into an array of AUDCAPS structures
typedef DWORD AUDIO_FORMAT_ID;
#define INVALID_AUDIO_FORMAT 0xffffffff
typedef DWORD MEDIA_FORMAT_ID;
#define INVALID_MEDIA_FORMAT 0xffffffff
// VIDEO_FORMAT_ID is an index into an array of VIDCAPS structures
typedef DWORD VIDEO_FORMAT_ID;
#define INVALID_VIDEO_FORMAT 0xffffffff
/*
* @doc EXTERNAL DATASTRUC
*
* AUDIO capabilities info structure
*
* @struct AUDCAP_INFO | AUDIO capabilities info structure.
* Use for both input and output when calling capabilties APIs.
* The fields are input-only, output-only or input/output depending on the API used.
* Behavior is undefined if these are altered.
*/
// basic audcap structure
typedef struct BasicAudCapInfo
{
WORD wFormatTag; // @field The ACM format tag
AUDIO_FORMAT_ID Id; // @field (OUTPUT only) The local id (a.k.a. *Handle*) of this capability entry
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; // @field (OUTPUT only) Descriptive string of
// the format, e.g. "Microsoft GSM 6.10"
UINT uMaxBitrate; // @field (OUTPUT only) Worst case bitrate
UINT uAvgBitrate; // @field The average bitrate for this codec
WORD wCPUUtilizationEncode; // @field % of Pentium 90Mhz needed for compress
WORD wCPUUtilizationDecode; // @field % of Pentium 90Mhz needed for decompress
BOOL bSendEnabled; // @field OK to use this format for sending
BOOL bRecvEnabled; // @field OK to use this format for receiving
WORD wSortIndex; // @field The ordered position of this entry
// in the capability table. Can be used as input only
// in ReorderFormats
}BASIC_AUDCAP_INFO, *PBASIC_AUDCAP_INFO, AUDCAP_INFO, *PAUDCAP_INFO;
/*
* @struct AUDCAP_INFO_LIST | List of AUDCAP_INFO structures
*/
typedef struct _audcapinfolist
{
ULONG cFormats; // @field Number of AUDCAP_INFO structures in this list
AUDCAP_INFO aFormats[VARIABLE_DIM]; // @field cFormats AUDCAP_INFO structures
} AUDCAP_INFO_LIST, *PAUDCAP_INFO_LIST;
/*
* @enum VIDEO_SIZES | Enumeration values for the three video sizes supported by NetMeeting
*/
typedef enum
{
Small = 0, // @emem Small size video
Medium, // @emem Medium size video
Large // @emem Large size video
} VIDEO_SIZES;
/*
* VIDEO capabilities info structure
*
* @struct VIDCAP_INFO | VIDEO capabilities info structure.
* Use for both input and output when calling capabilties APIs.
* The fields are input-only, output-only or input/output depending on the API used.
* Behavior is undefined if these are altered.
*/
// VIDCAP_INFO structure
typedef struct BasicVidCapInfo
{
// format identification
DWORD dwFormatTag; // @field The format tag of this format
VIDEO_FORMAT_ID Id; // @field (OUTPUT only) The local id (a.k.a. *Handle*) of this capability entry
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; // @field (OUTPUT only) Descriptive string of,
// the formate.g. "Microsoft H.263"
// NetMeeting specific info
WORD wCPUUtilizationEncode; // @field % of Pentium 90Mhz needed for compress
WORD wCPUUtilizationDecode; // @field % of Pentium 90Mhz needed for decompress
BOOL bSendEnabled; // @field OK to use this format for sending
BOOL bRecvEnabled; // @field OK to use this format for receiving
WORD wSortIndex; // @field (OUTPUT only) The ordered position of this entry
// in the capability table.
// video format details
VIDEO_SIZES enumVideoSize; // @field The video size for this format. Different video sizes for
// the same formats must be added as separate formats
BITMAPINFOHEADER bih; // @field The BITMAPINFOHEADER sturcture for the video
// size in enumVideosize
UINT uFrameRate; // @field Number of frames per second
DWORD dwBitsPerSample; // @field number of bits per sample for this format. Must
// match the value in bih.biBitCount
UINT uAvgBitrate; // @field The average bitrate for this codec
UINT uMaxBitrate; // (OUTPUT only) Worst case bitrate
}BASIC_VIDCAP_INFO, *PBASIC_VIDCAP_INFO, VIDCAP_INFO, *PVIDCAP_INFO;
/*
* @struct VIDCAP_INFO_LIST | List of VIDCAP_INFO structures
*/
typedef struct _vidcapinfolist
{
ULONG cFormats;// @field Number of VIDCAP_INFO structures in this list
VIDCAP_INFO aFormats[VARIABLE_DIM]; // @field cFormats VIDCAP_INFO structures
} VIDCAP_INFO_LIST, *PVIDCAP_INFO_LIST;
#include <poppack.h> /* End byte packing */
#pragma option pop /*P_O_Pop*/
#endif //#ifndef _APPAVCAP_H