Bump the vendor string.
[theora.git] / lib / internal.h
1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
5  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
7  *                                                                  *
8  * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *
9  * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
10  *                                                                  *
11  ********************************************************************
12
13   function:
14     last mod: $Id$
15
16  ********************************************************************/
17 #if !defined(_internal_H)
18 # define _internal_H (1)
19 # include <stdlib.h>
20 # include <limits.h>
21 # if defined(HAVE_CONFIG_H)
22 #  include "config.h"
23 # endif
24 # include "theora/codec.h"
25 # include "theora/theora.h"
26 # include "ocintrin.h"
27
28 # if defined(_MSC_VER)
29 /*Disable missing EMMS warnings.*/
30 #  pragma warning(disable:4799)
31 /*Thank you Microsoft, I know the order of operations.*/
32 #  pragma warning(disable:4554)
33 # endif
34 /*You, too, gcc.*/
35 # if defined(__GNUC_PREREQ)
36 #  if __GNUC_PREREQ(4,2)
37 #   pragma GCC diagnostic ignored "-Wparentheses"
38 #  endif
39 # endif
40
41 /*Some assembly constructs require aligned operands.
42   The following macros are _only_ intended for structure member declarations.
43   Although they will sometimes work on stack variables, gcc will often silently
44    ignore them.
45   A separate set of macros could be made for manual stack alignment, but we
46    don't actually require it anywhere.*/
47 # if defined(OC_X86_ASM)||defined(OC_ARM_ASM)
48 #  if defined(__GNUC__)
49 #   define OC_ALIGN8(expr) expr __attribute__((aligned(8)))
50 #   define OC_ALIGN16(expr) expr __attribute__((aligned(16)))
51 #  elif defined(_MSC_VER)
52 #   define OC_ALIGN8(expr) __declspec (align(8)) expr
53 #   define OC_ALIGN16(expr) __declspec (align(16)) expr
54 #  else
55 #   error "Alignment macros required for this platform."
56 #  endif
57 # endif
58 # if !defined(OC_ALIGN8)
59 #  define OC_ALIGN8(expr) expr
60 # endif
61 # if !defined(OC_ALIGN16)
62 #  define OC_ALIGN16(expr) expr
63 # endif
64
65
66
67 /*This library's version.*/
68 # define OC_VENDOR_STRING "Xiph.Org libtheora 1.2.0alpha 20100923 (Ptalarbvorm)"
69
70 /*Theora bitstream version.*/
71 # define TH_VERSION_MAJOR (3)
72 # define TH_VERSION_MINOR (2)
73 # define TH_VERSION_SUB   (1)
74 # define TH_VERSION_CHECK(_info,_maj,_min,_sub) \
75  ((_info)->version_major>(_maj)||(_info)->version_major==(_maj)&& \
76  ((_info)->version_minor>(_min)||(_info)->version_minor==(_min)&& \
77  (_info)->version_subminor>=(_sub)))
78
79
80
81 /*A map from the index in the zig zag scan to the coefficient number in a
82    block.*/
83 extern const unsigned char OC_FZIG_ZAG[128];
84 /*A map from the coefficient number in a block to its index in the zig zag
85    scan.*/
86 extern const unsigned char OC_IZIG_ZAG[64];
87 /*A map from physical macro block ordering to bitstream macro block
88    ordering within a super block.*/
89 extern const unsigned char OC_MB_MAP[2][2];
90 /*A list of the indices in the oc_mb_map array that can be valid for each of
91    the various chroma decimation types.*/
92 extern const unsigned char OC_MB_MAP_IDXS[TH_PF_NFORMATS][12];
93 /*The number of indices in the oc_mb_map array that can be valid for each of
94    the various chroma decimation types.*/
95 extern const unsigned char OC_MB_MAP_NIDXS[TH_PF_NFORMATS];
96
97
98
99 int oc_ilog(unsigned _v);
100 void *oc_aligned_malloc(size_t _sz,size_t _align);
101 void oc_aligned_free(void *_ptr);
102 void **oc_malloc_2d(size_t _height,size_t _width,size_t _sz);
103 void **oc_calloc_2d(size_t _height,size_t _width,size_t _sz);
104 void oc_free_2d(void *_ptr);
105
106 void oc_ycbcr_buffer_flip(th_ycbcr_buffer _dst,
107  const th_ycbcr_buffer _src);
108
109 #endif