| #ifndef MY_VPX_DEFS_H_ |
| #define MY_VPX_DEFS_H_ |
| |
| |
| #define VPX_IMG_FMT_PLANAR 0x100 /**< Image is a planar format. */ |
| #define VPX_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */ |
| #define VPX_IMG_FMT_HAS_ALPHA 0x400 /**< Image has an alpha channel. */ |
| #define VPX_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */ |
| |
| typedef unsigned char uint8_t; |
| |
| enum class RenderMode { |
| RENDER_BY_HOST_GPU = 1, |
| RENDER_BY_GUEST_CPU = 2, |
| }; |
| |
| enum vpx_img_fmt_t { |
| VPX_IMG_FMT_NONE, |
| VPX_IMG_FMT_YV12 = |
| VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 1, /**< planar YVU */ |
| VPX_IMG_FMT_I420 = VPX_IMG_FMT_PLANAR | 2, |
| VPX_IMG_FMT_I422 = VPX_IMG_FMT_PLANAR | 5, |
| VPX_IMG_FMT_I444 = VPX_IMG_FMT_PLANAR | 6, |
| VPX_IMG_FMT_I440 = VPX_IMG_FMT_PLANAR | 7, |
| VPX_IMG_FMT_I42016 = VPX_IMG_FMT_I420 | VPX_IMG_FMT_HIGHBITDEPTH, |
| VPX_IMG_FMT_I42216 = VPX_IMG_FMT_I422 | VPX_IMG_FMT_HIGHBITDEPTH, |
| VPX_IMG_FMT_I44416 = VPX_IMG_FMT_I444 | VPX_IMG_FMT_HIGHBITDEPTH, |
| VPX_IMG_FMT_I44016 = VPX_IMG_FMT_I440 | VPX_IMG_FMT_HIGHBITDEPTH |
| }; |
| |
| struct vpx_image_t { |
| vpx_img_fmt_t fmt; /**< Image Format */ |
| unsigned int d_w; /**< Displayed image width */ |
| unsigned int d_h; /**< Displayed image height */ |
| void *user_priv; |
| }; |
| |
| #define VPX_CODEC_OK 0 |
| |
| struct vpx_codec_ctx_t { |
| int vpversion; //8: vp8 or 9: vp9 |
| int version; // 100: return decoded frame to guest; 200: render on host |
| int hostColorBufferId; |
| uint64_t id; // >= 1, unique |
| int memory_slot; |
| uint64_t address_offset = 0; |
| size_t outputBufferWidth; |
| size_t outputBufferHeight; |
| size_t width; |
| size_t height; |
| size_t bpp; |
| uint8_t *data; |
| uint8_t *dst; |
| vpx_image_t myImg; |
| }; |
| |
| int vpx_codec_destroy(vpx_codec_ctx_t*); |
| int vpx_codec_dec_init(vpx_codec_ctx_t*); |
| vpx_image_t* vpx_codec_get_frame(vpx_codec_ctx_t*, int hostColorBufferId = -1); |
| int vpx_codec_flush(vpx_codec_ctx_t *ctx); |
| int vpx_codec_decode(vpx_codec_ctx_t *ctx, const uint8_t *data, |
| unsigned int data_sz, void *user_priv, |
| long deadline); |
| |
| #endif // MY_VPX_DEFS_H_ |