12 #include <sys/types.h>
15 using namespace ASDCP;
18 //------------------------------------------------------------------------------------------
21 // There is no header file thet defines this function.
22 // You just have to know it's there...
23 void set_debug_mode(bool info_mode, bool debug_mode);
27 main(int argc, char** argv)
29 Result_t result = RESULT_OK;
30 bool read_mxf = false;
31 bool rewrite_mxf = false;
33 set_debug_mode(true, true);
35 if ( strcmp(argv[1], "-r") == 0 )
40 else if ( strcmp(argv[1], "-w") == 0 )
44 assert(argc - arg_i == 2);
47 fprintf(stderr, "Opening file %s\n", argv[arg_i]);
51 ASDCP::FileReader Reader;
52 ASDCP::MXF::OPAtomHeader Header;
54 result = Reader.OpenRead(argv[arg_i]);
56 if ( ASDCP_SUCCESS(result) )
57 result = Header.InitFromFile(Reader);
59 // if ( ASDCP_SUCCESS(result) )
62 if ( ASDCP_SUCCESS(result) )
64 ASDCP::MXF::OPAtomIndexFooter Index;
65 result = Reader.Seek(Header.FooterPartition);
67 if ( ASDCP_SUCCESS(result) )
69 Index.m_Lookup = &Header.m_Primer;
70 result = Index.InitFromFile(Reader);
73 if ( ASDCP_SUCCESS(result) )
77 else if ( rewrite_mxf )
79 ASDCP::FileReader Reader;
80 ASDCP::FileWriter Writer;
81 ASDCP::MXF::OPAtomHeader Header;
82 ASDCP::MXF::OPAtomIndexFooter Index;
84 result = Reader.OpenRead(argv[arg_i++]);
86 if ( ASDCP_SUCCESS(result) )
87 result = Header.InitFromFile(Reader);
89 if ( ASDCP_SUCCESS(result) )
90 result = Reader.Seek(Header.FooterPartition);
92 if ( ASDCP_SUCCESS(result) )
93 result = Index.InitFromFile(Reader);
95 Header.m_Primer.ClearTagList();
97 if ( ASDCP_SUCCESS(result) )
98 result = Writer.OpenWrite(argv[arg_i]);
100 if ( ASDCP_SUCCESS(result) )
101 result = Header.WriteToFile(Writer);
103 // if ( ASDCP_SUCCESS(result) )
104 // result = Index.WriteToFile(Writer);
114 ASDCP::FileReader Reader;
117 result = Reader.OpenRead(argv[arg_i]);
119 if ( ASDCP_SUCCESS(result) )
120 result = KP.InitFromFile(Reader);
122 while ( ASDCP_SUCCESS(result) )
124 KP.Dump(stderr, true);
125 result = KP.InitFromFile(Reader);
128 if( result == RESULT_ENDOFFILE )
132 if ( result != RESULT_OK )
134 fputs("Program stopped on error.\n", stderr);
136 if ( result != RESULT_FAIL )
138 fputs(GetResultString(result), stderr);