shared-memory-queue.h 958 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include <stdbool.h>
  3. #include <stdint.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. struct video_queue;
  8. struct nv12_scale;
  9. typedef struct video_queue video_queue_t;
  10. typedef struct nv12_scale nv12_scale_t;
  11. enum queue_state {
  12. SHARED_QUEUE_STATE_INVALID,
  13. SHARED_QUEUE_STATE_STARTING,
  14. SHARED_QUEUE_STATE_READY,
  15. SHARED_QUEUE_STATE_STOPPING,
  16. };
  17. extern video_queue_t *video_queue_create(uint32_t cx, uint32_t cy,
  18. uint64_t interval);
  19. extern video_queue_t *video_queue_open();
  20. extern void video_queue_close(video_queue_t *vq);
  21. extern void video_queue_get_info(video_queue_t *vq, uint32_t *cx, uint32_t *cy,
  22. uint64_t *interval);
  23. extern void video_queue_write(video_queue_t *vq, uint8_t **data,
  24. uint32_t *linesize, uint64_t timestamp);
  25. extern enum queue_state video_queue_state(video_queue_t *vq);
  26. extern bool video_queue_read(video_queue_t *vq, nv12_scale_t *scale, void *dst,
  27. uint64_t *ts);
  28. #ifdef __cplusplus
  29. }
  30. #endif