/*
* This file is part of libbluray
* Copyright (C) 2010 hpi1
*
* 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
* .
*/
#include "libbluray/bluray.h"
#include "libbluray/hdmv/mobj_data.h"
#include "libbluray/hdmv/mobj_print.h"
#include
#include
static void _mobj_print(MOBJ_OBJECTS *objects, int disasm)
{
int o, c;
printf("Number of objects: %d\n", objects->num_objects);
for (o = 0; o < objects->num_objects; o++) {
printf("Object %d:\n"
" number of commands: %d\n"
" resume intention flag: %d\n"
" menu call mask: %d\n"
" title search mask: %d\n",
o, objects->objects[o].num_cmds,
objects->objects[o].resume_intention_flag,
objects->objects[o].menu_call_mask,
objects->objects[o].title_search_mask);
if (disasm) {
printf(" program:\n");
for (c = 0; c < objects->objects[o].num_cmds; c++) {
char buf[256];
mobj_sprint_cmd(buf, &objects->objects[o].cmds[c]);
printf(" %04d: %s\n", c, buf);
}
}
}
}
int main(int argc, const char *argv[])
{
int disasm = 0;
MOBJ_OBJECTS *mobj = NULL;
if (argc < 2) {
fprintf(stderr,
"usage: %s [-d] \n"
"Options:\n"
" d disassemble object code\n",
argv[0]);
return 1;
}
if (argc > 2) {
disasm = !strcmp(argv[1], "-d");
}
mobj = bd_read_mobj(argv[argc-1]);
if (mobj) {
_mobj_print(mobj, disasm);
bd_free_mobj(mobj);
}
return 0;
}