Table of Contents

Class DVDVideoStream

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

Represents a DVD video stream with multi-angle support, extending basic video attributes with angle-specific information.

public class DVDVideoStream : DVDVideoAttributes

Inheritance

Inherited Members

Examples

// Handle multi-angle DVD content
void ProcessMultiAngleScene(DVDVideoStream videoStream)
{
    if (videoStream.AnglesAvailable > 1)
    {
        Console.WriteLine($"Multi-angle scene detected with {videoStream.AnglesAvailable} angles");
        Console.WriteLine($"Currently viewing angle {videoStream.CurrentAngle}");

        // Enable angle switching UI
        EnableAngleButton();
        ShowAngleIndicator(videoStream.CurrentAngle, videoStream.AnglesAvailable);

        // Check if angle switching is currently allowed
        if (!IsUOPSet(DVDValidUOPFlag.SelectAngle))
        {
            Console.WriteLine("User can switch angles");
        }
        else
        {
            Console.WriteLine("Angle switching temporarily prohibited");
        }
    }
    else
    {
        Console.WriteLine("Single angle content");
        DisableAngleButton();
    }

    // Display video format info (inherited from DVDVideoAttributes)
    Console.WriteLine($"Video: {videoStream.SourceResolutionX}×{videoStream.SourceResolutionY}");
    Console.WriteLine($"Compression: {videoStream.Compression}");
}

// Switch to a different angle
void SwitchToAngle(DVDVideoStream videoStream, ulong desiredAngle)
{
    if (desiredAngle >= 1 && desiredAngle <= videoStream.AnglesAvailable)
    {
        Console.WriteLine($"Switching from angle {videoStream.CurrentAngle} to {desiredAngle}");
        // Player would perform the actual angle switch here
        videoStream.CurrentAngle = desiredAngle;
    }
    else
    {
        Console.WriteLine($"Invalid angle. Must be between 1 and {videoStream.AnglesAvailable}");
    }
}

Remarks

DVDVideoStream extends DVDVideoAttributes to include support for multi-angle scenes, a unique feature of the DVD format. Multi-angle functionality allows viewers to switch between different camera angles during playback of the same scene, commonly used in:

  • Concert videos - Multiple camera positions (stage, audience, close-ups)
  • Sports content - Different viewing angles of the action
  • Adult content - Different perspectives of scenes
  • Special features - Behind-the-scenes angles during movie scenes
  • Interactive content - Choose-your-own-adventure style narratives

How Multi-Angle Works:

  1. Multiple video streams are interleaved on the disc for the same time period
  2. Each angle is divided into small cells that can be seamlessly switched
  3. The player reads ahead to buffer all angles for smooth switching
  4. Audio typically remains constant across all angles
  5. Angle changes are instantaneous without interrupting playback

Technical Limitations:

  • Maximum 9 angles per scene (limited by DVD specification)
  • All angles must have identical duration and frame count
  • Increased disc space usage (each angle requires separate encoding)
  • Reduced maximum bitrate per angle due to interleaving requirements
  • Not all DVD players support seamless angle switching

Multi-angle scenes are relatively rare on commercial DVDs due to the additional production cost and disc space requirements. When present, an angle icon typically appears on screen to indicate availability.

Properties

AnglesAvailable

Gets or sets the total number of camera angles available in the current multi-angle scene.

public ulong AnglesAvailable { get; set; }

Property Value

ulong

Remarks

When AnglesAvailable is greater than 1, the DVD player should:

  • Display an angle indicator icon on screen
  • Enable angle switching controls (unless prohibited by UOP)
  • Buffer multiple angle streams for seamless switching
  • Maintain synchronization across all angles

The DVD specification limits multi-angle scenes to 9 simultaneous angles due to data rate and seek time constraints. Each angle must be encoded at a lower bitrate to fit within the maximum combined data rate of 10.08 Mbps.

CurrentAngle

Gets or sets the currently selected camera angle being displayed.

public ulong CurrentAngle { get; set; }

Property Value

ulong

Remarks

The current angle represents which video stream is being decoded and displayed from the available angles. Users can switch between angles using:

  • Remote control angle button
  • On-screen menu selection
  • Player application controls

Angle numbering conventions:

  • Angle 1: Primary/default view (often wide shot)
  • Angle 2+: Alternative views (close-ups, different positions)
  • Last angle: Sometimes used for special content (director's view)

The player remembers angle selection within a multi-angle scene but typically resets to Angle 1 when entering a new multi-angle block.