libbluray | branch: master | hpi1 <[email protected]> | Fri Nov 28 14:56:03 2014 +0200| [1137543bd42e262b52c476ebfb7f6ea35e5ef900] | committer: hpi1
Split mobj_parse.h > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=1137543bd42e262b52c476ebfb7f6ea35e5ef900 --- src/Makefile.am | 1 + src/examples/mobj_dump.c | 1 + src/libbluray/decoders/ig.h | 4 +-- src/libbluray/decoders/ig_decode.c | 1 + src/libbluray/hdmv/hdmv_vm.c | 1 + src/libbluray/hdmv/mobj_data.h | 62 ++++++++++++++++++++++++++++++++++++ src/libbluray/hdmv/mobj_parse.c | 2 ++ src/libbluray/hdmv/mobj_parse.h | 47 ++++----------------------- src/libbluray/hdmv/mobj_print.c | 5 +-- 9 files changed, 79 insertions(+), 45 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index e48eca1..fd18f07 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -67,6 +67,7 @@ libbluray_la_SOURCES = \ libbluray/hdmv/hdmv_insn.h \ libbluray/hdmv/hdmv_vm.h \ libbluray/hdmv/hdmv_vm.c \ + libbluray/hdmv/mobj_data.h \ libbluray/hdmv/mobj_parse.h \ libbluray/hdmv/mobj_parse.c \ libbluray/hdmv/mobj_print.c \ diff --git a/src/examples/mobj_dump.c b/src/examples/mobj_dump.c index 8436c2f..38837d5 100644 --- a/src/examples/mobj_dump.c +++ b/src/examples/mobj_dump.c @@ -18,6 +18,7 @@ */ #include "libbluray/hdmv/mobj_parse.h" +#include "libbluray/hdmv/mobj_data.h" #include <stdio.h> #include <string.h> diff --git a/src/libbluray/decoders/ig.h b/src/libbluray/decoders/ig.h index d2d2ffc..789e59f 100644 --- a/src/libbluray/decoders/ig.h +++ b/src/libbluray/decoders/ig.h @@ -25,7 +25,7 @@ #include <stdint.h> -struct bd_mobj_cmd_s; +struct mobj_cmd; /* * @@ -64,7 +64,7 @@ typedef struct bd_ig_button_s { /* navigation commands */ uint16_t num_nav_cmds; - struct bd_mobj_cmd_s *nav_cmds; + struct mobj_cmd *nav_cmds; } BD_IG_BUTTON; diff --git a/src/libbluray/decoders/ig_decode.c b/src/libbluray/decoders/ig_decode.c index d87c72f..5eca32b 100644 --- a/src/libbluray/decoders/ig_decode.c +++ b/src/libbluray/decoders/ig_decode.c @@ -21,6 +21,7 @@ #include "pg_decode.h" // pg_decode_*() #include "../hdmv/mobj_parse.h" // mobj_parse_cmd() +#include "../hdmv/mobj_data.h" // MOBJ_CMD #include "../bdnav/mpls_parse.h" // mpls_parse_uo() #include "util/macro.h" diff --git a/src/libbluray/hdmv/hdmv_vm.c b/src/libbluray/hdmv/hdmv_vm.c index 9ac9038..775edad 100644 --- a/src/libbluray/hdmv/hdmv_vm.c +++ b/src/libbluray/hdmv/hdmv_vm.c @@ -20,6 +20,7 @@ #include "hdmv_vm.h" #include "mobj_parse.h" +#include "mobj_data.h" #include "hdmv_insn.h" #include "../register.h" diff --git a/src/libbluray/hdmv/mobj_data.h b/src/libbluray/hdmv/mobj_data.h new file mode 100644 index 0000000..b6fcc94 --- /dev/null +++ b/src/libbluray/hdmv/mobj_data.h @@ -0,0 +1,62 @@ +/* + * This file is part of libbluray + * Copyright (C) 2010 Petri Hintukainen <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +#if !defined(_MOBJ_DATA_H_) +#define _MOBJ_DATA_H_ + +#include <stdint.h> + +typedef struct { + unsigned int sub_grp : 3; /* command sub-group */ + unsigned int op_cnt : 3; /* operand count */ + unsigned int grp : 2; /* command group */ + + unsigned int branch_opt : 4; /* branch option */ + unsigned int reserved1 : 2; + unsigned int imm_op2 : 1; /* I-flag for operand 2 */ + unsigned int imm_op1 : 1; /* I-flag for operand 1 */ + + unsigned int cmp_opt : 4; /* compare option */ + unsigned int reserved2 : 4; + + unsigned int set_opt : 5; /* set option */ + unsigned int reserved3 : 3; +} HDMV_INSN; + +typedef struct mobj_cmd { + HDMV_INSN insn; + uint32_t dst; + uint32_t src; +} MOBJ_CMD; + +typedef struct { + uint8_t resume_intention_flag /*: 1*/; + uint8_t menu_call_mask /*: 1*/; + uint8_t title_search_mask /*: 1*/; + + uint16_t num_cmds; + MOBJ_CMD *cmds; +} MOBJ_OBJECT; + +typedef struct mobj_objects { + uint16_t num_objects; + MOBJ_OBJECT *objects; +} MOBJ_OBJECTS; + +#endif // _MOBJ_DATA_H_ diff --git a/src/libbluray/hdmv/mobj_parse.c b/src/libbluray/hdmv/mobj_parse.c index e50da33..01b8b46 100644 --- a/src/libbluray/hdmv/mobj_parse.c +++ b/src/libbluray/hdmv/mobj_parse.c @@ -19,6 +19,8 @@ #include "mobj_parse.h" +#include "mobj_data.h" + #include "file/file.h" #include "util/bits.h" #include "util/logging.h" diff --git a/src/libbluray/hdmv/mobj_parse.h b/src/libbluray/hdmv/mobj_parse.h index 93eea43..a97bbec 100644 --- a/src/libbluray/hdmv/mobj_parse.h +++ b/src/libbluray/hdmv/mobj_parse.h @@ -24,48 +24,13 @@ #include <stdint.h> -typedef struct { - unsigned int sub_grp : 3; /* command sub-group */ - unsigned int op_cnt : 3; /* operand count */ - unsigned int grp : 2; /* command group */ +struct mobj_objects; +struct mobj_cmd; - unsigned int branch_opt : 4; /* branch option */ - unsigned int reserved1 : 2; - unsigned int imm_op2 : 1; /* I-flag for operand 2 */ - unsigned int imm_op1 : 1; /* I-flag for operand 1 */ +BD_PRIVATE struct mobj_objects* mobj_parse(const char *disc_root) BD_ATTR_MALLOC; /* parse MovieObject.bdmv */ +BD_PRIVATE void mobj_parse_cmd(uint8_t *buf, struct mobj_cmd *cmd); +BD_PRIVATE void mobj_free(struct mobj_objects **index); - unsigned int cmp_opt : 4; /* compare option */ - unsigned int reserved2 : 4; - - unsigned int set_opt : 5; /* set option */ - unsigned int reserved3 : 3; -} HDMV_INSN; - -typedef struct bd_mobj_cmd_s { - HDMV_INSN insn; - uint32_t dst; - uint32_t src; -} MOBJ_CMD; - -typedef struct { - uint8_t resume_intention_flag /*: 1*/; - uint8_t menu_call_mask /*: 1*/; - uint8_t title_search_mask /*: 1*/; - - uint16_t num_cmds; - MOBJ_CMD *cmds; -} MOBJ_OBJECT; - -typedef struct mobj_objects { - uint16_t num_objects; - MOBJ_OBJECT *objects; -} MOBJ_OBJECTS; - - -BD_PRIVATE MOBJ_OBJECTS* mobj_parse(const char *disc_root) BD_ATTR_MALLOC; /* parse MovieObject.bdmv */ -BD_PRIVATE void mobj_parse_cmd(uint8_t *buf, MOBJ_CMD *cmd); -BD_PRIVATE void mobj_free(MOBJ_OBJECTS **index); - -BD_PRIVATE int mobj_sprint_cmd(char *buf, MOBJ_CMD *cmd); /* print MOBJ_CMD to string. buf is expected to be 256 bytes. */ +BD_PRIVATE int mobj_sprint_cmd(char *buf, struct mobj_cmd *cmd); /* print MOBJ_CMD to string. buf is expected to be 256 bytes. */ #endif // _MOBJ_PARSE_H_ diff --git a/src/libbluray/hdmv/mobj_print.c b/src/libbluray/hdmv/mobj_print.c index 8865892..d74584c 100644 --- a/src/libbluray/hdmv/mobj_print.c +++ b/src/libbluray/hdmv/mobj_print.c @@ -17,11 +17,12 @@ * <http://www.gnu.org/licenses/>. */ -#include "util/macro.h" - +#include "mobj_data.h" #include "mobj_parse.h" #include "hdmv_insn.h" +#include "util/macro.h" + #include <stdio.h> static const char * const psr_info[128] = { _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
