1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/mtransport/third_party/nrappkit/src/util/p_buf.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,72 @@ 1.4 +/** 1.5 + p_buf.h 1.6 + 1.7 + 1.8 + Copyright (C) 2003, Network Resonance, Inc. 1.9 + Copyright (C) 2006, Network Resonance, Inc. 1.10 + All Rights Reserved 1.11 + 1.12 + Redistribution and use in source and binary forms, with or without 1.13 + modification, are permitted provided that the following conditions 1.14 + are met: 1.15 + 1.16 + 1. Redistributions of source code must retain the above copyright 1.17 + notice, this list of conditions and the following disclaimer. 1.18 + 2. Redistributions in binary form must reproduce the above copyright 1.19 + notice, this list of conditions and the following disclaimer in the 1.20 + documentation and/or other materials provided with the distribution. 1.21 + 3. Neither the name of Network Resonance, Inc. nor the name of any 1.22 + contributors to this software may be used to endorse or promote 1.23 + products derived from this software without specific prior written 1.24 + permission. 1.25 + 1.26 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 1.27 + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1.28 + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1.29 + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 1.30 + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 1.31 + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 1.32 + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 1.33 + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 1.34 + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 1.35 + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 1.36 + POSSIBILITY OF SUCH DAMAGE. 1.37 + 1.38 + 1.39 + ekr@rtfm.com Tue Nov 25 15:58:37 2003 1.40 + */ 1.41 + 1.42 + 1.43 +#ifndef _p_buf_h 1.44 +#define _p_buf_h 1.45 + 1.46 +typedef struct nr_p_buf_ { 1.47 + UCHAR *data; /*The pointer to the buffer where the data lives */ 1.48 + UINT4 size; /*The size of the buffer */ 1.49 + UINT4 r_offset; /*The offset into the buffer where the data starts 1.50 + when reading */ 1.51 + UINT4 length; /*The length of the data portion */ 1.52 + 1.53 + STAILQ_ENTRY(nr_p_buf_) entry; 1.54 +} nr_p_buf; 1.55 + 1.56 +typedef STAILQ_HEAD(nr_p_buf_head_,nr_p_buf_) nr_p_buf_head; 1.57 + 1.58 + 1.59 +typedef struct nr_p_buf_ctx_ { 1.60 + int buf_size; 1.61 + 1.62 + nr_p_buf_head free_list; 1.63 +} nr_p_buf_ctx; 1.64 + 1.65 +int nr_p_buf_ctx_create(int size,nr_p_buf_ctx **ctxp); 1.66 +int nr_p_buf_ctx_destroy(nr_p_buf_ctx **ctxp); 1.67 +int nr_p_buf_alloc(nr_p_buf_ctx *ctx,nr_p_buf **bufp); 1.68 +int nr_p_buf_free(nr_p_buf_ctx *ctx,nr_p_buf *buf); 1.69 +int nr_p_buf_free_chain(nr_p_buf_ctx *ctx,nr_p_buf_head *chain); 1.70 +int nr_p_buf_write_to_chain(nr_p_buf_ctx *ctx, 1.71 + nr_p_buf_head *chain, 1.72 + UCHAR *data,UINT4 len); 1.73 + 1.74 +#endif 1.75 +