libbluray | branch: master | hpi1 <[email protected]> | Sun Mar 23 13:40:14 2014 +0200| [daea81460846e3ef50fe489457d64622577005d9] | committer: hpi1
Added disc application info to BLURAY_DISC_INFO > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=daea81460846e3ef50fe489457d64622577005d9 --- ChangeLog | 2 ++ src/examples/bd_info.c | 27 +++++++++++++++++++++++++++ src/libbluray/bluray.c | 7 +++++++ src/libbluray/bluray.h | 8 ++++++++ 4 files changed, 44 insertions(+) diff --git a/ChangeLog b/ChangeLog index c1caa97..62113b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,5 @@ +- Added disc application info to BLURAY_DISC_INFO + 2013-12-21: Version 0.5.0 - Portability fixes. - Build system updates. diff --git a/src/examples/bd_info.c b/src/examples/bd_info.c index fbf8f31..cbd94d8 100644 --- a/src/examples/bd_info.c +++ b/src/examples/bd_info.c @@ -120,6 +120,31 @@ static void _print_meta(const META_DL *meta) } } +static void _print_app_info(const BLURAY_DISC_INFO *info) +{ + static const char video_format_str[16][8] = { + "ignored", "480i", "576i", "480p", "1080i", "720p", "1080p", "576p" + }; + + static const char frame_rate_str[16][16] = { + "ignored", + "23.976 Hz", + "24 Hz", + "25 Hz", + "29.97 Hz", + "reserved", + "50 Hz", + "59.94 Hz" + }; + + printf("Application info:\n"); + printf(" initial mode preference : %s\n", info->initial_output_mode_preference ? "3D" : "2D"); + printf(" 3D content exists : %s\n", info->content_exist_3D ? "Yes" : "No"); + printf(" video format : %s (0x%x)\n", video_format_str[info->video_format & 0xf], info->video_format); + printf(" frame rate : %s (0x%x)\n", frame_rate_str[info->frame_rate & 0xf], info->frame_rate); + printf(" provider data : \'%32s\'\n", info->provider_data); +} + int main(int argc, char *argv[]) { const char *disc_root = (argc > 1) ? argv[1] : NULL; @@ -192,6 +217,8 @@ int main(int argc, char *argv[]) } } + _print_app_info(info); + _print_meta(bd_get_meta(bd)); bd_close(bd); diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index 277b46c..a0974e1 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -953,6 +953,13 @@ static void _fill_disc_info(BLURAY *bd) bd->disc_info.bluray_detected = 1; + /* application info */ + bd->disc_info.video_format = bd->index->app_info.video_format; + bd->disc_info.frame_rate = bd->index->app_info.frame_rate; + bd->disc_info.content_exist_3D = bd->index->app_info.content_exist_flag; + bd->disc_info.initial_output_mode_preference = bd->index->app_info.initial_output_mode_preference; + memcpy(bd->disc_info.provider_data, bd->index->app_info.user_data, sizeof(bd->disc_info.provider_data)); + /* count titles */ for (ii = 0; ii < bd->index->num_titles; ii++) { diff --git a/src/libbluray/bluray.h b/src/libbluray/bluray.h index 10c8a09..4e8efc4 100644 --- a/src/libbluray/bluray.h +++ b/src/libbluray/bluray.h @@ -505,6 +505,14 @@ typedef struct { uint8_t bdplus_gen; /* BD+ content code relese date */ uint32_t bdplus_date; /* (year << 16) | (month << 8) | day */ + + /* disc application info */ + uint8_t video_format; /* bd_video_format_e */ + uint8_t frame_rate; /* bd_frame_rate_e */ + uint8_t content_exist_3D; + uint8_t initial_output_mode_preference; /* 0 - 2D, 1 - 3D */ + uint8_t provider_data[32]; + } BLURAY_DISC_INFO; /** _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
