mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
268 lines
9.3 KiB
C
268 lines
9.3 KiB
C
/** @file
|
|
Copyright (C) 2020, vit9696. All rights reserved.
|
|
|
|
All rights reserved.
|
|
|
|
This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
**/
|
|
|
|
#ifndef OC_AUDIO_PROTOCOL_H
|
|
#define OC_AUDIO_PROTOCOL_H
|
|
|
|
#include <Protocol/AudioIo.h>
|
|
#include <Protocol/AppleVoiceOver.h>
|
|
#include <Protocol/DevicePath.h>
|
|
|
|
#define OC_AUDIO_PROTOCOL_REVISION 0x070000
|
|
|
|
//
|
|
// OC_AUDIO_PROTOCOL_GUID
|
|
// 4B228577-6274-4A48-82AE-0713A1171987
|
|
//
|
|
#define OC_AUDIO_PROTOCOL_GUID \
|
|
{ 0x4B228577, 0x6274, 0x4A48, \
|
|
{ 0x82, 0xAE, 0x07, 0x13, 0xA1, 0x17, 0x19, 0x87 } }
|
|
|
|
typedef struct OC_AUDIO_PROTOCOL_ OC_AUDIO_PROTOCOL;
|
|
|
|
/**
|
|
Voice over base types.
|
|
**/
|
|
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_APPLE "AXEFIAudio"
|
|
#define OC_VOICE_OVER_AUDIO_BASE_TYPE_OPEN_CORE "OCEFIAudio"
|
|
|
|
/**
|
|
Custom OpenCore audio files.
|
|
**/
|
|
#define OC_VOICE_OVER_AUDIO_FILE_ABORT_TIMEOUT "AbortTimeout"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_CHOOSE_OS "ChooseOS"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_DEFAULT "Default"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_DISK_IMAGE "DiskImage"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_ENTER_PASSWORD "EnterPassword"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_EXECUTION_FAILURE "ExecutionFailure"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_EXECUTION_SUCCESSFUL "ExecutionSuccessful"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_EXTERNAL "External"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_EXTERNAL_OS "ExternalOS"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_EXTERNAL_TOOL "ExternalTool"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_LOADING "Loading"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_MAC_OS "macOS"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_MAC_OS_RECOVERY "macOS_Recovery"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_MAC_OS_TIME_MACHINE "macOS_TimeMachine"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_MAC_OS_UPDATE_FW "macOS_UpdateFw"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_OTHER_OS "OtherOS"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_ACCEPTED "PasswordAccepted"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_INCORRECT "PasswordIncorrect"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_PASSWORD_RETRY_LIMIT "PasswordRetryLimit"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_RELOADING "Reloading"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_RESET_NVRAM "ResetNVRAM"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_RESTART "Restart"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_SELECTED "Selected"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_SHOW_AUXILIARY "ShowAuxiliary"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_SHUT_DOWN "ShutDown"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_SIP_IS_DISABLED "SIPIsDisabled"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_SIP_IS_ENABLED "SIPIsEnabled"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_TIMEOUT "Timeout"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_UEFI_SHELL "UEFI_Shell"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_VOICE_OVER_BOOT "VoiceOver_Boot"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_WELCOME "Welcome"
|
|
#define OC_VOICE_OVER_AUDIO_FILE_WINDOWS "Windows"
|
|
|
|
/**
|
|
Connect to Audio I/O.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] DevicePath Controller device path, optional.
|
|
@param[in] CodecAddress Codec address, optional.
|
|
@param[in] OutputIndexMask Output index mask.
|
|
|
|
@retval EFI_SUCESS on success.
|
|
@retval EFI_NOT_FOUND when missing.
|
|
@retval EFI_UNSUPPORTED on failure.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_CONNECT)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL,
|
|
IN UINT8 CodecAddress OPTIONAL,
|
|
IN UINT64 OutputIndexMask
|
|
);
|
|
|
|
/**
|
|
Set Audio I/O default gain.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] Gain The amplifier gain (or attenuation if negative) in dB to use, relative to 0 dB level (0 dB
|
|
is usually at at or near max available volume, but is not required to be so in the spec).
|
|
|
|
@retval EFI_SUCESS on success.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_SET_DEFAULT_GAIN)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN INT8 Gain
|
|
);
|
|
|
|
/**
|
|
Retrieve file contents callback.
|
|
|
|
@param[in,out] Context Externally specified context.
|
|
@param[in] BasePath File base path.
|
|
@param[in] BaseType Audio base type.
|
|
@param[in] Localised Is file localised?
|
|
@param[in] LanguageCode Language code for the file.
|
|
@param[out] Buffer Pointer to buffer.
|
|
@param[out] BufferSize Pointer to buffer size.
|
|
@param[out] Frequency Decoded PCM frequency.
|
|
@param[out] Bits Decoded bit count.
|
|
@param[out] Channels Decoded amount of channels.
|
|
|
|
@retval EFI_SUCCESS on successful file lookup.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_PROVIDER_ACQUIRE)(
|
|
IN VOID *Context,
|
|
IN CONST CHAR8 *BasePath,
|
|
IN CONST CHAR8 *BaseType,
|
|
IN BOOLEAN Localised,
|
|
IN APPLE_VOICE_OVER_LANGUAGE_CODE LanguageCode,
|
|
OUT UINT8 **Buffer,
|
|
OUT UINT32 *BufferSize,
|
|
OUT EFI_AUDIO_IO_PROTOCOL_FREQ *Frequency,
|
|
OUT EFI_AUDIO_IO_PROTOCOL_BITS *Bits,
|
|
OUT UINT8 *Channels
|
|
);
|
|
|
|
/**
|
|
Release file contents given by acquire callback.
|
|
|
|
@param[in,out] Context Externally specified context.
|
|
@param[out] Buffer Pointer to buffer.
|
|
|
|
@retval EFI_SUCCESS on successful release.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_PROVIDER_RELEASE)(
|
|
IN VOID *Context,
|
|
IN UINT8 *Buffer
|
|
);
|
|
|
|
/**
|
|
Set resource provider.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] Acquire Resource acquire handler.
|
|
@param[in] Release Resource release handler, optional.
|
|
@param[in] Context Resource handler context.
|
|
|
|
@retval EFI_SUCCESS on successful provider update.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_SET_PROVIDER)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN OC_AUDIO_PROVIDER_ACQUIRE Acquire,
|
|
IN OC_AUDIO_PROVIDER_RELEASE Release OPTIONAL,
|
|
IN VOID *Context
|
|
);
|
|
|
|
/**
|
|
Convert raw amplifier gain setting to decibel gain value; converts using the parameters of the first
|
|
channel specified for sound on the current codec which has non-zero amp capabilities.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] GainParam Raw codec gain param.
|
|
@param[out] Gain The amplifier gain (or attenuation if negative) in dB to use, relative to 0 dB level.
|
|
|
|
@retval EFI_SUCCESS on successful conversion.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_RAW_GAIN_TO_DECIBELS)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN UINT8 GainParam,
|
|
OUT INT8 *Gain
|
|
);
|
|
|
|
/**
|
|
Play file.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] BasePath File base path.
|
|
@param[in] BaseType Audio base type.
|
|
@param[in] Localised Is file localised?
|
|
@param[in] Gain The amplifier gain (or attenuation if negative) in dB to use, relative to 0 dB level.
|
|
@param[in] UseGain If TRUE use provided volume level, otherwise use stored global volume level.
|
|
@param[in] Wait Wait for completion of the previous track.
|
|
|
|
@retval EFI_SUCCESS on successful playback startup.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_PLAY_FILE)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN CONST CHAR8 *BasePath,
|
|
IN CONST CHAR8 *BaseType,
|
|
IN BOOLEAN Localised,
|
|
IN INT8 Gain OPTIONAL,
|
|
IN BOOLEAN UseGain,
|
|
IN BOOLEAN Wait
|
|
);
|
|
|
|
/**
|
|
Stop playback.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] Wait Wait for audio completion.
|
|
|
|
@retval EFI_SUCCESS on successful playback stop.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *OC_AUDIO_STOP_PLAYBACK)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN BOOLEAN Wait
|
|
);
|
|
|
|
/**
|
|
Set playback delay.
|
|
|
|
@param[in,out] This Audio protocol instance.
|
|
@param[in] Delay Delay after audio configuration in milliseconds.
|
|
|
|
@return previous delay, defaults to 0.
|
|
**/
|
|
typedef
|
|
UINTN
|
|
(EFIAPI *OC_AUDIO_SET_DELAY)(
|
|
IN OUT OC_AUDIO_PROTOCOL *This,
|
|
IN UINTN Delay
|
|
);
|
|
|
|
//
|
|
// Includes a revision for debugging reasons.
|
|
//
|
|
struct OC_AUDIO_PROTOCOL_ {
|
|
UINTN Revision;
|
|
OC_AUDIO_CONNECT Connect;
|
|
OC_AUDIO_RAW_GAIN_TO_DECIBELS RawGainToDecibels;
|
|
OC_AUDIO_SET_DEFAULT_GAIN SetDefaultGain;
|
|
OC_AUDIO_SET_PROVIDER SetProvider;
|
|
OC_AUDIO_PLAY_FILE PlayFile;
|
|
OC_AUDIO_STOP_PLAYBACK StopPlayback;
|
|
OC_AUDIO_SET_DELAY SetDelay;
|
|
};
|
|
|
|
extern EFI_GUID gOcAudioProtocolGuid;
|
|
|
|
#endif // OC_AUDIO_PROTOCOL_H
|