Table of Contents

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 DVDSPRMArray

Inherited 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:

RegisterPurpose and Contents
SPRM0Preferred menu language code (ISO 639-1, e.g., "en" for English)
SPRM1Current audio stream number and attributes
SPRM2Current subpicture stream number and display flag
SPRM3Current angle number (for multi-angle features)
SPRM4Current title number in Title set
SPRM5Current Video Title Set (VTS) number
SPRM6Current Title PGC (Program Chain) number
SPRM7Current Part of Title (chapter) number
SPRM8Highlighted button number (0-36, 0 means no button selected)
SPRM9Navigation timer for auto-actions
SPRM10Current PGC playback time (in BCD format)
SPRM11Player audio mixing mode for karaoke (bit flags)
SPRM12Country code for parental management (ISO 3166-1 alpha-2)
SPRM13Parental management level (1-8, lower = more restrictive)
SPRM14Player video configuration (bit 0-1: aspect ratio, bit 2: display mode)
SPRM15Player audio capabilities (decoder format support flags)
SPRM16Preferred audio language code (ISO 639-1)
SPRM17Preferred audio language extension (normal, commentary, etc.)
SPRM18Preferred subpicture language code (ISO 639-1)
SPRM19Preferred subpicture language extension (normal, large, children, etc.)
SPRM20Player region code (bit mask, bit 0-7 for regions 1-8)
SPRM21Reserved for future use
SPRM22Reserved for future use
SPRM23Player 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