Struct DVDSPRMArray
- Namespace
- VisioForge.Core.Types.MediaInfo
- Assembly
- VisioForge.Core.dll
Represents an array of DVD System Parameter Register (SPRM) values that control DVD player state and behavior.
public struct DVDSPRMArrayInherited Members
Examples
// Reading SPRM values during DVD playback
DVDSPRMArray sprmValues = dvdPlayer.GetSPRMArray();
// Check current audio stream
short audioStream = sprmValues.Registers[1];
Console.WriteLine($"Current audio stream: {audioStream & 0x07}");
// Check if subtitles are enabled
short subpictureReg = sprmValues.Registers[2];
bool subtitlesOn = (subpictureReg & 0x40) != 0;
Console.WriteLine($"Subtitles: {(subtitlesOn ? "On" : "Off")}");
// Get current chapter
short chapter = sprmValues.Registers[7];
Console.WriteLine($"Current chapter: {chapter}");
// Check parental level
short parentalLevel = sprmValues.Registers[13];
Console.WriteLine($"Parental control level: {parentalLevel}");
Remarks
System Parameter Registers (SPRMs) are a set of 24 read-only registers (SPRM0-SPRM23) that maintain the current state of the DVD player. These registers store critical information about player configuration, user preferences, and current playback state. Unlike General Parameter Registers (GPRMs) which can be modified by DVD content, SPRMs are controlled by the player and reflect its current operational state.
The SPRM registers serve as the interface between DVD content and player capabilities, allowing disc authors to create content that adapts to different player configurations and user preferences. DVD navigation commands can read these values to make decisions about playback flow, menu presentation, and feature availability.
Key SPRM registers include:
| Register | Purpose and Contents |
|---|---|
| SPRM0 | Preferred menu language code (ISO 639-1, e.g., "en" for English) |
| SPRM1 | Current audio stream number and attributes |
| SPRM2 | Current subpicture stream number and display flag |
| SPRM3 | Current angle number (for multi-angle features) |
| SPRM4 | Current title number in Title set |
| SPRM5 | Current Video Title Set (VTS) number |
| SPRM6 | Current Title PGC (Program Chain) number |
| SPRM7 | Current Part of Title (chapter) number |
| SPRM8 | Highlighted button number (0-36, 0 means no button selected) |
| SPRM9 | Navigation timer for auto-actions |
| SPRM10 | Current PGC playback time (in BCD format) |
| SPRM11 | Player audio mixing mode for karaoke (bit flags) |
| SPRM12 | Country code for parental management (ISO 3166-1 alpha-2) |
| SPRM13 | Parental management level (1-8, lower = more restrictive) |
| SPRM14 | Player video configuration (bit 0-1: aspect ratio, bit 2: display mode) |
| SPRM15 | Player audio capabilities (decoder format support flags) |
| SPRM16 | Preferred audio language code (ISO 639-1) |
| SPRM17 | Preferred audio language extension (normal, commentary, etc.) |
| SPRM18 | Preferred subpicture language code (ISO 639-1) |
| SPRM19 | Preferred subpicture language extension (normal, large, children, etc.) |
| SPRM20 | Player region code (bit mask, bit 0-7 for regions 1-8) |
| SPRM21 | Reserved for future use |
| SPRM22 | Reserved for future use |
| SPRM23 | Player state and capabilities extension |
These registers enable sophisticated DVD behavior such as: - Automatic language selection based on player preferences - Seamless branching for different versions of content - Parental control enforcement - Multi-angle scene synchronization - Region-specific content protection
Properties
Registers
Gets or sets the array containing all 24 DVD System Parameter Register values.
public short[] Registers { readonly get; set; }Property Value
- short[]
Remarks
The array contains 24 16-bit values (SPRM0 through SPRM23), each serving a specific purpose in DVD navigation and playback control. These values are maintained by the DVD player and reflect the current player state, user preferences, and disc navigation position.
Register values are typically accessed by index: - Registers[0]: SPRM0 - Menu description language code - Registers[1]: SPRM1 - Audio stream number - Registers[2]: SPRM2 - Subpicture stream number and display flag - ... and so on through Registers[23]
Some registers use specific bit patterns: - Language codes: Packed ASCII (e.g., 0x656E = "en") - Bit flags: Individual bits represent different states or capabilities - BCD values: Time values in Binary Coded Decimal format - Enumerated values: Predefined constants for specific settings