daala 0.0-1185-g52bbd43-dirty
Experimental Daala video codec API reference.
Loading...
Searching...
No Matches
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
3Copyright (c) 2006-2013 Daala project contributors. All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, 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
15THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
16AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
19FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24OF 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
51# if defined(__cplusplus)
52extern "C" {
53# endif
54
55#include "daala_integer.h"
56
57/*Enable special features for gcc and compatible compilers.*/
58# if defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
59# define OD_GNUC_PREREQ(maj, min, pat) \
60 ((__GNUC__ << 16) + (__GNUC_MINOR__ << 8) + __GNUC_PATCHLEVEL__ >= ((maj) << 16) + ((min) << 8) + pat)
61# else
62# define OD_GNUC_PREREQ(maj, min, pat) (0)
63# endif
64
65#if OD_GNUC_PREREQ(4, 0, 0)
66# pragma GCC visibility push(default)
67#endif
68
69#if OD_GNUC_PREREQ(3, 4, 0)
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, 0)
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)
91# define OD_EFAULT (-1)
93# define OD_EINVAL (-10)
95# define OD_EBADHEADER (-20)
97# define OD_ENOTFORMAT (-21)
99# define OD_EVERSION (-22)
101# define OD_EIMPL (-23)
103# define OD_EBADPACKET (-24)
111# define OD_CS_UNSPECIFIED (0)
113# define OD_CS_ITU_REC_470M (1)
115# define OD_CS_ITU_REC_470BG (2)
117# define OD_CS_ITU_REC_790 (3)
119# define OD_CS_YCgCo (4)
121# define OD_CS_NSPACES (5)
125# define OD_NPLANES_MAX (4)
126
127typedef struct od_img_plane od_img_plane;
128typedef struct od_img od_img;
130typedef struct daala_info daala_info;
131typedef struct daala_comment daala_comment;
132
133const char *daala_version_string(void);
134
144
147 unsigned char *data;
152 unsigned char xdec;
153 unsigned char ydec;
159};
160
162struct od_img {
168 int32_t width;
169 int32_t height;
170};
171
175 unsigned char xdec;
176 unsigned char ydec;
177};
178
181 unsigned char version_major;
182 unsigned char version_minor;
183 unsigned char version_sub;
185 int32_t pic_width;
186 int32_t pic_height;
187 uint32_t pixel_aspect_numerator;
188 uint32_t pixel_aspect_denominator;
189 uint32_t timebase_numerator;
190 uint32_t timebase_denominator;
191 uint32_t frame_duration;
192 int keyframe_granule_shift;
193 int nplanes;
198};
199
200void daala_info_init(daala_info *info);
201void daala_info_clear(daala_info *info);
202
234 char *vendor;
235};
236
237void daala_comment_init(daala_comment *dc);
238void daala_comment_clear(daala_comment *dc);
239
240int64_t daala_granule_basetime(void *encdec, int64_t granpos);
241double daala_granule_time(void *encdec, int64_t granpos);
250int daala_packet_isheader(const unsigned char *packet, int len);
260int daala_packet_iskeyframe(const unsigned char *packet, int len);
261
262# if OD_GNUC_PREREQ(4, 0, 0)
263# pragma GCC visibility pop
264# endif
265# if defined(__cplusplus)
266}
267# endif
268
269#endif
#define OD_NPLANES_MAX
The maximum number of color planes allowed in a single frame.
Definition: codec.h:125
int daala_packet_isheader(const unsigned char *packet, int len)
Determines whether a Daala packet is a header or not.
int daala_packet_iskeyframe(const unsigned char *packet, int len)
Determines whether a Daala packet is a key frame or not.
int daala_log_init(void)
Initialize the logging module.
The comment information.
Definition: codec.h:225
int * comment_lengths
An array of the corresponding lengths of each vector, in bytes.
Definition: codec.h:229
char * vendor
The null-terminated vendor string.
Definition: codec.h:234
char ** user_comments
The array of comment string vectors.
Definition: codec.h:227
int comments
The total number of comment strings.
Definition: codec.h:231
Configuration parameters for a codec instance.
Definition: codec.h:180
int32_t pic_width
pic_width,_height form a region of interest to encode
Definition: codec.h:185
int keyframe_rate
key frame rate defined how often a key frame is emitted by encoder in number of frames.
Definition: codec.h:197
Subsampling factors for a plane as a power of 2.
Definition: codec.h:174
Representation of a single component within an image or frame.
Definition: codec.h:146
int xstride
Distance in memory between two pixels horizontally next to each other in (is always 1 in encoder).
Definition: codec.h:156
int ystride
Distance in memory between two pixels vertically next to each other.
Definition: codec.h:158
unsigned char xdec
The decimation factor in x direction.
Definition: codec.h:152
Representation of an image or video frame.
Definition: codec.h:162
od_img_plane planes[OD_NPLANES_MAX]
Typical 3 planes for Y, Cb, and Cr.
Definition: codec.h:164
int32_t width
Width and height in pixels.
Definition: codec.h:168
int nplanes
Number of planes (1 for greyscale, 3 for YCbCr, 4 for YCbCr+Alpha )
Definition: codec.h:166