codec-v4l2-fwht.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* SPDX-License-Identifier: LGPL-2.1 */
  2. /*
  3. * Copyright 2018 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
  4. */
  5. #ifndef CODEC_V4L2_FWHT_H
  6. #define CODEC_V4L2_FWHT_H
  7. #include "codec-fwht.h"
  8. struct v4l2_fwht_pixfmt_info {
  9. u32 id;
  10. unsigned int bytesperline_mult;
  11. unsigned int sizeimage_mult;
  12. unsigned int sizeimage_div;
  13. unsigned int luma_alpha_step;
  14. unsigned int chroma_step;
  15. /* Chroma plane subsampling */
  16. unsigned int width_div;
  17. unsigned int height_div;
  18. unsigned int components_num;
  19. unsigned int planes_num;
  20. unsigned int pixenc;
  21. };
  22. struct v4l2_fwht_state {
  23. const struct v4l2_fwht_pixfmt_info *info;
  24. unsigned int visible_width;
  25. unsigned int visible_height;
  26. unsigned int coded_width;
  27. unsigned int coded_height;
  28. unsigned int stride;
  29. unsigned int ref_stride;
  30. unsigned int gop_size;
  31. unsigned int gop_cnt;
  32. u16 i_frame_qp;
  33. u16 p_frame_qp;
  34. enum v4l2_colorspace colorspace;
  35. enum v4l2_ycbcr_encoding ycbcr_enc;
  36. enum v4l2_xfer_func xfer_func;
  37. enum v4l2_quantization quantization;
  38. struct fwht_raw_frame ref_frame;
  39. struct fwht_cframe_hdr header;
  40. u8 *compressed_frame;
  41. u64 ref_frame_ts;
  42. };
  43. const struct v4l2_fwht_pixfmt_info *v4l2_fwht_find_pixfmt(u32 pixelformat);
  44. const struct v4l2_fwht_pixfmt_info *v4l2_fwht_get_pixfmt(u32 idx);
  45. bool v4l2_fwht_validate_fmt(const struct v4l2_fwht_pixfmt_info *info,
  46. u32 width_div, u32 height_div, u32 components_num,
  47. u32 pixenc);
  48. const struct v4l2_fwht_pixfmt_info *v4l2_fwht_find_nth_fmt(u32 width_div,
  49. u32 height_div,
  50. u32 components_num,
  51. u32 pixenc,
  52. unsigned int start_idx);
  53. int v4l2_fwht_encode(struct v4l2_fwht_state *state, u8 *p_in, u8 *p_out);
  54. int v4l2_fwht_decode(struct v4l2_fwht_state *state, u8 *p_in, u8 *p_out);
  55. #endif