Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: source/libvpx/vpx/vp8cx.h

Issue 11555023: libvpx: Add VP9 decoder. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 13 matching lines...) Expand all
24 #define VP8CX_H 24 #define VP8CX_H
25 #include "vpx_codec_impl_top.h" 25 #include "vpx_codec_impl_top.h"
26 26
27 /*!\name Algorithm interface for VP8 27 /*!\name Algorithm interface for VP8
28 * 28 *
29 * This interface provides the capability to encode raw VP8 streams, as would 29 * This interface provides the capability to encode raw VP8 streams, as would
30 * be found in AVI files. 30 * be found in AVI files.
31 * @{ 31 * @{
32 */ 32 */
33 extern vpx_codec_iface_t vpx_codec_vp8_cx_algo; 33 extern vpx_codec_iface_t vpx_codec_vp8_cx_algo;
34 extern vpx_codec_iface_t* vpx_codec_vp8_cx(void); 34 extern vpx_codec_iface_t *vpx_codec_vp8_cx(void);
35
36 /* TODO(jkoleszar): These move to VP9 in a later patch set. */
37 extern vpx_codec_iface_t vpx_codec_vp9_cx_algo;
38 extern vpx_codec_iface_t *vpx_codec_vp9_cx(void);
39 extern vpx_codec_iface_t vpx_codec_vp9x_cx_algo;
40 extern vpx_codec_iface_t *vpx_codec_vp9x_cx(void);
41
35 /*!@} - end algorithm interface member group*/ 42 /*!@} - end algorithm interface member group*/
36 43
37 44
38 /* 45 /*
39 * Algorithm Flags 46 * Algorithm Flags
40 */ 47 */
41 48
42 /*!\brief Don't reference the last frame 49 /*!\brief Don't reference the last frame
43 * 50 *
44 * When this flag is set, the encoder will not use the last frame as a 51 * When this flag is set, the encoder will not use the last frame as a
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 #define VP8_EFLAG_NO_UPD_ENTROPY (1<<20) 121 #define VP8_EFLAG_NO_UPD_ENTROPY (1<<20)
115 122
116 123
117 /*!\brief VP8 encoder control functions 124 /*!\brief VP8 encoder control functions
118 * 125 *
119 * This set of macros define the control functions available for the VP8 126 * This set of macros define the control functions available for the VP8
120 * encoder interface. 127 * encoder interface.
121 * 128 *
122 * \sa #vpx_codec_control 129 * \sa #vpx_codec_control
123 */ 130 */
124 enum vp8e_enc_control_id 131 enum vp8e_enc_control_id {
125 { 132 VP8E_UPD_ENTROPY = 5, /**< control function to set mode of entropy update in encoder */
126 VP8E_UPD_ENTROPY = 5, /**< control function to set mode of entrop y update in encoder */ 133 VP8E_UPD_REFERENCE, /**< control function to set reference update mode in encoder */
127 VP8E_UPD_REFERENCE, /**< control function to set reference upda te mode in encoder */ 134 VP8E_USE_REFERENCE, /**< control function to set which reference frame encoder can use */
128 VP8E_USE_REFERENCE, /**< control function to set which referenc e frame encoder can use */ 135 VP8E_SET_ROI_MAP, /**< control function to pass an ROI map to e ncoder */
129 VP8E_SET_ROI_MAP, /**< control function to pass an ROI map to encoder */ 136 VP8E_SET_ACTIVEMAP, /**< control function to pass an Active map t o encoder */
130 VP8E_SET_ACTIVEMAP, /**< control function to pass an Active map to encoder */ 137 VP8E_SET_SCALEMODE = 11, /**< control function to set encoder scaling mode */
131 VP8E_SET_SCALEMODE = 11, /**< control function to set encoder scalin g mode */ 138 /*!\brief control function to set vp8 encoder cpuused
132 /*!\brief control function to set vp8 encoder cpuused 139 *
133 * 140 * Changes in this value influences, among others, the encoder's selection
134 * Changes in this value influences, among others, the encoder's selection 141 * of motion estimation methods. Values greater than 0 will increase encoder
135 * of motion estimation methods. Values greater than 0 will increase encoder 142 * speed at the expense of quality.
136 * speed at the expense of quality. 143 * The full set of adjustments can be found in
137 * The full set of adjustments can be found in 144 * onyx_if.c:vp8_set_speed_features().
138 * onyx_if.c:vp8_set_speed_features(). 145 * \todo List highlights of the changes at various levels.
139 * \todo List highlights of the changes at various levels. 146 *
140 * 147 * \note Valid range: -16..16
141 * \note Valid range: -16..16 148 */
142 */ 149 VP8E_SET_CPUUSED = 13,
143 VP8E_SET_CPUUSED = 13, 150 VP8E_SET_ENABLEAUTOALTREF, /**< control function to enable vp8 to automa tic set and use altref frame */
144 VP8E_SET_ENABLEAUTOALTREF, /**< control function to enable vp8 to auto matic set and use altref frame */ 151 VP8E_SET_NOISE_SENSITIVITY, /**< control function to set noise sensitivit y */
145 VP8E_SET_NOISE_SENSITIVITY, /**< control function to set noise sensitiv ity */ 152 VP8E_SET_SHARPNESS, /**< control function to set sharpness */
146 VP8E_SET_SHARPNESS, /**< control function to set sharpness */ 153 VP8E_SET_STATIC_THRESHOLD, /**< control function to set the threshold fo r macroblocks treated static */
147 VP8E_SET_STATIC_THRESHOLD, /**< control function to set the threshold for macroblocks treated static */ 154 VP8E_SET_TOKEN_PARTITIONS, /**< control function to set the number of to ken partitions */
148 VP8E_SET_TOKEN_PARTITIONS, /**< control function to set the number of token partitions */ 155 VP8E_GET_LAST_QUANTIZER, /**< return the quantizer chosen by the
149 VP8E_GET_LAST_QUANTIZER, /**< return the quantizer chosen by the
150 encoder for the last frame using the i nternal 156 encoder for the last frame using the i nternal
151 scale */ 157 scale */
152 VP8E_GET_LAST_QUANTIZER_64, /**< return the quantizer chosen by the 158 VP8E_GET_LAST_QUANTIZER_64, /**< return the quantizer chosen by the
153 encoder for the last frame, using the 0..63 159 encoder for the last frame, using the 0..63
154 scale as used by the rc_*_quantizer co nfig 160 scale as used by the rc_*_quantizer co nfig
155 parameters */ 161 parameters */
156 VP8E_SET_ARNR_MAXFRAMES, /**< control function to set the max number of frames blurred creating arf*/ 162 VP8E_SET_ARNR_MAXFRAMES, /**< control function to set the max number o f frames blurred creating arf*/
157 VP8E_SET_ARNR_STRENGTH , /**< control function to set the filter str ength for the arf */ 163 VP8E_SET_ARNR_STRENGTH, /**< control function to set the filter streng th for the arf */
158 VP8E_SET_ARNR_TYPE , /**< control function to set the type of fi lter to use for the arf*/ 164 VP8E_SET_ARNR_TYPE, /**< control function to set the type of filter to use for the arf*/
159 VP8E_SET_TUNING, /**< control function to set visual tuning */ 165 VP8E_SET_TUNING, /**< control function to set visual tuning */
160 /*!\brief control function to set constrained quality level 166 /*!\brief control function to set constrained quality level
161 * 167 *
162 * \attention For this value to be used vpx_codec_enc_cfg_t::g_usage must be 168 * \attention For this value to be used vpx_codec_enc_cfg_t::g_usage must be
163 * set to #VPX_CQ. 169 * set to #VPX_CQ.
164 * \note Valid range: 0..63 170 * \note Valid range: 0..63
165 */ 171 */
166 VP8E_SET_CQ_LEVEL, 172 VP8E_SET_CQ_LEVEL,
167 173
168 /*!\brief Max data rate for Intra frames 174 /*!\brief Max data rate for Intra frames
169 * 175 *
170 * This value controls additional clamping on the maximum size of a 176 * This value controls additional clamping on the maximum size of a
171 * keyframe. It is expressed as a percentage of the average 177 * keyframe. It is expressed as a percentage of the average
172 * per-frame bitrate, with the special (and default) value 0 meaning 178 * per-frame bitrate, with the special (and default) value 0 meaning
173 * unlimited, or no additional clamping beyond the codec's built-in 179 * unlimited, or no additional clamping beyond the codec's built-in
174 * algorithm. 180 * algorithm.
175 * 181 *
176 * For example, to allocate no more than 4.5 frames worth of bitrate 182 * For example, to allocate no more than 4.5 frames worth of bitrate
177 * to a keyframe, set this to 450. 183 * to a keyframe, set this to 450.
178 * 184 *
179 */ 185 */
180 VP8E_SET_MAX_INTRA_BITRATE_PCT 186 VP8E_SET_MAX_INTRA_BITRATE_PCT,
187
188
189 /* TODO(jkoleszar): Move to vp9cx.h */
190 VP9E_SET_LOSSLESS
181 }; 191 };
182 192
183 /*!\brief vpx 1-D scaling mode 193 /*!\brief vpx 1-D scaling mode
184 * 194 *
185 * This set of constants define 1-D vpx scaling modes 195 * This set of constants define 1-D vpx scaling modes
186 */ 196 */
187 typedef enum vpx_scaling_mode_1d 197 typedef enum vpx_scaling_mode_1d {
188 { 198 VP8E_NORMAL = 0,
189 VP8E_NORMAL = 0, 199 VP8E_FOURFIVE = 1,
190 VP8E_FOURFIVE = 1, 200 VP8E_THREEFIVE = 2,
191 VP8E_THREEFIVE = 2, 201 VP8E_ONETWO = 3
192 VP8E_ONETWO = 3
193 } VPX_SCALING_MODE; 202 } VPX_SCALING_MODE;
194 203
195 204
196 /*!\brief vpx region of interest map 205 /*!\brief vpx region of interest map
197 * 206 *
198 * These defines the data structures for the region of interest map 207 * These defines the data structures for the region of interest map
199 * 208 *
200 */ 209 */
201 210
202 typedef struct vpx_roi_map 211 typedef struct vpx_roi_map {
203 { 212 unsigned char *roi_map; /**< specify an id between 0 and 3 for each 16x16 region within a frame */
204 unsigned char *roi_map; /**< specify an id between 0 and 3 for each 16x 16 region within a frame */ 213 unsigned int rows; /**< number of rows */
205 unsigned int rows; /**< number of rows */ 214 unsigned int cols; /**< number of cols */
206 unsigned int cols; /**< number of cols */ 215 int delta_q[4]; /**< quantizer delta [-63, 63] off baseline for r egions with id between 0 and 3*/
207 int delta_q[4]; /**< quantizer delta [-63, 63] off baseline for regions with id between 0 and 3*/ 216 int delta_lf[4]; /**< loop filter strength delta [-63, 63] for reg ions with id between 0 and 3 */
208 int delta_lf[4]; /**< loop filter strength delta [-63, 63] for r egions with id between 0 and 3 */ 217 unsigned int static_threshold[4];/**< threshold for region to be treated as static */
209 unsigned int static_threshold[4];/**< threshold for region to be treated a s static */
210 } vpx_roi_map_t; 218 } vpx_roi_map_t;
211 219
212 /*!\brief vpx active region map 220 /*!\brief vpx active region map
213 * 221 *
214 * These defines the data structures for active region map 222 * These defines the data structures for active region map
215 * 223 *
216 */ 224 */
217 225
218 226
219 typedef struct vpx_active_map 227 typedef struct vpx_active_map {
220 { 228 unsigned char *active_map; /**< specify an on (1) or off (0) each 16x16 regio n within a frame */
221 unsigned char *active_map; /**< specify an on (1) or off (0) each 16x16 reg ion within a frame */ 229 unsigned int rows; /**< number of rows */
222 unsigned int rows; /**< number of rows */ 230 unsigned int cols; /**< number of cols */
223 unsigned int cols; /**< number of cols */
224 } vpx_active_map_t; 231 } vpx_active_map_t;
225 232
226 /*!\brief vpx image scaling mode 233 /*!\brief vpx image scaling mode
227 * 234 *
228 * This defines the data structure for image scaling mode 235 * This defines the data structure for image scaling mode
229 * 236 *
230 */ 237 */
231 typedef struct vpx_scaling_mode 238 typedef struct vpx_scaling_mode {
232 { 239 VPX_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */
233 VPX_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */ 240 VPX_SCALING_MODE v_scaling_mode; /**< vertical scaling mode */
234 VPX_SCALING_MODE v_scaling_mode; /**< vertical scaling mode */
235 } vpx_scaling_mode_t; 241 } vpx_scaling_mode_t;
236 242
237 /*!\brief VP8 token partition mode 243 /*!\brief VP8 token partition mode
238 * 244 *
239 * This defines VP8 partitioning mode for compressed data, i.e., the number of 245 * This defines VP8 partitioning mode for compressed data, i.e., the number of
240 * sub-streams in the bitstream. Used for parallelized decoding. 246 * sub-streams in the bitstream. Used for parallelized decoding.
241 * 247 *
242 */ 248 */
243 249
244 typedef enum 250 typedef enum {
245 { 251 VP8_ONE_TOKENPARTITION = 0,
246 VP8_ONE_TOKENPARTITION = 0, 252 VP8_TWO_TOKENPARTITION = 1,
247 VP8_TWO_TOKENPARTITION = 1, 253 VP8_FOUR_TOKENPARTITION = 2,
248 VP8_FOUR_TOKENPARTITION = 2, 254 VP8_EIGHT_TOKENPARTITION = 3
249 VP8_EIGHT_TOKENPARTITION = 3
250 } vp8e_token_partitions; 255 } vp8e_token_partitions;
251 256
252 257
253 /*!\brief VP8 model tuning parameters 258 /*!\brief VP8 model tuning parameters
254 * 259 *
255 * Changes the encoder to tune for certain types of input material. 260 * Changes the encoder to tune for certain types of input material.
256 * 261 *
257 */ 262 */
258 typedef enum 263 typedef enum {
259 { 264 VP8_TUNE_PSNR,
260 VP8_TUNE_PSNR, 265 VP8_TUNE_SSIM
261 VP8_TUNE_SSIM
262 } vp8e_tuning; 266 } vp8e_tuning;
263 267
264 268
265 /*!\brief VP8 encoder control function parameter type 269 /*!\brief VP8 encoder control function parameter type
266 * 270 *
267 * Defines the data types that VP8E control functions take. Note that 271 * Defines the data types that VP8E control functions take. Note that
268 * additional common controls are defined in vp8.h 272 * additional common controls are defined in vp8.h
269 * 273 *
270 */ 274 */
271 275
(...skipping 10 matching lines...) Expand all
282 VPX_CTRL_USE_TYPE(VP8E_SET_SCALEMODE, vpx_scaling_mode_t *) 286 VPX_CTRL_USE_TYPE(VP8E_SET_SCALEMODE, vpx_scaling_mode_t *)
283 287
284 VPX_CTRL_USE_TYPE(VP8E_SET_CPUUSED, int) 288 VPX_CTRL_USE_TYPE(VP8E_SET_CPUUSED, int)
285 VPX_CTRL_USE_TYPE(VP8E_SET_ENABLEAUTOALTREF, unsigned int) 289 VPX_CTRL_USE_TYPE(VP8E_SET_ENABLEAUTOALTREF, unsigned int)
286 VPX_CTRL_USE_TYPE(VP8E_SET_NOISE_SENSITIVITY, unsigned int) 290 VPX_CTRL_USE_TYPE(VP8E_SET_NOISE_SENSITIVITY, unsigned int)
287 VPX_CTRL_USE_TYPE(VP8E_SET_SHARPNESS, unsigned int) 291 VPX_CTRL_USE_TYPE(VP8E_SET_SHARPNESS, unsigned int)
288 VPX_CTRL_USE_TYPE(VP8E_SET_STATIC_THRESHOLD, unsigned int) 292 VPX_CTRL_USE_TYPE(VP8E_SET_STATIC_THRESHOLD, unsigned int)
289 VPX_CTRL_USE_TYPE(VP8E_SET_TOKEN_PARTITIONS, int) /* vp8e_token_partitions */ 293 VPX_CTRL_USE_TYPE(VP8E_SET_TOKEN_PARTITIONS, int) /* vp8e_token_partitions */
290 294
291 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_MAXFRAMES, unsigned int) 295 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_MAXFRAMES, unsigned int)
292 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_STRENGTH , unsigned int) 296 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_STRENGTH, unsigned int)
293 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_TYPE , unsigned int) 297 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_TYPE, unsigned int)
294 VPX_CTRL_USE_TYPE(VP8E_SET_TUNING, int) /* vp8e_tuning */ 298 VPX_CTRL_USE_TYPE(VP8E_SET_TUNING, int) /* vp8e_tuning */
295 VPX_CTRL_USE_TYPE(VP8E_SET_CQ_LEVEL , unsigned int) 299 VPX_CTRL_USE_TYPE(VP8E_SET_CQ_LEVEL, unsigned int)
296 300
297 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER, int *) 301 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER, int *)
298 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER_64, int *) 302 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER_64, int *)
299 303
300 VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTRA_BITRATE_PCT, unsigned int) 304 VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
301 305
306 VPX_CTRL_USE_TYPE(VP9E_SET_LOSSLESS, unsigned int)
302 307
303 /*! @} - end defgroup vp8_encoder */ 308 /*! @} - end defgroup vp8_encoder */
304 #include "vpx_codec_impl_bottom.h" 309 #include "vpx_codec_impl_bottom.h"
305 #endif 310 #endif
OLDNEW
« libvpx.gyp ('K') | « source/libvpx/vpx/vp8.h ('k') | source/libvpx/vpx/vp8dx.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698