xingzilong
2017-08-18 9e5babf9db52e64bdae60137be7696e56241fca6
RtspFace/MaterialBuffer.h
@@ -1,11 +1,12 @@
#ifndef _MATERIAL_BUFFER_H_
#define _MATERIAL_BUFFER_H_
#include <stddef.h>
#include <stdint.h>
// timeval
#if defined(WIN32) || defined(_MSC_VER)
   struct timeval {
      time_t      tv_sec;     /* seconds */
      suseconds_t tv_usec;    /* microseconds */
   };
   #include <Winsock2.h>
#else
   #include <sys/time.h>
#endif
@@ -15,21 +16,66 @@
   enum MBFType
   {
      MBFT__FIRST,
      MBFT_JPEG,
      MBFT_YUV420,
      MBFT_BGRA,
      MBFT_H264_NALU,
      MBFT_H264_NALU_WITH_AUX,
      MBFT_PTR_AVFRAME,
      MBFT_SDP,               // buffer = char[N], buffSize = N
      MBFT_FMTP,              // buffer = char[N], buffSize = N
      MBFT_INDEX,            // buffer = int, buffSize=sizeof(int)
      MBFT_PTR_AVFRAME,       // buffer = AVFrame*, buffSize = 0
      MBFT_H264_NALU,         // buffer = uint8_t[N], buffSize = N
      MBFT_H264_NALU_AUX,     // buffer = uint8_t[N], buffSize = N//#todo support!
      MBFT_JPEG,              // buffer = uint8_t[N], buffSize = N
      MBFT_YUV,                 // buffer = uint8_t[N], buffSize = N
      MBFT_Y8,                 // buffer = uint8_t[N], buffSize = N
      MBFT_YUV420,            // buffer = uint8_t[N], buffSize = N
      MBFT_NV12,            // buffer = uint8_t[N], buffSize = N
      MBFT_RGB,              // buffer = uint8_t[N], buffSize = N
      MBFT_RGB888,              // buffer = uint8_t[N], buffSize = N
      MBFT_RGB565,              // buffer = uint8_t[N], buffSize = N
      MBFT_RGBA,              // buffer = uint8_t[N], buffSize = N
      MBFT_BGRA,              // buffer = uint8_t[N], buffSize = N
        MBFT_BGRA8888,         // buffer = uint8_t[N], buffSize = N
        MBFT_ABGR8888,         // buffer = uint8_t[N], buffSize = N
      MBFT_ARGB8888,              // buffer = uint8_t[N], buffSize = N
      MBFT__LAST
   };
   enum MBFUsage
   {
      MBFU__FIRST,
      MBFU_ORIGIN_IMAGE,
      MBFU_PROCESSED_IMAGE,
      MBFU_INFORMATION,
      MBFU__LAST
   };
   MBFType type;
   uint8_t* buffer;//#todo void*
   void* buffer;
   size_t buffSize;
   int width;
   int height;
   timeval pts;
   
   MB_Frame() : type(MBFT__FIRST), buffer(nullptr), buffSize(0), pts() { }
   MB_Frame() :
      type(MBFT__FIRST), buffer(nullptr), buffSize(0),
      width(0), height(0), pts()
   { }
   void reset()
   {
      MB_Frame _temp;
      *this = _temp;
   }
};
#endif