mmal-common.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Broadcom BCM2835 V4L2 driver
  4. *
  5. * Copyright © 2013 Raspberry Pi (Trading) Ltd.
  6. *
  7. * Authors: Vincent Sanders @ Collabora
  8. * Dave Stevenson @ Broadcom
  9. * (now dave.stevenson@raspberrypi.org)
  10. * Simon Mellor @ Broadcom
  11. * Luke Diamand @ Broadcom
  12. *
  13. * MMAL structures
  14. *
  15. */
  16. #ifndef MMAL_COMMON_H
  17. #define MMAL_COMMON_H
  18. #define MMAL_FOURCC(a, b, c, d) ((a) | (b << 8) | (c << 16) | (d << 24))
  19. #define MMAL_MAGIC MMAL_FOURCC('m', 'm', 'a', 'l')
  20. /** Special value signalling that time is not known */
  21. #define MMAL_TIME_UNKNOWN BIT_ULL(63)
  22. struct mmal_msg_context;
  23. /* mapping between v4l and mmal video modes */
  24. struct mmal_fmt {
  25. u32 fourcc; /* v4l2 format id */
  26. int flags; /* v4l2 flags field */
  27. u32 mmal;
  28. int depth;
  29. u32 mmal_component; /* MMAL component index to be used to encode */
  30. u32 ybbp; /* depth of first Y plane for planar formats */
  31. bool remove_padding; /* Does the GPU have to remove padding,
  32. * or can we do hide padding via bytesperline.
  33. */
  34. };
  35. /* buffer for one video frame */
  36. struct mmal_buffer {
  37. /* v4l buffer data -- must be first */
  38. struct vb2_v4l2_buffer vb;
  39. /* list of buffers available */
  40. struct list_head list;
  41. void *buffer; /* buffer pointer */
  42. unsigned long buffer_size; /* size of allocated buffer */
  43. struct mmal_msg_context *msg_context;
  44. unsigned long length;
  45. u32 mmal_flags;
  46. s64 dts;
  47. s64 pts;
  48. };
  49. /* */
  50. struct mmal_colourfx {
  51. s32 enable;
  52. u32 u;
  53. u32 v;
  54. };
  55. #endif