Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.


Go Back   Doom9's Forum > (HD) DVD, Blu-ray & (S)VCD > (HD) DVD & Blu-ray authoring

Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old 18th January 2016, 13:48   #11  |  Link
PgcEdit daemon
r0lZ's Avatar
Join Date: Jul 2003
Posts: 7,455
Originally Posted by GamBIT_Rus View Post
So, at first sight the problem may be solved by finding out which subs-stream is forced. That may be not easy if the forced subs are written 5 times a film, for ex. So, the better way could be if BD3DMK3D would not show "fake" channels that produce its crash. And if a BD does really contain any mark of "forced" or not stream is - to show it (for a coder to understand if a stream is full or forced only). If it is possible to make.
Re-read my previous post and you will understand that it is unfortunately impossible to do what you suggest. There is NO indication that a subtitle stream is globally forced. And there is NO safe way to know if a specific stream contains forced subtitles without demuxing it. Unfortunately, the commercial BDs are NOT made to facilitate their conversion to SBS or T&B by a program like BD3D2MK3D.

Depending of the authoring program, the forced subtitles can be authored in two totally different ways. They can be included within normal streams and individually flagged as forced within that stream (method 1), or two totally different streams can be added, one for the normal subtitles and one for the forced subtitles only (method 2).

In fact, the content of a stream can be one of the following:
  1. Only normal captions, nothing forced. (Can be present with methods 1 and 2).
  2. Normal captions including some forced captions (individually flagged as forced). It's the authoring method 1.
  3. Only forced captions, but without any indication that all captions are forced. It's the authoring method 2.
  4. Only forced captions, with all captions being flagged as forced. It's also authoring method 2, but somewhat better. Unfortunately, this case is very rare.
Since there is nothing that tells if a stream is globally forced or not, it is theoretically possible to discover only if some or all captions within the stream have been flagged as forced (cases 2 and 4). But that requires to analyse the subtitle stream. And analysing the subtitle stream requires to demux it. And demuxing a stream from a long movie takes age! Do you really want to wait 20 minutes or so just to be able to see tab 2 with (more or less) correct information about the forced subtitles? I don't think so. And anyway, case 3 will not be discovered, and therefore it is impossible to display that information without big risks of errors. That are the facts. And we must live with them.

That's why BD3D2MK3D offers both possibilities to define yourself what you want to do.
  1. If you're interested in all captions (case 1), you should just select the corresponding stream.
  2. If you're interested in the forced captions from a stream containing also non-forced captions (case 2), you should select the "forced captions only" variant (what you call "fake" stream).
  3. If the forced captions are in a specific stream containing ONLY forced captions (cases 3 and 4), you should select that stream AND tick the "Forced" flag (to tell BD3D2MK3D that that stream is globally forced).
  4. Same as point 3. But in addition, if all captions are forced in a stream and you have NOT ticked the Forced flag, BD3D2MK3D is smart enough to correct automatically your error and set the global forced flag after having demuxed and analysed the stream. Finally, the result is strictly identical than case 3.
As you can see, all cases are necessary. I can't simply remove the "forced captions only" fake stream, as the users will have no way to mux or hardcode a stream with the forced captions any more if the BD has been authored with method 1.

Your findings are exactly what I have explained in my previous post. Except that the "forced captions only" streams are not "fake". They correspond to the option "export only forced subtitles" of BDSup2Sub. And if there are no forced subtitles in the stream, contrary to what you wrote, it DOESN'T CRASH. It just ignores the stream and issues a warning. IMO, it's the most reasonable solution.

The "forced" checkbox, as explained above, has its utility too. When a BD has been authored with the second method (like yours), the "forced captions only" streams contain no captions and it is useless to select them (but it's not an error). But if you know (like in your example) that the second Russian subtitle contains the forced captions, you should tick the "forced" checkbox. You will see that the "forced captions only" stream becomes unavailable, because it doesn't make sense to extract the forced captions from a stream containing only forced captions. And, more importantly, when BD3D2MK3D build the MUX_OPTIONS files, it knows that that stream is globally forced, and that it must set the forced flag for the MKV stream. The players will be able to display the language and type of stream correctly. It's not possible if you don't tell BD3D2MK3D what are the forced streams and what are the normal ones. (Of course, if you just want to hardcode the forced subtitles, it is not necessary to tick the "Forced" box, since the subtitles are never included as a stream in the final MKV. But that doesn't hurt to do it.)

I have also explained in my previous post that it is easy to find what subtitle stream contains what with a good software player. It's also why there is a "Preview MPLS" button in tab 1. I have installed PotPlayer on my PC, and since it is associated with the MPLS files, when I click that button, the movie is played automatically (in 2D). A simple look at the Subtitle menu of PotPlayer can tell you what stream contains what, and if a specific stream contains also some forced captions.

In conclusion, that may seem complex, but it's because the authoring of the BDs is complex. There is no indication in the MPLS file that tells if a stream is forced or not, and if there are forced captions among the normal captions in a specific stream. Even when the streams are demuxed, it is still not possible to know for sure if a specific stream is globally forced or not. Only an human can do that without problem. So, BD3D2MK3D must handle all possibilities, and it's the responsibility of the user to select the right stream and options.

However, I must agree that tab 2 may be currently somewhat confusing. Perhaps I could add a button to toggle between method 1 (with the "forced subtitles only" streams) and method 2 (only the main streams, with the "Forced" box to declare any stream as globally forced). And, if BD3D2MK3D detects that there are several streams in the same language, it can perhaps assume by default the method 2. However, it's somewhat dangerous, because several streams in the same language can also be present with method 1 (for example the main Russian stream with some forced subtitles, and a stream with the director comments). In that case, BD3D2MK3D will assume wrongly method 2, and it will be the responsibility of the user to change the display mode to method 1. Is it really simpler to understand? I don't think so, but if several users prefer that method, I can implement it. Just let me know.

Anyway, I have never seen a BD with both methods 1 and 2. So, if the user selects the "Forced" option for a specific stream, it is perhaps possible to disable all "forced captions only" fake streams at the same time, instead of only for the current stream. I think I'll do that right now...
PgcEdit homepage (hosted by VideoHelp)
BD3D2MK3D A tool to convert 3D blu-rays to SBS, T&B or FS MKV

Last edited by r0lZ; 18th January 2016 at 14:08.
r0lZ is offline  

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +1. The time now is 01:21.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.