Difference between revisions of "Unit Codec"
From Ultibo.org
								
												
				| (6 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
| ---- | ---- | ||
| − | '''Ultibo Codec  | + | '''Ultibo Codec Interface unit''' | 
| − | + | ||
| − | + | ||
| === Constants === | === Constants === | ||
| Line 70: | Line 68: | ||
| | <code>CODEC_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | | <code>CODEC_LOG_LEVEL_INFO = LOG_LEVEL_INFO;</code> | ||
| | Codec informational messages, such as a device being attached or detached | | Codec informational messages, such as a device being attached or detached | ||
| + | |- | ||
| + | | <code>CODEC_LOG_LEVEL_WARN = LOG_LEVEL_WARN;</code> | ||
| + | | Codec warning messages | ||
| |- | |- | ||
| | <code>CODEC_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | | <code>CODEC_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;</code> | ||
| Line 118: | Line 119: | ||
| |} | |} | ||
| − | '''Codec device properties''' | + | '''Codec device get properties''' | 
| {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
| |- | |- | ||
| − | | <code> | + | | <code>TCodecDeviceGetProperties = function(Codec:PCodecDevice; Properties:PCodecProperties):LongWord;</code> | 
| | style="width: 40%;"| | | style="width: 40%;"| | ||
| |- | |- | ||
| Line 149: | Line 150: | ||
| | Codec device state (eg CODEC_STATE_ENABLED) | | Codec device state (eg CODEC_STATE_ENABLED) | ||
| |- | |- | ||
| − | | <code> | + | | <code>DeviceGetProperties:TCodecDeviceGetProperties;</code> | 
| − | | A Device specific  | + | | A Device specific DeviceGetProperties method implementing the standard Codec device interface (Or nil if the default method is suitable) | 
| |- | |- | ||
| |colspan="2"|''Driver Properties'' | |colspan="2"|''Driver Properties'' | ||
| Line 204: | Line 205: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | Called only during system startup | | Called only during system startup | ||
| |- | |- | ||
| Line 214: | Line 215: | ||
| <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
| − | <pre style="border: 0; padding-bottom:0px;">function  | + | <pre style="border: 0; padding-bottom:0px;">function CodecDeviceGetProperties(Codec:PCodecDevice; Properties:PCodecProperties):LongWord;</pre> | 
| <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the properties for the specified Codec device</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the properties for the specified Codec device</div> | ||
| <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Codec | 
| | The Codec device to get properties from | | The Codec device to get properties from | ||
| |- | |- | ||
| − | !  | + | ! Properties | 
| | Pointer to a TCodecProperties structure to fill in | | Pointer to a TCodecProperties structure to fill in | ||
| |- | |- | ||
| − | !  | + | ! Return | 
| | ERROR_SUCCESS if completed or another error code on failure | | ERROR_SUCCESS if completed or another error code on failure | ||
| |- | |- | ||
| Line 237: | Line 238: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Return | 
| | Pointer to new Codec device entry or nil if Codec device could not be created | | Pointer to new Codec device entry or nil if Codec device could not be created | ||
| |- | |- | ||
| Line 249: | Line 250: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Size | 
| | Size in bytes to allocate for new Codec device (Including the Codec device entry) | | Size in bytes to allocate for new Codec device (Including the Codec device entry) | ||
| |- | |- | ||
| − | !  | + | ! Return | 
| | Pointer to new Codec device entry or nil if Codec device could not be created | | Pointer to new Codec device entry or nil if Codec device could not be created | ||
| |- | |- | ||
| Line 264: | Line 265: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 276: | Line 277: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 288: | Line 289: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 300: | Line 301: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 312: | Line 313: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 324: | Line 325: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 336: | Line 337: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 348: | Line 349: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 358: | Line 359: | ||
| <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
| − | <pre style="border: 0; padding-bottom:0px;">function CodecGetCount:LongWord | + | <pre style="border: 0; padding-bottom:0px;">function CodecGetCount:LongWord;</pre> | 
| <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Codec device count</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current Codec device count</div> | ||
| <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 370: | Line 371: | ||
| <br /> | <br /> | ||
| <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
| − | <pre style="border: 0; padding-bottom:0px;">function CodecDeviceGetDefault:PCodecDevice | + | <pre style="border: 0; padding-bottom:0px;">function CodecDeviceGetDefault:PCodecDevice;</pre> | 
| <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default Codec device</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the current default Codec device</div> | ||
| <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 387: | Line 388: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 399: | Line 400: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 411: | Line 412: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 423: | Line 424: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | ! ''' | + | ! Note | 
| + | | None documented | ||
| + | |- | ||
| + | |} | ||
| + | </div></div> | ||
| + | <br /> | ||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
| + | <pre style="border: 0; padding-bottom:0px;">procedure CodecLogWarn(Codec:PCodecDevice; const AText:String); inline;</pre> | ||
| + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' To be documented</div> | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| + | |- | ||
| + | ! Note | ||
| | None documented | | None documented | ||
| |- | |- | ||
| Line 435: | Line 448: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
| Line 447: | Line 460: | ||
| {| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
| |- | |- | ||
| − | !  | + | ! Note | 
| | None documented | | None documented | ||
| |- | |- | ||
Latest revision as of 04:03, 15 December 2022
Return to Unit Reference
Description
Ultibo Codec Interface unit
Constants
Codec specific constants 
 CODEC_* | CODEC_NAME_PREFIX = 'Codec'; | Name prefix for Codec Devices | 
 
Codec device type 
 CODEC_TYPE_* | CODEC_TYPE_NONE = 0; | 
Codec device state 
 CODEC_STATE_* | CODEC_STATE_DISABLED = 0; | |
| CODEC_STATE_ENABLED = 1; | 
Codec device flag 
 CODEC_FLAG_* | CODEC_FLAG_NONE = $00000000; | 
Codec logging 
 CODEC_LOG_* | CODEC_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG; | Codec debugging messages | 
| CODEC_LOG_LEVEL_INFO = LOG_LEVEL_INFO; | Codec informational messages, such as a device being attached or detached | 
| CODEC_LOG_LEVEL_WARN = LOG_LEVEL_WARN; | Codec warning messages | 
| CODEC_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; | Codec error messages | 
| CODEC_LOG_LEVEL_NONE = LOG_LEVEL_NONE; | No Codec messages | 
Type definitions
Codec properties
PCodecProperties = ^TCodecProperties;
TCodecProperties = record
| Flags:LongWord; | Device flags (eg CODEC_FLAG_????) | 
Codec enumeration callback
| TCodecEnumerate = function(Codec:PCodecDevice; Data:Pointer):LongWord; | 
Codec notification callback
| TCodecNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord; | 
Codec device get properties
| TCodecDeviceGetProperties = function(Codec:PCodecDevice; Properties:PCodecProperties):LongWord; | 
Codec device
PCodecDevice = ^TCodecDevice;
TCodecDevice = record
| Device Properties | |
| Device:TDevice; | The Device entry for this Codec device | 
| Codec Properties | |
| CodecId:LongWord; | Unique Id of this Codec device in the Codec device table | 
| CodecState:LongWord; | Codec device state (eg CODEC_STATE_ENABLED) | 
| DeviceGetProperties:TCodecDeviceGetProperties; | A Device specific DeviceGetProperties method implementing the standard Codec device interface (Or nil if the default method is suitable) | 
| Driver Properties | |
| Lock:TMutexHandle; | Device lock | 
| Properties:TCodecProperties; | Device properties | 
| Internal Properties | |
| Prev:PCodecDevice; | Previous entry in Codec device table | 
| Next:PCodecDevice; | Next entry in Codec device table | 
Public variables
Codec logging
| CODEC_DEFAULT_LOG_LEVEL:LongWord = CODEC_LOG_LEVEL_DEBUG; | Minimum level for Codec messages. Only messages with level greater than or equal to this will be printed. | 
| CODEC_LOG_ENABLED:Boolean; | 
Function declarations
Initialization functions
procedure CodecInit;
Description: Initialize the Codec unit and Codec device table
| Note | Called only during system startup | 
|---|
Codec device functions
function CodecDeviceGetProperties(Codec:PCodecDevice; Properties:PCodecProperties):LongWord;
Description: Get the properties for the specified Codec device
| Codec | The Codec device to get properties from | 
|---|---|
| Properties | Pointer to a TCodecProperties structure to fill in | 
| Return | ERROR_SUCCESS if completed or another error code on failure | 
function CodecDeviceCreate:PCodecDevice;
Description: Create a new Codec device entry
| Return | Pointer to new Codec device entry or nil if Codec device could not be created | 
|---|
function CodecDeviceCreateEx(Size:LongWord):PCodecDevice;
Description: Create a new Codec device entry
| Size | Size in bytes to allocate for new Codec device (Including the Codec device entry) | 
|---|---|
| Return | Pointer to new Codec device entry or nil if Codec device could not be created | 
function CodecDeviceDestroy(Codec:PCodecDevice):LongWord;
Description: Destroy an existing Codec device entry
| Note | None documented | 
|---|
function CodecDeviceRegister(Codec:PCodecDevice):LongWord;
Description: Register a new Codec device in the Codec device table
| Note | None documented | 
|---|
function CodecDeviceDeregister(Codec:PCodecDevice):LongWord;
Description: Deregister an Codec device from the Codec device table
| Note | None documented | 
|---|
function CodecDeviceFind(CodecId:LongWord):PCodecDevice;
Description: To be documented
| Note | None documented | 
|---|
function CodecDeviceFindByName(const Name:String):PCodecDevice; inline;
Description: To be documented
| Note | None documented | 
|---|
function CodecDeviceFindByDescription(const Description:String):PCodecDevice; inline;
Description: To be documented
| Note | None documented | 
|---|
function CodecDeviceEnumerate(Callback:TCodecEnumerate; Data:Pointer):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function CodecDeviceNotification(Codec:PCodecDevice; Callback:TCodecNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
| Note | None documented | 
|---|
Codec helper functions
function CodecGetCount:LongWord;
Description: Get the current Codec device count
| Note | None documented | 
|---|
function CodecDeviceGetDefault:PCodecDevice;
Description: Get the current default Codec device
| Note | None documented | 
|---|
function CodecDeviceSetDefault(Codec:PCodecDevice):LongWord;
Description: Set the current default Codec device
| Note | None documented | 
|---|
function CodecDeviceCheck(Codec:PCodecDevice):PCodecDevice;
Description: Check if the supplied Codec device is in the Codec device table
| Note | None documented | 
|---|
procedure CodecLog(Level:LongWord; Codec:PCodecDevice; const AText:String);
Description: To be documented
| Note | None documented | 
|---|
procedure CodecLogInfo(Codec:PCodecDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure CodecLogWarn(Codec:PCodecDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure CodecLogError(Codec:PCodecDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure CodecLogDebug(Codec:PCodecDevice; const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
Return to Unit Reference

