Technical details of forced subtitles on Blu-ray discs
Posted: Wed Feb 18, 2026 12:17 am
Hi,
after wrangling a bunch of discs trying to get at only forced subtitles, I started suspecting that some common wisdom out there that is even encoded into various big tools like ffmpeg is actually completely incorrect. I'm speaking of the idea of individual forced subtitle pictures in a Blu-ray PGS track. I believe that this is not actually a real thing.
For a publicly available reference of the PGS format, the only thing I could find is this secondary source: https://blog.thescorpius.com/index.php/ ... le-format/ – the official spec is not available for free.
Looking at the ffmpeg source code (current snapshot: https://git.ffmpeg.org/gitweb/ffmpeg.gi ... dec.c#l551), its PGS decoder derives the notion of a "forced" subtitle picture from individual objects inside a PCS (presentation composition segment), which have a "composition_flag" (ffmpeg's internal name; the blog post I linked calls it "object cropped flag"). This doesn't seem to actually be meant to indicate that the picture should be forced; rather, it forces the picture to be cropped (an aspect of image composition, hence the name of the flag)! This is kind of clear from the context because a bit later in the same object structure, there are cropping positions (and the blog post indicates that these are used only if this flag is set). From both this and the fact that this flag is on the individual objects and not the whole display set, I think it's reasonable to assume that this flag was never meant to be interpreted as "force this to be shown", it's really just an exotic feature to help implement partial subtitle pictures that are revealed over time (or something).
This would also explain why DVDs (whose VobSub format does have a flag for forced subtitles) are usually authored with a full subtitle track that contains forced flags on foreign language dialog lines, whereas Blu-rays basically always have a separate subtitle track that covers only foreign language dialog lines, with the whole track tagged as forced somehow (I don't know enough about the Blu-ray format to know how exactly this works): presumably it's because this feature simply doesn't exist in PGS.
As a side note, to properly detect entire forced subtitle tracks, it would be great if someone could figure out how this is encoded in Blu-rays, though if they chose to force Blu-ray authors to do this inside the Java VM, I guess that would be a big ask. As an alternative it would be great if the physical size of each subtitle track could be probed on the initial scan before doing the full save, but I can see how this might be impossible without scanning the whole stream. Still, one can dream...
Thoughts?
I guess it's hard to know for certain without seeing the original spec. So, alternatively, if anyone has a disc that definitely contains individual forced subtitle pictures in a normal subtitle stream and they actually work like that when using a certified Blu-ray player, I'd love to hear about it! I have quite a few Blu-ray discs and I have yet to find any that use this flag.
after wrangling a bunch of discs trying to get at only forced subtitles, I started suspecting that some common wisdom out there that is even encoded into various big tools like ffmpeg is actually completely incorrect. I'm speaking of the idea of individual forced subtitle pictures in a Blu-ray PGS track. I believe that this is not actually a real thing.
For a publicly available reference of the PGS format, the only thing I could find is this secondary source: https://blog.thescorpius.com/index.php/ ... le-format/ – the official spec is not available for free.
Looking at the ffmpeg source code (current snapshot: https://git.ffmpeg.org/gitweb/ffmpeg.gi ... dec.c#l551), its PGS decoder derives the notion of a "forced" subtitle picture from individual objects inside a PCS (presentation composition segment), which have a "composition_flag" (ffmpeg's internal name; the blog post I linked calls it "object cropped flag"). This doesn't seem to actually be meant to indicate that the picture should be forced; rather, it forces the picture to be cropped (an aspect of image composition, hence the name of the flag)! This is kind of clear from the context because a bit later in the same object structure, there are cropping positions (and the blog post indicates that these are used only if this flag is set). From both this and the fact that this flag is on the individual objects and not the whole display set, I think it's reasonable to assume that this flag was never meant to be interpreted as "force this to be shown", it's really just an exotic feature to help implement partial subtitle pictures that are revealed over time (or something).
This would also explain why DVDs (whose VobSub format does have a flag for forced subtitles) are usually authored with a full subtitle track that contains forced flags on foreign language dialog lines, whereas Blu-rays basically always have a separate subtitle track that covers only foreign language dialog lines, with the whole track tagged as forced somehow (I don't know enough about the Blu-ray format to know how exactly this works): presumably it's because this feature simply doesn't exist in PGS.
As a side note, to properly detect entire forced subtitle tracks, it would be great if someone could figure out how this is encoded in Blu-rays, though if they chose to force Blu-ray authors to do this inside the Java VM, I guess that would be a big ask. As an alternative it would be great if the physical size of each subtitle track could be probed on the initial scan before doing the full save, but I can see how this might be impossible without scanning the whole stream. Still, one can dream...
Thoughts?
I guess it's hard to know for certain without seeing the original spec. So, alternatively, if anyone has a disc that definitely contains individual forced subtitle pictures in a normal subtitle stream and they actually work like that when using a certified Blu-ray player, I'd love to hear about it! I have quite a few Blu-ray discs and I have yet to find any that use this flag.