diff options
author | jstebbins <[email protected]> | 2009-06-18 16:55:54 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2009-06-18 16:55:54 +0000 |
commit | 60b9edb02b576146f9693a4e8a484635ce20f97b (patch) | |
tree | cf1af75efc541c0c72961c0fe5ea75062925e715 | |
parent | 9d9384a99d60e238f0302e3252c27a2fa755bff7 (diff) |
libhb: for mp4 soft subtitles, mark the default_track as enabled.
Due to quicktime quirkiness, if no track is marked as default, we
enable the first subtitle track.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2567 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | libhb/muxmp4.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libhb/muxmp4.c b/libhb/muxmp4.c index cdb9ce7ae..aaaa7d94b 100644 --- a/libhb/muxmp4.c +++ b/libhb/muxmp4.c @@ -77,6 +77,7 @@ static int MP4Init( hb_mux_object_t * m ) hb_audio_t * audio; hb_mux_data_t * mux_data; int i; + int subtitle_default; /* Flags for enabling/disabling tracks in an MP4. */ typedef enum { TRACK_DISABLED = 0x0, TRACK_ENABLED = 0x1, TRACK_IN_MOVIE = 0x2, TRACK_IN_PREVIEW = 0x4, TRACK_IN_POSTER = 0x8} track_header_flags; @@ -403,6 +404,23 @@ static int MP4Init( hb_mux_object_t * m ) } + // Quicktime requires that at least one subtitle is enabled, + // else it doesn't show any of the subtitles. + // So check to see if any of the subtitles are flagged to be + // the defualt. The default will the the enabled track, else + // enable the first track. + subtitle_default = 0; + for( i = 0; i < hb_list_count( job->list_subtitle ); i++ ) + { + hb_subtitle_t *subtitle = hb_list_item( job->list_subtitle, i ); + + if( subtitle && subtitle->format == TEXTSUB && + subtitle->config.dest == PASSTHRUSUB ) + { + if ( subtitle->config.default_track ) + subtitle_default = 1; + } + } for( i = 0; i < hb_list_count( job->list_subtitle ); i++ ) { hb_subtitle_t *subtitle = hb_list_item( job->list_subtitle, i ); @@ -468,6 +486,15 @@ static int MP4Init( hb_mux_object_t * m ) #endif MP4SetTrackBytesProperty(m->file, mux_data->track, "tkhd.matrix", nval, size); + if ( !subtitle_default || subtitle->config.default_track ) { + /* Enable the default subtitle track */ + MP4SetTrackIntegerProperty(m->file, mux_data->track, "tkhd.flags", (TRACK_ENABLED | TRACK_IN_MOVIE)); + subtitle_default = 1; + } + else + { + MP4SetTrackIntegerProperty(m->file, mux_data->track, "tkhd.flags", (TRACK_DISABLED | TRACK_IN_MOVIE)); + } } } |