00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #if !defined(_INDX_PARSE_H_)
00021 #define _INDX_PARSE_H_
00022
00023 #include <util/attributes.h>
00024
00025 #include <stdint.h>
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 typedef enum {
00032 indx_video_format_ignored,
00033 indx_video_480i,
00034 indx_video_576i,
00035 indx_video_480p,
00036 indx_video_1080i,
00037 indx_video_720p,
00038 indx_video_1080p,
00039 indx_video_576p,
00040 } indx_video_format;
00041
00042 typedef enum {
00043 indx_fps_reserved1,
00044 indx_fps_23_976,
00045 indx_fps_24,
00046 indx_fps_25,
00047 indx_fps_29_97,
00048 indx_fps_reserved2,
00049 indx_fps_50,
00050 indx_fps_59_94,
00051 } indx_frame_rate;
00052
00053 typedef enum {
00054 indx_object_type_hdmv = 1,
00055 indx_object_type_bdj = 2,
00056 } indx_object_type;
00057
00058 typedef enum {
00059 indx_hdmv_playback_type_movie = 0,
00060 indx_hdmv_playback_type_interactive = 1,
00061 } indx_hdmv_playback_type;
00062
00063 typedef enum {
00064 indx_bdj_playback_type_movie = 2,
00065 indx_bdj_playback_type_interactive = 3,
00066 } indx_bdj_playback_type;
00067
00068 typedef struct {
00069 uint8_t initial_output_mode_preference : 1;
00070 uint8_t content_exist_flag : 1;
00071 indx_video_format video_format;
00072 indx_frame_rate frame_rate;
00073 uint8_t user_data[32];
00074 } INDX_APP_INFO;
00075
00076 typedef struct {
00077 indx_bdj_playback_type playback_type;
00078 char name[6];
00079 } INDX_BDJ_OBJ;
00080
00081 typedef struct {
00082 indx_hdmv_playback_type playback_type;
00083 uint16_t id_ref;
00084 } INDX_HDMV_OBJ;
00085
00086 typedef struct {
00087 indx_object_type object_type;
00088
00089 INDX_BDJ_OBJ bdj;
00090 INDX_HDMV_OBJ hdmv;
00091
00092 } INDX_PLAY_ITEM;
00093
00094 typedef struct {
00095 indx_object_type object_type;
00096 uint8_t access_type : 2;
00097
00098 INDX_BDJ_OBJ bdj;
00099 INDX_HDMV_OBJ hdmv;
00100
00101 } INDX_TITLE;
00102
00103 typedef struct indx_root_s {
00104 INDX_APP_INFO app_info;
00105 INDX_PLAY_ITEM first_play;
00106 INDX_PLAY_ITEM top_menu;
00107
00108 uint16_t num_titles;
00109 INDX_TITLE *titles;
00110 } INDX_ROOT;
00111
00112
00113 BD_PRIVATE INDX_ROOT* indx_parse(const char *path);
00114 BD_PRIVATE void indx_free(INDX_ROOT **index);
00115
00116 #ifdef __cplusplus
00117 };
00118 #endif
00119
00120 #endif // _INDX_PARSE_H_
00121