Kernel : AvSendTVEncoderOption expanded with all possible options
This commit is contained in:
parent
7bd2e61d3e
commit
20e9cd0131
|
@ -12,8 +12,6 @@
|
|||
#ifndef XBOX_H
|
||||
#define XBOX_H
|
||||
|
||||
#define AV_FLAGS_60Hz 0x00400000
|
||||
#define AV_FLAGS_50Hz 0x00800000
|
||||
#define AV_PACK_NONE 0x00000000
|
||||
#define AV_PACK_STANDARD 0x00000001
|
||||
#define AV_PACK_RFU 0x00000002
|
||||
|
@ -23,12 +21,55 @@
|
|||
#define AV_PACK_SVIDEO 0x00000006
|
||||
#define AV_PACK_MAX 0x00000007
|
||||
#define AV_PACK_MASK 0x000000FF
|
||||
|
||||
#define AV_STANDARD_NTSC_M 0x00000100
|
||||
#define AV_STANDARD_NTSC_J 0x00000200
|
||||
#define AV_STANDARD_PAL_I 0x00000300
|
||||
#define AV_STANDARD_PAL_M 0x00000400
|
||||
#define AV_STANDARD_MAX 0x00000500
|
||||
#define AV_QUERY_AV_CAPABILITIES 6
|
||||
#define AV_STANDARD_MASK 0x00000F00
|
||||
#define AV_STANDARD_SHIFT 8
|
||||
|
||||
#define AV_FLAGS_HDTV_480i 0x00000000 // Bogus 'flag'
|
||||
#define AV_FLAGS_HDTV_720p 0x00020000
|
||||
#define AV_FLAGS_HDTV_1080i 0x00040000
|
||||
#define AV_FLAGS_HDTV_480p 0x00080000
|
||||
#define AV_HDTV_MODE_MASK 0x000E0000 // Exclude AV_FLAGS_WIDESCREEN !
|
||||
|
||||
#define AV_FLAGS_WIDESCREEN 0x00010000
|
||||
#define AV_FLAGS_LETTERBOX 0x00100000
|
||||
#define AV_ASPECT_RATIO_MASK 0x00110000 // = AV_FLAGS_WIDESCREEN | AV_FLAGS_LETTERBOX
|
||||
|
||||
#define AV_FLAGS_INTERLACED 0x00200000
|
||||
|
||||
#define AV_FLAGS_60Hz 0x00400000
|
||||
#define AV_FLAGS_50Hz 0x00800000
|
||||
#define AV_REFRESH_MASK 0x00C00000 // = AV_FLAGS_60Hz | AV_FLAGS_50Hz
|
||||
|
||||
#define AV_FLAGS_FIELD 0x01000000
|
||||
#define AV_FLAGS_10x11PAR 0x02000000
|
||||
|
||||
#define AV_USER_FLAGS_MASK (AV_HDTV_MODE_MASK | AV_ASPECT_RATIO_MASK | AV_REFRESH_MASK) // TODO : Should AV_REFRESH_MASK be AV_FLAGS_60Hz instead?
|
||||
#define AV_USER_FLAGS_SHIFT 16
|
||||
|
||||
// Options to AvSendTVEncoderOption() :
|
||||
#define AV_OPTION_MACROVISION_MODE 1
|
||||
#define AV_OPTION_ENABLE_CC 2
|
||||
#define AV_OPTION_DISABLE_CC 3
|
||||
#define AV_OPTION_SEND_CC_DATA 4
|
||||
#define AV_QUERY_CC_STATUS 5
|
||||
#define AV_QUERY_AV_CAPABILITIES 6
|
||||
#define AV_OPTION_BLANK_SCREEN 9
|
||||
#define AV_OPTION_MACROVISION_COMMIT 10
|
||||
#define AV_OPTION_FLICKER_FILTER 11
|
||||
#define AV_OPTION_ZERO_MODE 12
|
||||
#define AV_OPTION_QUERY_MODE 13
|
||||
#define AV_OPTION_ENABLE_LUMA_FILTER 14
|
||||
#define AV_OPTION_GUESS_FIELD 15
|
||||
#define AV_QUERY_ENCODER_TYPE 16
|
||||
#define AV_QUERY_MODE_TABLE_VERSION 17
|
||||
#define AV_OPTION_CGMS 18
|
||||
#define AV_OPTION_WIDESCREEN 19
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0001 - AvGetSavedDataAddress()
|
||||
|
|
|
@ -58,6 +58,21 @@ namespace NtDll
|
|||
// Global Variable(s)
|
||||
PVOID g_pPersistedData = NULL;
|
||||
|
||||
ULONG AvQueryAvCapabilities()
|
||||
{
|
||||
// This is the only AV mode we currently emulate, so we can hardcode the return value
|
||||
// TODO: Once we allow the user to configure the connected AV pack, we should implement this proper
|
||||
// This function should first query the AV Pack type, read the user's EEPROM settings and
|
||||
// return the correct flags based on this.
|
||||
//
|
||||
// For the AV Pack, read SMC_COMMAND_VIDEO_MODE (or HalBootSMCVideoMode) and convert it to a AV_PACK_*
|
||||
//
|
||||
// To read the EEPROM, call ExQueryNonVolatileSetting() with these config flags :
|
||||
// XC_FACTORY_AV_REGION; if that fails, fallback on AV_STANDARD_NTSC_M | AV_FLAGS_60Hz
|
||||
// XC_VIDEO_FLAGS; if that fails, fallback on 0
|
||||
return AV_PACK_HDTV | AV_STANDARD_NTSC_M | AV_FLAGS_60Hz;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0001 - AvGetSavedDataAddress()
|
||||
// ******************************************************************
|
||||
|
@ -126,16 +141,64 @@ XBSYSAPI EXPORTNUM(2) xboxkrnl::VOID NTAPI xboxkrnl::AvSendTVEncoderOption
|
|||
LOG_FUNC_ARG_OUT(Result)
|
||||
LOG_FUNC_END;
|
||||
|
||||
//if (RegisterBase == NULL)
|
||||
// RegisterBase = (void *)NV20_REG_BASE_KERNEL;
|
||||
|
||||
switch (Option) {
|
||||
case AV_QUERY_AV_CAPABILITIES:
|
||||
// This is the only AV mode we currently emulate, so we can hardcode the return value
|
||||
// TODO: Once we allow the user to configure the connected AV pack, we should implement this proper
|
||||
// This function should first query the AV Pack type, read the user's EEPROM settings and
|
||||
// return the correct flags based on this.
|
||||
*Result = AV_PACK_HDTV | AV_STANDARD_NTSC_M | AV_FLAGS_60Hz;
|
||||
break;
|
||||
default:
|
||||
LOG_UNIMPLEMENTED();
|
||||
case AV_OPTION_MACROVISION_MODE:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_ENABLE_CC:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_DISABLE_CC:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_SEND_CC_DATA:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_QUERY_CC_STATUS:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_QUERY_AV_CAPABILITIES:
|
||||
*Result = AvQueryAvCapabilities();
|
||||
break;
|
||||
case AV_OPTION_BLANK_SCREEN:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_MACROVISION_COMMIT:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_FLICKER_FILTER:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_ZERO_MODE:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_QUERY_MODE:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_ENABLE_LUMA_FILTER:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_GUESS_FIELD:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_QUERY_ENCODER_TYPE:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_QUERY_MODE_TABLE_VERSION:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_CGMS:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
case AV_OPTION_WIDESCREEN:
|
||||
LOG_UNIMPLEMENTED();
|
||||
break;
|
||||
default:
|
||||
// do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -563,7 +563,7 @@ XBSYSAPI EXPORTNUM(334) xboxkrnl::VOID NTAPI xboxkrnl::WRITE_PORT_BUFFER_ULONG
|
|||
// * 0x0164 - HalBootSMCVideoMode
|
||||
// ******************************************************************
|
||||
// TODO: Verify this!
|
||||
XBSYSAPI EXPORTNUM(356) xboxkrnl::DWORD xboxkrnl::HalBootSMCVideoMode = 1;
|
||||
XBSYSAPI EXPORTNUM(356) xboxkrnl::DWORD xboxkrnl::HalBootSMCVideoMode = 1; // TODO : AV_PACK_STANDARD?
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0166 - HalIsResetOrShutdownPending()
|
||||
|
|
Loading…
Reference in New Issue