wheee!
[asdcplib.git] / src / j2c-test.cpp
1
2 #include <AS_DCP.h>
3 #include <FileIO.h>
4 #include <JP2K.h>
5 using namespace ASDCP;
6 using namespace ASDCP::JP2K;
7
8 //
9 int
10 main(int argc, const char** argv)
11 {
12   ASDCP::JP2K::FrameBuffer FB;
13   Marker        MyMarker;
14
15   if ( argc < 2 )
16     return 1;
17
18   FB.Capacity(1024*1024*2);
19   CodestreamParser Parser;
20
21   Result_t result = Parser.OpenReadFrame(argv[1], FB);
22
23   if ( result != RESULT_OK )
24     {
25       fputs("Program stopped on error.\n", stderr);
26
27       if ( result != RESULT_FAIL )
28         {
29           fputs(GetResultString(result), stderr);
30           fputc('\n', stderr);
31         }
32
33       return 1;
34     }
35
36   const byte_t* p = FB.RoData();
37   const byte_t* end_p = p + FB.Size();
38
39   hexdump(p, 256, stderr);
40
41   while ( p < end_p && ASDCP_SUCCESS(GetNextMarker(&p, MyMarker)) )
42     {
43       MyMarker.Dump();
44
45       switch ( MyMarker.m_Type )
46         {
47         case MRK_SOD:
48           p = end_p;
49           break;
50
51         case MRK_SIZ:
52           {
53             Accessor::SIZ SIZ_(MyMarker);
54             hexdump(MyMarker.m_Data - 2, MyMarker.m_DataSize + 2, stderr);
55             SIZ_.Dump();
56           }
57           break;
58
59         case MRK_COM:
60           {
61             Accessor::COM COM_(MyMarker);
62             COM_.Dump();
63           }
64           break;
65         }
66     }
67       
68   return 0;
69 }
70
71
72 //
73 // end jp2k-test.cpp
74 //