📄 xaudioplayer.pas
字号:
unit XaudioPlayer;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
const
{ Messages }
XA_MSG_BASE = $9000;
XA_MSG_UNKNOWN = 0;
XA_MSG_COMMAND_EXIT = 1;
XA_MSG_COMMAND_SYNC = 2;
XA_MSG_COMMAND_PING = 3;
XA_MSG_COMMAND_PLAY = 4;
XA_MSG_COMMAND_PAUSE = 5;
XA_MSG_COMMAND_STOP = 6;
XA_MSG_COMMAND_SEEK = 7;
XA_MSG_COMMAND_INPUT_OPEN = 8;
XA_MSG_COMMAND_INPUT_CLOSE = 9;
XA_MSG_COMMAND_INPUT_SEND_MESSAGE = 10;
XA_MSG_COMMAND_INPUT_ADD_FILTER = 11;
XA_MSG_COMMAND_INPUT_REMOVE_FILTER = 12;
XA_MSG_COMMAND_INPUT_FILTERS_LIST = 13;
XA_MSG_COMMAND_INPUT_MODULE_REGISTER = 14;
XA_MSG_COMMAND_INPUT_MODULE_QUERY = 15;
XA_MSG_COMMAND_INPUT_MODULES_LIST = 16;
XA_MSG_COMMAND_OUTPUT_OPEN = 17;
XA_MSG_COMMAND_OUTPUT_CLOSE = 18;
XA_MSG_COMMAND_OUTPUT_SEND_MESSAGE = 19;
XA_MSG_COMMAND_OUTPUT_MUTE = 20;
XA_MSG_COMMAND_OUTPUT_UNMUTE = 21;
XA_MSG_COMMAND_OUTPUT_RESET = 22;
XA_MSG_COMMAND_OUTPUT_DRAIN = 23;
XA_MSG_COMMAND_OUTPUT_ADD_FILTER = 24;
XA_MSG_COMMAND_OUTPUT_REMOVE_FILTER = 25;
XA_MSG_COMMAND_OUTPUT_FILTERS_LIST = 26;
XA_MSG_COMMAND_OUTPUT_MODULE_REGISTER = 27;
XA_MSG_COMMAND_OUTPUT_MODULE_QUERY = 28;
XA_MSG_COMMAND_OUTPUT_MODULES_LIST = 29;
XA_MSG_COMMAND_CODEC_SEND_MESSAGE = 30;
XA_MSG_COMMAND_CODEC_MODULE_REGISTER = 31;
XA_MSG_COMMAND_CODEC_MODULE_QUERY = 32;
XA_MSG_COMMAND_CODEC_MODULES_LIST = 33;
XA_MSG_SET_PLAYER_MODE = 34;
XA_MSG_GET_PLAYER_MODE = 35;
XA_MSG_SET_PLAYER_ENVIRONMENT_INTEGER = 36;
XA_MSG_GET_PLAYER_ENVIRONMENT_INTEGER = 37;
XA_MSG_SET_PLAYER_ENVIRONMENT_STRING = 38;
XA_MSG_GET_PLAYER_ENVIRONMENT_STRING = 39;
XA_MSG_UNSET_PLAYER_ENVIRONMENT = 40;
XA_MSG_SET_INPUT_NAME = 41;
XA_MSG_GET_INPUT_NAME = 42;
XA_MSG_SET_INPUT_MODULE = 43;
XA_MSG_GET_INPUT_MODULE = 44;
XA_MSG_SET_INPUT_POSITION_RANGE = 45;
XA_MSG_GET_INPUT_POSITION_RANGE = 46;
XA_MSG_SET_INPUT_TIMECODE_GRANULARITY = 47;
XA_MSG_GET_INPUT_TIMECODE_GRANULARITY = 48;
XA_MSG_SET_OUTPUT_NAME = 49;
XA_MSG_GET_OUTPUT_NAME = 50;
XA_MSG_SET_OUTPUT_MODULE = 51;
XA_MSG_GET_OUTPUT_MODULE = 52;
XA_MSG_SET_OUTPUT_POSITION_RANGE = 53;
XA_MSG_GET_OUTPUT_POSITION_RANGE = 54;
XA_MSG_SET_OUTPUT_TIMECODE_GRANULARITY = 55;
XA_MSG_GET_OUTPUT_TIMECODE_GRANULARITY = 56;
XA_MSG_SET_OUTPUT_VOLUME = 57;
XA_MSG_GET_OUTPUT_VOLUME = 58;
XA_MSG_SET_OUTPUT_CHANNELS = 59;
XA_MSG_GET_OUTPUT_CHANNELS = 60;
XA_MSG_SET_OUTPUT_PORTS = 61;
XA_MSG_GET_OUTPUT_PORTS = 62;
XA_MSG_SET_CODEC_QUALITY = 63;
XA_MSG_GET_CODEC_QUALITY = 64;
XA_MSG_SET_CODEC_EQUALIZER = 65;
XA_MSG_GET_CODEC_EQUALIZER = 66;
XA_MSG_SET_CODEC_MODULE = 67;
XA_MSG_GET_CODEC_MODULE = 68;
XA_MSG_SET_NOTIFICATION_MASK = 69;
XA_MSG_GET_NOTIFICATION_MASK = 70;
XA_MSG_SET_DEBUG_LEVEL = 71;
XA_MSG_GET_DEBUG_LEVEL = 72;
XA_MSG_NOTIFY_READY = 73;
XA_MSG_NOTIFY_ACK = 74;
XA_MSG_NOTIFY_NACK = 75;
XA_MSG_NOTIFY_PONG = 76;
XA_MSG_NOTIFY_EXITED = 77;
XA_MSG_NOTIFY_PLAYER_STATE = 78;
XA_MSG_NOTIFY_PLAYER_MODE = 79;
XA_MSG_NOTIFY_PLAYER_ENVIRONMENT_INTEGER = 80;
XA_MSG_NOTIFY_PLAYER_ENVIRONMENT_STRING = 81;
XA_MSG_NOTIFY_INPUT_STATE = 82;
XA_MSG_NOTIFY_INPUT_NAME = 83;
XA_MSG_NOTIFY_INPUT_CAPS = 84;
XA_MSG_NOTIFY_INPUT_POSITION = 85;
XA_MSG_NOTIFY_INPUT_POSITION_RANGE = 86;
XA_MSG_NOTIFY_INPUT_TIMECODE = 87;
XA_MSG_NOTIFY_INPUT_TIMECODE_GRANULARITY = 88;
XA_MSG_NOTIFY_INPUT_MODULE = 89;
XA_MSG_NOTIFY_INPUT_MODULE_INFO = 90;
XA_MSG_NOTIFY_INPUT_DEVICE_INFO = 91;
XA_MSG_NOTIFY_INPUT_FILTER_INFO = 92;
XA_MSG_NOTIFY_OUTPUT_STATE = 93;
XA_MSG_NOTIFY_OUTPUT_NAME = 94;
XA_MSG_NOTIFY_OUTPUT_CAPS = 95;
XA_MSG_NOTIFY_OUTPUT_POSITION = 96;
XA_MSG_NOTIFY_OUTPUT_POSITION_RANGE = 97;
XA_MSG_NOTIFY_OUTPUT_TIMECODE = 98;
XA_MSG_NOTIFY_OUTPUT_TIMECODE_GRANULARITY = 99;
XA_MSG_NOTIFY_OUTPUT_VOLUME = 100;
XA_MSG_NOTIFY_OUTPUT_BALANCE = 101;
XA_MSG_NOTIFY_OUTPUT_PCM_LEVEL = 102;
XA_MSG_NOTIFY_OUTPUT_MASTER_LEVEL = 103;
XA_MSG_NOTIFY_OUTPUT_CHANNELS = 104;
XA_MSG_NOTIFY_OUTPUT_PORTS = 105;
XA_MSG_NOTIFY_OUTPUT_MODULE = 106;
XA_MSG_NOTIFY_OUTPUT_MODULE_INFO = 107;
XA_MSG_NOTIFY_OUTPUT_DEVICE_INFO = 108;
XA_MSG_NOTIFY_OUTPUT_FILTER_INFO = 109;
XA_MSG_NOTIFY_STREAM_MIME_TYPE = 110;
XA_MSG_NOTIFY_STREAM_DURATION = 111;
XA_MSG_NOTIFY_STREAM_PARAMETERS = 112;
XA_MSG_NOTIFY_STREAM_PROPERTIES = 113;
XA_MSG_NOTIFY_CODEC_QUALITY = 114;
XA_MSG_NOTIFY_CODEC_EQUALIZER = 115;
XA_MSG_NOTIFY_CODEC_MODULE = 116;
XA_MSG_NOTIFY_CODEC_MODULE_INFO = 117;
XA_MSG_NOTIFY_CODEC_DEVICE_INFO = 118;
XA_MSG_NOTIFY_NOTIFICATION_MASK = 119;
XA_MSG_NOTIFY_DEBUG_LEVEL = 120;
XA_MSG_NOTIFY_PROGRESS = 121;
XA_MSG_NOTIFY_DEBUG = 122;
XA_MSG_NOTIFY_ERROR = 123;
XA_MSG_NOTIFY_PRIVATE_DATA = 124;
XA_MSG_COMMAND_FEEDBACK_HANDLER_MODULE_REGISTER = 125;
XA_MSG_COMMAND_FEEDBACK_HANDLER_MODULE_QUERY = 126;
XA_MSG_COMMAND_FEEDBACK_HANDLER_MODULES_LIST = 127;
XA_MSG_COMMAND_FEEDBACK_HANDLER_EXIT = 128;
XA_MSG_COMMAND_FEEDBACK_HANDLER_START = 129;
XA_MSG_COMMAND_FEEDBACK_HANDLER_STOP = 130;
XA_MSG_COMMAND_FEEDBACK_HANDLER_PAUSE = 131;
XA_MSG_COMMAND_FEEDBACK_HANDLER_RESTART = 132;
XA_MSG_COMMAND_FEEDBACK_HANDLER_FLUSH = 133;
XA_MSG_COMMAND_FEEDBACK_HANDLER_SEND_MESSAGE = 134;
XA_MSG_COMMAND_FEEDBACK_HANDLER_QUEUE_AUDIO_EVENT = 135;
XA_MSG_COMMAND_FEEDBACK_HANDLER_QUEUE_TAG_EVENT = 136;
XA_MSG_COMMAND_FEEDBACK_HANDLER_QUEUE_TIMECODE_EVENT = 137;
XA_MSG_COMMAND_FEEDBACK_HANDLER_QUEUE_POSITION_EVENT = 138;
XA_MSG_SET_FEEDBACK_AUDIO_EVENT_RATE = 139;
XA_MSG_GET_FEEDBACK_AUDIO_EVENT_RATE = 140;
XA_MSG_SET_FEEDBACK_HANDLER_NAME = 141;
XA_MSG_GET_FEEDBACK_HANDLER_NAME = 142;
XA_MSG_SET_FEEDBACK_HANDLER_MODULE = 143;
XA_MSG_GET_FEEDBACK_HANDLER_MODULE = 144;
XA_MSG_SET_FEEDBACK_HANDLER_ENVIRONMENT_INTEGER = 145;
XA_MSG_GET_FEEDBACK_HANDLER_ENVIRONMENT_INTEGER = 146;
XA_MSG_SET_FEEDBACK_HANDLER_ENVIRONMENT_STRING = 147;
XA_MSG_GET_FEEDBACK_HANDLER_ENVIRONMENT_STRING = 148;
XA_MSG_UNSET_FEEDBACK_HANDLER_ENVIRONMENT = 149;
XA_MSG_NOTIFY_FEEDBACK_AUDIO_EVENT_RATE = 150;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_STATE = 151;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_MODULE = 152;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_MODULE_INFO = 153;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_NAME = 154;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_INFO = 155;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_ENVIRONMENT_INTEGER = 156;
XA_MSG_NOTIFY_FEEDBACK_HANDLER_ENVIRONMENT_STRING = 157;
XA_MSG_NOTIFY_FEEDBACK_AUDIO_EVENT = 158;
XA_MSG_NOTIFY_FEEDBACK_TAG_EVENT = 159;
XA_MSG_LAST = 160;
{ Player State }
XA_PLAYER_STATE_STOPPED = 0;
XA_PLAYER_STATE_PLAYING = 1;
XA_PLAYER_STATE_PAUSED = 2;
XA_PLAYER_STATE_EOF = 3;
{ Input State }
XA_INPUT_STATE_OPEN = 0;
XA_INPUT_STATE_CLOSED = 1;
{ Output State }
XA_OUTPUT_STATE_OPEN = 0;
XA_OUTPUT_STATE_CLOSED = 1;
{ Feedback State }
XA_FEEDBACK_STATE_STARTED = 0;
XA_FEEDBACK_STATE_STOPPED = 1;
{ Channel Configurations }
XA_OUTPUT_CHANNELS_STEREO = 0;
XA_OUTPUT_CHANNELS_MONO_LEFT = 1;
XA_OUTPUT_CHANNELS_MONO_RIGHT = 2;
XA_OUTPUT_CHANNELS_MONO_MIX = 3;
{ Player Modes }
XA_PLAYER_MODE_OUTPUT_AUTO_CLOSE_ON_STOP = 1;
XA_PLAYER_MODE_OUTPUT_AUTO_CLOSE_ON_PAUSE = 2;
XA_PLAYER_MODE_OUTPUT_AUTO_CLOSE_ON_EOF = 4;
{ Notification Masks }
XA_NOTIFY_MASK_ERROR = $0000001;
XA_NOTIFY_MASK_DEBUG = $0000002;
XA_NOTIFY_MASK_PROGRESS = $0000004;
XA_NOTIFY_MASK_ACK = $0000008;
XA_NOTIFY_MASK_NACK = $0000010;
XA_NOTIFY_MASK_PLAYER_STATE = $0000020;
XA_NOTIFY_MASK_INPUT_STATE = $0000040;
XA_NOTIFY_MASK_INPUT_NAME = $0000080;
XA_NOTIFY_MASK_INPUT_CAPS = $0000100;
XA_NOTIFY_MASK_INPUT_POSITION = $0000200;
XA_NOTIFY_MASK_INPUT_POSITION_RANGE = $0000400;
XA_NOTIFY_MASK_INPUT_TIMECODE = $0000800;
XA_NOTIFY_MASK_INPUT_TIMECODE_GRANULARITY = $0001000;
XA_NOTIFY_MASK_OUTPUT_STATE = $0002000;
XA_NOTIFY_MASK_OUTPUT_NAME = $0004000;
XA_NOTIFY_MASK_OUTPUT_CAPS = $0008000;
XA_NOTIFY_MASK_OUTPUT_VOLUME = $0010000;
XA_NOTIFY_MASK_OUTPUT_BALANCE = $0020000;
XA_NOTIFY_MASK_OUTPUT_PCM_LEVEL = $0040000;
XA_NOTIFY_MASK_OUTPUT_MASTER_LEVEL = $0080000;
XA_NOTIFY_MASK_OUTPUT_PORTS = $0100000;
XA_NOTIFY_MASK_STREAM_MIME_TYPE = $0200000;
XA_NOTIFY_MASK_STREAM_DURATION = $0400000;
XA_NOTIFY_MASK_STREAM_PARAMETERS = $0800000;
XA_NOTIFY_MASK_STREAM_PROPERTIES = $1000000;
XA_NOTIFY_MASK_CODEC_EQUALIZER = $2000000;
XA_NOTIFY_MASK_FEEDBACK_EVENT = $4000000;
{ Input Caps }
XA_DECODER_INPUT_SEEKABLE = $0001;
{ Output Caps }
XA_DECODER_DEVICE_HAS_MASTER_LEVEL_CONTROL = $0000001;
XA_DECODER_DEVICE_HAS_PCM_LEVEL_CONTROL = $0000002;
XA_DECODER_DEVICE_HAS_BALANCE_CONTROL = $0000004;
XA_DECODER_DEVICE_HAS_LINE_OUT = $0000008;
XA_DECODER_DEVICE_HAS_SPEAKER_OUT = $0000010;
XA_DECODER_DEVICE_HAS_HEADPHONE_OUT = $0000020;
XA_DECODER_DEVICE_HAS_MONO_16_00_KHZ = $0000080;
XA_DECODER_DEVICE_HAS_MONO_22_05_KHZ = $0000100;
XA_DECODER_DEVICE_HAS_MONO_24_00_KHZ = $0000200;
XA_DECODER_DEVICE_HAS_MONO_32_00_KHZ = $0000400;
XA_DECODER_DEVICE_HAS_MONO_44_10_KHZ = $0000800;
XA_DECODER_DEVICE_HAS_MONO_48_00_KHZ = $0001000;
XA_DECODER_DEVICE_HAS_STEREO_16_00_KHZ = $0002000;
XA_DECODER_DEVICE_HAS_STEREO_22_05_KHZ = $0004000;
XA_DECODER_DEVICE_HAS_STEREO_24_00_KHZ = $0008000;
XA_DECODER_DEVICE_HAS_STEREO_32_00_KHZ = $0010000;
XA_DECODER_DEVICE_HAS_STEREO_44_10_KHZ = $0020000;
XA_DECODER_DEVICE_HAS_STEREO_48_00_KHZ = $0040000;
XA_DECODER_DEVICE_HAS_8_BITS = $0080000;
XA_DECODER_DEVICE_HAS_MU_LAW = $0100000;
XA_DECODER_DEVICE_HAS_16_BITS = $0200000;
XA_DECODER_DEVICE_HAS_MUTE = $0400000;
XA_DECODER_DEVICE_HAS_RESET = $0800000;
XA_DECODER_DEVICE_HAS_PAUSE = $1000000;
XA_DECODER_DEVICE_HAS_DRAIN = $2000000;
XA_DECODER_DEVICE_HAS_BUFFER_STATUS = $4000000;
{ Output Ports }
XA_DECODER_CONTROL_OUTPUT_LINE = $01;
XA_DECODER_CONTROL_OUTPUT_SPEAKER = $02;
XA_DECODER_CONTROL_OUTPUT_HEADPHONE = $04;
{ Environment Variables }
XA_DECODER_ENVIRONMENT_MAX_NAME_LENGTH = 256;
XA_DECODER_ENVIRONMENT_MAX_STRING_LENGTH = 1024;
{ Input Device Flags }
XA_DECODER_INPUT_QUERY_NAME_IS_GENERIC = $01;
XA_DECODER_INPUT_QUERY_DEVICE_IS_DEFAULT = $02;
{ Output Device Flags }
XA_DECODER_OUTPUT_QUERY_NAME_IS_GENERIC = $01;
XA_DECODER_OUTPUT_QUERY_DEVICE_IS_DEFAULT = $02;
XA_DECODER_OUTPUT_QUERY_DEVICE_IS_SHAREABLE = $04;
{ Modules }
XA_DECODER_INPUT_AUTOSELECT = -1;
XA_DECODER_OUTPUT_AUTOSELECT = -1;
{ Filters }
XA_DECODER_INPUT_FILTER_FIRST = -1;
XA_DECODER_INPUT_FILTER_LAST = 0;
XA_DECODER_INPUT_FILTER_BY_NAME = -2;
XA_DECODER_OUTPUT_FILTER_FIRST = -1;
XA_DECODER_OUTPUT_FILTER_LAST = 0;
XA_DECODER_OUTPUT_FILTER_BY_NAME = -2;
{ Priorities }
XA_CONTROL_PRIORITY_LOWEST = 0;
XA_CONTROL_PRIORITY_LOW = 1;
XA_CONTROL_PRIORITY_NORMAL = 2;
XA_CONTROL_PRIORITY_HIGH = 3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -