summaryrefslogtreecommitdiff
path: root/src/j2c-test.cpp
blob: 98c7cf46cdf56055543660f4d9202510f0382c7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

#include <AS_DCP.h>
#include <FileIO.h>
#include <JP2K.h>
using namespace ASDCP;
using namespace ASDCP::JP2K;

//
int
main(int argc, const char** argv)
{
  ASDCP::JP2K::FrameBuffer FB;
  Marker        MyMarker;

  if ( argc < 2 )
    return 1;

  FB.Capacity(1024*1024*2);
  CodestreamParser Parser;

  Result_t result = Parser.OpenReadFrame(argv[1], FB);

  if ( result != RESULT_OK )
    {
      fputs("Program stopped on error.\n", stderr);

      if ( result != RESULT_FAIL )
        {
          fputs(GetResultString(result), stderr);
          fputc('\n', stderr);
        }

      return 1;
    }

  const byte_t* p = FB.RoData();
  const byte_t* end_p = p + FB.Size();

  hexdump(p, 256, stderr);

  while ( p < end_p && ASDCP_SUCCESS(GetNextMarker(&p, MyMarker)) )
    {
      MyMarker.Dump();

      switch ( MyMarker.m_Type )
	{
	case MRK_SOD:
	  p = end_p;
	  break;

	case MRK_SIZ:
	  {
	    Accessor::SIZ SIZ_(MyMarker);
	    hexdump(MyMarker.m_Data - 2, MyMarker.m_DataSize + 2, stderr);
	    SIZ_.Dump();
	  }
	  break;

	case MRK_COM:
	  {
	    Accessor::COM COM_(MyMarker);
	    COM_.Dump();
	  }
	  break;
	}
    }
      
  return 0;
}


//
// end jp2k-test.cpp
//