mp4dump.cpp
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2001.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  * Dave Mackie dmackie@cisco.com
  20.  */
  21. #include "mp4.h"
  22. #include "mpeg4ip_getopt.h"
  23. int main(int argc, char** argv)
  24. {
  25. char* usageString = "usage: %s [-v [<level>]] <file-name>n";
  26. u_int32_t verbosity = MP4_DETAILS_ERROR;
  27. bool dumpImplicits = false;
  28. /* begin processing command line */
  29. char* progName = argv[0];
  30. while (true) {
  31. int c = -1;
  32. int option_index = 0;
  33. static struct option long_options[] = {
  34. { "verbose", 2, 0, 'v' },
  35. { "version", 0, 0, 'V' },
  36. { NULL, 0, 0, 0 }
  37. };
  38. c = getopt_long_only(argc, argv, "v::V",
  39. long_options, &option_index);
  40. if (c == -1)
  41. break;
  42. switch (c) {
  43. case 'v':
  44. verbosity |= MP4_DETAILS_TABLE;
  45. if (optarg) {
  46. u_int32_t level;
  47. if (sscanf(optarg, "%u", &level) == 1) {
  48. if (level >= 2) {
  49. dumpImplicits = true;
  50. if (level >= 3) {
  51. verbosity = MP4_DETAILS_ALL;
  52. }
  53. }
  54. }
  55. break;
  56. case '?':
  57. fprintf(stderr, usageString, progName);
  58. exit(0);
  59. case 'V':
  60.   fprintf(stderr, "%s - %s version %sn", 
  61.   progName, PACKAGE, VERSION);
  62.   exit(0);
  63. default:
  64. fprintf(stderr, "%s: unknown option specified, ignoring: %cn", 
  65. progName, c);
  66. }
  67. }
  68. /* check that we have at least one non-option argument */
  69. if ((argc - optind) < 1) {
  70. fprintf(stderr, usageString, progName);
  71. exit(1);
  72. }
  73. /* point to the specified file names */
  74. char* mp4FileName = argv[optind++];
  75. /* warn about extraneous non-option arguments */
  76. if (optind < argc) {
  77. fprintf(stderr, "%s: unknown options specified, ignoring: ", progName);
  78. while (optind < argc) {
  79. fprintf(stderr, "%s ", argv[optind++]);
  80. }
  81. fprintf(stderr, "n");
  82. }
  83. /* end processing of command line */
  84. if (verbosity != 0) {
  85.   fprintf(stdout, "%s version %sn", progName, VERSION);
  86. }
  87. MP4FileHandle mp4File = MP4Read(mp4FileName, verbosity);
  88. if (!mp4File) {
  89. exit(1);
  90. }
  91. MP4Dump(mp4File, stdout, dumpImplicits);
  92. MP4Close(mp4File);
  93. return(0);
  94. }