• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef __BASETHREADDECODERTEST_H__
2 #define __BASETHREADDECODERTEST_H__
3 
4 #include "test_stdint.h"
5 #include <limits.h>
6 #include <fstream>
7 #include "codec_api.h"
8 
9 #include "utils/BufferedData.h"
10 
11 class BaseThreadDecoderTest {
12  public:
13   struct Plane {
14     const uint8_t* data;
15     int width;
16     int height;
17     int stride;
18   };
19 
20   struct Frame {
21     Plane y;
22     Plane u;
23     Plane v;
24   };
25 
26   typedef enum tagDecodeStatus {
27     OpenFile,
28     Decoding,
29     EndOfStream,
30     End
31   } eDecodeStatus;
32 
33   struct Callback {
34     virtual void onDecodeFrame (const Frame& frame) = 0;
35   };
36 
37   BaseThreadDecoderTest();
38   int32_t SetUp();
39   void TearDown();
40   bool ThreadDecodeFile (const char* fileName, Callback* cbk);
41 
42   bool Open (const char* fileName);
43   ISVCDecoder* decoder_;
44 
45  private:
46   void DecodeFrame (const uint8_t* src, size_t sliceSize, Callback* cbk);
47   void FlushFrame (Callback* cbk);
48 
49   std::ifstream file_;
50   SBufferInfo sBufInfo;
51   uint8_t* pData[3];
52   uint64_t uiTimeStamp;
53   FILE* pYuvFile;
54   bool bEnableYuvDumpTest;
55   eDecodeStatus decodeStatus_;
56 };
57 
58 #endif //__BASETHREADDECODERTEST_H__
59