1 #ifndef _DERINGBUFFER_H 2 #define _DERINGBUFFER_H 3 /*------------------------------------------------------------------------- 4 * drawElements Stream Library 5 * --------------------------- 6 * 7 * Copyright 2014 The Android Open Source Project 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 *//*! 22 * \file 23 * \brief Thread safe ringbuffer 24 *//*--------------------------------------------------------------------*/ 25 26 #include "deInStream.h" 27 #include "deOutStream.h" 28 29 DE_BEGIN_EXTERN_C 30 31 typedef struct deRingbuffer_s deRingbuffer; 32 33 deRingbuffer* deRingbuffer_create (deInt32 blockSize, deInt32 blockCount); 34 35 /* Changes state of ringbuffer to stopping which will make all subsequent writes 36 * to producer stream fail and notifies consumer with DE_STREAMRESULT_END_OF_STREAM 37 * when buffer is empty. 38 */ 39 void deRingbuffer_stop (deRingbuffer* ringbuffer); 40 void deRingbuffer_destroy (deRingbuffer* ringbuffer); 41 42 void deProducerStream_init (deOutStream* stream, deRingbuffer* buffer); 43 void deConsumerStream_init (deInStream* stream, deRingbuffer* buffer); 44 45 DE_END_EXTERN_C 46 47 #endif /* _DERINGBUFFER_H */ 48