WebM Codec SDK
vp8cx.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3  *
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
6  * tree. An additional intellectual property rights grant can be found
7  * in the file PATENTS. All contributing project authors may
8  * be found in the AUTHORS file in the root of the source tree.
9  */
10 #ifndef VPX_VP8CX_H_
11 #define VPX_VP8CX_H_
12 
18 #include "./vp8.h"
19 #include "./vpx_encoder.h"
20 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
35 extern vpx_codec_iface_t vpx_codec_vp8_cx_algo;
36 extern vpx_codec_iface_t *vpx_codec_vp8_cx(void);
44 extern vpx_codec_iface_t vpx_codec_vp9_cx_algo;
45 extern vpx_codec_iface_t *vpx_codec_vp9_cx(void);
49 /*
50  * Algorithm Flags
51  */
52 
59 #define VP8_EFLAG_NO_REF_LAST (1<<16)
60 
61 
68 #define VP8_EFLAG_NO_REF_GF (1<<17)
69 
70 
77 #define VP8_EFLAG_NO_REF_ARF (1<<21)
78 
79 
85 #define VP8_EFLAG_NO_UPD_LAST (1<<18)
86 
87 
93 #define VP8_EFLAG_NO_UPD_GF (1<<22)
94 
95 
101 #define VP8_EFLAG_NO_UPD_ARF (1<<23)
102 
103 
109 #define VP8_EFLAG_FORCE_GF (1<<19)
110 
111 
117 #define VP8_EFLAG_FORCE_ARF (1<<24)
118 
119 
125 #define VP8_EFLAG_NO_UPD_ENTROPY (1<<20)
126 
127 
141 
147 
153 
159 
165 
171 
184 
190 
199 
205 
211 
217 
225 
234 
240 
246 
249 
255 
265 
280 
286 
301 
316 
327 
333 
348 
371 
391 
405 
418 
433 
441 
450 
451 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
452 
458  VP9E_SET_SVC_PARAMETERS,
459 #endif
460 
469 
478 
479 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
480 
486  VP9E_GET_SVC_LAYER_ID,
487 
494  VP9E_REGISTER_CX_CALLBACK,
495 #endif
496 
511 };
512 
517 typedef enum vpx_scaling_mode_1d {
518  VP8E_NORMAL = 0,
519  VP8E_FOURFIVE = 1,
520  VP8E_THREEFIVE = 2,
521  VP8E_ONETWO = 3
523 
524 
531 typedef struct vpx_roi_map {
533  unsigned char *roi_map;
534  unsigned int rows;
535  unsigned int cols;
536  // TODO(paulwilkins): broken for VP9 which has 8 segments
537  // q and loop filter deltas for each segment
538  // (see MAX_MB_SEGMENTS)
539  int delta_q[4];
540  int delta_lf[4];
542  unsigned int static_threshold[4];
543 } vpx_roi_map_t;
544 
552 typedef struct vpx_active_map {
553  unsigned char *active_map;
554  unsigned int rows;
555  unsigned int cols;
557 
563 typedef struct vpx_scaling_mode {
567 
575 typedef enum {
576  VP8_ONE_TOKENPARTITION = 0,
577  VP8_TWO_TOKENPARTITION = 1,
578  VP8_FOUR_TOKENPARTITION = 2,
579  VP8_EIGHT_TOKENPARTITION = 3
581 
583 typedef enum {
584  VP9E_CONTENT_DEFAULT,
585  VP9E_CONTENT_SCREEN,
586  VP9E_CONTENT_INVALID
588 
594 typedef enum {
595  VP8_TUNE_PSNR,
596  VP8_TUNE_SSIM
597 } vp8e_tuning;
598 
599 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
600 
607 typedef struct vpx_svc_layer_id {
608  int spatial_layer_id;
609  int temporal_layer_id;
611 #else
612 
619 typedef struct vpx_svc_layer_id {
622 #endif
623 
632 /* These controls have been deprecated in favor of the flags parameter to
633  * vpx_codec_encode(). See the definition of VP8_EFLAG_* above.
634  */
638 
644 
646 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
647 VPX_CTRL_USE_TYPE(VP9E_SET_SVC_PARAMETERS, void *)
648 VPX_CTRL_USE_TYPE(VP9E_REGISTER_CX_CALLBACK, void *)
649 #endif
651 
657 VPX_CTRL_USE_TYPE(VP8E_SET_TOKEN_PARTITIONS, int) /* vp8e_token_partitions */
658 
662 VPX_CTRL_USE_TYPE(VP8E_SET_TUNING, int) /* vp8e_tuning */
664 
667 
670 #if VPX_ENCODER_ABI_VERSION > (4 + VPX_CODEC_ABI_VERSION)
671 VPX_CTRL_USE_TYPE(VP9E_GET_SVC_LAYER_ID, vpx_svc_layer_id_t *)
672 #endif
673 
675 VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTER_BITRATE_PCT, unsigned int)
676 
678 
680 
682 
684 
685 VPX_CTRL_USE_TYPE(VP9E_SET_AQ_MODE, unsigned int)
686 
688 
690 
691 VPX_CTRL_USE_TYPE(VP9E_SET_TUNE_CONTENT, int) /* vp9e_tune_content */
692 
695 #ifdef __cplusplus
696 } // extern "C"
697 #endif
698 
699 #endif // VPX_VP8CX_H_
struct vpx_codec_iface vpx_codec_iface_t
Codec interface structure.
Definition: vpx_codec.h:173
unsigned char * roi_map
Definition: vp8cx.h:533
Codec control function to set encoder internal speed settings.
Definition: vp8cx.h:183
struct vpx_active_map vpx_active_map_t
vpx active region map
Describes the encoder algorithm interface to applications.
unsigned int cols
Definition: vp8cx.h:555
vp8e_enc_control_id
VPx encoder control functions.
Definition: vp8cx.h:135
Codec control function to set reference update mode in encoder.
Definition: vp8cx.h:146
Codec control function to set content type.
Definition: vp8cx.h:477
Codec control function to set noise sensitivity.
Definition: vp8cx.h:440
enum vpx_scaling_mode_1d VPX_SCALING_MODE
vpx 1-D scaling mode
unsigned int cols
Definition: vp8cx.h:535
Codec control function to set reference and update frame flags.
Definition: vp8cx.h:285
Codec control function to set encoder scaling mode.
Definition: vp8cx.h:170
VPX_SCALING_MODE v_scaling_mode
Definition: vp8cx.h:565
vp8e_token_partitions
VP8 token partition mode.
Definition: vp8cx.h:575
Codec control function to pass an ROI map to encoder.
Definition: vp8cx.h:158
Codec control function to set visual tuning.
Definition: vp8cx.h:254
Codec control function to set constrained quality level.
Definition: vp8cx.h:264
Definition: vp8cx.h:248
Codec control function to set Max data rate for Intra frames.
Definition: vp8cx.h:279
Codec control function to set number of tile columns.
Definition: vp8cx.h:370
#define VPX_CTRL_USE_TYPE(id, typ)
vpx_codec_control type definition macro
Definition: vpx_codec.h:423
unsigned int static_threshold[4]
Definition: vp8cx.h:542
Codec control function to set adaptive quantization mode.
Definition: vp8cx.h:417
Codec control function to set color space info.
Definition: vp8cx.h:510
Codec control function to set lossless encoding mode.
Definition: vp8cx.h:347
Codec control function to get last quantizer chosen by the encoder.
Definition: vp8cx.h:233
vp9 svc layer parameters
Definition: vp8cx.h:619
Codec control function to set the temporal layer id.
Definition: vp8cx.h:326
Codec control function to set the number of token partitions.
Definition: vp8cx.h:216
control function to set noise sensitivity
Definition: vp8cx.h:198
Boost percentage for Golden Frame in CBR mode.
Definition: vp8cx.h:315
int delta_lf[4]
Definition: vp8cx.h:540
#define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ)
vpx_codec_control deprecated type definition macro
Definition: vpx_codec.h:450
Codec control function to set which reference frame encoder can use.
Definition: vp8cx.h:152
unsigned char * active_map
Definition: vp8cx.h:553
Codec control function to set encoder screen content mode.
Definition: vp8cx.h:332
unsigned int rows
Definition: vp8cx.h:554
Codec control function to set the max no of frames to create arf.
Definition: vp8cx.h:239
int temporal_layer_id
Definition: vp8cx.h:620
struct vpx_scaling_mode vpx_scaling_mode_t
vpx image scaling mode
Codec control function to set the filter strength for the arf.
Definition: vp8cx.h:245
Codec control function to enable/disable periodic Q boost.
Definition: vp8cx.h:432
Provides controls common to both the VP8 encoder and decoder.
Codec control function to set mode of entropy update in encoder.
Definition: vp8cx.h:140
struct vpx_svc_layer_id vpx_svc_layer_id_t
vp9 svc layer parameters
Codec control function to get last quantizer chosen by the encoder.
Definition: vp8cx.h:224
Codec control function to enable automatic set and use alf frames.
Definition: vp8cx.h:189
VPX_SCALING_MODE h_scaling_mode
Definition: vp8cx.h:564
Codec control function to turn on/off SVC in encoder.
Definition: vp8cx.h:449
vpx active region map
Definition: vp8cx.h:552
struct vpx_roi_map vpx_roi_map_t
vpx region of interest map
unsigned int rows
Definition: vp8cx.h:534
Codec control function to enable frame parallel decoding feature.
Definition: vp8cx.h:404
Codec control function to set max data rate for Inter frames.
Definition: vp8cx.h:300
Codec control function to set the threshold for MBs treated static.
Definition: vp8cx.h:210
vpx_scaling_mode_1d
vpx 1-D scaling mode
Definition: vp8cx.h:517
Codec control function to set number of tile rows.
Definition: vp8cx.h:390
vp8e_tuning
VP8 model tuning parameters.
Definition: vp8cx.h:594
Codec control function to set sharpness.
Definition: vp8cx.h:204
vpx region of interest map
Definition: vp8cx.h:531
int delta_q[4]
Definition: vp8cx.h:539
vpx image scaling mode
Definition: vp8cx.h:563
Codec control function to set svc layer for spatial and temporal.
Definition: vp8cx.h:468
Codec control function to pass an Active map to encoder.
Definition: vp8cx.h:164
vp9e_tune_content
Definition: vp8cx.h:583