{"id":536,"date":"2017-07-15T16:21:22","date_gmt":"2017-07-15T20:21:22","guid":{"rendered":"http:\/\/blog.thescorpius.com\/?p=536"},"modified":"2019-10-28T13:50:43","modified_gmt":"2019-10-28T17:50:43","slug":"presentation-graphic-stream-sup-files-bluray-subtitle-format","status":"publish","type":"post","link":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/","title":{"rendered":"Presentation Graphic Stream (SUP files) BluRay Subtitle Format"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-621\" src=\"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg?resize=648%2C364\" alt=\"\" width=\"648\" height=\"364\" srcset=\"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg?w=870&amp;ssl=1 870w, https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/a><\/p>\n<p>The Presentation Graphic Stream (PGS) specification is defined in the <a href=\"https:\/\/encrypted.google.com\/patents\/US20090185789?cl=da\">US Patent US 20090185789 A1<\/a>. This graphic stream definition is used to show subtitles in BluRay movies.\u00a0When a subtitle stream in\u00a0PGS format is ripped from a BluRay disc is usually saved in a file with the SUP extension (Subtitle Presentation).<\/p>\n<p><!--more--><\/p>\n<p>A Presentation Graphic Stream (PGS) is made of several functional segments one after another. \u00a0These segments\u00a0have the following header:<\/p>\n\n<table id=\"tablepress-1\" class=\"tablepress tablepress-id-1 pgs-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name<\/th><th class=\"column-2\">Size in bytes<\/th><th class=\"column-3\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Magic Number<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">\"PG\" (0x5047)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">PTS<\/td><td class=\"column-2\">4<\/td><td class=\"column-3\">Presentation Timestamp<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">DTS<\/td><td class=\"column-2\">4<\/td><td class=\"column-3\">Decoding Timestamp<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Segment Type<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">0x14: PDS<br \/>\n0x15: ODS<br \/>\n0x16: PCS<br \/>\n0x17: WDS<br \/>\n0x80: END<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Segment Size<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Size of the segment<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-1 from cache -->\n<p>The DTS should indicate a time when the decoding of the sub picture starts, and the PTS indicates a time when the decoding ends and the\u00a0sub picture is shown on the screen. \u00a0DTS is always zero\u00a0in practice (at least from what I have found so far), so you can freely ignore this value. These timestamps have an accuracy of 90 kHz. This means that for example, if you have a PTS value of 0x0004C11C and you want to know the milliseconds from the start of the movie when the sub picture is shown, you have to divide the decimal value (311,580) by 90, and the result is the value you are looking for: 3,462 milliseconds (or 3.462 seconds).<\/p>\n<p>As you can see, there are five types of segments used in PGS:<\/p>\n<ul>\n<li>Presentation Composition Segment (PCS)<\/li>\n<li>Window Definition Segment (WDS)<\/li>\n<li>Palette Definition Segment (PDS)<\/li>\n<li>Object Definition Segment (ODS)<\/li>\n<li>End of Display Set Segment (END)<\/li>\n<\/ul>\n<p>The Presentation Composition Segment (PCS) is also called the\u00a0<em>Control Segment<\/em>\u00a0because it indicates a new Display Set (DS) definition, composed by definition segments (WDS, PDS, ODS) until an END segment is found.<\/p>\n<p>A Display Set (DS) is a sub picture definition that might look like this:<\/p>\n<table  class=\" table table-hover\" style=\"border: 1px solid #cccccc; width: 300px;\">\n<tbody>\n<tr>\n<td style=\"padding: 0px; text-align: center; border-right: 1px solid #cccccc;\">PCS<\/td>\n<td style=\"padding: 0px; text-align: center; border-right: 1px solid #cccccc;\">WDS<\/td>\n<td style=\"padding: 0px; text-align: center; border-right: 1px solid #cccccc;\">PDS<\/td>\n<td style=\"padding: 0px; text-align: center; border-right: 1px solid #cccccc;\">ODS<\/td>\n<td style=\"padding: 0px; text-align: center;\">END<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In a DS there can be several\u00a0windows, palette and object definitions, and the composition objects define what is going to be shown on the screen.<\/p>\n<h3>Presentation Composition Segment<\/h3>\n<p>The Presentation Composition Segment is used for composing a sub picture. It is made of the following fields:<\/p>\n\n<table id=\"tablepress-2\" class=\"tablepress tablepress-id-2 pgs-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name<\/th><th class=\"column-2\">Size in bytes<\/th><th class=\"column-3\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Width<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Video width in pixels (ex. 0x780 = 1920)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Height<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Video height in pixels (ex. 0x438 = 1080)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Frame Rate<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Always 0x10. Can be ignored.<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Composition Number<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Number of this specific composition. It is incremented by one every time a graphics update occurs.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Composition State<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Type of this composition. Allowed values are:<br \/>\n0x00: Normal<br \/>\n0x40: Acquisition Point<br \/>\n0x80: Epoch Start<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Palette Update Flag<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Indicates if this PCS describes a Palette only Display Update.  Allowed values are:<br \/>\n0x00: False<br \/>\n0x80: True<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Palette ID<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">ID of the palette to be used in the Palette only Display Update<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">Number of Composition Objects<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Number of composition objects defined in this segment<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-2 from cache -->\n<p>The composition state can be one of three values:<\/p>\n<ul>\n<li><strong>Epoch Start<\/strong>: This defines a <em>new display.<\/em> The Epoch Start contains all functional segments needed to display a new composition on the screen.<\/li>\n<li><strong>Acquisition Point<\/strong>: This defines a\u00a0<em>display refresh<\/em>. This is used to compose in the middle of the Epoch. It includes functional segments with new objects to be used in a new composition, replacing old objects with the same Object ID.<\/li>\n<li><strong>Normal<\/strong>: This defines a\u00a0<em>display update<\/em>, and contains only functional segments with elements that are different from the preceding composition. It&#8217;s mostly used to stop displaying objects on the screen by defining a composition with no composition objects (a value of zero in the Number of Composition Objects flag) but also used to define a new composition with new objects and objects defined since the Epoch Start.<\/li>\n<\/ul>\n<p>The composition objects, also known as window information objects, define the position on the screen of every image that will be shown. They have the following structure:<\/p>\n\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3 pgs-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name<\/th><th class=\"column-2\">Size in bytes<\/th><th class=\"column-3\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Object ID<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">ID of the ODS segment that defines the image to be shown<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Window ID<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Id of the WDS segment to which the image is allocated in the PCS. Up to two images may be assigned to one window<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Object Cropped Flag<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">0x40: Force display of the cropped image object<br \/>\n0x00: Off<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Object Horizontal Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">X offset from the top left pixel of the image  on the screen<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Object Vertical Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Y offset from the top left pixel of the image  on the screen<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Object Cropping Horizontal Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">X offset from the top left pixel of the cropped object in the screen. Only used when the Object Cropped Flag is set to 0x40.<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Object Cropping Vertical Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Y offset from the top left pixel of the cropped object in the screen. Only used when the Object Cropped Flag is set to 0x40.<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">Object Cropping Width<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Width of the cropped object in the screen. Only used when the Object Cropped Flag is set to 0x40.<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">Object Cropping Height Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Heightl of the cropped object in the screen. Only used when the Object Cropped Flag is set to 0x40.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-3 from cache -->\n<p>When the Object Cropped Flag is set to true (or actually 0x40), then the sub picture is cropped to show only a portion of it. This is used\u00a0for example when you don&#8217;t want to show the whole subtitle at first, but just a few words first, and then the rest.<\/p>\n<h3>Window Definition Segment<\/h3>\n<p>This segment is used to define the rectangular area on the screen\u00a0where the sub picture will be shown. This rectangular area is called a\u00a0<em>Window<\/em>. This segment can define several windows, and all the fields from Window ID up to Window Height will repeat each other in the segment defining each window.\u00a0 You can see it more clearly in the example at the end of this page.\u00a0 Its structure is as follows:<\/p>\n\n<table id=\"tablepress-4\" class=\"tablepress tablepress-id-4 pgs-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name<\/th><th class=\"column-2\">Size in bytes<\/th><th class=\"column-3\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Number of Windows<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Number of windows defined in this segment<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Window ID<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">ID of this window<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Window Horizontal Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">X offset from the top left pixel of the window in the screen.<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Window Vertical Position<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Y offset from the top left pixel of the window in the screen.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Window Width<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Width of the window<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Window Height<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Height of the window<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-4 from cache -->\n<h3>Palette Definition Segment<\/h3>\n<p>This segment is used to define a palette for color conversion. It&#8217;s composed of the following fields:<\/p>\n\n<table id=\"tablepress-5\" class=\"tablepress tablepress-id-5 pgs-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name<\/th><th class=\"column-2\">Size in bytes<\/th><th class=\"column-3\">Definition<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Palette ID<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">ID of the palette<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Palette Version Number<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Version of this palette within the Epoch<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Palette Entry ID<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Entry number of the palette<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Luminance (Y)<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Luminance (Y value)<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Color Difference Red (Cr)<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Color Difference Red (Cr value)<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Color Difference Blue (Cb)<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Color Difference Blue (Cb value)<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Transparency (Alpha)<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Transparency (Alpha value)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-5 from cache -->\n<p>There can be several palette entries, with different palette IDs so the last five fields can repeat.<\/p>\n<h3>Object Definition Segment<\/h3>\n<p>This segment defines the graphics object.\u00a0These are images with rendered text on\u00a0a transparent background. Its structure is explained in the following table:<\/p>\n\n<table id=\"tablepress-6\" class=\"tablepress tablepress-id-6 pgs-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Name<\/th><th class=\"column-2\">Size in bytes<\/th><th class=\"column-3\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Object ID<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">ID of this object<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Object Version Number<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">Version of this object<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Last in Sequence Flag<\/td><td class=\"column-2\">1<\/td><td class=\"column-3\">If the image is split into a series of consecutive fragments, the last fragment has this flag set. Possible values:<br \/>\n0x40: Last in sequence<br \/>\n0x80: First in sequence<br \/>\n0xC0: First and last in sequence (0x40 | 0x80)<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Object Data Length<\/td><td class=\"column-2\">3<\/td><td class=\"column-3\">The length of the Run-length Encoding (RLE) data buffer with the compressed image data.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Width<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Width of the image<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Height<\/td><td class=\"column-2\">2<\/td><td class=\"column-3\">Height of the image<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Object Data<\/td><td class=\"column-2\">variable<\/td><td class=\"column-3\">This is the image data compressed using Run-length Encoding (RLE).  The size of the data is defined in the Object Data Length field.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-6 from cache -->\n<p>The Run-length encoding method is defined in the <a href=\"https:\/\/www.google.com\/patents\/US7912305\">US 7912305 B1 patent<\/a>. Here&#8217;s a quick and dirty definition to\u00a0this method:<\/p>\n\n<table id=\"tablepress-7\" class=\"tablepress tablepress-id-7 rle-table\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Code<\/th><th class=\"column-2\">Meaning<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">CCCCCCCC<\/td><td class=\"column-2\">One pixel in color C<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">00000000 00LLLLLL<\/td><td class=\"column-2\">L pixels in color 0 (L between 1 and 63)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">00000000 01LLLLLL LLLLLLLL<\/td><td class=\"column-2\">L pixels in color 0 (L between 64 and 16383)<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">00000000 10LLLLLL CCCCCCCC<\/td><td class=\"column-2\">L pixels in color C (L between 3 and 63)<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">00000000 11LLLLLL LLLLLLLL CCCCCCCC<\/td><td class=\"column-2\">L pixels in color C (L between 64 and 16383)<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">00000000 00000000<\/td><td class=\"column-2\">End of line<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-7 from cache -->\n<h3>End Segment<\/h3>\n<p>The\u00a0end segment\u00a0always has a\u00a0segment size of zero and indicates the end of a Display Set (DS) definition. It appears immediately after the last ODS in one DS.<\/p>\n<h2>Example<\/h2>\n<p>Let&#8217;s see a real world example. Take a look at this section of a SUP file:<\/p>\n<pre class=\"lang:terminal decode:true\">00348a10  50 47 05 88 fd ec 00 00  00 00 16 00 13 07 80 04  |PG..............|\r\n00348a20  38 10 01 ae 80 00 00 01  00 00 00 00 03 05 00 6c  |8..............l|\r\n00348a30  50 47 05 88 fd ec 00 00  00 00 17 00 13 02 00 03  |PG..............|\r\n00348a40  05 00 6c 01 79 00 2b 01  02 e3 03 a0 01 d8 00 2b  |..l.y.+........+|\r\n00348a50  50 47 05 88 fd ec 00 00  00 00 14 00 9d 00 00 00  |PG..............|\r\n00348a60  10 80 80 00 01 10 80 80  ff 02 1f 80 80 ff 03 2d  |...............-|\r\n00348a70  80 80 ff 04 3c 80 80 ff  05 4a 80 80 ff 06 59 80  |....&lt;....J....Y.|\r\n00348a80  80 ff 07 68 80 80 ff 08  76 80 80 ff 09 85 80 80  |...h....v.......|\r\n00348a90  ff 0a 93 80 80 ff 0b a2  80 80 ff 0c b1 80 80 ff  |................|\r\n00348aa0  0d bf 80 80 ff 0e ce 80  80 ff 0f dc 80 80 ff 10  |................|\r\n00348ab0  eb 80 80 ff 11 10 80 80  11 12 10 80 80 22 13 10  |.............\"..|\r\n00348ac0  80 80 33 14 10 80 80 66  15 10 80 80 99 16 10 80  |..3....f........|\r\n00348ad0  80 aa 17 10 80 80 bb 18  10 80 80 55 19 10 80 80  |...........U....|\r\n00348ae0  77 1a 10 80 80 cc 1b 10  80 80 88 1c 10 80 80 44  |w..............D|\r\n00348af0  1d 10 80 80 dd 1e 10 80  80 ee 50 47 05 88 fd ec  |..........PG....|\r\n00348b00  00 00 00 00 15 21 c2 00  00 00 c0 00 21 bb 01 79  |.....!......!..y|\r\n00348b10  00 2b 00 01 11 00 86 12  00 06 00 87 12 00 12 11  |.+..............|\r\n(...)\r\n0034acc0  0f 11 00 86 12 00 0e 00  00 50 47 05 88 fd ec 00  |.........PG.....|\r\n0034acd0  00 00 00 80 00 00                                 |......<\/pre>\n<p>This is a complete Display Set. These are the segments:<\/p>\n<ul>\n<li><strong>First Segment: PCS, offset 0x00348a10<\/strong>\n<ul>\n<li>Magic Number: &#8220;PG&#8221; (0x5047)<\/li>\n<li>Presentation Time: 17:11.822 (92,863,980 \/ 90)<\/li>\n<li>Decoding Time: 0<\/li>\n<li>Segment Type:\u00a0<strong>PCS<\/strong> (0x16)<\/li>\n<li>Segment Size: 0x13 bytes<\/li>\n<li>Width: 1920 (0x780)<\/li>\n<li>Height: 1080 (0x438)<\/li>\n<li>Frame rate: 0x10<\/li>\n<li>Composition Number: 430 (0x1ae)<\/li>\n<li>Composition State: Epoch Start (0x80)<\/li>\n<li>Palette Update Flag: false<\/li>\n<li>Palette ID: 0<\/li>\n<li>Number of Composition Objects: 1<\/li>\n<li>Object ID: 0<\/li>\n<li>Window ID: 0<\/li>\n<li>Object Cropped Flag: false<\/li>\n<li>Object Horizontal Position: 773 (0x305)<\/li>\n<li>Object Vertical Position: 108 (0x06c)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Second Segment: WDS (0x17), offset 0x00348a30<\/strong>\n<ul>\n<li>Magic Number: &#8220;PG&#8221; (0x5047)<\/li>\n<li>Presentation Time: 17:11.822 (92,863,980 \/ 90)<\/li>\n<li>Decoding Time: 0<\/li>\n<li>Segment Type: <b>WDS<\/b> (0x17)<\/li>\n<li>Segment Size: 0x13 bytes<\/li>\n<li>Number of Windows: 2<\/li>\n<li>Window ID: 0<\/li>\n<li>Window Horizontal Position: 773 (0x305)<\/li>\n<li>Window Vertical Position: 108 (0x06c)<\/li>\n<li>Window Width: 377 (0x179)<\/li>\n<li>Window Height 43 (0x02b)<\/li>\n<li>Window ID: 1<\/li>\n<li>Window Horizontal Position: 739 (0x2e3)<\/li>\n<li>Window Vertical Position: 928 (0x3a0)<\/li>\n<li>Window Width: 472 (0x1d8)<\/li>\n<li>Window Height 43 (0x02b)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Third Segment: PDS (0x14), offset 0x00348a50<\/strong>\n<ul>\n<li>Magic Number: &#8220;PG&#8221; (0x5047)<\/li>\n<li>Presentation Time: 17:11.822 (92,863,980 \/ 90)<\/li>\n<li>Decoding Time: 0<\/li>\n<li>Segment Type:\u00a0<b>PDS<\/b>\u00a0(0x14)<\/li>\n<li>Segment Size: 0x9d bytes<\/li>\n<li>Palette ID: 0<\/li>\n<li>Palette Version: 0<\/li>\n<li>31 palette entries<\/li>\n<\/ul>\n<\/li>\n<li><strong>Fourth Segment: ODS (0x15), offset 0x00348afa<\/strong>\n<ul>\n<li>Magic Number: &#8220;PG&#8221; (0x5047)<\/li>\n<li>Presentation Time: 17:11.822 (92,863,980 \/ 90)<\/li>\n<li>Decoding Time: 0<\/li>\n<li>Segment Type:\u00a0<b>PDS<\/b>\u00a0(0x15)<\/li>\n<li>Segment Size: 0x21c2 bytes<\/li>\n<li>Object ID: 0<\/li>\n<li>Object Version Number: 0<\/li>\n<li>Last in sequence flag:\u00a0First and last sequence (0xC0)<\/li>\n<li>Object Data Length: 0x0021bb bytes<\/li>\n<li>Width: 377 (0x179)<\/li>\n<li>Height: 43 (0x02b)<\/li>\n<\/ul>\n<\/li>\n<li><strong>Fifth Segment: END (0x80), offset 0x0034acc9<\/strong>\n<ul>\n<li>Magic Number: &#8220;PG&#8221; (0x5047)<\/li>\n<li>Presentation Time: 17:11.822 (92,863,980 \/ 90)<\/li>\n<li>Decoding Time: 0<\/li>\n<li>Segment Type:\u00a0<b>END<\/b>\u00a0(0x80)<\/li>\n<li>Segment Size: 0 bytes<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>This Display Set will show an image of 377&#215;43 in size, starting at 17 minutes, 11.822 seconds on the screen at offset 773&#215;108.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Presentation Graphic Stream (PGS) specification is defined in the US Patent US 20090185789 A1. This graphic stream definition is used to show subtitles in BluRay movies.\u00a0When a subtitle stream in\u00a0PGS format is ripped from a BluRay disc is usually saved in a file with the SUP extension (Subtitle Presentation).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-536","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Presentation Graphic Stream (SUP files) BluRay Subtitle Format - Scorpius<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Presentation Graphic Stream (SUP files) BluRay Subtitle Format - Scorpius\" \/>\n<meta property=\"og:description\" content=\"The Presentation Graphic Stream (PGS) specification is defined in the US Patent US 20090185789 A1. This graphic stream definition is used to show subtitles in BluRay movies.\u00a0When a subtitle stream in\u00a0PGS format is ripped from a BluRay disc is usually saved in a file with the SUP extension (Subtitle Presentation).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/\" \/>\n<meta property=\"og:site_name\" content=\"Scorpius\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-15T20:21:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-28T17:50:43+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg\" \/>\n<meta name=\"author\" content=\"TheScorpius666\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TheScorpius666\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/\"},\"author\":{\"name\":\"TheScorpius666\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/86f96e20f253dad7eb38d3c721a950de\"},\"headline\":\"Presentation Graphic Stream (SUP files) BluRay Subtitle Format\",\"datePublished\":\"2017-07-15T20:21:22+00:00\",\"dateModified\":\"2019-10-28T17:50:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/\"},\"wordCount\":1036,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/7b346c3545c12a84ffdf2a30dfc69501\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/BluRayLogo.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/\",\"url\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/\",\"name\":\"Presentation Graphic Stream (SUP files) BluRay Subtitle Format - Scorpius\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/BluRayLogo.jpg\",\"datePublished\":\"2017-07-15T20:21:22+00:00\",\"dateModified\":\"2019-10-28T17:50:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/BluRayLogo.jpg?fit=870%2C489&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.thescorpius.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/BluRayLogo.jpg?fit=870%2C489&ssl=1\",\"width\":870,\"height\":489},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/2017\\\/07\\\/15\\\/presentation-graphic-stream-sup-files-bluray-subtitle-format\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.thescorpius.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Presentation Graphic Stream (SUP files) BluRay Subtitle Format\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.thescorpius.com\\\/\",\"name\":\"Scorpius\",\"description\":\"Random technology bits\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/7b346c3545c12a84ffdf2a30dfc69501\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.thescorpius.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/7b346c3545c12a84ffdf2a30dfc69501\",\"name\":\"Scorpius\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\",\"caption\":\"Scorpius\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.thescorpius.com\\\/#\\\/schema\\\/person\\\/86f96e20f253dad7eb38d3c721a950de\",\"name\":\"TheScorpius666\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g\",\"caption\":\"TheScorpius666\"},\"url\":\"https:\\\/\\\/blog.thescorpius.com\\\/index.php\\\/author\\\/thescorpius666\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Presentation Graphic Stream (SUP files) BluRay Subtitle Format - Scorpius","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/","og_locale":"en_US","og_type":"article","og_title":"Presentation Graphic Stream (SUP files) BluRay Subtitle Format - Scorpius","og_description":"The Presentation Graphic Stream (PGS) specification is defined in the US Patent US 20090185789 A1. This graphic stream definition is used to show subtitles in BluRay movies.\u00a0When a subtitle stream in\u00a0PGS format is ripped from a BluRay disc is usually saved in a file with the SUP extension (Subtitle Presentation).","og_url":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/","og_site_name":"Scorpius","article_published_time":"2017-07-15T20:21:22+00:00","article_modified_time":"2019-10-28T17:50:43+00:00","og_image":[{"url":"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg","type":"","width":"","height":""}],"author":"TheScorpius666","twitter_card":"summary_large_image","twitter_misc":{"Written by":"TheScorpius666","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#article","isPartOf":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/"},"author":{"name":"TheScorpius666","@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/86f96e20f253dad7eb38d3c721a950de"},"headline":"Presentation Graphic Stream (SUP files) BluRay Subtitle Format","datePublished":"2017-07-15T20:21:22+00:00","dateModified":"2019-10-28T17:50:43+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/"},"wordCount":1036,"commentCount":6,"publisher":{"@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/7b346c3545c12a84ffdf2a30dfc69501"},"image":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/","url":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/","name":"Presentation Graphic Stream (SUP files) BluRay Subtitle Format - Scorpius","isPartOf":{"@id":"https:\/\/blog.thescorpius.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#primaryimage"},"image":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg","datePublished":"2017-07-15T20:21:22+00:00","dateModified":"2019-10-28T17:50:43+00:00","breadcrumb":{"@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#primaryimage","url":"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg?fit=870%2C489&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.thescorpius.com\/wp-content\/uploads\/2017\/07\/BluRayLogo.jpg?fit=870%2C489&ssl=1","width":870,"height":489},{"@type":"BreadcrumbList","@id":"https:\/\/blog.thescorpius.com\/index.php\/2017\/07\/15\/presentation-graphic-stream-sup-files-bluray-subtitle-format\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.thescorpius.com\/"},{"@type":"ListItem","position":2,"name":"Presentation Graphic Stream (SUP files) BluRay Subtitle Format"}]},{"@type":"WebSite","@id":"https:\/\/blog.thescorpius.com\/#website","url":"https:\/\/blog.thescorpius.com\/","name":"Scorpius","description":"Random technology bits","publisher":{"@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/7b346c3545c12a84ffdf2a30dfc69501"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.thescorpius.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/7b346c3545c12a84ffdf2a30dfc69501","name":"Scorpius","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g","caption":"Scorpius"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ef13012e4d941d778c3d150fe29a546747df377f4e03576633b5d49b7456a78e?s=96&d=mm&r=g"}},{"@type":"Person","@id":"https:\/\/blog.thescorpius.com\/#\/schema\/person\/86f96e20f253dad7eb38d3c721a950de","name":"TheScorpius666","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3e54ca7ca513e321c05a53d8ab8e2cfa46535f8b6da290e2c171b6dce40ba007?s=96&d=mm&r=g","caption":"TheScorpius666"},"url":"https:\/\/blog.thescorpius.com\/index.php\/author\/thescorpius666\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6SNpd-8E","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts\/536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/comments?post=536"}],"version-history":[{"count":47,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts\/536\/revisions"}],"predecessor-version":[{"id":626,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/posts\/536\/revisions\/626"}],"wp:attachment":[{"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/media?parent=536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/categories?post=536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.thescorpius.com\/index.php\/wp-json\/wp\/v2\/tags?post=536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}