What is the difference between the "default track" flag and the "forced" flags? And what about the settings "default", "yes" and "no" in the GUI?
There are two different flags called "default track" and "forced". What's up with them?
And especially — what's up with the values that I can set those flags to? What is a player supposed to do in each case?
There are several flags in Matroska with confusing or unclear names ("default", "forced", "enabled"). In addition, the GUI uses similar terms ("default") in drop-down boxes for other controls, not only these flags. This entry tries to explain what those flags mean to the Matroska, for playback, and also how the GUI and therefore mkvmerge decide how to set them depending on the values the controls are set to.
Leaving a flag (no matter which flag) on the "default" settings means the decision whether or not it should be set is up to mkvmerge. mkvmerge usually takes the information provided by the source container into account. For some flag types (especially the "default track" flag) there are other considerations as well.
Setting a flag to "yes" or "no" will force mkvmerge set respectively not set that flag, no matter what those other considerations would have done and no matter what the source container provided for that flag.
Meaning of the flags
The "default track" flag tells the player that this track is eligible (or suited) to be played by default, taking other user preferences such as the track language into account. For example, if you have a file with three audio tracks (track 2: Korean, director's comments; track 3: Japanese, main audio, track 4: Korean, main audio), you would set the "default track" flag to "no" for the track containing the Korean director's comments and to "yes" for the two audio tracks containing the main audio. The player would then use the user's preferences for the initial track selection. In the example above, if the user prefers Korean over Japanese, the player would select track 4 to be played initially.
Note: before v59, there was special handling for the "default track" flag: only one track of each type could have it set. However, this was changed in v59 to match the current Matroska specification. The old specification was something no existing player ever really implemented.
Now on to the "forced display" flag, in short "forced". If this is set to "on", this track must be played/shown no matter what the user selected for his preferences or what the player would normally chose to show/play. This is used seldom, e.g. only for a subtitle track that only contains the English translation whenever Legolas is talking Elbish.
"Forced" has nothing to do with "default track". If "forced" is set, the player must play that track no matter what "default track" is set to. In fact, normally a track that has "forced" set does not have "default track" set, though it is neither invalid nor undefined behavior.
Details on how mkvmerge decides the flags' values
Here's how mkvmerge decides the state of each flag in the destination file:
Is the flag set on the command line (no matter its value)? Set flag to the same value.
Does source container provide that flag (no matter its value)? Set flag to the same value.
Nothing else known? Do not write the element to the output file, which effectively means that the element's default value handling according to the Matroska specs takes effect. For players this means:
Is there a default value for the flag in the specs? If so, use that default value. For the "default track" flag there is a default value, and it is "1" (or "yes"), meaning a player must use that value now.
No default value in the specs? Use "0" (or "no"). This applies to e.g. the "hearing impaired" flag.
The GUI behaves slightly different as there are preferences that affect how flags are set when files are added to it.