00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef VPX_VP8CX_H_
00011 #define VPX_VP8CX_H_
00012
00018 #include "./vp8.h"
00019 #include "./vpx_encoder.h"
00020
00026 #ifdef __cplusplus
00027 extern "C" {
00028 #endif
00029
00035 extern vpx_codec_iface_t vpx_codec_vp8_cx_algo;
00036 extern vpx_codec_iface_t *vpx_codec_vp8_cx(void);
00044 extern vpx_codec_iface_t vpx_codec_vp9_cx_algo;
00045 extern vpx_codec_iface_t *vpx_codec_vp9_cx(void);
00048
00049
00050
00051
00058 #define VP8_EFLAG_NO_REF_LAST (1 << 16)
00059
00066 #define VP8_EFLAG_NO_REF_GF (1 << 17)
00067
00074 #define VP8_EFLAG_NO_REF_ARF (1 << 21)
00075
00081 #define VP8_EFLAG_NO_UPD_LAST (1 << 18)
00082
00088 #define VP8_EFLAG_NO_UPD_GF (1 << 22)
00089
00095 #define VP8_EFLAG_NO_UPD_ARF (1 << 23)
00096
00102 #define VP8_EFLAG_FORCE_GF (1 << 19)
00103
00109 #define VP8_EFLAG_FORCE_ARF (1 << 24)
00110
00116 #define VP8_EFLAG_NO_UPD_ENTROPY (1 << 20)
00117
00125 enum vp8e_enc_control_id {
00130 VP8E_SET_ROI_MAP = 8,
00131
00136 VP8E_SET_ACTIVEMAP,
00137
00142 VP8E_SET_SCALEMODE = 11,
00143
00155 VP8E_SET_CPUUSED = 13,
00156
00161 VP8E_SET_ENABLEAUTOALTREF,
00162
00170 VP8E_SET_NOISE_SENSITIVITY,
00171
00176 VP8E_SET_SHARPNESS,
00177
00182 VP8E_SET_STATIC_THRESHOLD,
00183
00188 VP8E_SET_TOKEN_PARTITIONS,
00189
00196 VP8E_GET_LAST_QUANTIZER,
00197
00205 VP8E_GET_LAST_QUANTIZER_64,
00206
00211 VP8E_SET_ARNR_MAXFRAMES,
00212
00217 VP8E_SET_ARNR_STRENGTH,
00218
00220 VP8E_SET_ARNR_TYPE,
00221
00226 VP8E_SET_TUNING,
00227
00236 VP8E_SET_CQ_LEVEL,
00237
00251 VP8E_SET_MAX_INTRA_BITRATE_PCT,
00252
00257 VP8E_SET_FRAME_FLAGS,
00258
00272 VP9E_SET_MAX_INTER_BITRATE_PCT,
00273
00287 VP9E_SET_GF_CBR_BOOST_PCT,
00288
00298 VP8E_SET_TEMPORAL_LAYER_ID,
00299
00306 VP8E_SET_SCREEN_CONTENT_MODE,
00307
00321 VP9E_SET_LOSSLESS,
00322
00344 VP9E_SET_TILE_COLUMNS,
00345
00364 VP9E_SET_TILE_ROWS,
00365
00378 VP9E_SET_FRAME_PARALLEL_DECODING,
00379
00391 VP9E_SET_AQ_MODE,
00392
00406 VP9E_SET_FRAME_PERIODIC_BOOST,
00407
00414 VP9E_SET_NOISE_SENSITIVITY,
00415
00423 VP9E_SET_SVC,
00424
00431 VP9E_SET_SVC_PARAMETERS,
00432
00440 VP9E_SET_SVC_LAYER_ID,
00441
00449 VP9E_SET_TUNE_CONTENT,
00450
00457 VP9E_GET_SVC_LAYER_ID,
00458
00465 VP9E_REGISTER_CX_CALLBACK,
00466
00480 VP9E_SET_COLOR_SPACE,
00481
00492 VP9E_SET_TEMPORAL_LAYERING_MODE,
00493
00500 VP9E_SET_MIN_GF_INTERVAL,
00501
00508 VP9E_SET_MAX_GF_INTERVAL,
00509
00514 VP9E_GET_ACTIVEMAP,
00515
00523 VP9E_SET_COLOR_RANGE,
00524
00531 VP9E_SET_SVC_REF_FRAME_CONFIG,
00532
00539 VP9E_SET_RENDER_SIZE,
00540
00548 VP9E_SET_TARGET_LEVEL,
00549
00554 VP9E_GET_LEVEL,
00555
00564 VP9E_SET_ALT_REF_AQ,
00565
00579 VP8E_SET_GF_CBR_BOOST_PCT,
00580 };
00581
00586 typedef enum vpx_scaling_mode_1d {
00587 VP8E_NORMAL = 0,
00588 VP8E_FOURFIVE = 1,
00589 VP8E_THREEFIVE = 2,
00590 VP8E_ONETWO = 3
00591 } VPX_SCALING_MODE;
00592
00599 typedef enum vp9e_temporal_layering_mode {
00603 VP9E_TEMPORAL_LAYERING_MODE_NOLAYERING = 0,
00604
00609 VP9E_TEMPORAL_LAYERING_MODE_BYPASS = 1,
00610
00613 VP9E_TEMPORAL_LAYERING_MODE_0101 = 2,
00614
00617 VP9E_TEMPORAL_LAYERING_MODE_0212 = 3
00618 } VP9E_TEMPORAL_LAYERING_MODE;
00619
00626 typedef struct vpx_roi_map {
00628 unsigned char *roi_map;
00629 unsigned int rows;
00630 unsigned int cols;
00631
00632
00633
00634 int delta_q[4];
00635 int delta_lf[4];
00637 unsigned int static_threshold[4];
00638 } vpx_roi_map_t;
00639
00646 typedef struct vpx_active_map {
00648 unsigned char *active_map;
00649 unsigned int rows;
00650 unsigned int cols;
00651 } vpx_active_map_t;
00652
00658 typedef struct vpx_scaling_mode {
00659 VPX_SCALING_MODE h_scaling_mode;
00660 VPX_SCALING_MODE v_scaling_mode;
00661 } vpx_scaling_mode_t;
00662
00670 typedef enum {
00671 VP8_ONE_TOKENPARTITION = 0,
00672 VP8_TWO_TOKENPARTITION = 1,
00673 VP8_FOUR_TOKENPARTITION = 2,
00674 VP8_EIGHT_TOKENPARTITION = 3
00675 } vp8e_token_partitions;
00676
00678 typedef enum {
00679 VP9E_CONTENT_DEFAULT,
00680 VP9E_CONTENT_SCREEN,
00681 VP9E_CONTENT_INVALID
00682 } vp9e_tune_content;
00683
00689 typedef enum { VP8_TUNE_PSNR, VP8_TUNE_SSIM } vp8e_tuning;
00690
00698 typedef struct vpx_svc_layer_id {
00699 int spatial_layer_id;
00700 int temporal_layer_id;
00701 } vpx_svc_layer_id_t;
00702
00711 typedef struct vpx_svc_ref_frame_config {
00712 int frame_flags[VPX_TS_MAX_LAYERS];
00713 int lst_fb_idx[VPX_TS_MAX_LAYERS];
00714 int gld_fb_idx[VPX_TS_MAX_LAYERS];
00715 int alt_fb_idx[VPX_TS_MAX_LAYERS];
00716 } vpx_svc_ref_frame_config_t;
00717
00726 VPX_CTRL_USE_TYPE(VP8E_SET_FRAME_FLAGS, int)
00727 #define VPX_CTRL_VP8E_SET_FRAME_FLAGS
00728 VPX_CTRL_USE_TYPE(VP8E_SET_TEMPORAL_LAYER_ID, int)
00729 #define VPX_CTRL_VP8E_SET_TEMPORAL_LAYER_ID
00730 VPX_CTRL_USE_TYPE(VP8E_SET_ROI_MAP, vpx_roi_map_t *)
00731 #define VPX_CTRL_VP8E_SET_ROI_MAP
00732 VPX_CTRL_USE_TYPE(VP8E_SET_ACTIVEMAP, vpx_active_map_t *)
00733 #define VPX_CTRL_VP8E_SET_ACTIVEMAP
00734 VPX_CTRL_USE_TYPE(VP8E_SET_SCALEMODE, vpx_scaling_mode_t *)
00735 #define VPX_CTRL_VP8E_SET_SCALEMODE
00736
00737 VPX_CTRL_USE_TYPE(VP9E_SET_SVC, int)
00738 #define VPX_CTRL_VP9E_SET_SVC
00739 VPX_CTRL_USE_TYPE(VP9E_SET_SVC_PARAMETERS, void *)
00740 #define VPX_CTRL_VP9E_SET_SVC_PARAMETERS
00741 VPX_CTRL_USE_TYPE(VP9E_REGISTER_CX_CALLBACK, void *)
00742 #define VPX_CTRL_VP9E_REGISTER_CX_CALLBACK
00743 VPX_CTRL_USE_TYPE(VP9E_SET_SVC_LAYER_ID, vpx_svc_layer_id_t *)
00744 #define VPX_CTRL_VP9E_SET_SVC_LAYER_ID
00745
00746 VPX_CTRL_USE_TYPE(VP8E_SET_CPUUSED, int)
00747 #define VPX_CTRL_VP8E_SET_CPUUSED
00748 VPX_CTRL_USE_TYPE(VP8E_SET_ENABLEAUTOALTREF, unsigned int)
00749 #define VPX_CTRL_VP8E_SET_ENABLEAUTOALTREF
00750 VPX_CTRL_USE_TYPE(VP8E_SET_NOISE_SENSITIVITY, unsigned int)
00751 #define VPX_CTRL_VP8E_SET_NOISE_SENSITIVITY
00752 VPX_CTRL_USE_TYPE(VP8E_SET_SHARPNESS, unsigned int)
00753 #define VPX_CTRL_VP8E_SET_SHARPNESS
00754 VPX_CTRL_USE_TYPE(VP8E_SET_STATIC_THRESHOLD, unsigned int)
00755 #define VPX_CTRL_VP8E_SET_STATIC_THRESHOLD
00756 VPX_CTRL_USE_TYPE(VP8E_SET_TOKEN_PARTITIONS, int)
00757 #define VPX_CTRL_VP8E_SET_TOKEN_PARTITIONS
00758
00759 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_MAXFRAMES, unsigned int)
00760 #define VPX_CTRL_VP8E_SET_ARNR_MAXFRAMES
00761 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_STRENGTH, unsigned int)
00762 #define VPX_CTRL_VP8E_SET_ARNR_STRENGTH
00763 VPX_CTRL_USE_TYPE_DEPRECATED(VP8E_SET_ARNR_TYPE, unsigned int)
00764 #define VPX_CTRL_VP8E_SET_ARNR_TYPE
00765 VPX_CTRL_USE_TYPE(VP8E_SET_TUNING, int)
00766 #define VPX_CTRL_VP8E_SET_TUNING
00767 VPX_CTRL_USE_TYPE(VP8E_SET_CQ_LEVEL, unsigned int)
00768 #define VPX_CTRL_VP8E_SET_CQ_LEVEL
00769
00770 VPX_CTRL_USE_TYPE(VP9E_SET_TILE_COLUMNS, int)
00771 #define VPX_CTRL_VP9E_SET_TILE_COLUMNS
00772 VPX_CTRL_USE_TYPE(VP9E_SET_TILE_ROWS, int)
00773 #define VPX_CTRL_VP9E_SET_TILE_ROWS
00774
00775 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER, int *)
00776 #define VPX_CTRL_VP8E_GET_LAST_QUANTIZER
00777 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER_64, int *)
00778 #define VPX_CTRL_VP8E_GET_LAST_QUANTIZER_64
00779 VPX_CTRL_USE_TYPE(VP9E_GET_SVC_LAYER_ID, vpx_svc_layer_id_t *)
00780 #define VPX_CTRL_VP9E_GET_SVC_LAYER_ID
00781
00782 VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
00783 #define VPX_CTRL_VP8E_SET_MAX_INTRA_BITRATE_PCT
00784 VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTER_BITRATE_PCT, unsigned int)
00785 #define VPX_CTRL_VP8E_SET_MAX_INTER_BITRATE_PCT
00786
00787 VPX_CTRL_USE_TYPE(VP8E_SET_GF_CBR_BOOST_PCT, unsigned int)
00788 #define VPX_CTRL_VP8E_SET_GF_CBR_BOOST_PCT
00789
00790 VPX_CTRL_USE_TYPE(VP8E_SET_SCREEN_CONTENT_MODE, unsigned int)
00791 #define VPX_CTRL_VP8E_SET_SCREEN_CONTENT_MODE
00792
00793 VPX_CTRL_USE_TYPE(VP9E_SET_GF_CBR_BOOST_PCT, unsigned int)
00794 #define VPX_CTRL_VP9E_SET_GF_CBR_BOOST_PCT
00795
00796 VPX_CTRL_USE_TYPE(VP9E_SET_LOSSLESS, unsigned int)
00797 #define VPX_CTRL_VP9E_SET_LOSSLESS
00798
00799 VPX_CTRL_USE_TYPE(VP9E_SET_FRAME_PARALLEL_DECODING, unsigned int)
00800 #define VPX_CTRL_VP9E_SET_FRAME_PARALLEL_DECODING
00801
00802 VPX_CTRL_USE_TYPE(VP9E_SET_AQ_MODE, unsigned int)
00803 #define VPX_CTRL_VP9E_SET_AQ_MODE
00804
00805 VPX_CTRL_USE_TYPE(VP9E_SET_ALT_REF_AQ, int)
00806 #define VPX_CTRL_VP9E_SET_ALT_REF_AQ
00807
00808 VPX_CTRL_USE_TYPE(VP9E_SET_FRAME_PERIODIC_BOOST, unsigned int)
00809 #define VPX_CTRL_VP9E_SET_FRAME_PERIODIC_BOOST
00810
00811 VPX_CTRL_USE_TYPE(VP9E_SET_NOISE_SENSITIVITY, unsigned int)
00812 #define VPX_CTRL_VP9E_SET_NOISE_SENSITIVITY
00813
00814 VPX_CTRL_USE_TYPE(VP9E_SET_TUNE_CONTENT, int)
00815 #define VPX_CTRL_VP9E_SET_TUNE_CONTENT
00816
00817 VPX_CTRL_USE_TYPE(VP9E_SET_COLOR_SPACE, int)
00818 #define VPX_CTRL_VP9E_SET_COLOR_SPACE
00819
00820 VPX_CTRL_USE_TYPE(VP9E_SET_MIN_GF_INTERVAL, unsigned int)
00821 #define VPX_CTRL_VP9E_SET_MIN_GF_INTERVAL
00822
00823 VPX_CTRL_USE_TYPE(VP9E_SET_MAX_GF_INTERVAL, unsigned int)
00824 #define VPX_CTRL_VP9E_SET_MAX_GF_INTERVAL
00825
00826 VPX_CTRL_USE_TYPE(VP9E_GET_ACTIVEMAP, vpx_active_map_t *)
00827 #define VPX_CTRL_VP9E_GET_ACTIVEMAP
00828
00829 VPX_CTRL_USE_TYPE(VP9E_SET_COLOR_RANGE, int)
00830 #define VPX_CTRL_VP9E_SET_COLOR_RANGE
00831
00832 VPX_CTRL_USE_TYPE(VP9E_SET_SVC_REF_FRAME_CONFIG, vpx_svc_ref_frame_config_t *)
00833 #define VPX_CTRL_VP9E_SET_SVC_REF_FRAME_CONFIG
00834
00835 VPX_CTRL_USE_TYPE(VP9E_SET_RENDER_SIZE, int *)
00836 #define VPX_CTRL_VP9E_SET_RENDER_SIZE
00837
00838 VPX_CTRL_USE_TYPE(VP9E_SET_TARGET_LEVEL, unsigned int)
00839 #define VPX_CTRL_VP9E_SET_TARGET_LEVEL
00840
00841 VPX_CTRL_USE_TYPE(VP9E_GET_LEVEL, int *)
00842 #define VPX_CTRL_VP9E_GET_LEVEL
00843
00846 #ifdef __cplusplus
00847 }
00848 #endif
00849
00850 #endif // VPX_VP8CX_H_