blob: dad238cfcefd0eb86ee37411dd4d46020999ee92 [file] [log] [blame]
/*
* Copyright 2020 Google LLC
*
*/
/*
* Copyright (c) 2020, Alliance for Open Media. All rights reserved
*
* This source code is subject to the terms of the BSD 2 Clause License and
* the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
* was not distributed with this source code in the LICENSE file, you can
* obtain it at www.aomedia.org/license/software. If the Alliance for Open
* Media Patent License 1.0 was not distributed with this source code in the
* PATENTS file, you can obtain it at www.aomedia.org/license/patent.
*/
#pragma once
#include "aom_util/aom_thread.h"
#define BUFFERS_COUNT 100
typedef struct {
void* m_element[BUFFERS_COUNT];
int m_head;
int m_tail;
int m_QueueNotEmpty;
} DataPtrQueue;
typedef struct {
DataPtrQueue int_queue;
pthread_cond_t m_empty_cond; // event
pthread_mutex_t m_mutex;
} DataPtrQueueMT;
void QueueInit(DataPtrQueue* queue);
void QueuePop(DataPtrQueue* queue);
void QueuePush(DataPtrQueue* queue, void* item);
void* QueueFront(DataPtrQueue* queue);
void* QueueGet(DataPtrQueue* queue);
int QueueIsEmpty(DataPtrQueue* queue);
void MTQueueInit(DataPtrQueueMT* queue);
void MTQueuePush(DataPtrQueueMT* queue, void* buffer);
void* MTQueueGet(DataPtrQueueMT* queue);
void MTQueuePushSafe(DataPtrQueueMT* queue, void* buffer);
void* MTQueueGetSafe(DataPtrQueueMT* queue);
int MTQueueIsEmpty(DataPtrQueueMT* queue);
void MTQueueDestroy(DataPtrQueueMT* queue);
void* MTQueueFront(DataPtrQueueMT* queue);
void MTQueuePop(DataPtrQueueMT* queue);
void MTQueueClear(DataPtrQueueMT* queue);
int MTQueueGetCount(DataPtrQueueMT* queue);