Table of Contents

Class DVDInfo

Namespace
VisioForge.Core.Types.MediaInfo
Assembly
VisioForge.Core.dll

Provides comprehensive information about a DVD disc, including its structure, content, capabilities, and current playback state.

public class DVDInfo

Inheritance

Inherited Members

Examples

// Get comprehensive DVD information
var dvdInfo = dvdPlayer.GetDVDInfo();

// Display disc overview
Console.WriteLine($"DVD ID: {dvdInfo.Disc_ID:X}");
Console.WriteLine($"Number of titles: {dvdInfo.Disc_NumOfTitles}");
Console.WriteLine($"Number of volumes: {dvdInfo.Disc_NumOfVolumes}");
Console.WriteLine($"Current volume: {dvdInfo.Disc_Volume}");
Console.WriteLine($"Disc side: {dvdInfo.Disc_DVD_Side}");

// Check audio capabilities
Console.WriteLine($"Audio streams available: {dvdInfo.Audio_StreamsCount}");
Console.WriteLine($"Current audio stream: {dvdInfo.Audio_CurrentStream}");
Console.WriteLine($"Default audio language: {dvdInfo.Audio_DefaultAudioLanguageS}");

// Check subtitle capabilities
Console.WriteLine($"Subtitle streams available: {dvdInfo.Subpicture_StreamsCount}");
Console.WriteLine($"Subtitles enabled: {dvdInfo.Subpicture_Enabled}");
Console.WriteLine($"Current subtitle stream: {dvdInfo.Subpicture_CurrentStream}");

// List all titles with details
foreach (var title in dvdInfo.Titles)
{
    Console.WriteLine($"\nTitle {title.TitleNumber}:");
    Console.WriteLine($"  Duration: {title.Duration}");
    Console.WriteLine($"  Chapters: {title.ChapterCount}");
    Console.WriteLine($"  Angles: {title.AngleCount}");
}

// Check parental controls
Console.WriteLine($"\nParental level: {dvdInfo.ParentalLevel}");
if (dvdInfo.ParentalLevel > 4)
{
    Console.WriteLine("This DVD contains mature content");
}

Remarks

The DVDInfo class serves as a central repository for all DVD-related metadata and state information. It encompasses disc-level properties, title information, audio/video streams, navigation state, and decoder capabilities. This information is essential for DVD player applications to properly handle disc navigation, stream selection, and user interface presentation.

DVD Structure Overview: - A DVD contains one or more titles (movies, episodes, etc.) - Each title can have multiple chapters (scenes) - Each title can contain multiple audio streams (languages, commentary) - Each title can contain multiple subpicture streams (subtitles) - Menus provide navigation between titles and configuration options - Navigation is controlled by a Virtual Machine using registers (GPRMs/SPRMs)

Key concepts represented in this class: - Title structure and navigation - Multi-language support for audio, subtitles, and menus - Parental control ratings - Region coding and copy protection - Hardware decoder capabilities - Current playback state and user selections

Constructors

DVDInfo()

Initializes a new instance of the VisioForge.Core.Types.MediaInfo.DVDInfo class with default values.

public DVDInfo()

Remarks

Initializes all collections and sets appropriate default values for string properties. The country code array is initialized to the standard 2-byte size required for ISO 3166 codes.

Properties

Audio_CurrentStream

Gets or sets the currently selected audio stream index.

public int Audio_CurrentStream { get; set; }

Property Value

int

Remarks

Users can switch between available audio streams during playback to select different languages, commentary tracks, or audio formats (e.g., stereo vs. 5.1 surround).

Audio_DefaultAudioLanguage

Gets or sets the default audio language code as specified by the DVD author.

public int Audio_DefaultAudioLanguage { get; set; }

Property Value

int

Remarks

This is the audio stream that will be selected by default when the DVD starts playing, unless overridden by player settings or user preferences.

Audio_DefaultAudioLanguageExt

Gets or sets the extension type for the default audio language.

public DVDAudioLangExt Audio_DefaultAudioLanguageExt { get; set; }

Property Value

DVDAudioLangExt

Remarks

Language extensions help differentiate between multiple audio tracks in the same language that serve different purposes (e.g., normal dialogue vs. commentary).

Audio_DefaultAudioLanguageS

Gets or sets the default audio language as a human-readable string.

public string Audio_DefaultAudioLanguageS { get; set; }

Property Value

string

Remarks

This provides a user-friendly representation of the default audio language for display in user interfaces.

Audio_StreamsCount

Gets or sets the total number of audio streams available on the current DVD title.

public int Audio_StreamsCount { get; set; }

Property Value

int

Remarks

Multiple audio streams allow for different languages, audio formats, or special tracks like commentary. Not all streams may be accessible due to regional restrictions.

DecoderCaps

Gets or sets the capabilities of the DVD decoder being used for playback.

public DVDDecoderCaps DecoderCaps { get; set; }

Property Value

DVDDecoderCaps

Remarks

Decoder capabilities determine what features are available during playback, such as fast-forward/reverse speeds, audio format support, and smooth motion capabilities. This information helps applications adjust their UI and features based on hardware limitations.

Disc_CountryCode

Gets or sets the country code associated with this DVD disc.

public byte[] Disc_CountryCode { get; set; }

Property Value

byte[]

Remarks

The country code helps determine which parental rating system to use and may affect available content based on regional restrictions.

Disc_CurrentUOPS

Gets or sets the current User Operation Prohibitions (UOPs) flags.

public DVDValidUOPFlag Disc_CurrentUOPS { get; set; }

Property Value

DVDValidUOPFlag

Remarks

UOPs control what actions users can perform at any given time. For example, some DVDs prohibit skipping FBI warnings or studio logos, while others may disable fast-forward during certain scenes.

Disc_DVD_Side

Gets or sets which side of a double-sided DVD is currently active.

public DVDDiscSide Disc_DVD_Side { get; set; }

Property Value

DVDDiscSide

Remarks

Double-sided DVDs require manual flipping to access content on the other side. Each side functions as an independent disc with its own content structure.

Disc_GPRMs

Gets or sets the current General Purpose Register Memory (GPRM) values.

public DVDGPRMArray Disc_GPRMs { get; set; }

Property Value

DVDGPRMArray

Remarks

GPRMs are used by DVD authors to implement interactive features, track user choices, and control conditional navigation. They function as variables in the DVD's programming logic.

Disc_ID

Gets or sets the unique identifier for this DVD disc.

public long Disc_ID { get; set; }

Property Value

long

Remarks

The disc ID can be used to remember user preferences, playback positions, or to look up disc information in online databases.

Disc_NumOfTitles

Gets or sets the total number of titles available on this DVD.

public int Disc_NumOfTitles { get; set; }

Property Value

int

Remarks

Titles are the primary content divisions on a DVD. Title 1 is usually the main feature, while subsequent titles often contain special features, trailers, or additional episodes.

Disc_NumOfVolumes

Gets or sets the total number of volumes in this DVD set.

public int Disc_NumOfVolumes { get; set; }

Property Value

int

Remarks

Multi-volume sets are common for TV series, extended editions, or collections. This helps users understand the complete scope of the content set.

Disc_SPRMs

Gets or sets the current System Parameter Register Memory (SPRM) values.

public DVDSPRMArray Disc_SPRMs { get; set; }

Property Value

DVDSPRMArray

Remarks

SPRMs are read-only registers that provide information about the current playback state, selected streams, parental level, region code, and player capabilities. Unlike GPRMs, these cannot be modified by DVD commands.

Disc_Volume

Gets or sets the current volume number within a multi-volume DVD set.

public int Disc_Volume { get; set; }

Property Value

int

Remarks

Used in conjunction with Disc_NumOfVolumes to track position within multi-disc sets and potentially prompt users to insert the next disc.

Menu_DefaultLanguage

Gets or sets the default menu language code.

public int Menu_DefaultLanguage { get; set; }

Property Value

int

Remarks

DVDs can contain menus in multiple languages. The default is typically set based on the disc's target market or region.

Menu_DefaultLanguageS

Gets or sets the default menu language as a human-readable string.

public string Menu_DefaultLanguageS { get; set; }

Property Value

string

Remarks

This provides a user-friendly representation of the menu language for display purposes, converted from the Menu_DefaultLanguage code.

Menu_Languages

Gets or sets the list of all available menu languages on this DVD.

public List<string> Menu_Languages { get; set; }

Property Value

List<string>

Remarks

Multi-language menu support allows DVDs to be marketed internationally. Common languages include English, French, Spanish, German, and Japanese, but availability varies by disc region and publisher.

Menu_VMG_Attributes

Gets or sets the Video Manager (VMG) menu attributes.

public DVDMenuAttributes Menu_VMG_Attributes { get; set; }

Property Value

DVDMenuAttributes

Remarks

The VMG menu is the top-level menu system that provides access to all titles and disc features. It typically includes the main menu, setup menu, and special features menu.

ParentalLevel

Gets or sets the current parental control level setting.

public int ParentalLevel { get; set; }

Property Value

int

Remarks

DVDs can contain multiple versions of scenes with different ratings. The parental level setting determines which version is played. If the disc's rating exceeds the player's setting, playback may be blocked or require a password. The exact meaning of levels can vary by country (MPAA for US, different systems elsewhere).

Subpicture_CurrentStream

Gets or sets the currently selected subpicture (subtitle) stream index.

public int Subpicture_CurrentStream { get; set; }

Property Value

int

Remarks

Subpicture streams contain subtitles, captions, and menu highlight overlays. Users can switch between available streams to select different subtitle languages or turn subtitles off entirely.

Subpicture_DefaultLanguage

Gets or sets the default subpicture language code.

public int Subpicture_DefaultLanguage { get; set; }

Property Value

int

Remarks

This is the subtitle stream that may be selected by default based on player settings or disc authoring. Many DVDs don't enable subtitles by default.

Subpicture_DefaultLanguageExt

Gets or sets the extension type for the default subpicture language.

public DVDSubPictureLangExt Subpicture_DefaultLanguageExt { get; set; }

Property Value

DVDSubPictureLangExt

Remarks

Subpicture extensions help differentiate between multiple subtitle tracks in the same language that serve different purposes (e.g., normal subtitles vs. SDH/CC).

Subpicture_DefaultLanguageS

Gets or sets the default subpicture language as a human-readable string.

public string Subpicture_DefaultLanguageS { get; set; }

Property Value

string

Remarks

This provides a user-friendly representation of the default subtitle language for display in user interfaces.

Subpicture_Enabled

Gets or sets a value indicating whether subpicture display is currently enabled.

public bool Subpicture_Enabled { get; set; }

Property Value

bool

Remarks

This controls the global visibility of subpictures. When false, no subtitles will be displayed regardless of stream selection. When true, the selected subpicture stream (if any) will be displayed.

Subpicture_StreamsCount

Gets or sets the total number of subpicture streams available on the current DVD title.

public int Subpicture_StreamsCount { get; set; }

Property Value

int

Remarks

Multiple subpicture streams allow for subtitles in different languages, as well as special tracks like closed captions for the hearing impaired or director's commentary subtitles. Not all streams may be accessible due to regional restrictions.

Titles

Gets or sets the collection of all titles available on this DVD.

public List<DVDTitleInfo> Titles { get; set; }

Property Value

List<DVDTitleInfo>

Remarks

Titles are the main content divisions on a DVD:

  • Title 1 is typically the main feature film or first episode
  • Subsequent titles often contain special features, deleted scenes, or additional episodes
  • Each title can have different audio/subtitle options and chapter divisions
  • Some titles may be hidden and only accessible through specific menu paths