vmg.c
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:1k
源码类别:

DVD

开发平台:

Unix_Linux

  1. #ifdef PARSER
  2. #include <stdio.h>
  3. #endif
  4. #include <stdlib.h>
  5. #include <sys/types.h>
  6. #include <unistd.h>
  7. #include "misc.h"
  8. #include "ifo.h"
  9. void ifo_print_audiosub (u_char *ptr)
  10. {
  11. ifo_hdr_t *hdr = (ifo_hdr_t *) ptr;
  12. int i;
  13. u_int *start_list;
  14. printf ("n???n");
  15. printf ("---n");
  16. printf ("number of units: %dn", ntohs (hdr->num));
  17. printf ("length of table: 0x%xn", ntohl (hdr->len));
  18. start_list = (u_int *) calloc (ntohs (hdr->num), sizeof (u_int));
  19. ptr += IFO_HDR_LEN;
  20. for (i=0; i<ntohs(hdr->num); i++) {
  21. start_list[i] = get4bytes (ptr);
  22. ptr+=4;
  23. }
  24. for (i=0; i<ntohs(hdr->num); i++) {
  25. int s;
  26. u_int len;
  27. u_char *start_ptr;
  28. start_ptr = ptr = (u_char *) hdr + start_list[i];
  29. len = get4bytes (ptr);
  30. printf ("length of table: 0x%xn", len);
  31. ptr += 4;
  32. for (s=0; s<32*8+4; s++)
  33. printf ("%02x ", *ptr++);
  34. ifoPrintAudio (ifoGetAudio (ptr));
  35. ptr += 4+8*8;
  36. for (s=0; s<12; s++)
  37. printf ("%02x ", *ptr++);
  38. ifoPrintSPU (ifoGetSPU (ptr));
  39. ptr += 4+32*6;
  40. { int end;
  41. end =  start_ptr + len - ptr;
  42. for (s=0; s<end; s++)
  43. printf ("%02x ", *ptr++);
  44. printf ("n");
  45. }
  46. }
  47. }