sf_queue.h 964 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (C) 2022 StarFive Technology Co., Ltd.
  4. */
  5. #ifndef SF_QUEUE_H
  6. #define SF_QUEUE_H
  7. #include <stdint.h>
  8. #include <errno.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11. #include <pthread.h>
  12. #include "OMX_Types.h"
  13. #include "OMX_Core.h"
  14. typedef struct {
  15. OMX_U8* buffer;
  16. OMX_U32 size;
  17. OMX_U32 itemSize;
  18. OMX_U32 count;
  19. OMX_U32 front;
  20. OMX_U32 rear;
  21. pthread_mutex_t lock;
  22. pthread_cond_t cond;
  23. } SF_Queue;
  24. SF_Queue* SF_Queue_Create(OMX_U32 itemCount, OMX_U32 itemSize);
  25. void SF_Queue_Destroy(SF_Queue* queue);
  26. OMX_ERRORTYPE SF_Queue_Enqueue(SF_Queue* queue, void* data);
  27. void* SF_Queue_Dequeue(SF_Queue* queue);
  28. void* SF_Queue_Dequeue_Block(SF_Queue* queue);
  29. void SF_Queue_Flush(SF_Queue* queue);
  30. void* SF_Queue_Peek(SF_Queue* queue);
  31. OMX_U32 SF_Queue_Get_Cnt(SF_Queue* queue);
  32. SF_Queue* SF_Queue_Copy(SF_Queue* dstQ, SF_Queue* srcQ);
  33. #endif //SF_QUEUE_H