daala  0.0-437-g2cb8134
Experimental Daala video codec API reference.
 All Data Structures Files Functions Variables Typedefs Macros Groups
codec.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*Daala video codec
3 Copyright (c) 2006-2013 Daala project contributors. All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 
8 - Redistributions of source code must retain the above copyright notice, this
9  list of conditions and the following disclaimer.
10 
11 - Redistributions in binary form must reproduce the above copyright notice,
12  this list of conditions and the following disclaimer in the documentation
13  and/or other materials provided with the distribution.
14 
15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
16 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
19 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
25 
48 #if !defined(_daala_codec_H)
49 # define _daala_codec_H (1)
50 /*Pick up typedefs.*/
51 # include <ogg/ogg.h>
52 
53 # if defined(__cplusplus)
54 extern "C" {
55 # endif
56 
57 /*Enable special features for gcc and compatible compilers.*/
58 # if defined(__GNUC__) && defined(__GNUC_MINOR__)
59 # define OD_GNUC_PREREQ(maj, min) \
60  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
61 # else
62 # define OD_GNUC_PREREQ(maj, min) (0)
63 # endif
64 
65 #if OD_GNUC_PREREQ(4, 0)
66 # pragma GCC visibility push(default)
67 #endif
68 
69 #if OD_GNUC_PREREQ(3, 4)
70 # define OD_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
71 #else
72 # define OD_WARN_UNUSED_RESULT
73 #endif
74 
75 #if OD_GNUC_PREREQ(3, 4)
76 # define OD_ARG_NONNULL(x) __attribute__((__nonnull__(x)))
77 #else
78 # define OD_ARG_NONNULL(x)
79 #endif
80 
81 /*TODO: remove this ugliness*/
82 # if defined(_MSC_VER)
83 # pragma warning(disable:4100 4115 4125 4127 4152 4505 4554 4711)
84 # endif
85 
89 #define OD_SUCCESS (0)
90 
91 # define OD_EFAULT (-1)
92 
93 # define OD_EINVAL (-10)
94 
95 # define OD_EBADHEADER (-20)
96 
97 # define OD_ENOTFORMAT (-21)
98 
99 # define OD_EVERSION (-22)
100 
101 # define OD_EIMPL (-23)
102 
103 # define OD_EBADPACKET (-24)
104 
111 # define OD_CS_UNSPECIFIED (0)
112 
113 # define OD_CS_ITU_REC_470M (1)
114 
115 # define OD_CS_ITU_REC_470BG (2)
116 
117 # define OD_CS_ITU_REC_790 (3)
118 
119 # define OD_CS_YCgCo (4)
120 
121 # define OD_CS_NSPACES (5)
122 
125 # define OD_NPLANES_MAX (4)
126 
127 typedef struct od_img_plane od_img_plane;
128 typedef struct od_img od_img;
129 typedef struct daala_plane_info daala_plane_info;
130 typedef struct daala_info daala_info;
131 typedef struct daala_comment daala_comment;
132 
133 const char *daala_version_string(void);
134 
143 int daala_log_init(void);
144 
146 struct od_img_plane {
147  unsigned char *data;
152  unsigned char xdec;
153  unsigned char ydec;
156  int xstride;
158  int ystride;
159 };
160 
162 struct od_img {
166  int nplanes;
168  ogg_int32_t width;
169  ogg_int32_t height;
170 };
171 
175  unsigned char xdec;
176  unsigned char ydec;
177 };
178 
180 struct daala_info {
181  unsigned char version_major;
182  unsigned char version_minor;
183  unsigned char version_sub;
185  ogg_int32_t pic_width;
186  ogg_int32_t pic_height;
187  ogg_uint32_t pixel_aspect_numerator;
188  ogg_uint32_t pixel_aspect_denominator;
189  ogg_uint32_t timebase_numerator;
190  ogg_uint32_t timebase_denominator;
191  ogg_uint32_t frame_duration;
192  int keyframe_granule_shift;
193  int nplanes;
194  daala_plane_info plane_info[OD_NPLANES_MAX];
198 };
199 
200 void daala_info_init(daala_info *info);
201 void daala_info_clear(daala_info *info);
202 
231  int comments;
234  char *vendor;
235 };
236 
237 void daala_comment_init(daala_comment *dc);
238 void daala_comment_clear(daala_comment *dc);
239 
240 ogg_int64_t daala_granule_basetime(void *encdec, ogg_int64_t granpos);
241 double daala_granule_time(void *encdec, ogg_int64_t granpos);
242 
243 # if OD_GNUC_PREREQ(4, 0)
244 # pragma GCC visibility pop
245 # endif
246 # if defined(__cplusplus)
247 }
248 # endif
249 
250 #endif
The comment information.
Definition: codec.h:225
ogg_int32_t width
Width and height in pixels.
Definition: codec.h:168
Representation of an image or video frame.
Definition: codec.h:162
int ystride
Distance in memory between two pixels vertically next to each other.
Definition: codec.h:158
#define OD_NPLANES_MAX
The maximum number of color planes allowed in a single frame.
Definition: codec.h:125
char ** user_comments
The array of comment string vectors.
Definition: codec.h:227
od_img_plane planes[OD_NPLANES_MAX]
Typical 3 planes for Y, Cb, and Cr.
Definition: codec.h:164
Representation of a single component within an image or frame.
Definition: codec.h:146
int keyframe_rate
key frame rate defined how often a key frame is emitted by encoder in number of frames.
Definition: codec.h:197
char * vendor
The null-terminated vendor string.
Definition: codec.h:234
int xstride
Distance in memory between two pixels horizontally next to each other in (is always 1 in encoder)...
Definition: codec.h:156
int comments
The total number of comment strings.
Definition: codec.h:231
unsigned char xdec
The decimation factor in x direction.
Definition: codec.h:152
int daala_log_init(void)
Initialize the logging module.
ogg_int32_t pic_width
pic_width,_height form a region of interest to encode
Definition: codec.h:185
Configuration parameters for a codec instance.
Definition: codec.h:180
int * comment_lengths
An array of the corresponding lengths of each vector, in bytes.
Definition: codec.h:229
int nplanes
Number of planes (1 for greyscale, 3 for YCbCr, 4 for YCbCr+Alpha )
Definition: codec.h:166
Subsampling factors for a plane as a power of 2.
Definition: codec.h:174