Main highway!
Off the beaten path...

πŸ’Ώ Blu-ray - A Cool Multi-Media Disc Format

   
Why So Blue?
    
    The Blu-ray disc is an multimedia optical storage format developed by Sony and the Blu-ray Disc Association and was released worldwide on June 20, 2006. It is the successor of the DVD and the CD, and it was designed to store and play high-definition movies, surround sound music, and rich interactive content.

A BD-ROM is designed to play three types of multimedia, movies, music, and games.

This article will explore the technology behind the disc, the file directory, its software platform, and the hardware players. However, we will not discuss its successor, Ultra HD Blu-ray, as it is a different format with similar standards. With the lack of documentation on certain key areas, I've put a lot of research into the article from multiple sources to be as accurate as possible.

Chapters
  1.  Conception, the War, and Launch
  2.  The Physical Disc
  3.  Profiles
  4.  File Directory
  5.  Video
  6.  Audio
  7.  Subtitles
  8.  Interactive Software & Virtual Machine
  9.  Metadata
  10.  Stereographic 3D
  11.  Region Code
  12.  DRM
  13.  The Rise of Boutique Labels
  14.  Conclusion


1. Conception, the War, and Launch



Long story short, there were disagreements within the DVD Forum on creating a new optical disc standard. Toshiba proposed the DVD's successor, the HD DVD, and Sony presented the Blu-ray disc. These disagreements led Sony and companies from the tech and film industry to create the Blu-ray Disc Association (BDA).   

On April 10 2003, Sony introduced the BDZ-S77, the first Blu-ray recorder designed for households. It was priced at US$3,800 and targeted toward the Japanese consumer markets. The product took advantage of the digital satellite broadcasting that was bringing HDTV to more and more households (at the time). On June 25 2006, Samsung released the first BD-ROM player, the Samsung BD-P1000, months after HD-DVD launched, priced at US$999.99. The first Blu-ray Disc launch titles were released on June 20, 2006: 50 First Dates, The Fifth Element, Hitch, House of Flying Daggers, Underworld: Evolution, xXx (all from Sony), and MGM's The Terminator.

From 2006 through 2008, Blu-ray competed against Toshiba's HD-DVD to see which format would be the standard for high-definition optical discs, also known as the HD Format War, a movie equivalent to the Sega/Nintendo Console War. The conflict also resembled the earlier videotape format war between VHS and Sony's Betamax. This format war divided everyone within the tech and film industry (as well as people on the Internet).

On February 19, 2008, Toshiba announced the discontinuation of the HD DVD, and thus Blu-ray emerged victorious in the format war, but not without consequences. It never replaced the DVD because the rivalry caused much confusion to normie consumers (especially Americans) as they couldn't tell the difference between the two, and many thought HD DVDs played on standard DVD players. 

When the first Blu-ray disc players launched, they mostly received positive reviews for their superior image quality, immersive sound, and interactive features. However, they also faced some criticism. Initially, the players were slow to load content, the price was high, there were playback glitches, a few launch titles to choose from, and some models were incompatible with CDs.

Today, newer players have improved over the years and are usually affordable. According to Blu-ray.com (not affiliated with BDA), there are over 20,000 Blu-ray titles.


2. The Physical Disc

The Blu-ray's physical structure and layout are complex and more advanced than the CD and DVD. A Blu-ray disc is the same size as an average CD and DVD (12 cm (4.7 in)) long and 1.2 mm thick and has an ultra-hard yet skinny polymer coating to prevent scratches and damage. The disc is made from many materials, polycarbonate for the substrate, polycarbonate film, silicone, and others for the cover layer, aluminum or silver alloy for the reflective layer, silicon nitride for the moisture barrier, pressure sensitive adhesive, photocurable acrylate adhesive, and others for the space layer, and silicon dioxide resin, silicone and others for the protective hard coating.

 While CD and DVD drives use a red laser to read discs, the Blu-ray drive uses a smaller 40-nanometer blue laser to read the disc data for faster reading of big data at 36 Mbit/s; that is why it's called "Blu-ray." Commercial BD-ROMs primarily use Constant Linear Velocity (CLV) for data encoding; CLV maintains an even transfer rate as the optical head of the player's drive reads from the inner to outer diameter of the disc. I don't know the "exact" numbers of the disc's default x1.5 rotation speed, but my guess would be approximately 2935 to 1215 rotations per minute (RPM).

BD-3D and UHD-BD players use x2 and x2.5 speeds.

Blu-ray drives for Personal Computers also use other various rotation modes including CAV, Z-CLV, and P-CAV for reading and writing on BD-Rs and BD-REs

A laser beaming on a disc (Image: Shutterstock)

The Blu-ray drive can read disc information, tracks, sessions, sectors, blocks, storage capacity, etc. 

The information area of the first layer (layer 0) is stored within an endless spiral that begins near the inner radius and proceeds until the outer radius. The information area of the second layer (layer 1) is stored within an endless spiral that begins near the outer radius and proceeds until the inner radius.

While CDs have 700MB of data and dual-layer DVDs have 8.5GB of data, each layer of a BD offers 25GB and has a continuous spiral track. A dual-layer BD has 50GB of data storage. High-definition video and uncompressed audio with very high bitrates take up space, so the disc storage capacity is very large and necessary.  

Pits and lands of a CD, DVD, and BD.
Comparison to the physical pits-and-lands of a CD, DVD, and Blu-ray. The Blu-ray's pits are much smaller and half the size, holding about five times more information than a DVD. (Image: nanofabrication.tumblr.com)

Each layer is divided into three main sections: Inner, Data, and Outer. 

When a BD has two layers, the BD is constructed only as an opposite track path (OTP). OTP is a technique (used when correctly implemented) that allows faster (though not unnoticeable) switching from layer 0 to layer 1. This technique prevents interruptions during the transition between different layers when watching a movie or listening to audio. 

A Blu-ray disc has sectors; a sector is a subdivision that contains control information, one logical block, and a logical block EDC. Each sector stores a fixed amount of user-accessible data. A block (or logical block) consists of only the user data part of a sector. A Cluster contains 32 logical sectors. The data of these 32 sectors are interleaved and scrambled with EDC and ECC attached (Error detection and correction code). The resulting structure is the physical Cluster. The Logical Block Address (LBA) mapping to physical addresses (PSN) is dependent upon specific BD media type (BD-ROM, BD-R, etc.)

The Blu-ray disc's sector size is 2 KB, and an error correction code block (ECC block) can store 64 kilobytes of user data. This error-correction method uses the LDS (Long Distance Subcode) and BIS (Burst Indicator Subcode). LDS has 304 code words with 216 information symbols and 32 parity symbols, giving a code word of length 248, and these code words are interleaved two by two in the vertical direction. BIS has code words with 30 information symbols and 32 parity symbols with a code word length of 62, and they are interleaved into three columns of 496 bytes each.

A Blu-ray Drive (not the player) has special executable commands when reading the discs using Operation Codes. Example: Op Code: 25h: - READ CAPACITY

The READ CAPACITY command is for the Host (the player) to request information regarding the storage capacity of a disc currently loaded into the Drive. Then the Drive responds to this command by returning 8 bytes of READ CAPACITY response data to the player.


There are multiple variants of Blu-ray discs, BD-ROM, BD-R, BD-R XL, BD-RE, BD-RE XL, UHD-BD, and BD9.

BD-R is for burning content once (sometimes used for commercial movies).

BD-R XL is for burning content once in a 100GB disc. 

BD-RE is for burning and erasing content.

BD-RE  XL is for burning and erasing content in a 100GB disc.

BD-9 is Blu-ray specs on an 8.5GB DVD-ROM.

UHD-BD is for Ultra HD content with HDR. They cannot be played on standard Blu-ray players and drives. Storage varies from 50, 66, and 100 GB.

The Blu-ray disc has also been a storage medium for proprietary console video games for the Sony Playstation and Microsoft Xbox systems. Those discs are collectively called  Data BD because it has software or data files that are not part of the BD specifications and do not play on standard BD players. (Think of the CD Black Book)

In this article, we will be talking about the standard  BD-ROM variant and the platform's technical specifications. There are two reasons why it is called a BD-ROM: 

  • A BD-ROM is Read Only Memory, meaning it's prerecorded and physically pressed (permanently molded) meaning it is permanently preserved and cannot be altered.
  • This universal format plays multimedia content such as movies, music, games, and apps. There's no "BD-Video" or "BD-Audio" as you see in DVDs like DVD-Video (Movies), DVD-Audio (Music), and DVD-ROM (Games/apps). A BD-ROM is a BD-ROM, regardless of its use.

Unlike CDs and DVDs, officially licensed BD-ROMs must bear the Blu-ray disc logo. The reason for doing this is to let the customers know that it's a legitimate disc and not a knockoff, similar to Nintendo's Official Seal badge. Movies released in BD-Rs are not allowed to use the logo. (Most of those releases are third-rate anyway.)



3. Profiles


The defined BD-ROM specifications are called "profiles." These are a set of standards that players must meet to ensure full capability and functionality. These different profiles are implemented on the players that exist in the market.

Profile 1.0: Grace Period 

The first basic version of the Blu-ray disc specification was released in 2006. It has the minimum requirements of HD video, surround audio, and advanced interactive menus. It was more of an open beta than an entire release. Profile 1.0 Blu-ray players were discontinued in favor of Profile 1.1.


Profile 1.1: Bonus View

This specification required support for Picture-in-Picture (PiP) as well as Secondary Audio and the presence of the virtual file system, which must possess the capability to store at least 256 MB of data for local storage. Local storage is used to install/save content from the disc, and you can add more storage to your player if needed. Profile 1.1 is the  mandatory standard for all Blu-ray players. All other Profiles after 1.1 are optional.

If you play a Blu-ray disc with Profile 1.1 features on a Profile 1.0 player, those features will not play.


Profile 2.0: BD-Live


This profile requires all the features from Profile 1.1 and adds the requirement for the player to have internet/LAN connectivity. Profile 2.0 also mandates that the virtual file system store at least 1 GB of data. A Blu-ray disc can be connected to the internet for additional extras such as downloadable trailers, subtitles, and updates and upload high scores. The majority of Blu-ray players are BD-Live enabled. You will learn more about it in the "Network" section of the article.


Profile 3.0: High-Fidelity Pure Audio

This is a separate audio-only profile for music albums. Blu-ray audio albums will work on all Blu-ray players, but Blu-ray movies will not work on a Profile 3.0 player because it is intended for screenless audio-only content and navigation. Profile 3.0 players never really took off with the general public (most likely due to avoid consumer confusion with standard players Γ  la DVD-Audio) but are still made primarily for [luxury] automobile vehicles like the Panasonic Strada CN-F1X10BHD. Because you obviously can't watch a movie and drive at the time!

The first Blu-ray album was TrondheimSolistene: Divertimenti, released in 2008.


Profile 4.0: N/A

It's worth noting that there is no Profile 4.0. According to the Blu-ray whitepapers, it's is reserved. It's possible that the reason behind this could be related to tetraphobia or it could have been originally intended for the Sony PlayStation 3, although the latter seems unlikely.


Profile 5.0: Blu-ray 3D

For playing stereo 3D content, Profile 5.0 is used. However, standard Blu-ray players cannot play 3D content. To play 3D movies, a Blu-ray 3D player is required. You will learn more about 3D in the 3D section of the article.

 

Profile 6.0: Ultra HD Blu-ray 

 Unlike other profiles, Ultra HD Blu-ray Discs are incompatible with existing standard Blu-ray players and intended to be Blu-ray's successor. It supports 4K UHD (3840 × 2160 pixel resolution) video at frame rates up to 60 frames per second, encoded using High Efficiency Video Coding (HEVC). The discs support both high dynamic range (HDR) by increasing the color depth to 10-bit per color and a more lavish color gamut than standard Blu-ray video by using the Rec. 2020 color space. Studio adoption has been slow but growing.



4. File Directory

    The Blu-ray disc uses the Universal Disk Format (UDF) 2.50 developed by the Optical Storage Technology Association (OSTA) is an open, vendor-neutral file system for data storage for optical discs and it's a compatible-friendly format for both Personal Computers and consumer electronics environments. It has a standard file structure similar to the DVD. 

A BD-ROM uses the BDMV application format and its contents are organized on the disc in a hierarchy of mandatory and optional file directories and subdirectories that contain all video, audio, and data:

  1. BDMV directory: contains the PLAYLIST, CLIPINF, STREAM, AUXDATA, and BACKUP directories.
    • PLAYLIST directory: contains the Database files for Movie PlayLists.
      • xxxxx.mpls files: store information corresponding to Movie PlayLists. One file is created for each Movie PlayList. The filenames of these files are in the form "xxxxx.mpls", where "xxxxx" is a 5-digit number corresponding to the Movie PlayList.
    • CLIPINF directory: contains the Database files for Clips.
      • zzzzz.clpi files: store Clip information associated with a Clip AV stream file. The filenames of these files are in the form "zzzzz.clpi", where "zzzzz" is a 5-digit number corresponding to the Clip.
    • STREAM directory: contains AV stream files.
      • zzzzz.m2ts file: contains a BDAV MPEG-2 transport stream. The names of these files are in the form "zzzzz.m2ts", where "zzzzz" is a 5-digit number corresponding to the Clip. The same 5-digit number "zzzzz" is used for an AV stream file and its associated Clip information file.
      • SSIF directory: If used, 3D Stereoscopic Interleaved files shall be placed under this directory.
        • zzzzz.ssif file: is a Stereoscopic Interleaved file that is composed of two BDAV MPEG-2 transport streams. Both streams include a MPEG-4 MVC view video stream for the left and right eye, respectively. This file is used only when a 3D video is played back. The 5-digit number "zzzzz" is the same as the number used for the AV stream file "zzzzz.m2ts" which includes the MPEG-4 MVC Base view video stream.
    • AUXDATA directory: contains Sound data, Image, Font, and asset files.
      • sound.bdmv file: stores data relating to one or more sounds associated with HDMV Interactive Graphic Streams applications. This file may or may not exist under the AUXDATA directory. If it exists, there shall be only one sound.bdmv file.
      • aaaaa.otf file: stores the font information associated with Text subtitle applications. The names of these files are in the form "aaaaa.otf", where "aaaaa" is a 5-digit number corresponding to the Font.
    • BACKUP directory: contains copies of the "index.bdmv" file, the "MovieObject.bdmv" file, all the files in the PLAYLIST directory, and all files in the CLIPINF directory.
    • index.bdmv file: stores information describing the contents of the BDMV directory. There is only one index.bdmv file under the BDMV directory.
    • MovieObject.bdmv file: stores information for one or more Movie Objects. There is only one MovieObject.bdmv under the BDMV directory.
    • BD-J Object directory: contains BD-J objects.
      • xxxxx.bdjo file: stores information for one or more BD-J objects.
    • JAR directory: contains Java Archive files (JAR) for BD-J mode.
      • xxxxx.jar file: It's a package file format typically used to aggregate many Java class files and associated metadata and resources (text, images, etc.) into one file for Java programs. There can be many JAR files in the JAR directory. The max file size is 4 MB, but assets can be stored outside the file.
    • META directory: Subdirectory containing disc metadata and information.
      • DL directory contains the DL XML metadata file
        • dlmt_000.xml file: which contains the metadata for the whole disc and would include the title of the movie (or regarding content as a whole), and the JPEG/PNG image thumbnail. Optionally, you can have multiple titles in a single disc with different thumbnails.
        • xxxxx.jpeg: large 640x320 title thumbnail icon.
        • xxxxx.jpeg: small 416x240 title thumbnail icon.
      • ES directory contains the ES XML metadata file
        • esmt_000_xxxxx.xml: which includes the information for Title Scene Search, this is where the names of titles would be located along with keywords for searching them. Also, individual thumbnails for each title would be stored here.
      • TN directory contains the TN XML metadata file
        • tnmt_000_xxxxx.xml: This is for Track/Chapter display where the names/text for individual tracks and chapters would be located.
    1. CERTIFICATE: Directory containing BD-J security certificate information.
      • app.discroot.crt: contains the BD-J root certificate.
      • id.bdmv: contains the disc's ID information.
      • BACKUP directory: contains copies of the "app.discroot.crt" file, and the "id.bdmv" file.
    1. AACS: Directory containing the Blu-ray's DRM AACS decryption files.
      • MKB_RW.inf file: Read/Write Media Key Block.
      • Content001.cer
      • Content002.cer
      • ContentHash001.tbl
      • ContentHash002.tbl
      • ContentRevocation.lst
      • CPSUnit0000x.cci: CPS Unit Usage files.
      • mcmf.xml
      • MKB_RO.inf
      • MKB_RW.inf
      • SKBx.inf
      • Unit_Key_RO.inf: AACS CPS Unit Key.
      • DUPLICATE: Directory of duplicated AACS files.
    1. BDSVM: Directory containing BD+ content code files (optional for studios, not part of the BD standard).
      • xxxxx.svm: BD+ content code file.
      • BACKUP: Directory of backup BD+ content code files.



    5. Video

        
        One of the main selling points for people to upgrade from DVD to Blu-ray is that BD-ROMs offer high-definition video in a maximum resolution of 1080x1920 pixels at 24 frames per second (progressive) and 29.97 frames per second (interlaced), making it 4x sharper and cleaner than DVD, which has a resolution of 720 x 480 pixels (480i NTSC) and 720×576 pixels (576i PAL). The high-definition picture quality is truly exceptional. It provides a 24-bit YCrCB Rec. 709 color space that's capable of displaying an impressive 16,777,216 colors, with a bit depth of 8 bits dedicated to each color. Additionally, it features a 4:2:0 chroma subsampling for enhanced color accuracy. Finally, it offers a Standard Dynamic Range (SDR) for optimal contrast and brightness. Optionally, it supports xvYCC for expanded colors that are 1.8 times as large but requires an xvYCC-compatible television and player.

    Here's a fair-unaltered comparison between the video quality of the 2000 DVD (left) and the 2009 BD (right). It's clear as light and day between the 480i and 1080p resolutions. The differences in color and brightness are also noticeable between the two formats.

    Is DVD a poor format in modern times? No, DVDs can look good (if appropriately mastered, which newer DVDs fail to do), but BD is better as it takes advantage of HDTVs.


        There are two techniques used in HD video: Progressive Scan (p) and Interlaced Scan (i). These techniques help in scanning the video frames. The refresh rate of a display, measured in Hertz (Hz), indicates how many times the screen can update in one second. A higher refresh rate results in smoother motion and less input lag because the image on the screen is updated more frequently.


    For Interlaced Scan, the lines of visual information are rotated as odds and evens. Only half of a frame’s visual information is transmitted at a time. The interlaced signal contains two fields of a video frame. A field is one of the many still images displayed sequentially to create the impression of motion on the screen. In 1080i resolution, it supports a refresh rate of 60Hz (59.94 fields per second) (American standard) and 50Hz (50 fields per second) (European standard). While it utilizes less bandwidth, it also presents certain drawbacks, including visual artifacts.

    For Progressive Scan, all the lines that make up a single frame are drawn and transmitted at once. In 1080p resolution, it uses a 24Hz refresh rate becuase movies are almost always filmed 24 frames per second. The advantage of progressive scan is that it produces smoother and more realistic motion while maintaining high quality and absence of visual artifacts. One drawback is that it requires higher bandwidth to process an image. More frame rates are possible in 720p resolution that supports 59.94 frames per second.

    Most Blu-ray releases opt for Progressive Scan despite higher bandwidth due to superior picture quality. Uncommonly, Blu-ray releases of some TV shows may use interlaced video (1080i) to preserve the original broadcast or because it was mastered that way.
     

    The maximum video bitrate of 40 Mbit/s (5 MB memory), and all the video codecs support two compressing methods, CBR and VBR.


    Constant bitrate (CBR)  maintains a consistent bitrate throughout the entire playback of the video. This makes videos easy to play and faster to load since everything is constant from start to finish, especially for low-end players. Developers seldom use CBR for movies due to its increased file size because it adds "bit stuffing" (useless data) in the stream. However, it's leveraged for fast loading of interactive content like FMV sequences in menus or games. 


    Variable bitrate (VBR)  allows a higher bitrate for more complex images and a lower bitrate for less detailed images. During playback, the bit rate adjusts to the level of detail needed, with fewer bits used in slow scenes and more in action-packed scenes. While VBR is generally hard to play and slower to load for players (both software and hardware), since the bitrate frequently changes, it provides much higher video quality without massive file sizes. Developers often use VBR encoding to achieve high picture quality while conserving disk space for movies.




    For highly detailed live-action video, it's advisable to use a higher bitrate to avoid compression artifacts. For 2D animated video, a lower bitrate can be used as it's less detailed and more simplified. Bitrate can affect everything from file size to playback ability, which is why developers need to choose the right one.


    Live-action films like Alien need a very high bit rate for the best video quality since it's a highly detailed live-action film.

    There are only two native aspect ratios, 16:9 and 4:3, and other aspect ratios are letterboxed in the encoded 16:9 picture, which means ultra widescreen movies will be shown with black bars on top and bottom (like the screenshot above). This was one of the criticisms of the Blu-ray format not natively supporting the ultra-widescreen 21:9 ratio.

    BD-ROMs use the MPEG-2 Transport Stream (M2TS) container file format under the .m2ts filename extension. Video, audio, graphics, and other streams are stored and multiplexed (muxed) into this container. Muxing is a method of combining multiple analog or digital signals into one signal over a shared medium. When a BD-ROM disc is inserted into a player, it reads and pre-loads the muxed data (Graghics/Audio/Text) into the memory before the Primary Video stream. The decoding and demuxing process operates on a clock of 27 Mhz.



        There are three mandatory video codecs of the BD-ROM specification, AVC, MPEG-2, and VC-1. The choice of video codecs impacts the producer's licensing/royalty costs and the title's full run time due to differences in compression efficiency. A BD-ROM title must use one of the mandatory codecs for the Primary Video. Each codec is unique and has its own advantages and disadvantages.
     
     

        Advanced Video Coding ( AVC) (also called H.264 or MPEG-4 Part 10 Main Profile@4.1/High Profile@4.1), jointly created in 2004 by Video Coding Experts Group (VCEG) and Moving Picture Experts Group (MPEG), is the most widely used video codec for BD movies. It is considered the best for its better compression without losing picture quality and low CPU usage. It can hold 5-6 hours of video in a single 50GB disc in high quality[1]. The codec features Interlaced coding (PicAFF, MBAFF), multiple reference frames, in-loop deblocking filter, 4:0:0 (Monochrome), 8×8 vs. 4×4 transform adaptivity, Quantization scaling matrices, and Separate CB and CR QP control.

    Two forms of entropy encoding are used for lossless compression, CAVLC and CABAC. However, most studios use CABAC because it provides much better compression than competing video codecs.

    AVC includes three basic types of coded splices: intra-coded splices (I-splice), predictive-coded splices (P-splice), and bidirectionally-predictive-coded splices (B-splice). A slice is a spatially distinct region of a frame that is encoded separately from any other region in the same frame.

    Due to the expiration of some of its older patents, the codec is now more accessible to the public without payment of royalties. One famous open implementation of the AVC codec is x264. It is under the  .264 extension name in the M2TS container.

         VC-1 (SMPTE 421M/Advanced Profile@Level 3) is a video codec created in 2006 by Microsoft and SMPTE based on Microsoft's proprietary video format, Windows Media Video 9. It features Baseline intra frame compression, Variable-sized transform, 16-bit transform, Overlapped transform, 4 motion vector per macroblock,1⁄4 pixel luminance motion compensation, 1⁄4 pixel chrominance motion compensation, Start codes, Extended motion vectors, Loop filter, Dynamic resolution change, Adaptive macroblock quantization, B frames, Intensity compensation, Range adjustment, Field and frame coding modes, GOP Layer and Display metadata. VC-1 requires more computing power for decoding than AVC.

    In the late 2000s and early 2010s, the codec was often used by Universal and Warner Bros. for their Blu-ray releases. However, newer releases now tend to use the AVC codec, which may be due to an attempt to avoid paying royalties. The codec has been criticized for being too proprietary and with heavy involvement with Microsoft. As of April 30, 2023, over 74% of the patents have expired *. It is under the  .wmv extension name in the M2TS container.

     

       MPEG-2  (also called H.262 or MPEG-2 Part 2/Main Profile@High Level, Main Profile@Medium Level), jointly created in 1995 by Video Coding Experts Group (VCEG) and Moving Picture Experts Group (MPEG) is the same video codec used on DVD but with good HD picture quality. 

    MPEG-2 includes three basic types of coded frames: intra-coded frames (I-frames), predictive-coded frames (P-frames), and bidirectionally-predictive-coded frames (B-frames). It uses Intra-DC Precision that indicates the number of bits for quantized DC coefficients of intra-coded blocks; it takes one of the values of 8, 9, 10, or 11 bits. The more bits used, the more precise quantization is achieved. Higher DC precision is better quality but requires more space for higher bitrates. So, using a lower precision for lower bitrates is recommended.

    In the early days of Blu-ray, MPEG-2 was used for the Primary Video and often for bonus feature content, but it's aged and not as advanced as AVC and VC-1. It takes alot more disc space because of the lack of better compression, so as a result, it only holds at least 2-3 hours of HD video. However, it is still used today for browseable slideshow images using I-frame, mainly for photos, art galleries, and readable pages.

     MPEG-2 has one advantage over the other two codecs - all its patents have expired, which means it can be used for commercial purposes without any restrictions. It is under the .mpv extension name in the M2TS container.


    Like DVD, Blu-ray allows multi-angle viewing, giving viewers the ability to observe different perspectives of the same scene using the Angle button on the remote. This feature is made possible through the use of multiple viewpoints in one stream, enabling users to easily switch between them and explore the scene from various angles. Users can also use the angle buttons to see different versions of the same scene like storyboards or previsualizations. It supports a maximum of up to 9 camera angles. 

    Alita: Battle Angel offers multi-angle using colored buttons to view the stages of production of the same scene.

    Despite being a cool additional feature, it's not used often anymore in mainstream releases. Today, it's a niche in markets such as yoga, martial arts, erotica, animation (e.g. for storyboards), and live performances.


        Blu-ray also offers a Picture-in-Picture component that can play 2 video streams simultaneously, Primary Video and Secondary Video. The Secondary Video (typically displaying extra supplemental material) can be scaled, positioned, and overlayed on the Primary Video (showing the main feature).

    Here's an example of Beowulf using the Picture-in-Picture feature, showing viewers the motion capture performance in a small box overlaying the finished movie. (Image: Blu-ray.com)

      Secondary Video has a maximum resolution of 1080x1920 pixels at 24 frames per second (progressive) and 29.97 frames per second (interlaced). It has a maximum bitrate of 40 Mbps (5 MB memory). You can combine two different codecs for both streams, but some of them may not be compatible with each other for playback due to technical contriants. So, it's recommended to use the same codec.




    6. Audio

    Blu-ray's significant advantages over Audio CDs and DVDs are higher bit rates, better bit resolution for improved sound quality, and eight channels of surround sound for a more immersive audio experience. BD-ROM uses three mandatory audio codecs, PCM, DTS, and Dolby Digital. And must use one of the mandatory codecs for the primary soundtrack for a movie, game or music album. Each codec is unique and has its advantages and disadvantages.

    Only 32 audio streams are allowed for both Primary and Secondary streams, and the mandatory audio codecs are compressed using Constant Bitrate ( CBR), while the optional codecs use Variable Bitrate ( VBR).

    Constant bitrate (CBR) maintains a consistent bit rate throughout the entire audio playback. It makes audio streams easy to play and quick to load since everything is constant from start to finish on low-end players.

    Variable bitrate (VBR) uses a dynamic bit rate that changes throughout audio playback, depending on the level of complexity needed. It reduces audio file size conservatively with flexible bitrate reduction. However, it can be difficult for devices to play the content since the bitrate frequently changes. Usually, this is for high-end players.


    PCM (Pulse Code Modulation) is an uncompressed lossless audio codec to digitally represent sampled analog signals. It is the same codec used in Redbook Audio CDs, except it has a high bit rate of 27.648 Mbit/s (3.456 MB memory) and up to 24-bit resolution. It is the best out of the audio codecs. 

    It is under the  .wav extension name, which is located inside the m2ts container. Waveform Audio File Format (WAVE) was created in 1991 by Microsoft and IBM as a standard for storing uncompressed bitstream audio. It is natively coded in little-endian byte order. WAV is based on the Resource Interchange File Format (RIFF) bitstream format method for storing data in chunks. A RIFF file is a tagged file format and all WAV files use a RIFF tree structure:
    File Root

    └─ RIFF:WAVE  - RIFF Wave header
       
    ├─  fmt   - Wave format chunk
       
    └─ data  - Waveform data chunk

    WAV's magic number is  52 49 46 46 xx xx xx xx 57 41 56 45 66 6D 74 20 " RIFF....WAVEfmt".

    Another advantage is that it's an open format, meaning anyone can use the codec without restrictions or paying royalties. However, one disadvantage is that it takes up a lot of space because it's uncompressed. Early BD releases used PCM for movie titles as it's primarily audiotrack, but now often use DTS and Dolby to conserve space and better compression. However, PCM is still used for Pure Audio BD music albums for the niche audiophile market and movies/TV shows from boutique labels.

    • Max. bitrate: 27.648 Mbit/s (3.456 MB memory)
    • Max. channels: 8
    • Bits resolution: 16, 20, 24
    • Sample frequency: 8 Channels (48 kHz, 96 kHz), 6 Channels (192 kHz)
    • Compression: CBR
    • Codec type: Uncompressed Lossless

    DTS Digital Surround is a lossy audio codec developed by Digital Theater Systems, Inc. in 1991. This codec is based on the adaptive differential pulse-code modulation (ADPCM) audio data compression algorithm. It uses linear prediction and adaptive quantization. It is natively coded in big-endian byte order. One of the main advantages of DTS is that it provides high-quality audio while taking up less space than PCM. As a result, DTS has become one of the most widely used audio codecs for Blu-ray Disc titles, including both movies and music. Its popularity can be attributed to the fact that it delivers high-quality audio without taking up too much storage space, making it an ideal choice for developers who want to deploy high-quality audio without sacrificing storage capacity. It can go up to 5.1 channels and has a max bitrate of 1.524 Mbit/s (190.5 KB memory).

    DTS Master Audio is an optional extension rather than an entirely new coding mechanism; it encodes an audio master in lossy DTS first, then stores a concurrent stream of supplementary data representing whatever the DTS encoder discarded. If you don't have a BD player that plays DTS-HD MA, it will only play the core lossy DTS instead. DTS:X is another extension that allows the "location" (direction from the listener) of "objects" (audio tracks) to be specified as polar coordinates. It is under the .dts extension name. For a core substream, the sync word is 0x7ffe8001. For the extension substream, the sync word is 0x02b9261.
    • Max. bitrate: 1.524 Mbit/s (190.5 KB memory)
    • Max. channels: 5.1
    • Bits resolution: 16, 20, 24
    • Sample frequency: 48 kHz
    • Compression: CBR
    • Codec type: Lossy

    For more info on DTS, read the  white papers for the core and  tech specs of the core and extentions.


      Dolby Digital (or AC3) is a lossy audio codec created by Dolby Laboratories in 1991. First used for Laserdisc and then dominating the DVD market, it has become the international standard for home theater audio. The codec is based on the modified discrete cosine transform (MDCT) compression algorithm. It has a high bitrate of 640 kbit/s (80 KB memory) and can go up to 5.1 channels. On Blu-ray, it's used commonly for special features and audio commentaries due to its advantage of MP3-like lossy compression, low bit rate (192 kbit/s) without losing quality, and conserving disc space. The last patent expired on March 20, 2017, so it is now generally free to use.

    Like DTS, Dolby has optional extensions that play on top of the main Dolby Digital codec, Dolby Digital Plus, Dolby TrueHD, and Dolby Atmos. Dolby Digital Plus is an extension of DD with more bitrate, while Dolby TrueHD is a different codec that plays on top of DD (based on MLP). Dolby Atmos is an extension of Dolby True HD that expands on existing Dolby surround sound systems by adding height channels, allowing sounds to be interpreted as three-dimensional objects with neither horizontal nor vertical limitations; it is similar to DTS:X, and it is very popular with movies and music albums. It is under the .ac3 extension name and its syncword is 0x0B77.
    • Max. bitrate: 640 kbit/s (80 KB memory)
    • Max. channels: 5.1
    • Bits resolution: 16, 24
    • Sample frequency: 48 kHz
    • Compression: CBR
    • Codec type: Lossy

    For more info on Dolby Digital, read the tech specs from the ATSC and encoding/decoding guidelines (old).


    Auro-3D is not part of the BD specification, but it's an optional codec (for compatible players) that provides immersive object-based 11.1 3D audio (up to 14.1 max) similar to DTS:X and Dolby Atmos. It is based on PCM and is fully backward compatible with 5.1/7.1 surround set-up without additional decoders. It uses three layers: standard 5.1/7.1 surround speakers, 5-height speakers, and 1 top speaker. It also converts (up-mix) legacy inputs such as mono, stereo, or surround sound into a natural, immersive sound field.

    Auro-3D is often used in Pure Audio BD releases (and some movies) for the European market.


    When it comes to music, audiophiles believe Blu-ray is better than Sony's proprietary Super Audio CD, as it offers more sound options like Dolby Atmos and Auro-3D, as SACD only offers DSD audio. BD players are cheaper and more common than SACD players.

    Screenshot of the main menu of StΓ₯le Kleiberg: Concertos, a BD album, showing the music tracklist and audio options. Thanks to screenless navigation, a TV is not necessary to enjoy BD music.

    Blu-ray also offers an audio mixing component that can play two audio streams simultaneously, Primary Audio and Secondary Audio. Secondary audio stream limitations can go up to five channels in Dolby Digital Plus and DTS Express, both at a max bitrate of 256 kbit/s (32 KB memory), in 16-24 bit resolution at 48 kHz.

    Interactive Audio is used for real-time interactive sound effects, usually for menus or video games. It is stored in the sound.bdmv file but sound files can also be stored in a folder under the .pcm or .wav extension in the AUXDATA directory[2]. The sound.bdmv file (or other audio assets) is preloaded into the player's secondary memory buffer before the Primary Video and Audio. It only uses PCM and can go up to two channels in 16-24 bit resolution at 48 kHz. The max size for each sound (or group of sounds) is 2 MB. Its magic number is  BCLK0200 .



    7. Subtitles

    Blu-ray offers subtitles for individuals who are deaf or hard of hearing (SDH) and those who may not understand the language of a foreign film. There are two types of subtitle streams, Presentation Graphics Streams and Text Subtitle Streams. Each stream uses an 8-bit index lookup table capable of displaying up to 256 colors with a max resolution of up to 1920x1080. Both stream types are stored inside the .mt2s container and can't be played simultaneously. When you insert the BD into the player, the subtitle streams are preloaded into the primary memory buffer ahead of time before the Primary Video and Audio to avoid technical hiccups. Only 32 subtitle streams are allowed with limited on-screen memory of 4 MB.

          Originally pantened from Panasonic[3], Presentation Graphics Streams (PGS for short, no file extension name) is cleaner and graphically improved compared to DVD subtitles. Presentation graphics are often used for subtitles; they are also used for displaying titles, labels, other information, or purely decorative graphics. PGS subs are images drawn and coded in binary bitmapped pixels similar to PNG images. It is capable of standard animation effects, Fades In/Out, Color changing, Wipe In/Out, and Scrolling with frame-accurate animation effects up to 30Hz. Compared with text-based subtitles, PGS usually has a lot of colors, styles, etc., especially for karaoke releases. A single PGS stream is marked with timestamps to indicate when it should be displayed, such as when a person is speaking or when translated information is being shown. These timestamps have an accuracy of 90 kHz.

    An excellent example of a PGS subtitle put into good use from Sentai's release of Made in Abyss. You can see the different colors of "piss-yellow" and  #FEE080 with font styles.

    PGS had a few disadvantages, its file size is large, takes up memory, and is more difficult to modify than text subtitles since they're bitmapped-based and embedded in the video. However, PGS utilizes a compression technique called Run Length Encoding, which is a type of lossless compression that stores runs of data as a single value and count, rather than the original run, without losing any information. The goal is to minimize the number of bits needed to represent the data. This results in less storage space being used and faster transfer speeds. Meaning, that PGS loads faster than text subs. Bitmap fonts are faster and easier to create than vector fonts, but they are not scalable - a bitmap font requires a separate font for each size. Most Blu-ray releases use PGS subtitles and cannot be changed or modified by the user's preferences. There are some Blu-ray titles with "forced" subtitles, meaning they cannot be turned off at the user's request. In its Binary code, its magic number is  0x5047 " PG."

    For more "complex" information about PGS subtitles and how they work, visit this page.

    Another example of PGS subs using different colors and font sizes.

    The next stream is the Text Subtitle Stream under the OpenType (.otf) font format created by Microsoft and Adobe. It utilizes vector-based fonts, encoded text data, and multiple style definitions. Unlike bitmap fonts, they are a set of lines and curves instead of pixels; they can be scaled without causing pixelation. Text Subtitles conserve more memory than PSG subs and do not affect the bandwidth available for a BD-ROM Title’s AV stream. Character encoding supports Unicode 2.0 (UTF-8 and UTF-16BE), Shift-JIS, KSC 5601-1987 (including KSC 5653), GB18030-2000, GB2312, and BIG5. It can have limited animation effects, Fade In/Out, and Color changes. It can also have a colored background box. A developer can easily change its presentation style with the text's position, flow, and alignment and the font's style, size, and color. One disadvantage of text fonts is that they are slower to render, especially for low-end players, because they require more processing power than bitmap fonts.  

    Unlike PSG subs, Text Subs can be user-changeable, changing styles like text position, font size, and line space in the player's system settings. But most Blu-ray releases rarely use Text Subs because some players strangely cannot display fonts, which goes against the BD specification standards.

    There was a proposed feature allowing users to download and install newer subtitles for movies with an internet connection or LAN. So far, no studio has utilized this feature.


    Not part of the Blu-ray standard, but Closed Captioning is an optional feature. Since its inception in the 1980s, CC became the standard for captions on TV, Laserdiscs, and DVDs. Like Text subtitles, CC can be customized via player or TV settings from fonts to colors. CC is decoded and displayed by the television itself, not the player. However, most Blu-ray releases do not come with Closed Captioning (except for DVD). The only Blu-ray movies (that I know of) that have CC support are early titles from 20th Century Fox like IRobot and League of Extraordinary Gentlemen.

    As of today, all studios use bitmap-based Presentation Graphics, most likely because it gives more creative freedom for developers, is faster to load on low-end players, and also the lack of vector-based text fonts on some players.



    8. Interactive Software & Virtual Machine

    Unlike its multimedia predecessors, the CD-i and CD-ROM, BD-ROMs are not dependent on a specific hardware architecture or operating system, making it platform-independent and future-proof. 

    There are two 32-bit interactive modes for BDMV Applications, HDMV mode, and BD-J mode. Both modes are powered by middleware; middleware is software that lies between an operating system and the applications running on it (Think of an emulator or web browser). As weird as this may sound, most BD-ROM titles, whether they are movies, music albums, or games, are all considered programmable software.

    Both Modes support these features:
    • Picture-in-picture – The secondary video can be overlaid on the Primary video.
    • Multi-Angle - View different angles and perspectives of a single video stream. Only 9 angles are allowed in a single stream using the angle buttons.
    • Multi-Audio - Switch different audio streams without interrupting the video. Usually used for audio commentaries and isolated scores. Only 32 audio streams are allowed.
    • Audio Mixing - Secondary audio can be mixed with Primary audio.
    • Multi-page Menus - Browse through different multi-page menus.
    • Pop-up Menus – Menus can be shown or removed from display based on user request without interrupting AV playback.
    • Animated Buttons and  Menu transition effects
    • Button sounds – Interactive sounds can be presented when Menu Buttons are selected or activated. They can be used for sound effects in a game. They are usually stored in the "sound.bdmv" file.
    • Browsable Slideshow - An interactive slideshow may be presented and changed without interruption to background music. Still-images are in MPEG-2 I-frame format for faster performance and quicker loading because it's in a single stream.
    • Resume Play - This feature allows you to resume playback of a disc from the point where you last stopped. It is saved in the "temporary" persistent storage (68 KB). The stopping point is deleted when the Stop button is pressed more than once on the device or remote. BD-J discs do not support this feature by default - it's up to the studio to programably add that feature on a BD-J disc.
    • Mouse Support - Navigating interactive content is supported by a mouse or mouse-like device. BD-J discs do not support this feature by default - it's up to the studio to programably add that feature on a BD-J disc.
    Note: Ultra HD Blu-ray does not support Text subtitles, Secondary Video (PiP), and Secondary Audio. Graphics can be upscaled to 2160p and Browsable Slideshow is replaced with HEVC images. 

    Here's an example of a pop-up menu. It can be called at anytime without interuption to movie playback.

    An BDMV Application is divided into eight independent layers for video, audio, and graphics. There are five image layers with each image layer can go up to full HD resolution (1920×1080).

    • Primary Video* - 5 MB
    • Secondary Video† - 5 MB
    • Interactive Graphics Stream / BD-J Graphics** - 16 MB (IG) / 45.5 MB (BD-J)
    • Presentation Graphics/Text Stream‡  - 4 MB
    • BD-J Background - Memory shared with BD-J Graphics
    There are also three audio layers. All eight layers play together at the same time.
    • Primary Audio* - 3.456 MB
    • Secondary Audio † - 128 KB
    • Interactive Audio - 2 MB (each clip)
    * The maximum memory for simultaneous playback of Primary Video and Audio is 6 MB (48 Mbps).
    ** IGS is replaced by Java Graphics in BD-J mode.
    Secondary Video and Audio are not supported on Ultra HD Blu-ray.
    Text subtitles are not supported on Ultra HD Blu-ray.
     
    Here's an example of a browsable slideshow using the MPEG-2 I-frame format.

    In a BDMV application, there are four file types for managing M2TS streams in a linked hierarchy order: Index table, Objects, PlayList, and Clip. These files are preloaded into the secondary memory before primary playback.

    Clip Information files contain descriptive details and purpose for each M2TS AV stream, like type, sequence, program, and timing that communicates to each stream. The files use the same 5-digit number as the M2TS AV stream files. A combination of each M2TS AV stream and its associated Clip Information File is called a "Clip." Clip Information is located in the xxxx.clpi file under the CLIPINF directory and is written in binary. Only 4,000 Clip files are allowed. Its magic number is HDMV0200.

    Movie PlayList is a collection of playing intervals in Clips. The Clips in a Playlist are called a Playitem, each consisting of start and end pointers that determine specific playback times within any number of clips. A Movie PlayList is located in the xxxx.mpls file under the PLAYLIST directory and is written in binary. Only 2,000 Playlist files are allowed. Its magic number is MPLS0200 .

    There are two types of programmable Objects, Movie Objects (HDMV mode) and BD-J Objects (BD-J mode). A Movie Object is an executable program with a set of navigation commands that start playlist playback upon user instruction or execute another Movie Object. A BD-J Object is a table of Java applications or command programs called Xlets, that trigger Playlist playback, other Movie or BD-J Objects, and Java programs. Both of these types of Objects can be mixed together in the same disc. Movie Objects are stored in the MovieObject.bdmv file and BD-J Objects are stored in the BDJO directory. Only 1,001 Objects are allowed. Its magic numbers are MOBJ0200 and BDJO0200.

    The Index Table is a top-level table that defines a BD-ROM disc's Titles and Top Menu. This function depicts the Titles of various media - movies, video programs, music albums, and games. It also determines their entry points, including First Playback and Top Menu, which are linked to the connected Movie or BD-J object. The Player refers to this table whenever a Title or Menu is executed. For example, whenever the Title Search or Menu operation is called, the Player refers to this table to determine the corresponding Movie Object/BD-J Object that is to be executed. When the disc is inserted, it will automatically play the "First Playback" defined in the Index table, either a Movie Object or a BD-J object. The Index table is located in the index.bdmv file and is written in binary. There's only one Index Table file and only 999 Titles are allowed. Its magic number is INDX0200.

     

    HDMV Mode

        HDMV mode is an interactive framework with the well-known features of DVD, but it's more advanced than DVD menus. It uses a 16 MB memory buffer for graphics, sounds, and data. They're preloaded to the secondary memory buffer before loading the main video, audio, and subtitle streams into the primary memory buffer. HDMV provides multi-stream handling called Out-of-Mux. Out-of-Mux is when the primary stream with individual streams is stored separately but decoded simultaneously in a 27 Mhz clock.

    Ultramarines Blu-ray uses an HDMV menu with 5.4MB memory of pre-rendered graphics.

    HDMV supports two types of raster bitmap graphics streams for menus and interactive content, the Presentation Graphics stream (available in HDMV and BD-J) is for subtitles and animated graphics, and the Interactive Graphics stream (available only in HDMV) is for interactive menu graphics. IG streams (No file extension name) are separately stored in M2TS files and their decoding process works on a 27MHz clock. To synchronize with the Primary Video and Audio streams, an IG stream operates at a frequency of 90KHz. Like PG streams, IG streams are similar to PNG and use Run Length Encoding for lossless compression to conserve space and memory.

    Interactive Graphics are limited to 8-bit 256 colors and alpha transparency, and sprites cannot overlap. They support simple animations such as scrolls, wipes, cuts, fades (transparency changes), and color changes with frame rates up to 30Hz. Supported resolutions are 1920x1080 / 1280x720 / 720x480 / 720x576.

    Here's an example of a simple HDMV menu that uses separate m2ts files for three streams: Primary Video, Primary Audio, and Interactive Graphics.

    Let's look at the main menu of Made in Abyss; on the right-hand side of the screenshot is the IG stream for the interactive menu. The background image and music are the Primary Video and Audio. This may look simple but the executed operation is complex.

    After inserting the disc, the Index table, Clip files, PlayLists, Movie Object file, and the IG stream are preloaded into the secondary read buffer. The player reads the Index table and instructs it to play the first playback, the Movie Object file. Then it reads the MovieObjects in the MovieObject file.

    The Movie Object file is then executed by playing the first two Playlists, 00001.mpls and 00002.mpls, which will play the first two Clips, 00002.clpiand 00003.clpi(Piracy warning and the distributor's logo) in the Primary buffer.

    Then it reads another Playlist, 00003.mpls, which will play 00004.clpi (main menu's background image and music) in the Primary buffer and 00005 .clpi (IG stream) already in the Secondary buffer. Finally, with the Clip information, the menu is put together in synchronization at 90 kHz.

    The menu uses 13.5 MB of memory for graphics and data and an average of 2.3 MB bitrate memory for video/audio background. It contains a total of five pages, 31 Movie Objects, 138 IG objects (Sprites/Images), and 2147 commands.

    If you think this is confusing, wait 'til you hear about the commands!


    HDMV's Movie Objects are executable object files. They are written in a low-level navigation command language with strict conditional statements, and then it is compiled into binary object code for the player to read. Object code is the machine language representation of programming source code.

    Here's a portion from Made in Abyss' MovieObject; this is the code that powers the HDMV application:
    • Move [4075] {Title(4)}
    • Move [25994075
    • Move [40752599
    • Move [4076] 65535 /*0xffff*/
    • If [4075!= 4076  
    • GoTo 7 
    • GoTo 9
    • GoTo 2005 /*0x7d5*/
    • Move [40750
    • Move [25524075

    Another portion code that powers the interactive main menu and controls the navigation and BOGs:

    • Move [4075] [3553]
    • And  [407610 /*0xa*/
    • If [4075== [4076  
    • GoTo Label1_0 
    • GoTo Label1_1
    • Label_0:
    • Move [4075] 0
    • Move [4075] 1
    • SetButtonPage Button: [2577] Page (Effect:On): [4076]
    • GoTo Label_34
    • Label_1:
    • Move [4075] [3553]
    • Move [4076] 11 /*0xb*/
    • If [4075== [4076]
    • GoTo Label1_2 
    • GoTo Label1_3
    • Label_2:
    • Move [4075] 1
    • Move [4076] 
    • SetButtonPage Button: [2575] Page (Effect:On): [4076]
    • GoTo Label_34

    The programming commands are opcodes (abbreviated from operation code) and operands. Opcode is the portion of a machine language instruction that specifies the basic operation to be performed. An Operand is any object capable of being manipulated. All Operation codes and Operands are binary codes (ones and zeros). It can get confusing since there's little documentation!

    An Opcode is a single instruction that can be executed by the CPU. In machine language, a binary or hexadecimal value is loaded into the instruction register. 

    There are two Operand Registers: 

    • General Purpose Register (The player has 4096 GPRs total). 
    • Player Status Register (The player has 128 PSRs in total) represents the Player’s playback status, configuration, and preferences. 

    All of these commands are stored in a “ MovieObject.bdmv” file. The file is in machine-readable binary form, to see its contents in human-readable form, you must open it in a Blu-ray editor program like BDedit or Scenarist. Blu-ray has 10x times more commands than DVD (16+) and HD-DVD (400+).

    When you open the MovieObject file in BDEdit it makes the commands a little easier to read. Here's the same MovieObject code from Made in Abyss:

    • [50000001,00000FEB ,80000004]  Move GPR4075PSR4 ;PSR4: Title Number (b15-b0) {1-999,$ffff}
    • [50000001,00000A27 ,00000FEB]  Move GPR2599GPR4075
    • [50000001,00000FEB ,00000A27]  Move GPR4075GPR2599
    • [50400001,00000FEC ,0000FFFF]  Move GPR407665535
    • [48000300,00000FEB ,00000FEC]  NE GPR4075GPR4076
    • [20810000,00000007 ,00000000]  GoTo 7
    • [20810000,00000009 ,00000000]  GoTo 9
    • [20810000,000007D5 ,00000000]  GoTo 2005
    • [20810000,00000009 ,00000000]  GoTo 9
    • [50400001,00000FEB ,00000000]  Move GPR40750
    • [50000001,000009F8 ,00000FEB]  Move GPR2552GPR4075

    On the left, the blue numbers represent the Opcode's hexadecimal value (machine code) and the right represents the Operand GPR/PSR commands. Think of GPRs as controlling the software and PSRs as controlling the hardware (the player).


    General Purpose Registers (GPRs)

    A GPR stores a fixed length variable. The variable is stored as a 32-bit unsigned integer. There are 4096 GPRs available. Navigation commands are used to change the values contained in General Purpose Registers. In Scenarist, GPRs are written in the program as a number value in square brackets. For example: [ 5 ]. In BDedit they are written like this:  GPR5.

    GPR List:

    • 0-999: For your own custom programming use
    • 1000-1999: stores the current audio, subtitle, and chapter number for each playlist
    • 2000-3999: stores the current play time for the resume feature for each playlist
    • 4001: Sound FX on/off
    • 4003: 3D mode
    • 4005: “Top menu” pressed flag
    • 4091-4095: Reserved for Java code for BD-J Mode
    • 4006-4090: For your own custom programming use
    • 1000-4005: Can be used and controlled from Java code for BD-J Mode


    Player Status Registers (PSRs)

    A PSR stores a fixed length variable. The variable is stored as a 32-bit unsigned integer. There are 128 PSRs including reserved ones in total. Navigation commands can not change the values contained in PSRs. 

    In Scenarist, PSRs are written in the program in three equivalent forms:

    1. Number in the curly brackets: { 4 };
    2. Name in the curly brackets: { Title };
    3. Name with a number in the round brackets in the curly brackets: { Title ( 4 ) }
    In BDedit, they are written like this: PSR4 ;PSR4: Title Number (b15-b0) {1-999,$ffff}

    PSR List:

    • 0: Interactive Graphics stream number (read/write)
    • 1: Primary audio stream number (read/write)
    • 2 : PG TextST and PiP PG TextST stream numbers (read/write)
    • 3 : Angle number (read/write)
    • 4 : Title number (read/write)
    • 5 : Chapter number (read/write)
    • 6 : PlayList ID (read/write)
    • 7 : PlayItem ID (read/write)
    • 8 : Presentation Time (45khz) (read-only)
    • 9 : Timer (read-only)
    • 10 : Selected Button ID (read/write)
    • 11 : Menu Page ID (read/write)
    • 12 : TextST User Style number (read/write)
    • 13 : Parental Level (read-only)
    • 14 : Secondary Audio/Video Stream ( read/write)
    • 15 : Audio Capability (read-only)
    • 16 : Audio Language (read-only)
    • 17 : PG and TextST language (read-only)
    • 18 : Menu Language (read-only)
    • 19 : Country (read-only)
    • 20 : Region (read-only)
    • 21 to 28 : Reserved
    • 29 : Video Capability (read-only)
    • 30 : TextST Capability (read-only)
    • 31 : Player Profile and Version (read-only)
    • 32 to 35 : Reserved
    • 36 : Backup PSR4 (for resume) (read-only)
    • 37 : Backup PSR5 (read-only)
    • 38 : Backup PSR6 (read-only)
    • 39 : Backup PSR7 (read-only)
    • 40 : Backup PSR8 (read-only)
    • 41 : Reserved
    • 42 : Backup PSR10 (read-only)
    • 43 : Backup PSR11 (read-only)
    • 44 : Backup PSR12 (read-only)
    • 45 to 47 Reserved
    • 48 to 61 TextST capability for each language (read-only)
    • 62 to 95 : Reserved
    • 96 to 111 : Reserved for BD system

    According to Doom9 forums, some of the reserved PSRs are used by various manufacturers to implement their specific live content management.

    The 2006 release of Memento uses a fancy HDMV menu with animated graphics and sound effects that fit the movie's theme.

    HDMV mode may be a simple interactive framework with cool features but it was not intended for complex video games or applications. The only possible video games that developers would make would be: 

    • Telltale-style FMV game
    • FMV games
    • Virtual Board game
    • Text adventure (with graphics and sound)
    • Trivia/party games
    • Linear or non-linear Visual Novels

     HDMV mode does not support local storage for saving game progress, installing content from the disc, or accessing network features. However, HDMV supports resume play, and you can use old-fashioned passwords to save your progress (using number keys on the remote). Which are revealed after a certain point, and the player must write it down should they wish to continue.

    Warner Bros. and Indie/Boutique labels often prefer using HDMV for their Blu-ray development projects due to its simplicity, quick loading, and ease of running on computers without requiring a runtime environment. For those interested in Blu-ray development, HDMV is a "beginner-friendly" framework to consider due to its standardization.


    BD-J Mode

        BD-J mode is more technologically advanced than HDMV mode, as it was designed to be more flexible and complex for rich applications, fancy menus, video games, and internet content. BD-J mode is an interactive multimedia platform based on Java Micro Edition using Personal Basis Profile (PBP 1.0). Java ME is a stripped-down version of the standard Java for low-end embedded devices.

    Unlike HDMV, which uses a low-level navigation command language, BD-J uses a high-level object-orientated language called Java.

    Java is among the most commonly used programming languages, initially developed by James Gosling at Sun Microsystems, which has now merged with Oracle Corporation. The language syntax is influenced by C and C++, but it has fewer low-level facilities than either of them. Java applications are compiled to bytecode (class file) that can be executed on any Java Virtual Machine (JVM) regardless of computer architecture or operating system. It is intended to let application developers "write once, run anywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to run on another. 

    The Java Virtual Machine is inside the Java Runtime Environment, a software platform that provides an environment (runtime libraries) required to run Java applications. Since BD-J is based on Java ME, programming classes are restricted to Java 1.3, meaning anything above that is incompatible.

    Although it's technically possible to use other JVM languages besides Java, like Kotlin, it has yet to be demonstrated. Writting non-JVM languages, like C, is possible, but performance will be slower.[4]

    Java tried to compete with the Web standards (HTML/CSS/Javascript) and the desktop but instead dominated the mobile phone market, set-top boxes, DVB TVs, and now Blu-ray players.

     

    Just like HDMV, BD-J supports all the default features but has additional exclusive ones:

    Bookmarks - Bookmarks allow you to bookmark your favorite scenes in the movie. They are saved in the player's local storage or persistent storage.

    Virtual File System - The Virtual File System is to access content in the player's local storage.

    Local Storage - Local storage is used to install content from the disc or download content from a network. Profile 1.1 players have a mandatory storage of 215MB. Additional storage can be added.

    Network Access - BD-J applications can access a local network or an internet connection.

    Colored Buttons - All Blu-ray remotes have Red, Green, Blue, and Yellow colored buttons for additional interactivity.

    Object-Orientated Programming - BD-J provides an open and flexible programming environment for BD-ROMs.

    BD-J Background - Adds a background behind the Primary Video layer.

     

    An impressive Java menu from the 2010 BD release of Alien that has advanced graphics and smooth animations.

        As I mentioned, the Blu-ray Disc Association learned the mistakes from its other multi-media predecessor, the CD-i. The CD-i's interactivity depended on an archaic proprietary operating system called CD-RTOS and a dated (but famous) Motorola 68K architecture. The software was written in C or Assembly language and compiled using Machine Code exclusively for the 68K. In contrast, Java utilizes Byte Code which is platform-independent. 

    Macromedia Director was likely an inspiration for BD-J, one of the most widely used development tools from the CD-ROM era. Many developers used it because it was an easy-to-develop framework for multi-media programs such as adventure games using an object-orientated language called Lingo and Apple's video codec, Quicktime. With no standardized method for developing CD-ROM software, Director became the norm until its gradual decline in the late 2000s.

    The 2010 release of Alien contains an interactive feature called MU-TH-UR Mode that runs when the movie is playing.

    A BD-J program is written in an Xlet (similar to Applet) and stored in a BD-J Object file (BD-J's equivalent to a Movie Object). Java classes and assets are stored inside a JAR file in the JAR directory.

    A JAR file size limit is only 4 MB. However, assets can be stored outside the JAR file as the Xlet can control everything in the disc's directory (video, audio, objects, files), GPRs/PSRs, persistent storage, and the virtual file system that reads/writes/installs content in the player's local storage. The Xlet can also control the video playlists, multi-angle, and playback speed.

    For the Xlet to have access to everything, a BD-J Blu-ray disc must come with a Security Certificate. Since Java is a robust programming environment (that includes the ability to access the internet), it is vital to protect the player from unintended content and malicious code such as a virus.

    BD-J mode uses 45.5 MB of memory for graphics, sounds, and data. (BD-Live and 3D-enabled players have an optional memory of 61 MB for networking and 3D content). The bigger memory size is necessary for advanced multimedia applications. Like HDMV, BD-J's graphics, data, and sounds are loaded into the secondary buffer.

    Here's an "Hello World" example of BD-J code written in Java from Blu-Play.com:

    package com.bluplay.helloworld;
    
    public class HelloWorld extends java.awt.Container implements javax.tv.xlet.Xlet {
    
      private org.havi.ui.HScene scene;
      private java.awt.Font font;
    
      public void initXlet(javax.tv.xlet.XletContext context) {
        setSize(1280, 720);
        scene = org.havi.ui.HSceneFactory.getInstance().getDefaultHScene();
        scene.add(this);
        scene.validate();
      }
    
      public void startXlet() {
        setVisible(true);
        scene.setVisible(true);
        repaint();
      }
    
      public void pauseXlet() {
        setVisible(false);
      }
    
      public void destroyXlet(boolean unconditional) {
        scene.remove(this);
        scene = null;
      }
    
      public void paint(java.awt.Graphics g) {
        g.setColor(new java.awt.Color(0x000000));
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(new java.awt.Color(0xffffff));
        if (font == null) {
          font = new java.awt.Font(null, java.awt.Font.PLAIN, 30);
          g.setFont(font);
        }
        g.drawString("Hello World!", 50, 50);
      }
    }

     BD-J mode is designed for custom flexible programming. It includes a vast collection of API packages that offer a range of functionalities for developers to work with. These APIs enable developers to create engaging and interactive applications with features such as graphics, audio, video, menus, and more:

    Personal Basis Profile
    BD-J's core computing platform is built upon Personal Basis Profile 1.0., which consists of Foundation Profile 1.0 and Connected Device Configuration 1.0.

    • java.awt and sub-packages: Contains a low-level API for drawing graphics into the screen,  java.awt.Graghics2D. Also contains the infrastructure for keypresses from a remote and a mouse or keyboard.
    • java.io: Contains APIs for reading and writing data streams to files including to the player's persistent storage.
    • java.net: Provides APIs for opening sockets, working with URLs, and HTTP/HTTPS protocols on networked devices.
    • java.lang and  java.math: Gives you basic data types, threads, and exceptions.
    • java.until: Gives utility classes for things like hashtables, lists, and sorting, which also has subpackages to read and write ZIP and JAR files.
    • java.security: This package provides cryptographic functions. These functions may be used for secure transactions, and to send data securely, with more control than provided with the https protocol.
    • java.beans: Provides runtime support for the JavaBeans component framework. Useful for building component libraries.
    • java.text: Supports formatting text and numbers.
    • java.rmi and  javax.microedition: Provides the underlying support for the Xlet application model and inter-xlet communication. In PBP, java.rmi is very small and does not provide support for networked Remote Method Invocation communication with standard (desktop) Java.
    • javax.microedition.io: An alternative to java.net that is compatible with the APIs for mobile phones.


    Java TV
    BD-J is based on Java TV 1.1. It's an API used on American and European Cable TV Set-top-boxes. 

    • java.tv.xlet: Defines the Xlet application model.
    • javax.tv.service: Provides APIs that select a service. In the world of Broadcast TV, the term "service" is typically used to refer to a TV channel. In BD-J, the Java TV service API is mapped to Blu-ray titles. A single Blu-ray disc can have more than one title. It can be used, for example, if a BD-ROM presents several episodes of a TV show.
    • javax.tv.locator: Defines the  Locator class to address TV resources like services. A locator is a string that is formatted similarly to a URL.
    • javax.media and  javax.tv.media: These packages define an interface called a  Player. It represents a place where audio/video content can be presented and governed by any number of controls. A single control sets one or more playback parameters, like audio volume or the size and position of the video on the screen.
    • javax.tv.utiljavax.tv.net, and  javax.tv.graphics: These packages contain a few classes that are useful for interoperability with the MHP systems that predate PBP. However, for developers, these may be considered dated.


    GEM & MHP
    BD-J is based on the GEM and MHP standards. MHP is an open middleware system standard designed by Europe's DVB for interactive digital television. The MHP enables the reception and execution of interactive, Java-based applications on a TV set. Globally Executable MHP (GEM) is an international standard based on MHP for the non-European TV markets often used on terrestrial, satellite, and cable set-top boxes and TV sets for interactive content. BD-J is based on GEM 1.0.2 which in turn is based on MHP 1.0.3. Other GEM platforms equivalent to BD-J are DVB-J (Europe), OCAP-J (Cable), ACAP-J (N. America), ARIB-J (Japan), and Ginga-J (S. America). Since all these platforms are based on the common GEM-core, it made it possible for developers to write Java applications that will run interoperably on all these systems. The GEM/MHP specifications include APIs from other organizations - HAVi graphics and DAVIC media controls.

    • org.havi.ui: This package contains APIs for manipulating the screen resolution and other parameters of the graphics device. It also defines the main frame-like container an Xlet uses for on-screen drawing, called an HScene. Additionally, it contains widgets, like buttons and text entry screens for t-commerce (e-commerce for the TV screen). HAVi is also where some keycodes are defined, like  VK_COLORED_KEY_0, and contains an API to tell you the color of each colored key.
    • org.davic.resources: A set of APIs for arbitrating resource conflicts between different Xlets and other parts of the system. When a BD-J disc is playing, it "owns" the hardware. The resource management API may not be frequently required.
    • org.davic.media and  org.davic.net: Contains superclasses for things defined elsewhere in MHP.
    • org.dvb.application: Provides APIs for launching one Xlet from another.
    • org.dvb.dsmcc: DSMCC (Digital Storage Management, Command and Control) is a mechanism MHP uses to broadcast a filesystem hierarchy. In BD-J, it's an API used to mount a filesystem that is contained in a JAR file. It also provides the  DSMCCStreamEvent API, which a developer can use to receive triggers or call-backs tied to video. If interoperability with other GEM systems is not a concern, BD-J defines a simpler way in org.bluray.
    • org.dvb.ui: Contains the font loading class, FontFactory. It also contains a few miscellaneous definitions that are duplicated in PBP; for BD-J that can be considered obsolete.
    • org.dvb.event: Contains an important API that lets an application register for remote control keypresses with being subject to AWT focus model.
    • org.dvb.io.ixc: An entry point for inter-xlet communication. The internal mechanism for IXC is provided in PHP, under javax.microedtion.xlet.ixc.
    • org.dvb.io.persistent: A package that contains support for controlling access to the persistent storage.
    • org.dvb.media: Provides Java Media Framework controls that can be used to manage aspects of playback, such as subtitles.
    • org.dvb.lang and  org.dvb.net:  These packages contain classes that are useful for interoperability with the MHP systems that predate PBP. However, for developers, these may be considered dated.


    BD-ROM Specification, Part 3-2
    Part 3-2 of the BD-ROM Format, Part 3, Audio Visual Basic Specifications, contains the Blu-ray's device-control APIs.

    • org.bluray.media: Contains Java Media Framework controls. These include controls for picture-in-picture, subtitles, camera angles, audio gain and panning, and searching for playlist marks on the disc.
    • org.bluray.ti: Contains title information and control APIs. This is where you can find metadata about a disc, including play items and playlists, and information about the title(s) on a disc. A multi-title disc might contain many episodes of a TV show and each episode is a title. Or a multi-disc title might have two movies in one disc, and each one is a title. The  ti package also contains API used to manage disc insertion and ejection, which can be useful for a disc-unbound application that controls a multi-disc product such as a serial TV show or a multi-disc video game.
    • org.bluray.vfs: Allows control of the Virtual File System (VFS) and the disc's filesystem directory. VFS allows an application to download or install content to the player's storage device (HDD, SSD, Flash, USB, etc.) Then, the installed/downloaded content is integrated with the filesystem of the disc.
    • org.bluray.ui: Contains classes for an application to perform animations that are in synch to the video frames. 
    • org.bluray.storage: This package provides APIs to retrieve information on available space in persistent storage.
    • org.bluray.system: This lets you access the player's GPRs and PSRs. GPRs 4091-4095 are reserved for Java code for BDJ Mode. GPRs 1000-4005 can be used and controlled from Java code. It can be used to control the player or HDMV applications.
    • org.bluray.application: Narrowly extends one class of the org.dvb.application.
    • org.bluray.net: Contains BD-J's concrete class that implements the Java TV locator defined in  javax.tv.locator.
     

      Graphics 

       Interactive Graphics is replaced with BD-J Graphics. It supports 24-bit true-color and 8-bit (256 level) alpha (transparent) images. The graphics are usually for interactive elements, buttons, sprites, fonts, backgrounds, and decorations. Java Graphics is more advanced as it can be programmably scaled, overlapped, and have smooth frame-by-frame animations. Supported resolutions are 1920x1080 / 1280x720 / 720x480 / 720x576.

    T2: Skynet Edtion is one of the few releases that pushed its interactivity capabilities to its limits.


    Depending on the player, video codecs and image graphics are either decoded in software or hardware. 

    Software rendering is when video and image rendering takes place entirely in the CPU. Rendering everything with a general-purpose CPU has the main advantage that it is not restricted to the limited capabilities of graphics hardware. However, the disadvantage is that it's slower because the CPU needs more transistors to obtain the same speed as hardware rendering. Usually, cheap low-end players use software rendering.

    Hardware rendering is when video and image rendering takes place entirely in the GPU or ASIC. The main advantage is taking the pressure off the CPU to increase better performance. Usually, medium/high-end players use hardware rendering for 2D graphics acceleration. 

    BD-J officially supports four image codecs of raster bitmap graphics - PNG, GIF, JPEG, and MPEG-2. These codecs have their advantages and disadvantages. Players implement the codecs differently than others.


    • PNG - Portable Network Graphics (PNG) was created in 1996 as an open-source alternative to JPEG and GIF. It supports true color, grayscale, and 8-bit transparency. Most developers use PNG for its better lossless compression without losing the quality of complex images and fast loading times. It is faster than JPEG if 8-bit color is used. Its Magic Number is " 89 50 4e 47 0d 0a 1a 0a". It is under the .png extension.[5]
    • JPEG - Joint Photographic Experts Group (JPEG) files were created in 1992. The codec works best for storing full-color photographic images full of complex shading and color variation. However, it doesn't support transparent backgrounds. It uses lossy compression, meaning that some original image information is lost and cannot be restored, possibly affecting image quality. The codec's compression technique was designed for faster loading times; faster than PNG. Its Magic Number is " ff d8 ff". It is under the .jpeg or .jpg extension.
    • GIF - Graphics Interchange Format (GIF) was developed by CompuServe led by Steve Wilhite and released on June 15, 1987. It supports transparency but is limited to 256 colors. It's best used for graphics with few colors, small icons, and simple images. However, it's barely used and slower to decode. Its Magic Number is " GIF87a" or " GIF89a". It is under the .gif extension.
    • MPEG-2 - MPEG-2 is not only used for videos but also for still images using I-frames. It can be used for BD-J backgrounds or browsable slideshows. Additionally, it supports Video Drips, which are small video clips that use either  I-frames, P-frames, or both. While it can be used as an animated BD-J background, it cannot be a very long clip due to the limited space of 45.5 MB. Its Magic Number is " 00 00 01 Bx". It is under the .mpv extension (stored in the .m2ts container).
    Though it is recommended to use compliant image codecs, it is possible to employ different image formats (in software and binary) like .sdt, .aca*, and .cmp files.**

    *Kanon - BD version, **Alice in Wonderland - 2011 BD release

    This Blu-ray video game, Painting the Roses Red, uses beautiful pre-rendered graphics with smooth frame-accurate animations. The background is AVC video, and the sprites use PNG images.

     

    Additionally, BD-J supports drawing graphics pixel-by-pixel using Java's Drawing API, java.awt.Graghics2D.

    Drawing with this API permits:
    • 32-bit color model of blue/green/blue/alpha values and lower bit depth is allowed
    • SRC_OVER allows the ability to request alpha blending within the BD-J graphics layer.
    • Ability to draw 2D shapes, like rectangles, circles, and ellipes.
    • Draw strings
    • Draw and scale images

    However, drawing is rendered in software, meaning it will slow on some low-end players if it's a complicated image.



    XML

    Optionally, files and assets for a BD-J application can be bound together using an XML file. Extensible Markup Language (XML) is a markup language and file format created by W3C in 1998 for storing, transmitting, and rebuilding arbitrary data.


     
    XML is a markup language similar to HTML. HTML was intended for displaying data, emphasizing its appearance. On the other hand, XML was created to transport data, focusing on its content.
     
    It stores data in plain text format, providing a software and hardware-independent way of storing, transporting, and sharing data. It defines a set of rules in a format that is both human and machine-readable. XML does not do anything; it's just information wrapped in tags.


    Here's an example from one of the XML files for the Painting the Roses Red game, "properties.xml", that focuses on the game's main properties. The rest of the XML files help put the game together including the GUI.

     
    <?xml version="1.0" encoding="UTF-8"?>
    <properties>
    <menu-emulate-lang>eng</menu-emulate-lang>
    <menu-languages>eng,ita,fra1,spa1</menu-languages>
    <menu-lang-gpr>3003</menu-lang-gpr>
    <menu-dialect-gpr>3004</menu-dialect-gpr>
    <menu-title-gpr>300</menu-title-gpr>
    <progress-file>alicegameusa.sav</progress-file>
    <sounds-bdmv>
    <filenames>AG_Hint,AG_Level_Select_Activate,AG_Level_Select_LR,AG_Level_Select_UD,AG_Menu_Activate,AG_Menu_Select,AG_Move,AG_Paint_Activate_1,AG_Paint_Activate_2,AG_Paint_Activate_3,AG_Paint_Activate_4,AG_Paint_Activate_5,AG_Paint_Select,AG_Puzzle_Reset,AG_Puzzle_Solved,AG_Rose_Grow,AG_Rose_Lost,AG_Wipe</filenames>
    <names>hint,lsAct,lsSelLR,lsSelUD,menuAct,menuSel,step,paintAct0,paintAct1,paintAct2,paintAct3,paintAct4,paintSel,reset,solved,grow,lost,wipe</names>
    </sounds-bdmv>
    <playlists>
    <main>200</main>
    <payoff1>201</payoff1>
    <payoff2>202</payoff2>
    <payoff3>203</payoff3>
    </playlists>
    <marks>
    <title-loop>1</title-loop>
    <game-intro>102</game-intro>
    <game-loop>103</game-loop>
    </marks>
    <tile-positions>
    <size3>895,367,1008,375,1103,365,901,463,1012,464,1103,459,900,549,993,537,1098,540</size3>
    <size4>835,323,940,316,1054,325,1149,313,841,407,945,415,1057,414,1149,409,856,503,943,504,1037,488,1143,492,840,579,937,588,1027,582,1144,585</size4>
    <size5>798,282,898,275,999,275,1095,279,1196,286,791,373,895,367,1008,375,1103,365,1214,378,797,457,901,463,1012,464,1103,459,1202,454,811,550,900,549,993,537,1098,540,1215,548,796,626,892,636,981,629,1099,632,1199,627</size5>
    </tile-positions>
    <tile-numbers>
    <size3>7,8,9,12,13,14,17,18,19</size3>
    <size4>6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24</size4>
    <size5>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25</size5>
    </tile-numbers>
    <marker-start-position>
    <size3>909,353</size3>
    <size4>846,304</size4>
    <size5>807,265</size5>
    </marker-start-position>
    <!-- Order matters (For getting next puzzle) -->
    <puzzles-list>D1,D2,D3,D4,D5,C6,C7,C8,C9,C10,H11,H12,H13</puzzles-list>
    <puzzles-config>
    <D1>0,0,0,0,1,0,0,0,0</D1>
    <D2>1,0,0,0,0,0,0,0,1</D2>
    <D3>0,0,0,1,0,1,0,0,0</D3>
    <D4>1,0,0,0,1,0,0,0,0</D4>
    <D5>1,1,1,1,0,1,1,1,1,</D5>
    <C6>1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1</C6>
    <C7>0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0</C7>
    <C8>0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0</C8>
    <C9>0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0</C9>
    <C10>1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1</C10>
    <H11>3</H11>
    <H12>4</H12>
    <H13>5</H13>
    </puzzles-config>
    <puzzles-names>
    <D1>ACE of Diamonds</D1>
    <D2>2 of Diamonds</D2>
    <D3>3 of Diamonds</D3>
    <D4>4 of Diamonds</D4>
    <D5>5 of Diamonds</D5>
    <C6>6 of Clubs</C6>
    <C7>7 of Clubs</C7>
    <C8>8 of Clubs</C8>
    <C9>9 of Clubs</C9>
    <C10>10 of Clubs</C10>
    <H11>Jack of Hearts</H11>
    <H12>King of Hearts</H12>
    <H13>Queen of Hearts</H13>
    </puzzles-names>
    <text>
    <level-complete>You beat the *!</level-complete>
    <try-again>You did not earn enough Roses to unlock the *. Try again!</try-again>
    <unlocked>The * has been unlocked!</unlocked>
    <game-finished>CONGRATULATIONS!!!</game-finished>
    </text>
    <!-- <puzzles-scoring> <D1>2,4</D1> <D2>3,6</D2> <D3>3,6</D3> <D4>3,6</D4> <D5>9,16</D5> <C6>5,9</C6> <C7>3,6</C7> <C8>3,6</C8> <C9>3,5</C9> <C10>4,8</C10> <H11>9,16</H11> <H12>12,19</H12> <H13>15,20</H13> </puzzles-scoring> -->

    </properties>

    </ properties >

    Using XML is completely optional as some developers use it as a helpful tool. It's magic number is  <?xml. It is possible to use HTML and CSS coding within BD-J applications, but it has yet to be proven.

    Local Storage

    BD-J features the Virtual File System (VFS). It's a feature that allows the Xlet to read, write, download, and install content in the Blu-ray player's local storage. The files and assets stored locally are integrated with the current optical disc's file system. Additionally, the player's read/write file system can overlay files and assets on the optical disc's file system to create a unified virtual file system. The integrated virtual file system is referred to by the system property  org.bluray.vfs.root. The VFS is useful for storing assets without needing the disc. For example, loading large assets from local storage while the A/V is playing from the optical disc at the same time or saving game progress such as high scores.

    The storage area is called the  Local Storage for Binding Unit Data Area (BUDA). There is a class called StorageManager in org.bluray.storage that lets you find out how much space and free space there is in the BUDA using the  getBindingunitDataAreaInfo().

    Blu-ray players like the PlayStation 4, let's view or remove BD saved data such as preferences, bookmarks, game progress, etc.

    Storage is mandatory for all Blu-ray players after Profile 1.1. Bonus View (Profile 1.1) players have a minimum storage capacity of 256 MB, while BD-Live (Profile 2.0 or later) players can store up to 1 GB. Most players allow additional storage via HDD, SSD, Flash, USB, etc.

    If a disc that needs local storage is inserted into a player that does not have any storage, like a Grace Period (Profile 1.0.) player, most discs will often display a message telling the user it requires local storage. It will also present another if the player's storage isn't enough.


    Persistent Storage
    Persistent Storage is similar to Local Storage and is required to be present on all players; it can read/write small data storage with a limited capacity of 68 KB. It's very small, so what's it for?

    It's usually best for storing user preferences, bookmarks, or resume playback. It is recommended that a disc should not use more than 4 KB of data. Naturally, it may be necessary for players to delete old data that is unused. The mount point for this filesystem directory is found in  dvb.persistent.root. An Xlet can control the persistent storage using the application and organization identifier, application_id, and organisation_id (English spelling). They are used to construct a hierarchical file system under this directory: <dvb.persistent.root.>/<organization_id>/<application_id>.


    Networking

    Unlike HDMV, BD-J can access a local or online network connection using secure HTTPS and TCP/IP protocols when connecting to servers and URLs. For security, it uses the Secure Sockets Layer (SSL) for encryption using the  javax.net.ssl package that contains security APIs such as  SSLSocket. They are part of a set of APIs called Java Secure Socket Extentions which is an add-on to PBP 1.0. These networking APIs are optional. Profile 2.0 players (or above) are the only ones capable of network connections. For a BD-J application to utilize the network connection, it must first be authenticated and granted appropriate permissions to access the network.

     Many BD titles use the "BD-Live" branding to inform users that the Blu-ray disc provides online features. It was used for news, updates, messaging, downloading new games, multiplayer, streaming trailers, uploading high scores, etc. Most people who have tried BD-Live features were unimpressed due to the lack of exciting extras provided by the major studios, rather than the idea itself.

    Unlike monopolistic online services like Xbox Live or Playstation Network, BD-Live is decentralized, meaning they don't share the same server. Studios (or game developers) host their own servers, similar to PC games. As of 2021, Universal was the last major studio to use BD-Live until its servers were shut down. That doesn't mean BD-Live is permanently gone. 

    Pure Audio Blu-rays use the unique "MShuffle" branding to let users install MP3, FLAC, or MQA files from the Blu-ray disc via a local LAN connection straight from a web browser.

    Some studios used LAN to connect with user's smartphones or tablets for second-screen apps.


     

    Video Games

      When it comes to video games, Blu-ray takes a different approach. A Blu-ray player is not a PC or a game console - it's a Blu-ray player. It only supports a remote controller by default and doesn't support fancy 3D APIs like OpenGL or Vulkan. It's a low-end embedded platform using old-school 2D graphics. But don't let that fool you as Blu-ray games are like souped-up versions of Amiga and DOS games because a developer can use the Xlets to take advantage of the video and image codecs with all nine image and sound layers to create appealing video games. 

    Flint's Food Fight is a Galaga-Space Invaders-style mini-game included in the Blu-ray release of Cloudy with a Chance of Meatballs.

    A Blu-ray player typically uses a remote controller with arrow keys for navigation, an enter button for selection/action, and colored buttons for interactivity, much like a Wii controller. However, due to the use of infrared signals, there may be a slight delay when pressing buttons, and only one button can be pressed at a time. Nevertheless, certain Blu-ray players, such as those from Sony, are compatible with the Dualshock 4 controller.

    Using a mouse and keyboard on BD-J titles are not compatible by default, unlike HDMV mode. It's up to the developer if they wish to implement mouse and keyboard functionality for BD-J games.

    Here are the types of BD-J games that are suitable for a standard remote and a optional controller such as a gamepad, keyboard/mouse, or a second-screen device:

    • Turn-based RPG (Fallout/Wasteland/Final Fantasy/Pokemon)
    • Turn-based strategy (Chess/Final Fantasy Tactics)
    • Turn-based FMV FPS (Hijacker Jack)
    • Turn-based FPS (Doom RPG)
    • Turn-based Rouge-like (Doom RL)
    • Hidden Object (I Spy/ Mystery Case Files/Nancy Drew)
    • Adventure games (Lucasarts, etc.)
    • Platformer
    • Puzzle (Tetris, Bejeweled)
    • Pinball
    • Casual games (Solitare, Minesweeper)
    • Arcade (Pac-Man, Snake, Space Invaders)
    • Telltale-style FMV game
    • FMV games (Five Nights at Freddy's/Interrogation Files: Port Landsend/The Isle Tide Hotel)
    • Virtual Board game (Monopoly)
    • Text adventure with graphics and sound
    • Trivia/party games
    • Linear or non-linear Visual Novels

    Unlike HDMV mode, BD-J games can save your progress (or install content) in the Blu-ray player's 256 MB local storage (or more). Depending on the game, loading assets from the local storage, like video, audio, and images, is faster than loading from the disc using a hard drive or flash drive.

    A Pinball game from Surf's Up; the controls are suitable for the remote, controller, or keyboard.

    Performance varies on Blu-ray players because they have different CPU frequencies, ranging from 300 MHz to 1 GHz. However, due to BD-J being an embedded platform for low-end devices, the Java Virtual Machine might be slower than the CPU. It is difficult to determine the recommended CPU frequency for BD-J applications, especially when it comes to making fast-paced/complex video games. Therefore, if a developer wants to ensure that their game runs smoothly on all players, I would recommend targeting a CPU frequency of either 16 MHz or 27 MHz. This will provide a safe margin and help ensure optimal performance for the game. Just like Blu-ray movies, developers are also advised to optimize Blu-ray games for low-end to high-end players that use both software and hardware rendering to enhance performance compatibility. Remember, this is not PC, it's BD.

    Screenshot of the Blu-ray version of Kanon, a romance visual novel. This is a complete game programmed in Java using many multimedia assets and features including fonts, images, video, and audio.

     As I said before, Blu-ray technology doesn't support true 3D graphics. Instead, it only supports 2D (and 2.5D graphics). This means that developers have to be creative when using image and video codecs if they wish to create the illusion of 3D. 

    One technique they can use is  pre-rendering, in which highly detailed graphics are rendered once on a powerful machine and then saved as video or image data to be played on a low-end device. Remember Donkey Kong Country and Toy Story? Those two classics made this technique famous. Pre-rendering is useful for making graphics "pop".

    Who Dares Defy Galactus? is a 2-player turn-based strategy game that uses animated AVC and PNG codecs for its prerendered graphics.

    Another technique is  Axonometric or  Oblique projections, which can create a sense of depth and perspective in a 2D image. 

    https://cdn.akamai.steamstatic.com/steam/apps/38400/ss_6c578ed231f8320c003c9ca2684e5d00aa0dfc69.jpg?t=1572025441
    Fallout, a PC game, is an example of a game that uses both pre-rendered graphics and an Axonometric viewpoint to give it a 3D feel.

    Finally,  parallax scrolling can be used to create a pseudo-3D effect by moving different layers of a 2D image at different speeds, creating the illusion of depth. 

    Ukko's Journey, a homebrew Blu-ray video game, uses parallax scrolling using three separate 2D sublayers overlapping each other in the BD-J layer, foreground, middleground, and background.

    By employing these creative techniques, developers can add depth and dimension to their content even without true 3D support from the Blu-ray format. However, the developer should be mindful of the 45.5 MB memory and CPU limitations. As I said before, some players use either software rendering or hardware rendering. So, the data size and color bit of complex graphics like these should be as small as possible to increase performance speed and conserve memory.

     A game developer must also be aware of the audio limitations. Standard Blu-ray provides three separate audio layers, Primary Audio, Secondary Audio, and Interactive Audio. All three layers can be played at the same time. Interactive Audio is loaded to the secondary memory buffer and only plays one sound at a time from user input. Primary and Secondary Audio is loaded (from disc or local storage) to the primary memory buffer and played linearly. For example, for an adventure game, Primary Audio can be used for the background music and effects, Secondary Audio for the dialog, and Interactive Audio for interactive sound effects.

    The Xlet can control audio playback like looping, playing at a specific time, changing tracks, changing audio streams, or activating by user input. It's theoretically possible for a developer to use the Xlet to take advantage and manipulate the eight sound channels like panning, changing volume, purposely downmixing, or muting specific channels. But that's just a theory.

    When it comes to audio codecs, it's always best to stick with the three compliant ones - Dolby, DTS, and PCM. These codecs are designed to be hardware-friendly and provide the best possible audio quality. However, it is possible to use other sound formats like MIDI or MP3, but the problem with these non-compliant formats is that they require software processing by the CPU, which can consume more resources and slow down the player's performance. So, while it is possible to use these formats, it's important to keep in mind that they may not provide the best experience and could impact the overall performance of the player.


    The developer must be aware of the image layer limitations. The screenshot below is a mock-up of a Blu-ray version of 3D Space Cadet Pinball as an example of what you can do if you are making a game compliant with both Blu-ray and Ultra HD Blu-ray since UHD-BD doesn't support secondary video and audio. 

         1: BD-J Background can be used as a single color or image, or animated video drips.

        2: Primary Video can be used for fancy video presentations.

        3: Presentation Graphics can be used for displaying information or declarations on top of the Primary Video. 

        4: BD-J Graphics can be displayed on top of all other layers, and sprites can overlap each with sub-layers (foreground, middle ground, background, or more).


        In the United States, only a dozen Blu-ray video games were made by major studios. Most of them are mini-games to coincide with the movies. Stand-alone games were also released, including Dragon's Lair and Space Ace. But no one makes Blu-ray video games anymore (or even takes advantage of the BD-J technology) except for mature visual novels in the Japanese market from AsoBD and a small homebrew community called Blu-Play.

    Blu-ray visual novels are popular in Japan. Visual Novels are like interactive narrative "books".

    Blu-Play is a small homebrew community that mostly focuses on homebrew BD-J game development and demos. Very few projects are made including LuBlu Entertainment's Ukko's Journey, a platform game. 

    There is a demo from Luis Gonzalez called  Funky Fresh that pushes 3D software rendering to its limits, and uses EGL, a pure Java 3D graphics API designed for J2ME mobile devices and based on CLDC 1.0. It's really neat stuff, but making 3D games isn't recommended because most players are slow at software rendering 3D graphics. The demo runs fine on PS3 and PS4, but horrible on Xbox One with poor framerates. When I tried it on VLC media player, the animation was smooth but there were graphical glitches and missing assets.

    You're probably asking, can it run Doom? Of course, it can run Doom! There's an unofficial port of Doom from Sleirsgoevy, this BD port of Doom works great on PS3 and PS4 but is a little slower on PS5 and runs 1 frame per second on VLC media player. 

     

    Sleirsgoevy also made a way to boost  Blu-ray's memory to 96 MB, but I would recommend staying at the standard 45.5 MB because they're "might" be incompatibility issues with players. He also made an emulator for Commodore 64 games. In the late 2000's a Japanese developer made many BD-J mini-games and a Gameboy emulator.

     

    Historically, from the 2000s until the mid-2010s, television companies like Sky TV and DirectTV provided casual video games primarily using DVB-J. This platform is equivalent to BD-J for terrestrial and satellite television. With a subscription, users could play games on their television set-top boxes with their remote, offering small but enjoyable casual games via transmission. These DVB-J games were more popular in the United Kingdom than in the United States and have since gained a cult following.

    Game services like Sky Games provided casual games to play on Sky's TV box using the DVB-J platform. They often use colored buttons (just like BD-J) for additional interactivity.

    Notable developers were Denki, Waterfront Entertainment, and Mind's Eye Productions. The developers stated that the Sky boxes were slow, and the DirectTV boxes were even slower. BD-J has more memory, assets, and processing capabilities than DVB-J and other GEM-based platforms. BD-J has a whopping 45.5 MB of memory, whereas standard GEM typically uses only 6 MB.

    "Ed, Edd, and Eddy: Night of the Living Ed" is an example of an DVB-J game. Since DVB-J and BD-J are based on the common GEM-core, it's possible to port old DVB-J games on Blu-ray.

     After 2015, these game services were shut down, which unfortunately led to many DVB-J games becoming lost media. Meaning they are forever gone and cannot be accessed or played again. However, there is some good news for fans of these games, as some have been preserved and can still be played on your browser through Denki's website. Despite this, it is still important to emphasize the significance of physical media, as it ensures that content is not lost forever in the event of digital service shutdowns.

     

    Why didn't BD-J game development take off?

    • Most likely because the early games from the studios never made a good impression on gamers and moviegoers. And all of the good (lost) games were on DVB-J.
    • At the time, lack of documentation prevented indie developers and enthusiasts from developing on the platform, thinking it was only for movies.
    • Some developers weren't comfortable developing on Java. 
    • It was overshadowed by the AAA 3D powerhouses of Xbox 360, PlayStation 3, Wii, and Windows PC.
    • The rise of digital-only PCs and mobile games pushed the decline of physical media.


    What are the benefits of playing and making BD video games compared to PC and console games?

    • πŸ”„ Platform independent
    • 🩹 No Patches & Updates
    • ⬇️ No Installation
    • 🌐 No Online Activation
    • πŸ’Έ No Microtransactions
    • 🧩 No DLC
    • 🚭 No Fear of Censorship (like PC)
    • πŸ•Ή️ Simple controls
    • πŸ‘πŸ» Easy to use


    How is the Blu-ray format relevant to game development in the modern era of 3D gaming?

    • Blu-ray uses international standards for its technologies defined by the ISO, ITU, and IEC. Game consoles use private standards that change with each new generation and make a burden for developers because they have to throw out the knowledge from the previous generation. Not all, but the majority of BD's standards are royalty-free and open-source (x264, Dolby Digital, WAV, Java Language, BD-J/GEM APIs, PNG, etc.)
    • Creating 2D games is more straightforward than complex 3D games that use APIs like Vulkan and OpenGL, which require bone animations, 360-degree rotation angles, shading languages, surfaces, collision, physics, modeling, texturing, lighting, and vector math, making them more expensive and time-consuming. 2D games are more lightweight, easy, and cost-effective as they use layers, easy-to-make sprites, X-Y coordinates, simple directions (front, back, up, down, left, and right), and a single rotation angle.
    • Write Once, Read Everywhere was Java's core philosophy, instead of writing once and compiling anywhere to different hardware architectures and operating systems, which takes time and money. Writing Blu-ray Java games is cheaper and quicker as a Java program can be developed and compiled into standard bytecode and expected to run on any Blu-ray player.
    • Blu-ray players are a popular addition to households, which means that if you create a BD-ROM game, people do not have to invest in an expensive gaming system or a complicated PC. A Blu-ray player is usually simple and user-friendly, allowing users to easily insert the disc and start playing the game without issues. Respectively, Legacy CD-ROM and DVD-ROM games (both new and old) may not play properly on modern PCs, as they might need an emulator like DOSBox, ScummVM, or Proton to run, a graphics driver update, or a software patch. They are also prone to cause errors, unexpected crashes, and compatibility issues.
    • PC is no doubt more powerful than consoles and BD, but its technical requirements are not permanently standardized or fixed because it continues to evolve and grow. This causes compatibility and optimization issues with low-end or legacy computers to run newer games. BD's technical specifications are permanently fixed and standardized, meaning they cannot be changed.
    • People enjoy not only physical media of movies and music but games as well. While physical media of PC games are uncommon in North America, some gamers still prefer to own, barter, or trade physical discs.
    • Digital game stores sometimes remove titles from their catalogs because of licensing issues, censorship, changes in corporate policy, or they felt like it. With physical media, they can't take those discs from you. 
    • Retro game enthusiasts love porting/making games to old (or inferior) computer systems or consoles like the Sega Genesis or Amiga because they love old-school technology, especially when handling 2D graphics since it's simpler than complex 3D APIs. And Blu-ray is a 2D multimedia platform.


    If I do make a Blu-ray game, what inspiration can I use to be creative to take advantage of the  technical  limitations?

    • Older and flawed Blu-ray games: If you have a Blu-ray drive on your PC, you can examine its file directories and view its Xlet source code to see how everything works and learn its game mechanic flaws.
    •  Java TV games from TV games services like Sky Games. Not all, but some of the games are preserved and can be played on the web browser. While DVB-J used 6 MB memory on hardware that's more limited than BD-J, it is still a great example of Java games to learn.
    •  Java Me phone games: While it's different and has more technical limitations than BD-J, developers have made impressive and fun games.
    • Legacy CD-ROM and DVD-ROM games: Glance at classic CD-ROM/DVD-ROM games from the 1990s and 2000s made with Macromedia Director like The Journey Man Project, Mystery Case Files, I-Spy, and Dark Fall, and learn their strengths and weaknesses. And see how well it will translate to the limitations of the modern BD-ROM.
    • 2D 16-bit and 32-bit era console games: Take a look at 2D games from classic consoles from the Super Nintendo, Sega Genisis, Sega Saturn, Neo Geo, and the Sony PlayStation since they have limited technical restraints like BD compared to today's game systems.
    • Modern Pinball Machines: It may sound silly, but contemporary pinball machines use FMV sequences on scoring displays that use fancy 2D graphics. They provide additional features such as mini-games. They often use the P-ROC or P3-ROC boards that operate at 32 Mhz.
    • Video Pachinko Machines: This may sound silly too, but modern Pachinko machines also use FMV sequences with 2D graphics on scoring displays. Their additional interactivity makes them "sort of" act like modern FMV arcade games.

    If you're interested in homebrew BD-J game development and more information about BD-J video games, visit Blu-Play's website.

     

    Major and mini-major studios often use BD-J for their custom programming framework that suits their needs without the restrictions of HDMV. Is BD-J perfect? No. So while it may not be the latest and greatest technology, BD-J has its own charm and style that's worth checking out. 



    9. Metadata

    Blu-ray specs provide optional metadata for the disc. The metadata is written in XML, and most BD titles have a PNG or JPEG thumbnail icon and the title's name under the  META directory. Additionally, other metadata can be added such as names of chapters, songs, scenes, etc. You can also search for content on your Blu-ray player like a specific scene, actor, etc. However, not all players have this feature, and not all BD-ROM titles added additional metadata, only the thumbnail and title name. BD-ROM music albums can provide additional metadata that contains names of titles, tracks, songs, artist, genre, etc.

    BD-ROMs are software applications, so they'll commonly have a thumbnail icon and title name like a normal app or desktop program.

    Here's an example of the XML metadata under the DL subdirectory from the Alien Blu-ray showing the disc's name, thumbnail names, language, and its two titles, the theatrical version, and the director's cut.

    <?xml version="1.0" encoding="UTF-8"?>
    <disclib xmlns="urn:BDA:bdmv;disclib">
    <di:discinfo xmlns:di="urn:BDA:bdmv;discinfo">
    <di:title>
    <di:name>Aliens</di:name>
    <di:numSets>1</di:numSets>
    <di:setNumber>1</di:setNumber>
    </di:title>
    <di:description>
    <di:tableOfContents>
    <di:titleName titleNumber="1">Alien</di:titleName>
    <di:titleName titleNumber="2">Alien</di:titleName>
    </di:tableOfContents>
    <di:thumbnail href="A1_metadata_sml.jpg"/>
    <di:thumbnail href="A1_metadata.jpg"/>
    </di:description>
    <di:language>eng</di:language>
    </di:discinfo>
    </disclib>

    Famous players such as PS3, PS4, PS5, and VLC support BD metadata, but not all players support or take advantage of its capabilities.


    10. Stereographic 3D

    In 2010, Profile 5.0 was introduced called "Blu-ray 3D", which aimed to provide a high-quality stereographic 3D experience for home video, subtitles, and graphics. This new technology was revolutionary and was quickly adopted by many movie studios at the time. To enjoy 3D content, a TV or projector that is capable of rendering 3D images, an HDMI 1.4 cable, and a Blu-ray 3D player are required. This means that viewers must have a compatible setup to fully experience the 3D technology.

    For 3D video, it uses a modified version of the AVC codec created in 2009 called MVC that uses the 2D+Delta method. It uses a Polarized 3D system that uses two separate images projected superimposed onto the same screen through different polarizing filters. Compared to anaglyph images, the use of polarized 3D glasses produces a full-color image that is considerably more comfortable to watch and is not subject to binocular rivalry. It is like AVC but provides a secondary video for the right eye called the MVC-dependent view. The main MVC video for the left eye is called the MVC-base view. 

    The max bitrates for the MVC Base view is 40Mbps (5 MB memory), the MVC Dependent view is 40Mbps (5 MB memory), and when the MVC Base view and MVC Dependent view are together is 60Mbps (7.5 MB memory). 

    Dredd, a native 3D movie, uses separate videos for the left and right eye.

    Then, they are put together to create the 3D effect.

    To keep backward compatibility with 2D Blu-ray players, it uses two MPEG-2 Transport Streams - one is a 2D compatible Transport Stream (main TS) and the other is a 3D extended Transport Stream (sub-TS). The main TS includes the MVC Base view video stream and other elementary stream(s) necessary for 2D playback. The main TS is fully compatible with 2D players. The sub-TS includes the MVC Dependent view video stream and other elementary stream(s) necessary for 3D playback. Both main TS and sub-TS are decoded simultaneously for 3D playback. If a 3D disc is played on a normal 2D player, it will ignore any additional information for the MVC-dependent view.

    The sum of the maximum multiplex rate of the main TS and sub-TS is 64Mbps (8 MB memory) while the maximum multiplex rate of each TS (main TS and sub-TS) is 48Mbps (6 MB memory) to acknowledge high-quality HD picture to each eye.

    Two TSs, the main TS and sub-TS are divided into blocks. Each block contains about a few seconds of AV data, and blocks of the main TS and blocks of sub-TS are interleaved on a disc. The Stereoscopic Interleaved file format ( .ssif), under the SSIF directory, is used to continuously read blocks of the main and sub-TS.

    The blockbuster movie "Avatar" by James Cameron was considered to be the most impressive 3D movie at home and became the killer app and key driver for the popularity of 3D movies.

    For a truly immersive 3D movie experience, a movie must be shot natively with 3D cameras. This means that the movie is captured using cameras that are specifically designed to produce images for both the left and right eye simultaneously, providing a truly 3D visual effect. In the case of animated CGI films, they must render two different images for the left and right eye. A prime example of a movie that was both shot and rendered natively in 3D is James Cameron's Avatar.

    However, if a movie is "converted" into 3D from a 2D source, the results can vary greatly depending on the movie and the conversion process used. It is important to note that not all movies are suitable for 3D conversion, and some may not benefit from the added visual effect of 3D at all.

    As mentioned above, Blu-ray 3D is supposed to be fully compatible with 2D players, like Dredd and House of Wax. However, some 3D discs cannot be played on 2D players due to limited technical constraints but often include a 2D disc.


    Blu-ray 3D provides two presentation types for Interactive, Presentation, and Java graphics with 3D video.

    One plane plus offset presentation type

    •  This presentation type is prepared for ease of authoring and reduces content production costs. Object(s) for menu or subtitle can be shared for 2D and 3D in this presentation type.
    •  Viewers can see flat objects at the same depth from the screen.

     Stereoscopic presentation type

    • This presentation type is prepared for a more sophisticated 3D presentation. Independent objects are drawn to two planes, one of which is for the left eye and the other of which is for the right eye.
    •  Viewers can see 3D objects each of which has a different depth.

    Developers can choose which presentation type they want to use for each graphics layer, for example, one plane plus offset presentation type for PG, Stereoscopic presentation type for IG, or Stereoscopic presentation type for BD-J graphics and Background.

    However, a developer should keep in mind that not all 3D players support BD-J graphics, Background, and Interactive/Presentation Graphics in Stereoscopic Output Mode.

    Some Blu-ray discs use the old-school Anaglyph 3D with cyan and red colors compatible with regular players and TVs (Polar Express and Friday the 13th). It's not part of the Profile 5.0 specifications as it uses a normal video codec with a red-cyan anaglyph image.

    As of 2017, most 3D TV sets and services are no longer available from manufacturers. As of 2018, most major home entertainment studios, such as Disney, Sony, Warner Bros., and Universal, discontinued the Blu-ray 3D format in North America but continued to produce and sell them in other regions such as Europe and Japan.

    Despite the decline in the popularity of 3D technology in recent years, it's worth noting that Blu-ray 3D has not been abandoned or discontinued. Also, 3D projectors are still being produced and there are boutique labels that, with the help of the 3D Film Archive, are releasing 3D films on Blu-ray 3D in North America as of 2023. This means that fans of 3D movies can still enjoy their favorite films with the added dimensionality that they love, albeit with fewer mainstream options available.


    11. Region Code

    NO ONE likes Region Locking, a way to prevent a disc from playing on another player from a different geographical region. Unlike DVD's region locking, BD's region lock scheme is less restrictive by only dividing into three regions: 

    • Region A: The Americas, Japan, and South East Asia 
    • Region B: Europe, Africa, Australia, New Zealand, and the Middle East 
    • Region: C: Russia and most of the Former Soviet Republics, Central Asia, Mainland China, Mongolia, and the Indian subcontinent. 
    • Region Free or Region: ABC, will play on all players worldwide.

    Movie distributors have different region coding policies, among major U.S. studios, Walt Disney Pictures, Warner Bros., Paramount Pictures, Universal Studios, and Sony Pictures have released most of their titles free of region coding. MGM and Lionsgate have released a mix of region-free and region-coded titles. 20th Century Fox released most of their titles Region A-coded pre-Disney merger. Now, most of their post-Disney merger content is region-free. Boutique film restoration and distribution company, The Criterion Collection, uses US region coding (Region: A) in all Blu-ray releases, with their releases in the UK market using UK region coding (Region: B).

    If you play a region-coded film, for example, if you play Region: B encoded 1984 on a Region: A player, it will display a title card with a message saying that this disc will only play on Region: B players.

    Here's an example of a region code title card from T2: Skynet Edtion.

    Ever since region locking has become controversial, there have been ways to defeat it such as hacking players with mod chips, using custom firmware, modifying the ripped BDMV files and burning them into BD-Rs, playing BDs on PC, or buying an expensive region-free player.

    12. DRM

    NO ONE likes DRM,  Blu-ray uses complex DRM schemes to protect their discs from unauthorized copying. It's uncommon for commercial BD discs to be unencrypted or DRM-free, but it's up to the distributor if they want to publish a DRM-free disc. Here are the DRM schemes that Blu-ray uses, each one is very unique and many individuals have been successful at cracking these.

    Advanced Access Content System (AACS) is part of the Blu-ray DRM and it's an advanced and complex cryptic  DRM that  works by encrypting the content on the disc using a combination of symmetric and asymmetric key cryptography. The AACS cryptic system is overwhelmingly complex to explain, so I'll just cut it short. The system also employs digital signatures and a key revocation system to protect against unauthorized copying and distribution. It encrypts content under one or more title keys using the Advanced Encryption Standard (AES). To view a BD movie, the player must first decrypt the content on the disc. The decryption process is somewhat complex. The disc contains 4 items—the Media Key Block (MKB), the Volume ID, the Encrypted Title Keys, and the Encrypted Content. Think of the keys like the offline activation keys for DVD-ROM games, except the player is the one reading and activating them, not you.

    There have been several successful unauthorized cracks on it, including the very famous  AACS encryption key controversy and  PS3's compromised private key in 2007. AACS was created by a consortium of companies known as the AACS Licensing Authority (AACS LA), which includes major players in the entertainment and tech industry, such as Sony, Disney, Warner Bros. Intel, Microsoft, Panasonic, IBM, and Toshiba.

     Each year new keys are regularly published which makes this a game of cat and mouse for hackers. Here's the famous encryption key, one of the most banned numbers back in the day:  09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

        A compromised player can still be used to view old discs, but not newer releases without encryption keys for a compromised player. If other players become cracked, revoking access could result in legitimate users of compromised players needing to upgrade or replace their software or firmware to be able to watch new discs.

    Many individuals who wish to watch BD-ROMs on their computer typically use either Windows or Linux in conjunction with the VLC player. Although the VLC player can successfully play older physical BD-ROMS (or unencrypted ISO files) with the use of older keys, it is unable to play newer ones without obtaining new keys. The process of obtaining these new keys can prove to be quite challenging.

    Volume IDs are unique identifiers or serial numbers that are stored on pressed pre-recorded discs with special hardware. They cannot be physically duplicated on consumers' recordable media. The point of this is to prevent simple bit-by-bit copies since the Volume ID is required (though not sufficient) for decoding content. On Blu-ray discs, the Volume ID is stored in the BD-ROM Mark.

    Here's an example of a BD-ROM title with unique keys for the 2007 U.S. release of Robocop:

    • CPS Unit  Key (Title Key):  2CC3A36907E90C22E0B0B16856DB12AD121991EA
    • Volume Unit Key:  98B02655F0A387AFDF636352875E0AB6
    • Media Key:  5B90FE346BBF4CA41570D3F25CAD9B4A

    You can find more info about ACCS at the  Doom9 forums.

    BD-ROM Mark is a serialization technology designed to protect against mass production piracy or the mass replication and sale of unauthorized copies of "pressed" Blu-ray Discs. Only licensed BD-ROM manufacturers have access to the equipment that can make these unique ROM Marks, thus allowing genuine BD-ROM media like movies and music to be identified. A unique and authentic digital signature is buried in the recording which can identify whether an individual disc was pressed by an authorized glass master.

    High-bandwidth Digital Content Protection (HDCP) is a form of digital copy protection developed by Intel Corporation to prevent the copying of digital audio and video content as it travels across digital connections including HDMI. Any device associated with this type of DRM will often have an HDCP transmitter chip. It uses the Image Constraint Token (ICT). This protocol flag can cause the downsampling of high-definition video content on Blu-ray to DVD quality video and not be able to enjoy high-definition video from such discs. It faced several breaches including a 2010 master key leak.

    BD+ is an  additional but optional component of the Blu-ray DRM. It was developed by Cryptography Research Inc. and is based on their concept of Self-Protecting Digital Content (SPDC). It is owned by BD+ Technologies LLC. It uses a small virtual machine embedded in authorized players (unrelated to the HDMV/BDJ virtual machine). This DRM program which can be found inside the BDSVM directory of a BD+-protected disc is called "content code". The content code is executed on a virtual big endian DLX-like processor interfacing with 4MB of memory. This special processor supports 59 different instructions and a register set consisting of 32 general-purpose registers and three special-purpose registers for the instruction filter, the clock cycle counter, and the program counter. It may look simple, but the I/O between the virtual machine and the player is somewhat more complex. BD+ mainly works by adding errors to the video stream, not enough to make it unwatchable but enough to make it unpleasant to watch due to near-constant artifacts. There have been several reverse engineering attempts. Pre- 2019 20th Century Fox is a well-known user of BD+. Online forum,  Doom9, discovered its technological specifications.

    This is what happens when you rip a BD+ encrypted disc, turn it into an ISO, and try to play it. The BD+'s Java Xlet will detect that BD+ is not present and will prevent you from playing the disc.

    Cinavia is an analog watermarking and steganography system under development by Verance. In conjunction with the existing AACS DRM, the inclusion of Cinavia watermarking detection support became mandatory for all consumer Blu-ray Disc players in 2012. It is not required to have Cinavia DRM on the disc. Sony is a well-known user of Cinavia and there's been a  decrease in releases from other studios in recent years.

    You can mostly bypass most of these DRM schemes by just ripping the discs, modifying the directory files, decrypting the files, and compiling them into an ISO file thus defeating the purpose. However, it's better said than done, as it is not easy. But Cinavia and BD+ are the most difficult to crack.

    13. The Rise of Boutique Labels


    Boutique labels are popular among collectors and enthusiasts of film and physical media and have been credited for starting the "Blu-ray Renaisance" dating back to the mid-2010s with customers choosing to buy movies in physical formats in the age of digital streaming. A boutique or specialty label is a home video distributor that releases licensed films in Blu-ray or Ultra HD Blu-ray format characterized by a specific or niche target market instead of a mainstream market. Major film studios and indie film companies offer distribution licenses to boutique/specialty labels to avoid the financial risk of paying Blu-ray/DVD replication fees and retail shipment costs. The niche audience they target are fans of sci-fi, horror, anime, foreign, indie, weird, or forgotten films. Famous (and infamous) boutique and specialty labels are Shout Factory, Criterion, Kino Lorber, Arrow, Vinegar Syndrome, Blue Underground, Sentai, Mill Creek, Discotek, Funimation, and Severin. Major and mini-major studios like Warner Bros., Paramount, and Lionsgate are taking advantage of the collectors market and setting up their own "boutique-esque" labels, Warner Archive, Paramount Presents, and Vestron. 

     The studios provide the films from the best available source, or the labels remaster them themselves. They are often cleaned up and restored to the highest resolution possible and then encoded using AVC with DTS Master Audio or Dolby Atmos for the best quality possible. These special editions often come with deluxe slipcases or packages, custom-colored cases, or even big boxes. They usually provide hours of bonus features, including audio commentaries, isolated scores, multiple cuts, featurettes, photo/art galleries, trailers, and TV/radio spots. These releases are to appeal to collectors, film enthusiasts, and fans of physical media. 

    Discotek, a boutique label specializing in 80s and 90s Japanese anime, is known for being one of the first publishers to support standard definition content on a Blu-ray Disc to help collectors and videophiles get the best experience possible. Using this format, the SD content on Blu-ray has better video encoding than DVD with expanded color, plus around 20 hours of video content on the disc without needing multiple discs. The result is a cheaper product than its DVD counterpart.

    There are music labels that are releasing older music (notably classical and rock) on Blu-ray in stereo and native surround in all three audio codecs with music videos, custom packaging, and other extras for the audiophile market.

    The trend of releasing older movies and music on Blu-ray is becoming increasingly popular with boutique and music labels. However, it begs the question - why aren't retro video games from the 70s and 90s receiving the same treatment? Although many of these games have been remastered for PC and proprietary consoles, this still doesn't guarantee their future preservation. Unlike movies and music, most video games - especially those for PC - do not have physical media releases since they are primarily sold on digital stores or through streaming services. This raises concerns about the long-term preservation of these games and their ability to be enjoyed by future generations. Therefore, it would be beneficial for game developers and distributors to consider ways to future-proof these classic games and ensure their preservation.

    Physical media has indeed shrunk because of streaming and digital stores (Netflix, iTunes, Steam), but that doesn't mean it's dead. It's making a small comeback due to people being frustrated that their favorite films have been removed or censored. Usually, they're removed due to licensing reasons, but in this day in age, people have to worry about censorship.

    It's important to realize that most of your favorite media may be owned by large corporations. Although you may have access to the original versions of the titles you love, this may not always be the case. Ownership, values, and cultural norms can change over time. At some point, the owners of your movie library may decide that one of your favorite titles no longer aligns with their brand or ideology, and they may choose to edit or remove it from their catalog. This is a reminder that our access to media is not always within our control, and things can change unexpectedly.

    Calls for censorship have been made throughout history, and the groups advocating for it can change over time. Those who seek to restrict media today are not the same as those who called for it in the 1990s, and their motives differ as well because of generational, cultural, and ideological differences. It's impossible to predict the future and who will be in the power of a government or corporation. Owning physical copies of the films and shows you want to rewatch provides a safeguard against those who might attempt to take them away.

    When you purchase a digital copy of a movie, album, or game, you are not honestly buying it. Rather, you are acquiring a license to access it through a platform such as Amazon, Apple, Steam, or any other such service. If these platforms lose the rights to provide you with the titles you have acquired, they will be removed from your library without any warning. 

    Why is Blu-ray better than streaming?
    • It provides a better bitrate (40Mbps) than your average ISP data speed.
    • Video is lossless and doesn't use lossy compression that causes pixelation or compression artifacts.
    • You don't have to worry about your internet connection being out of service or waiting to load.
    • When you buy it, you own it. The digital stores and streaming services can't take it away from you.



    13. The Rise of Boutique Labels


    Is Blu-ray perfect? No. 

    Is it better than streaming? Yes.

    With physical sales declining and digital downloads and streaming taking over, Blu-ray (and Ultra HD Blu-ray) may very well be the last physical disc format to be created. However, it's far from becoming obsolete as it provides an incredible visual/audio quality that's better than lossy streaming and still has an important role to play in storage. This is particularly true as solid-state drive (SSD) technology continues to be small and expensive, and internet connection speeds are still slower than installing/reading something from a disc.

    While it may not have replaced the DVD and CD, Blu-ray is an intriguing multimedia disc format that has recently gained appreciation, recognition, and enthusiasm from moviegoers, music lovers, and homebrew gamers. 

    Nonetheless, we can only hope that this format will last for a long time. πŸ’Ώ




    Article written by A. E. Firestone/ Illustrations © A. E. Firestone

    _____________________________________________________________

    Footnotes

    1. Fanny and Alexander - 2011, The Stand - 2019.

    2. BD-J mode only.

    3.https://patents.google.com/patent/US7505050B2/en

    4.Cibyl MIPS-to-Java compiler for BD-J | Github

    5. Does not natively support APNG and MNG files. To achieve animation, PNG frames must be put together using Java programming.

    _____________________________________________________________

    Sources/External Links:

    Blu-ray Disc White Papers from 2004 to 2018:

    Video & Audio Formats Specs and Info:

    Graghics Formats Specs and Info:

    GEM/MHP:

    Pantents

    International Standards implemented on Blu-ray

    • Advanced Video Coding (AVC) aka H.264 or MPEG-4 Part 10 | ISO - ITU - IEC
    • MPEG-2 Part 2 aka H.262 | ISO- ITU
    • Dolby Digital aka Dolby AC-3 | ATSC (N.A.) - ETSI (E.U.)
    • Waveform Audio File Format (WAVE or WAV) | ITU
    • M2TS is based on MPEG-2 Transport Stream | ITU
    • BD-J is based on Global Executable MHP (GEM) |  ITU
    • Multichannel Surround Audio Standard | ITU
    • XML aka Extensible Markup Language | W3C 
    • PNG aka Portable Network Graphics | ISO - IEC
    • JPEG Image Format | ISO - ITU
    • OpenType Font Format | ISO
    • YCbCr Rec. 709 aka ITU-R BT.709, a standard for SDR HDTVs |  ITU
    • xvYCC (expands color of YCbCr Rec.709) | IEC

    BD-J Programing 

    Other Sources:

    Comments

        Leave Us External Links for Your Mother...

    Love us back, because we said so.

    Version History    Mobile Version     Privacy Policy     Rules     Site Map     Help

    ™ & ©2024 Storyteller Studios. All Rights Reserved. Version 3.0.1 Blue Jay

    Cool Blue Outer Glow Pointer