Blu-ray provides 128 (0-127) Player Status Registers. Each register can store a 32-bit unsigned integer.
Here is a list of some of the useful registers:
1 - Primary Audio Stream Number
2 - PG TextST Stream Number and PiP PG TextST Stream Number
3 - Angle Number
4 - Title Number
5 - Chapter Number
6 - PlayList ID
7 - PlayItem ID
8 - Presentation Time in 45kHz
9 - Navigation Timer
13 - Parental Level
14 - Secondary Audio and Secondary Video Stream Number
15 - Player Capability for Audio
16 - Language Code for Audio
17 - Language Code for Presentation Graphics and Text subtitle
18 - Language Code for Menu Description
19 - Country Code
20 - Region Code
21 - Output Mode Preference value
22 - Stereoscopic status
23 - Display Capability for video
24 - Player Capability for 3D
25 - Player UHD/HDR Capability
26 - Display UHD/HDR Capability
29 - Player Capability for Video
30 - Player Capability for Text Subtitle
31 - Player Profile / Player Version
PSRs 16-18 contain three-letter (lowercase) codes: first_letter_code second_letter_code third_letter_code. Thus, for English it is "eng" = 0x65 0x6e 0x67 = 0x656e67 (hex) = 6647399 (decimal).
PSR 19 contains two-letter (uppercase) codes: first_letter_code second_letter_code. Thus, for Germany it is "DE" = 0x44 0x45 = 0x4445 (hex) = 17477 (decimal).
PSR 20: 1 for Region A, 2 for Region B, 4 for Region C. You can use the functions isRegionA(), isRegionB(), isRegionC() and isRegion(int mask).
PSR 25:
bit 0: BD-J conversion from sRGB 8-bits to BDMV HDR
bit 1: Dolby Vision playback
bit 2: Philips HDR playback
bit 3: HDR-to-SDR video conversion by Philips HDR
bit 4: HDR-to-SDR conversion by Colour Remapping Information
PSR 26:
bit 0: 3840x2160 video signal input capable display
bit 1: BDMV HDR video signal input capable display
bit 2: Dolby Vision video signal input capable display
bit 3: Philips HDR video signal input capable display