Difference between revisions of "Unit Codec"
From Ultibo.org
| (28 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
---- | ---- | ||
| − | '''Ultibo Codec | + | '''Ultibo Codec Interface unit''' |
| − | + | ||
| − | + | ||
=== Constants === | === Constants === | ||
| Line 25: | Line 23: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
| − | <div style="font-size: 14px; padding-left: 12px;">'''Codec device type | + | <div style="font-size: 14px; padding-left: 12px;">'''Codec device type''' <code> CODEC_TYPE_* </code></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;" | ||
| Line 36: | Line 34: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
| − | <div style="font-size: 14px; padding-left: 12px;">'''Codec device state | + | <div style="font-size: 14px; padding-left: 12px;">'''Codec device state''' <code> CODEC_STATE_* </code></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;" | ||
| Line 50: | Line 48: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
| − | <div style="font-size: 14px; padding-left: 12px;">'''Codec device flag | + | <div style="font-size: 14px; padding-left: 12px;">'''Codec device flag''' <code> CODEC_FLAG_* </code></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;" | ||
| Line 61: | Line 59: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
| − | <div style="font-size: 14px; padding-left: 12px;">'''Codec logging | + | <div style="font-size: 14px; padding-left: 12px;">'''Codec logging''' <code> CODEC_LOG_* </code></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;" | ||
| 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 87: | Line 88: | ||
'''Codec properties''' | '''Codec properties''' | ||
| − | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial | + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> |
| − | < | + | <code>PCodecProperties = ^TCodecProperties;</code> |
| − | TCodecProperties = record</ | + | |
| + | <code>TCodecProperties = record</code> | ||
<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;" | ||
| Line 103: | Line 105: | ||
{| 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>TCodecEnumerate = function(Codec:PCodecDevice;Data:Pointer):LongWord;</code> | + | | <code>TCodecEnumerate = function(Codec:PCodecDevice; Data:Pointer):LongWord;</code> |
| style="width: 40%;"| | | style="width: 40%;"| | ||
|- | |- | ||
| Line 112: | Line 114: | ||
{| 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>TCodecNotification = function(Device:PDevice;Data:Pointer;Notification:LongWord):LongWord;</code> | + | | <code>TCodecNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;</code> |
| style="width: 40%;"| | | style="width: 40%;"| | ||
|- | |- | ||
|} | |} | ||
| − | '''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 146: | Line 148: | ||
|- | |- | ||
| <code>CodecState:LongWord;</code> | | <code>CodecState:LongWord;</code> | ||
| − | | Codec | + | | 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 180: | Line 182: | ||
|- | |- | ||
| <code>CODEC_DEFAULT_LOG_LEVEL:LongWord = CODEC_LOG_LEVEL_DEBUG;</code> | | <code>CODEC_DEFAULT_LOG_LEVEL:LongWord = CODEC_LOG_LEVEL_DEBUG;</code> | ||
| − | | style="width: | + | | style="width: 40%;"|Minimum level for Codec messages. Only messages with level greater than or equal to this will be printed. |
|- | |- | ||
|} | |} | ||
| Line 186: | Line 188: | ||
|- | |- | ||
| <code>CODEC_LOG_ENABLED:Boolean;</code> | | <code>CODEC_LOG_ENABLED:Boolean;</code> | ||
| − | | style="width: | + | | style="width: 40%;"| |
|- | |- | ||
|} | |} | ||
| Line 203: | 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 213: | 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 236: | 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 248: | 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 263: | Line 265: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 275: | Line 277: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 287: | Line 289: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 299: | Line 301: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 311: | Line 313: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 323: | Line 325: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 335: | Line 337: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 347: | Line 349: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 357: | 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 369: | 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 386: | Line 388: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 398: | Line 400: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 410: | Line 412: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 422: | 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 434: | Line 448: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
| − | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
| Line 446: | 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