Interactive Graphics

Interactive Graphics Streams (IG or IGS) is the main graphics format for interactive menus in HDMV mode.

Interactive Graphics
Type of format Graphics Format
First released 2006
Developer Blu-ray Disc Association
Filename extension None*
Limits 32 Streams
Open Format? Yes
Free Format? ?
Magic Number ?

Interactive Graphics are displayed on its own independent layer on top of the Presentation Graphics; it is similar to Presentation Graphics (PG) used for subtitles (both layers are on top of the Primary Video). The graphics (along with its code, X-Y coordinates, and other data) are stored inside M2TS files, separated by ones used for video, audio, and subtitles. The graphics are decoded from the Blu-ray player's special graphics decoder. The max file size is 6 MB (48mbps) per M2TS file and can only use 32 streams. The max graphics memory buffer size is 16 MB in HDMV mode. Interactive Graphics are not available on BD-J mode as they are replaced with Java Graphics.

Interactive Graphics on top of the Primary Video

 

 

 

 

 

 

 

 

 

Features:  

  •  It uses simple 8-bit colors and transparency (256 color palette), this is useful for simple graphics but complex ones like photos will cause dithering a la GIF.  
  • Example of Dithering 
     Unlike Java Graphics (PNG, JPEG), Interactive Graphics use simple animations: Fade In/Out, Color changing, Wipe In/Out, and Scrolling. Despite being simple, they take a lot of space in the graphics memory buffer.
  •  It's resolution plane size supports 1920x1080/1280x720/720x480/720x576. 
  •  Uses Run-length encoding, a simple compression method.

Interactive Graphics do not support true overlapping, but can be categorized into "Button Overlap Groups" (BOGs). Example: 0005.m2ts contains the graphics and code for the menu. A single BOG would contain 3 objects for a single button, Normal (not selected), Hover (selected), and Pressed.

BOG Example w/ 3 objects

0005 (IG stream) >
                0000 (BOG) >
                            0000 (Object) 


0005_0000_0000 - Normal
0005_0000_0001 - Hover
0005_0000_0002 - Pressed

Interactive Graphics cannot be "opened" on a normal image program on a computer (it can't be demuxed with normal demuxing software), it must be opened by specialized Blu-ray editing software such as BDedit, BDReauthor, IGEditor, IGparser, etc. Some of these programs can let you create the graphics using PNG or PSD files and then convert those files to IGS format and vice versa.


 

 

Inside a Interactive Graphics Stream

 This is the raw binary data of the IG stream

Overall Structure

  • Interactive Composition Segment (ICS)
    • Magic Number
    • Presentation Time Stamp
    • Decoding Time Stamp
    • Segment Type: ICS
    • Segment size
    • Width
    • Height
    • Frame rate
    • Composition Number
    • Composition State
    • Sequence Descriptor
    • Data Length
    • UI Model Flags
    • User Timeout Duration
    • Total Pages
  • Page Information
    • Page Number
    • User Operation Mask 1
    • User Operation Mask 2
    • Number of In/Out Effect Windows
      • Window ID
        • X Coordinates
        • Y Coordinates
        • Width
        • Height
      • Number of Effects
      • Effects
        • Duration
        • Pallete
        • Composition Object.
          • Object ID
          • Window ID
          • X Position
          • Y Position
          • Object Cropping
            • Object Cropping Horizontal Position
            • Object Cropping Vertical Position
            • Object Cropping Width
            • Object Cropping Height
    • Animation Frame Rate Code (divider)
    • Default Selected Button
    • Default Activated Button
    • Palette ID
    • Number of BOGs on this Page
  • Button Overlap Group(s)
    • Default Valid Button -
    • Number of Buttons
  • Buttons
    • Button ID
    • Value: button_numeric_select_value
    • a.act: auto_action_flag
    • X: button_horizontal_position
    • Y: button_vertical_position
    • upper: upper_button_id_ref
    • lower: lower_button_id_ref
    • left: left_button_id_ref
    • right: right_button_id_ref
    • n.start: normal_start_object_id_ref
    • n.end: normal_end_object_id_ref
    • n.repeat: normal_repeat_object_flag
    • s.sound: selected_state_sound_id_ref (from sound.bdmv)
    • s.start: selected_start_object_id_ref
    • s.end: selected_end_object_id_ref
    • s.repeat: selected_repeat_object_id_ref
    • a.sound: activated_state_sound_id_ref (from sound.bdmv)
    • a.start: activated_start_object_id_ref
    • a.end: activated_end_object_id_ref
    • Number of Commands
  • Commands
    • 50 40 00 01 00 00 00 00 00 00 00 00
    • 50 40 00 01 00 00 00 01 00 00 00 08
    • 51 00 00 03 80 00 00 00 C0 00 00 01
    • 00 00 00 00 00 00 00 00 00 00 00 00
  • Pallete: Palette Definition Segment (PDS)
    • Header "IG"
    • Presentation Time Stamp
    • Decoding Time Stamp
    • Segment Type: PDS
    • PDS size
    • Palette ID
    • Palette Version Number
    • Palette Entry ID
    • Luminance (Y)
    • Color Difference Red (Cr)
    • Color Difference Blue (Cb)
    • Opacity
    • Transparency (Alpha)
  • Object: Object Definition Segment (ODS)
    • Header "IG"
    • Presentation Time Stamp
    • Decoding Time Stamp
    • Segment Type: ODS
    • Segment Size 
    • Object ID
    • Sequence Flags
    • RLE Data Size (uint32)
    • Width
    • Height
    • RLE Data
    • End of ODS
  • End of Display Segment (END)
    • Header "IG"
    • Presentation Time Stamp
    • Decoding Time Stamp
    • Segment Type: END
    • Segment Length
Example Code 

00000000 49 47 00 0F FF F0 00 0E AC 12 18 83 62 07 80 04
00000010 38 10 00 00 80 C0 00 83 56 80 00 00 00 0B 00 00
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF
00000030 FF 00 05 00 00 01 00 00 FF FF 80 00 0A 00 0A 00
00000040 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 00 00

00000050 00 00 FF 00 00 00 00 00 03
50 40 00 01 00 00 00
00000060 00 00 00 00 00 50 40 00 01 00 00 00 01 00 00 00
00000070
00 51 00 00 03 80 00 00 00 C0 00 00 01 00 00
00000080 00 00 00 00 00 00 00 00 00 00 00 01 01 00 01 FF
00000090 FF 00 03 F2 00 F0 00 00 00 02 00 01 00 01 00 0F
000000A0 00 0F 00 01 00 10 00 13 00 00 00 14 00 1C 00 04
000000C0 50 40 00 01 00 00 00 00 00 00 00 00 50 40 00 01
000000D0
00 00 00 01 00 00 00 08 51 00 00 03 80 00 00 00
000000E0
C0 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
000000F0
00 04 01 00 04 1D F5 00 00 14 00 0A 00 04 00 04
00000100
00 04 00 04 FF FF FF FF 00 FF FF FF FF FF 00 FF
00000110 FF FF FF FF 00 01 00 00 00 00 00 00 00 00 00 00
00000120 00 00 00 00 01 00 00 FF FF 00 03 F2 00 78 00 03
00000130 00 01 00 00 00 00 00 01 00 01 00 01 00 02 00 05
00000140 00 00 00 06 00 0E 00 15 50 40 00 01 00 00 00 00
00000150 00 00 00 00 50 40 00 01 00 00 00 01 00 00 00 00
00000160 00 51 00 00 03 80 00 00 00 C0 00 00 01 00 00
00000170 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00
00000080 00 00 00 00 00 00 01 00 00 00 00 74 07 80 03 85
00000080
10 00 2B FD 09 02 01 0A 00 00 01 2F 00 74 01 07
00000080
00 00 03 F6 00 97 00 2B FD 09 02 01 0A 00 00 00
00000080
F3 00 74 01 07 00 00 03 F6 00 97 00 2B FD 09 02
00000080
01 0A 00 00 00 B7 00 74 01 07 00 00 03 F6 00 97 00000080 00 2B FD 09 02 01 0A 00 00 00 7A 00 74 01 07 00
00000080
00 03 F6 00 97 00 2B FD 09 02 01 0A 00 00 00 3E 00000080 00 74 01 07 00 00 03 F6 00 97 00 2B FD 09 02 01
00000080
0A 00 00 00 02 00 74 01 07 00 00 03 F6 00 97 00
00000080
2B FD 09 02 01 0A 00 80 00 00 00 74 00 3B 00 00 00000080 02 23 03 85 01 07 00 00 03 F6 00 97 00 2B FD 09
00000080
02 01 0A 00 80 00 00 00 74 00 77 00 00 01 E7 03 00000080 85 01 07 00 00 03 F6 00 97 00 2B FD 09 02 01 0A 00000080 00 80 00 00 00 74 00 B3 00 00 01 AB 03 85 01 07
00000080
00 00 03 F6 00 97 00 2B FD 09 02 01 0A 00 80 00 00000080 00 00 74 00 F0 00 00 01 6E 03 85 01 07 00 00 03 00000080 F6 00 97 00 2B FD 09 02 01 0A 00 80 00 00 00 74
00000080
01 2C 00 00 01 32 03 85 01 07 00 00 03 F6 00 97 00000080 00 2B FD 09 02 01 0A 00 80 00 00 00 74 01 68 00 00000080 00 00 F6 03 85 01 07 00 00 03 F6 00 97 00 2B FD
00000080
09 02 01 0A 00 80 00 00 00 74 01 A5 00 00 00 B9 00000080 03 85 01 07 00 00 03 F6 00 97 00 2B FD 09 02 01
00000080
0A 00 80 00 00 00 74 01 E1 00 00 00 7D 03 85 01 00000080 07 00 00 03 F6 00 97 00 2B FD 09 02 01 0A 00 80
00000080
00 00 00 74 02 1D 00 00 00 41 03 85 01 07 00 00 00000080 03 F6 00 97 00 2B FD 09 02 01 0A 00 80 00 00 00 00000080 74 02 5A 00 00 00 04 03 85 01 07 00 00 03 F6 00
00000080
97 01 FF FF FF FF 02 19 00 0C 01 00 0C FF FF 00 00000080 01 2C 02 BB 00 0C 00 0C 00 0C 00 0C 00 49 00 49 00000080 00 FF 00 49 00 49 00 FF 00 49 00 49 00 04 50 40 00000080 00 01 00 00 00 00 00 00 00 07 50 40 00 01 00 00 00000080 00 01 00 00 00 03 51 00 00 03 80 00 00 00 C0 00 00000080 00 01 00 00 00 00 00 00 00 00 00 00 00 00 49 47
00000080
00 0E AC 12 00 00 00 00 14 04 F8 00 00 01 12 81 00000080 80 FD 02 4C 92 69 FE 03 5C 9D 5E FD 04 5D 9C 60 00000080 FB 05 1F 84 7B FF 06 10 80 80 56 07 72 AE 50 F6 00000080 08 4E 98 67 F6 09 1A 84 7D F9 0A 20 83 7C F6 0B 00000080 16 83 7D F5 0C 12 80 80 FA 0D 2A 87 7C F5 0E 15 00000080 80 80 F9 0F 73 AF 4F FE 10 E2 82 7F 96 11 D4 8C
00000080
7C A7 12 19 80 80 77 13 83 A4 4F FF 14 76 B0 4E 00000080 FE 15 8C 93 6C FA 16 69 9C 5A FF 17 65 9B 5C FF 00000080 18 5E 99 5F FF 19 2A 88 75 FF 1A 93 A6 4D FE 1B 00000080 9F 80 80 C1 1C 50 94 65 FF 1D 74 A0 56 FF 1E 6E 00000080 9E 58 FF 1F 40 8F 6C FF 20 8A A6 4D FF 21 31 8A 00000080 72 FF 22 83 B1 75 67 23 9D AD 66 FF 24 32 8B 72
00000080
FF 25 5F B8 55 FE 26 54 8C 72 FA 27 D9 80 80 FE 00000080 28 6A 80 80 B9 29 A4 84 7C F9 2A C8 83 75 FD 2B 00000080 7F B5 4A FE 2C 53 87 7A D7 2D B7 98 69 FE 2E 10 00000080 80 80 41 2F 25 86 77 FF 30 7E 85 7B B5 31 9F A2 00000080 53 FF 32 53 C0 5B FE 33 A5 9F 56 FF 34 26 87 77 00000080 FF 35 A1 80 80 9B 36 D0 80 80 FE 37 50 8A 78 E7 00000080 38 9D A7 58 FE 39 CE 90 6F FE 3A D4 80 80 FE 3B 00000080 92 AD 4D FE 3C B4 98 5C FE 3D 7F A4 78 97 3E 4B 00000080 93 67 FF 3F AA 8F 70 FE 40 A2 A0 55 FF 41 99 A4 00000080 4F FF 42 4B C0 69 FD 43 C3 99 7A B7 44 3F 81 7E 00000080 97 45 CF 86 7A FE 46 94 A7 54 FD 47 B2 89 61 FC 00000080 48 C9 92 6D FE 49 3C 81 7F D8 4A AE 81 80 99 4B
00000080
AC 87 7B D6 4C 50 80 80 FE 4D 5F 84 7F 37 4E B5 00000080 91 7C 77 4F 70 BF 4E FE 50 73 8E 74 D7 51 B1 94 00000080 6D FE 52 7E A3 51 FF 53 58 A6 64 FA 54 8E 9E 60 00000080 FE 55 CA 80 80 FE 56 AF 90 6F FE 57 BD 94 63 FE 00000080 58 2B 88 75 FF 59 39 85 7B E5 5A 4B CA 5F FE 5B 00000080 76 8D 7D A7 5C 92 9F 60 FE 5D EA 80 80 B6 5E 86 00000080 B7 47 FF 5F E0 80 80 87 60 8B A7 4C FF 61 C4 82 00000080 7F 26 62 C8 82 7E E4 63 A9 88 76 E6 64 95 99 67 00000080 E5 65 6D A2 63 E8 66 67 B9 51 FE 67 30 81 7E DA 00000080 68 A4 A7 61 FF 69 84 A5 4F FF 6A 87 80 80 A9 6B 00000080 E2 80 80 FE 6C 7A A2 53 FF 6D C1 92 6C FE 6E A8 00000080 84 7E A4 6F 2F 80 80 E2 70 98 80 80 A2 71 6C 9D
00000080
59 FF 72 60 85 7A F9 73 46 80 80 55 74 78 A1 54 00000080 FF 75 DC 80 7F FE 76 61 82 7E A3 77 25 81 80 F7 00000080 78 45 88 77 A5 79 27 81 7F E8 7A 75 A0 55 FF 7B 00000080 67 9C 5B FE 7C 57 96 62 FF 7D 67 9B 5C FF 7E 62 00000080 86 7A E6 7F 44 89 77 D8 80 51 95 64 FF 81 4F 94 00000080 65 FF 82 57 82 7D B9 83 29 82 7D B8 84 56 96 62 00000080 FF 85 95 A6 4D FF 86 61 99 5E FF 87 58 97 62 FF 00000080 88 1F 80 80 EC 89 5C 98 60 FF 8A 99 88 7E B6 8B 00000080 96 B3 69 FF 8C D4 80 80 8B 8D 6D 9D 58 FF 8E E7 00000080 80 80 FE 8F 70 9E 57 FF 90 6A 9D 5A FF 91 C6 80 00000080 80 FE 92 77 B1 4E FE 93 BB 98 79 C6 94 4A 92 68
00000080
FF 95 3E 8F 6D FF 96 77 A0 54 FF 97 41 97 6A FB 00000080 98 78 AE 65 FC 99 7F A4 51 FF 9A 39 85 7B C8 9B 00000080 43 91 6A FE 9C 39 84 7D FA 9D 56 D6 5B FE 9E C5 00000080 95 6A FE 9F 9A 9D 5D FE A0 A5 99 7A 89 A1 47 A2 00000080 78 86 A2 19 80 80 F5 A3 1E 80 80 F0 A4 39 8D 6F 00000080 FF A5 BC 80 80 93 A6 AE 9E 5D FE A7 7C B3 4B FE 00000080 A8 81 A4 50 FF A9 1A 80 80 F9 AA C8 80 7F 92 AB 00000080 82 B6 48 FE AC 99 A4 51 FF AD D4 8D 73 FF AE 1E 00000080 84 7A FF AF 33 8B 71 FE B0 37 8D 6F FE B1 D8 8A 00000080 75 FF B2 AB A0 5B FE B3 48 93 68 FE B4 AA 9E 5A 00000080 FE B5 DB 80 80 89 B6 8C 82 7D C0 B7 51 CD 5C FE
00000080
B8 3A 8D 6E FF B9 96 81 7F C1 BA EB 80 80 1F BB 00000080 A6 A0 58 FE BC 7B A2 53 FF BD B2 9B 5F FE BE 8F 00000080 A8 4A FF BF 4D 80 80 CA C0 91 A7 4B FE C1 84 8C 00000080 69 C3 C2 63 83 78 C4 C3 83 8B 75 F3 C4 A0 A5 58 00000080 FE C5 B7 9B 63 FE C6 70 80 80 B5 C7 C3 90 67 FE 00000080 C8 BD 99 66 FE C9 9E A0 54 FE CA 8A B7 5F FE CB 00000080 86 A6 4E FF CC E5 80 80 86 CD 13 81 7F FF CE EA 00000080 80 80 A5 CF 74 AF 4F FE D0 5B 98 60 FF D1 5F 99 00000080 5F FF D2 A6 A6 58 FF D3 63 9B 5D FF D4 72 AE 50 00000080 FE D5 53 95 63 FF D6 B1 A0 5F FE D7 4D 93 66 FF 00000080 D8 46 91 6A FF D9 42 90 6B FF DA 2C 89 74 FE DB
00000080
3C 8E 6D FF DC 14 81 7F FF DD 35 8C 70 FF DE C9
00000080
8F 6C FF DF 1B 83 7B FF E0 A2 80 80 C0 E1 71 9F
00000080
57 FF E2 EA 80 80 94 E3 CB 80 80 FE E4 2F 89 73 00000080 FF E5 23 86 78 FF E6 1D 84 7B FF E7 20 84 7A FF 00000080 E8 28 87 76 FF E9 21 85 79 FF EA 19 83 7C FE EB 00000080 17 82 7D FF EC 10 80 80 37 ED 10 80 80 E6 EE 10
00000080
80 80 26 EF 10 80 80 D6 F0 15 81 7E FF F1 10 80 00000080 80 B7 F2 EB 80 80 67 F3 EB 80 80 77 F4 10 80 80 00000080 A7 F5 EA 80 80 FE F6 EB 80 80 47 F7 EB 80 80 57 00000080 F8 10 80 80 97 F9 10 80 80 FE FA EB 80 80 27 FB
00000080
10 80 80 CA FC EA 80 80 84 FD EB 80 80 33 FE 10 00000080 80 80 80 49 47 00 0E AC 13 00 0E AC 12 15 00 3D 00000080 00 00 00 C0 00 00 36 00 0A 00 0A 00 8A FF 00 00 00000080 00 8A FF 00 00 00 8A FF 00 00 00 8A FF 00 00 00
00000080
8A FF 00 00 00 8A FF 00 00 00 8A FF 00 00 00 8A
00000080
FF 00 00 00 8A FF 00 00 00 8A FF 00 00 49 47 00
00000080
0F FA 71 00 00 00 00 80 00 00

Segments & sections in detail

Data inside a IGS is made of several segments and sections:

Interactive Composition Segment
The "blueprint" for menus (IGS). It defines the user interface, mapping out button coordinates, navigation rules (up/down/left/right), and the commands executed when a button is pressed.

Name Description Byte Size
Magic Number Shows the magic number  0x4947 = "IG" 2
Presentation Time Stamp Indicates exact moment a decoded IG's sub-picture should be displayed/presented (synchronized) to the user (at a frequency of 90KHz). 4
Decoding Time Stamp  Indicates the precise moment when the decoding of the IG starts (at a frequency of 90KHz). 4
Segment Type: ICS Segment Type: Interactive Composition Segment  0x18 1
Segment Length Size of the segment 2
Width Video width in pixels (ex.  0x780 = 1920) 2
Height Video height in pixels (ex. 0x438 = 1080) 2
Frame rate Framerate ID 1
Composition Number Number of this specific composition 2
Composition State Type of this composition. Allowed values are:
  • 0x00: Normal - An incremental update to the current display (e.g., a button state changing from "normal" to "selected" when a user presses a directional key). It relies entirely on objects already loaded in the player's memory.
  • 0x40: A state that contains all the necessary information to render the graphics independently. It is used as a safe jump-in point (like skipping chapters) so the menu can render even if the player missed the start of the stream, but it doesn't clear the active memory.
  • 0x80: Epoch Start - Defines the beginning of a completely new display "Epoch." It commands the decoder to flush its graphics plane and memory buffers to build a brand-new visual layout from scratch.
1
Sequence Descriptor Strictly used to handle fragmentation. Sometimes, a graphics payload (like a massive high-res image or a wildly complex menu) is simply too large to be transmitted or processed in a single chunk. When this happens, the encoder splits the data into multiple segments. The Sequence Descriptor tells the decoder how to reassemble those "puzzle pieces". Allowed values are:  
  • 0xC0: First & Last - The payload is complete and unfragmented. It starts and ends right here.
  • 0x80: First Only - This is the beginning of a fragmented payload. More pieces are coming.
  • 0x00: Intermediate - This is a middle piece of a fragmented payload.

  • 0x40: Last Only - This is the final piece of the fragmented payload.

1
Total Data Length - 3
UI Model Flags User Interface Model: The top bit of this byte acts as a boolean switch (0 or 1) to tell the decoder what kind of menu it is looking at:

  • 0x00 (Bit = 0): Pop-up Menu
  • 0x80 (Bit = 1): Always-On Menu

1
User Timeout Duration Acts as a countdown timer. It defines exactly how long the Blu-ray player will wait for a user to press a button on their remote control before the menu automatically "gives up" and triggers a default fallback action. For a Pop-up Menu, the fallback action is usually hiding the menu.

For a Top Menu, it might be automatically starting the feature film.

Because Blu-ray relies on extremely precise timing to keep video, audio, and graphics perfectly synced, this duration is not measured in normal seconds. It is measured using the Blu-ray player's internal 90kHz clock (where 90,000 "ticks" equals 1 second).
  • Example: If a menu is supposed to time out after exactly 10 seconds, the 3 bytes would equal 900,000 (which is 0D BA F0 in hex).

  • The "Zero" Exception: If the value is  0x000000 , it acts as a special flag telling the player: "Infinite. Wait forever. Do not time out."
3
Total Pages Total Number of Pages 1

  

Page Information
Pages for the menu; 255 pages max.

Name Description Byte Size
Page Number Shows the page number; e.g. 0B = 11 pages 1
User Operation Mask 1 User Operation Mask 1 4
User Operation Mask 2 User Operation Mask 2 1
Number of In/Out Effect Windows
Shows how many In/Out Effect Windows are present (See: In/Out Effect for more detailed info )
-
Animation Frame Rate Code (divider) -
Default Selected Button Shows the Default Selected Button for this page
Default Activated Button Shows the Default Activated Button for this page
Palette ID Pallete ID used for this Page
Number of BOGs Shows the number of Button Overlap Groups (BOGs) used in this page



In/Out Effect Windows

Name Description Byte Size
Number of In/Out Effect Windows
1
Window ID

  • X Coordinates (2 bytes)
  • Y Coordinates (2 bytes)
  • Width (2 bytes)
  • Height (2 bytes)
8
Number of Effects   1
Effects
  • Duration (4 bytes)
  • Pallete (1 bytes) - Pallete ID

5
Composition Object
  • Object ID (2 bytes)
  • Window ID (2 bytes)
  • X Position (2 bytes)
  • Y Position (2 bytes)
8
Object Cropping
  • Object Cropping Horizontal Position (2 bytes)
  • Object Cropping Vertical Position (2 bytes)
  • Object Cropping Width (2 bytes)
  • Object Cropping Height (2 bytes)
8


  


Button Overlap Group(s)
Only 256 BOGs are allowed.

NameDescriptionByte Size
Default Valid ButtonDefault Valid Number for the BOG; e.g. 0x00012
Number of ButtonsNumber of Buttons present in this BOG1


Button

Name Description Byte Size
Button ID Button ID; e.g. 0x0001 2
Value Button_numeric_select_value 2
a.act Auto_action_flag 1
X Button_horizontal_position 2
Y Button_vertical_position
upper Upper_button_id_ref
lower Lower_button_id_ref
left left_button_id_ref
right right_button_id_ref 2
n.start normal_start_object_id_ref 2
n.end normal_end_object_id_ref 2
n.repeat normal_repeat_object_flag 1
s.sound selected_state_sound_id_ref (from sound.bdmv) 1
s.start selected_start_object_id_ref 2
s.end selected_end_object_id_ref 2
s.repeat selected_repeat_object_id_ref 1
a.sound activated_state_sound_id_ref (from sound.bdmv) 1
a.start activated_start_object_id_ref 2
a.end activated_end_object_id_ref 2
Commands Navigation Commands for the button(s); same programming language for Movie Objects

Example:
  • 50 40 00 01 00 00 00 00 00 00 00 00
  • 50 40 00 01 00 00 00 01 00 00 00 08
  • 51 00 00 03 80 00 00 00 C0 00 00 01
  • 00 00 00 00 00 00 00 00 00 00 00 00
Varies

  


Pallete: Palette Definition Segment (PDS)
The "paint palette." It holds the color lookup table (CLUT), defining the specific RGB colors and transparency levels (alpha) for the graphics. Only 256 color entries per Palette is allowed

Name Description Byte Size
Header Header "IG" 0x4947 1
PTS Presentation Time Stamp 4
DTS Decoding Time Stamp 4
Segment Type: PDS  Segment Type: Palette Definition Segment   0x18 1
Segment Size
2
Palette ID Palette ID
Palette Version Number Palette Version Number
Palette Entry ID Palette Entry ID
Luminance (Y) - 1
Color Difference Red (Cr) - 1
Color Difference Blue (Cb) -
Opacity -
Transparency (Alpha) -

  

Object: Object Definition Segment (ODS)
The "image files." It contains the actual graphical assets—the raw, run-length-encoded (RLE) pixel data for buttons or icons.

Name Description Byte Size
Header Header "IG" 0x4947 2
PTS Presentation Time Stamp 4
DTS Decoding Time Stamp 4
Segment Type: ODS Object Definition Segment 1
Segment Size - 2
Object ID - 2
Sequence Flags - 2
RLE Data Size (uint32) - 3
Width - 2
Height - 2
RLE Data RLE data of the object Varies 
End of ODS End of ODS ; always 0x0000 2

  


End of Display Segment (END)
The "closing bracket." An empty marker segment that tells the decoder the current batch of graphics is completely finished downloading and is ready to be displayed.

Name Description Byte Size
Header Header "IG" 0x4947 2
PTS Presentation Time Stamp 4
DTS Decoding Time Stamp 4
Segment Type: END End of Display Segment 1
Segment Size Always zero 2

  




Footnotes

  • *It doesn't use a file extension in a traditional sense, but when demuxed, it uses the  .mnu (or .igs ) extension. BD editing programs use other image formats and converts them to IG. Scenarist uses the .ies file format for import, export, and editing (doesn't contain any magic numbers).

Sources

  • Scenarist BD Development manual, BD-ROM Whitepaper (2010), and original research.
  • Blu-ray Disc Demystified
  • BDedit 
  • Reserved engineered 2 IG streams from Made in Abyss and The Terminator (2006) and analyzed them using libbluray and IGtools (parser).


Author(s) : Æ Firestone - Last Updated: 5/27/2026

on Tuesday, November 4, 2025 | , | A comment?
0 responses to “Interactive Graphics”

Leave a Reply

Popular Pages

Cool Blue Outer Glow Pointer