shared-memory-queue.h 930 B

123456789101112131415161718192021222324252627282930313233
  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, uint64_t interval);
  18. extern video_queue_t *video_queue_open();
  19. extern void video_queue_close(video_queue_t *vq);
  20. extern void video_queue_get_info(video_queue_t *vq, uint32_t *cx, uint32_t *cy, uint64_t *interval);
  21. extern void video_queue_write(video_queue_t *vq, uint8_t **data, uint32_t *linesize, uint64_t timestamp);
  22. extern enum queue_state video_queue_state(video_queue_t *vq);
  23. extern bool video_queue_read(video_queue_t *vq, nv12_scale_t *scale, void *dst, uint64_t *ts);
  24. #ifdef __cplusplus
  25. }
  26. #endif