/H264Dec/source/h264bsd_util.h
http://github.com/mbebenita/Broadway · C Header · 178 lines · 86 code · 36 blank · 56 comment · 8 complexity · 5f1adbe1c6732a7c538c0f4b415b39f9 MD5 · raw file
- /*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /*------------------------------------------------------------------------------
- Table of contents
- 1. Include headers
- 2. Module defines
- 3. Data types
- 4. Function prototypes
- ------------------------------------------------------------------------------*/
- #ifndef H264SWDEC_UTIL_H
- #define H264SWDEC_UTIL_H
- /*------------------------------------------------------------------------------
- 1. Include headers
- ------------------------------------------------------------------------------*/
- #ifdef _ASSERT_USED
- #include <assert.h>
- #endif
- #include "H264SwDecApi.h"
- #if defined(_RANGE_CHECK) || defined(_DEBUG_PRINT) || defined(_ERROR_PRINT)
- #include <stdio.h>
- #endif
- #include "basetype.h"
- #include "h264bsd_stream.h"
- #include "h264bsd_image.h"
- /*------------------------------------------------------------------------------
- 2. Module defines
- ------------------------------------------------------------------------------*/
- #define HANTRO_OK 0
- #define HANTRO_NOK 1
- #define HANTRO_TRUE (1)
- #define HANTRO_FALSE (0)
- #ifndef NULL
- #define NULL 0
- #endif
- #define MEMORY_ALLOCATION_ERROR 0xFFFF
- #define PARAM_SET_ERROR 0xFFF0
- /* value to be returned by GetBits if stream buffer is empty */
- #define END_OF_STREAM 0xFFFFFFFFU
- #define EMPTY_RESIDUAL_INDICATOR 0xFFFFFF
- /* macro to mark a residual block empty, i.e. contain zero coefficients */
- #define MARK_RESIDUAL_EMPTY(residual) ((residual)[0] = EMPTY_RESIDUAL_INDICATOR)
- /* macro to check if residual block is empty */
- #define IS_RESIDUAL_EMPTY(residual) ((residual)[0] == EMPTY_RESIDUAL_INDICATOR)
- /* macro for assertion, used only if compiler flag _ASSERT_USED is defined */
- #ifdef _ASSERT_USED
- #define ASSERT(expr) assert(expr)
- #else
- #define ASSERT(expr)
- #endif
- /* macro for range checking an value, used only if compiler flag _RANGE_CHECK
- * is defined */
- #ifdef _RANGE_CHECK
- #define RANGE_CHECK(value, minBound, maxBound) \
- { \
- if ((value) < (minBound) || (value) > (maxBound)) \
- fprintf(stderr, "Warning: Value exceeds given limit(s)!\n"); \
- }
- #else
- #define RANGE_CHECK(value, minBound, maxBound)
- #endif
- /* macro for range checking an array, used only if compiler flag _RANGE_CHECK
- * is defined */
- #ifdef _RANGE_CHECK
- #define RANGE_CHECK_ARRAY(array, minBound, maxBound, length) \
- { \
- i32 i; \
- for (i = 0; i < (length); i++) \
- if ((array)[i] < (minBound) || (array)[i] > (maxBound)) \
- fprintf(stderr,"Warning: Value [%d] exceeds given limit(s)!\n",i); \
- }
- #else
- #define RANGE_CHECK_ARRAY(array, minBound, maxBound, length)
- #endif
- /* macro for debug printing, used only if compiler flag _DEBUG_PRINT is
- * defined */
- #ifdef _DEBUG_PRINT
- #define DEBUG(args) printf args
- #else
- #define DEBUG(args)
- #endif
- /* macro for error printing, used only if compiler flag _ERROR_PRINT is
- * defined */
- #ifdef _ERROR_PRINT
- #define EPRINT(msg) fprintf(stderr,"ERROR: %s\n",msg)
- #else
- #define EPRINT(msg)
- #endif
- /* macro to get smaller of two values */
- #define MIN(a, b) (((a) < (b)) ? (a) : (b))
- /* macro to get greater of two values */
- #define MAX(a, b) (((a) > (b)) ? (a) : (b))
- /* macro to get absolute value */
- #define ABS(a) (((a) < 0) ? -(a) : (a))
- /* macro to clip a value z, so that x <= z =< y */
- #define CLIP3(x,y,z) (((z) < (x)) ? (x) : (((z) > (y)) ? (y) : (z)))
- /* macro to clip a value z, so that 0 <= z =< 255 */
- #define CLIP1(z) (((z) < 0) ? 0 : (((z) > 255) ? 255 : (z)))
- /* macro to allocate memory */
- #define ALLOCATE(ptr, count, type) \
- { \
- (ptr) = H264SwDecMalloc((count) * sizeof(type)); \
- }
- /* macro to free allocated memory */
- #define FREE(ptr) \
- { \
- H264SwDecFree((ptr)); (ptr) = NULL; \
- }
- #define ALIGN(ptr, bytePos) \
- (ptr + ( ((bytePos - (int)ptr) & (bytePos - 1)) / sizeof(*ptr) ))
- extern const u32 h264bsdQpC[52];
- /*------------------------------------------------------------------------------
- 3. Data types
- ------------------------------------------------------------------------------*/
- /*------------------------------------------------------------------------------
- 4. Function prototypes
- ------------------------------------------------------------------------------*/
- #ifndef H264DEC_NEON
- u32 h264bsdCountLeadingZeros(u32 value, u32 length);
- #else
- u32 h264bsdCountLeadingZeros(u32 value);
- #endif
- u32 h264bsdRbspTrailingBits(strmData_t *strmData);
- u32 h264bsdMoreRbspData(strmData_t *strmData);
- u32 h264bsdNextMbAddress(u32 *pSliceGroupMap, u32 picSizeInMbs, u32 currMbAddr);
- void h264bsdSetCurrImageMbPointers(image_t *image, u32 mbNum);
- #endif /* #ifdef H264SWDEC_UTIL_H */