libbluray | branch: master | hpi1 <[email protected]> | Fri Mar 4 11:48:52 2016 +0200| [6953f8f5dab8a130d8676e08e7506cc1b1959fa4] | committer: hpi1
main title selection: prefer playlists with HD audio > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=6953f8f5dab8a130d8676e08e7506cc1b1959fa4 --- src/libbluray/bdnav/navigation.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/libbluray/bdnav/navigation.c b/src/libbluray/bdnav/navigation.c index 6840188..d8672b5 100644 --- a/src/libbluray/bdnav/navigation.c +++ b/src/libbluray/bdnav/navigation.c @@ -224,6 +224,17 @@ static void _video_props(MPLS_STN *s, int *full_hd, int *mpeg12) } } +static void _audio_props(MPLS_STN *s, int *hd_audio) +{ + unsigned ii; + *hd_audio = 0; + for (ii = 0; ii < s->num_audio; ii++) { + if (s->audio[ii].format == BD_STREAM_TYPE_AUDIO_LPCM || s->audio[ii].format >= BD_STREAM_TYPE_AUDIO_TRUHD) { + *hd_audio = 1; + } + } +} + static int _cmp_video_props(const MPLS_PL *p1, const MPLS_PL *p2) { MPLS_STN *s1 = &p1->play_item[0].stn; @@ -241,6 +252,19 @@ static int _cmp_video_props(const MPLS_PL *p1, const MPLS_PL *p2) return mp12_2 - mp12_1; } +static int _cmp_audio_props(const MPLS_PL *p1, const MPLS_PL *p2) +{ + MPLS_STN *s1 = &p1->play_item[0].stn; + MPLS_STN *s2 = &p2->play_item[0].stn; + int hda1, hda2; + + _audio_props(s1, &hda1); + _audio_props(s2, &hda2); + + /* prefer HD audio formats */ + return hda2 - hda1; +} + static int _pl_guess_main_title(MPLS_PL *p1, MPLS_PL *p2) { uint32_t d1 = _pl_duration(p1); @@ -265,6 +289,13 @@ static int _pl_guess_main_title(MPLS_PL *p1, MPLS_PL *p2) BD_DEBUG(DBG_MAIN_PL, "main title: video properties difference %d\n", vid_diff); return vid_diff; } + + /* compare audio: prefer HD audio */ + int aud_diff = _cmp_audio_props(p1, p2); + if (aud_diff) { + BD_DEBUG(DBG_MAIN_PL, "main title: audio properties difference %d\n", aud_diff); + return aud_diff; + } } /* compare playlist duration, select longer playlist */ _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
