summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2009-06-18 16:55:54 +0000
committerjstebbins <[email protected]>2009-06-18 16:55:54 +0000
commit60b9edb02b576146f9693a4e8a484635ce20f97b (patch)
treecf1af75efc541c0c72961c0fe5ea75062925e715
parent9d9384a99d60e238f0302e3252c27a2fa755bff7 (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.c27
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));
+ }
}
}