Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cVideoCodec.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cVideoCodec_H
7 #define _INC_cVideoCodec_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
13 #include "../Image/cSurfaceInfo.h"
14 #include "../Image/cSurfaceBase.h"
15 #include "../UID/cFourCC.h"
16 
17 namespace GrayLib
18 {
19  typedef short AV_QUALITY_t;
20  static const AV_QUALITY_t k_AV_QUALITY_DEF = -1;
21  static const AV_QUALITY_t k_AV_QUALITY_0 = 0;
22  static const AV_QUALITY_t k_AV_QUALITY_MAX = 10000;
23 
25  {
28  // IGNORE_WARN_ABSTRACT(IVideoCompress);
29 
30  virtual ~IVideoCompress()
31  {
32  }
33  virtual HRESULT CompStart(const cSurfaceInfo& rInfo, cSurfaceBitmapInfo* pbiOut) = 0;
34  virtual HRESULT CompFrame(const cSurfaceBase& frame, OUT const void*& rpCompRet, OUT size_t& rnSizeRet, OUT bool& rbIsKey) = 0; // cMemBlock ??
35  virtual void CompEnd()
36  {
37  }
38  virtual AV_QUALITY_t get_CompQuality() const
39  {
40  return k_AV_QUALITY_MAX; // assume uncompressed.
41  }
42  };
43 
45  {
47  // IGNORE_WARN_ABSTRACT(IVideoDecompress);
49  {
50  }
51  virtual HRESULT DecompStart(const cSurfaceBitmapInfo* pbiInp, cSurfaceInfo* pFrameInfo) = 0;
52  virtual HRESULT DecompFrame(const void* pCompData, size_t nSizeComp, cSurfaceBase& frame) = 0;
53  virtual void DecompEnd()
54  {
55  }
56  };
57 
59  {
62 
63  public:
64  static const FOURCC k_Form = MAKEFOURCC('D', 'I', 'B', ' '); // BI_RGB
65 
66  cVideoCodecNull() noexcept
67  {
68  }
69  virtual ~cVideoCodecNull() noexcept
70  {
71  }
72 
73  virtual HRESULT CompStart(const cSurfaceInfo& rInfo, cSurfaceBitmapInfo* pbiOut) override
74  {
76  pbiOut->SetSurfaceInfo(rInfo);
77  return S_OK;
78  }
79 
80  virtual HRESULT CompFrame(const cSurfaceBase& frame, OUT const void*& rpCompRet, OUT size_t& rnSizeRet, OUT bool& rbIsKey) override
81  {
83  rbIsKey = true;
84  rnSizeRet = frame.get_Info().get_SurfaceSize();
85  rpCompRet = frame.get_PixelData();
86  return S_OK;
87  }
88 
89  virtual HRESULT DecompStart(const cSurfaceBitmapInfo* pbiInp, cSurfaceInfo* pFrameInfo) override
90  {
92  if (pbiInp == nullptr)
93  return E_POINTER;
94  if (pFrameInfo != nullptr)
95  {
96  pFrameInfo->SetBitmapInfo(pbiInp);
97  }
98  return S_OK;
99  }
100 
101  virtual HRESULT DecompFrame(const void* pCompData, size_t nSizeComp, cSurfaceBase& frame) override
102  {
104  if (nSizeComp != frame.get_Info().get_SurfaceSize())
105  return E_FAIL;
106  frame.put_PixelData(const_cast<void*>(pCompData));
107  return S_OK;
108  }
109  };
110 }
111 
112 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
UINT32 FOURCC
32 bit code. Also defined in _MMSYSTEM_H
Definition: cFourCC.h:19
#define MAKEFOURCC(ch0, ch1, ch2, ch3)
Definition: cFourCC.h:24
Definition: cSurfaceBase.h:26
const cSurfaceInfo & get_Info() const noexcept
Definition: cSurfaceBase.h:69
void put_PixelData(void *pPixelData) noexcept
Definition: cSurfaceBase.h:118
void * get_PixelData() const noexcept
Definition: cSurfaceBase.h:107
Definition: cSurfaceInfo.h:308
void SetSurfaceInfo(const cSurfaceInfo &rInfo)
Definition: cSurfaceInfo.cpp:249
Definition: cSurfaceInfo.h:109
void SetBitmapInfo(const cSurfaceBitmapInfo *pBMI)
Definition: cSurfaceInfo.cpp:113
size_t get_SurfaceSize() const noexcept
Definition: cSurfaceInfo.h:193
Definition: cVideoCodec.h:59
virtual HRESULT CompFrame(const cSurfaceBase &frame, OUT const void *&rpCompRet, OUT size_t &rnSizeRet, OUT bool &rbIsKey) override
Definition: cVideoCodec.h:80
virtual HRESULT DecompStart(const cSurfaceBitmapInfo *pbiInp, cSurfaceInfo *pFrameInfo) override
Definition: cVideoCodec.h:89
cVideoCodecNull() noexcept
Definition: cVideoCodec.h:66
virtual ~cVideoCodecNull() noexcept
Definition: cVideoCodec.h:69
virtual HRESULT DecompFrame(const void *pCompData, size_t nSizeComp, cSurfaceBase &frame) override
Definition: cVideoCodec.h:101
virtual HRESULT CompStart(const cSurfaceInfo &rInfo, cSurfaceBitmapInfo *pbiOut) override
Definition: cVideoCodec.h:73
Definition: cMesh.h:22
short AV_QUALITY_t
0 to 10000 e.g. 9900 = 99%. same as ICQUALITY_LOW,ICQUALITY_HIGH
Definition: cAVSink.h:21
Definition: cVideoCodec.h:25
virtual ~IVideoCompress()
Definition: cVideoCodec.h:30
virtual HRESULT CompFrame(const cSurfaceBase &frame, OUT const void *&rpCompRet, OUT size_t &rnSizeRet, OUT bool &rbIsKey)=0
virtual HRESULT CompStart(const cSurfaceInfo &rInfo, cSurfaceBitmapInfo *pbiOut)=0
virtual AV_QUALITY_t get_CompQuality() const
Definition: cVideoCodec.h:38
virtual void CompEnd()
Definition: cVideoCodec.h:35
Definition: cVideoCodec.h:45
virtual ~IVideoDecompress()
Definition: cVideoCodec.h:48
virtual HRESULT DecompStart(const cSurfaceBitmapInfo *pbiInp, cSurfaceInfo *pFrameInfo)=0
virtual void DecompEnd()
Definition: cVideoCodec.h:53
virtual HRESULT DecompFrame(const void *pCompData, size_t nSizeComp, cSurfaceBase &frame)=0