123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846 |
- #if !defined(_encint_H)
- # define _encint_H (1)
- # include "theora/theoraenc.h"
- # include "state.h"
- # include "mathops.h"
- # include "enquant.h"
- # include "huffenc.h"
- typedef oc_mv oc_mv2[2];
- typedef struct oc_enc_opt_vtable oc_enc_opt_vtable;
- typedef struct oc_enc_opt_data oc_enc_opt_data;
- typedef struct oc_mb_enc_info oc_mb_enc_info;
- typedef struct oc_mode_scheme_chooser oc_mode_scheme_chooser;
- typedef struct oc_fr_state oc_fr_state;
- typedef struct oc_qii_state oc_qii_state;
- typedef struct oc_enc_pipeline_state oc_enc_pipeline_state;
- typedef struct oc_mode_rd oc_mode_rd;
- typedef struct oc_iir_filter oc_iir_filter;
- typedef struct oc_frame_metrics oc_frame_metrics;
- typedef struct oc_rc_state oc_rc_state;
- typedef struct th_enc_ctx oc_enc_ctx;
- typedef struct oc_token_checkpoint oc_token_checkpoint;
- # if defined(OC_X86_ASM)
- # if defined(_MSC_VER)
- # include "x86_vc/x86enc.h"
- # else
- # include "x86/x86enc.h"
- # endif
- # endif
- # if defined(OC_ARM_ASM)
- # include "arm/armenc.h"
- # endif
- # if !defined(oc_enc_accel_init)
- # define oc_enc_accel_init oc_enc_accel_init_c
- # endif
- # if defined(OC_ENC_USE_VTABLE)
- # if !defined(oc_enc_frag_sub)
- # define oc_enc_frag_sub(_enc,_diff,_src,_ref,_ystride) \
- ((*(_enc)->opt_vtable.frag_sub)(_diff,_src,_ref,_ystride))
- # endif
- # if !defined(oc_enc_frag_sub_128)
- # define oc_enc_frag_sub_128(_enc,_diff,_src,_ystride) \
- ((*(_enc)->opt_vtable.frag_sub_128)(_diff,_src,_ystride))
- # endif
- # if !defined(oc_enc_frag_sad)
- # define oc_enc_frag_sad(_enc,_src,_ref,_ystride) \
- ((*(_enc)->opt_vtable.frag_sad)(_src,_ref,_ystride))
- # endif
- # if !defined(oc_enc_frag_sad_thresh)
- # define oc_enc_frag_sad_thresh(_enc,_src,_ref,_ystride,_thresh) \
- ((*(_enc)->opt_vtable.frag_sad_thresh)(_src,_ref,_ystride,_thresh))
- # endif
- # if !defined(oc_enc_frag_sad2_thresh)
- # define oc_enc_frag_sad2_thresh(_enc,_src,_ref1,_ref2,_ystride,_thresh) \
- ((*(_enc)->opt_vtable.frag_sad2_thresh)(_src,_ref1,_ref2,_ystride,_thresh))
- # endif
- # if !defined(oc_enc_frag_intra_sad)
- # define oc_enc_frag_intra_sad(_enc,_src,_ystride) \
- ((*(_enc)->opt_vtable.frag_intra_sad)(_src,_ystride))
- # endif
- # if !defined(oc_enc_frag_satd)
- # define oc_enc_frag_satd(_enc,_dc,_src,_ref,_ystride) \
- ((*(_enc)->opt_vtable.frag_satd)(_dc,_src,_ref,_ystride))
- # endif
- # if !defined(oc_enc_frag_satd2)
- # define oc_enc_frag_satd2(_enc,_dc,_src,_ref1,_ref2,_ystride) \
- ((*(_enc)->opt_vtable.frag_satd2)(_dc,_src,_ref1,_ref2,_ystride))
- # endif
- # if !defined(oc_enc_frag_intra_satd)
- # define oc_enc_frag_intra_satd(_enc,_dc,_src,_ystride) \
- ((*(_enc)->opt_vtable.frag_intra_satd)(_dc,_src,_ystride))
- # endif
- # if !defined(oc_enc_frag_ssd)
- # define oc_enc_frag_ssd(_enc,_src,_ref,_ystride) \
- ((*(_enc)->opt_vtable.frag_ssd)(_src,_ref,_ystride))
- # endif
- # if !defined(oc_enc_frag_border_ssd)
- # define oc_enc_frag_border_ssd(_enc,_src,_ref,_ystride,_mask) \
- ((*(_enc)->opt_vtable.frag_border_ssd)(_src,_ref,_ystride,_mask))
- # endif
- # if !defined(oc_enc_frag_copy2)
- # define oc_enc_frag_copy2(_enc,_dst,_src1,_src2,_ystride) \
- ((*(_enc)->opt_vtable.frag_copy2)(_dst,_src1,_src2,_ystride))
- # endif
- # if !defined(oc_enc_enquant_table_init)
- # define oc_enc_enquant_table_init(_enc,_enquant,_dequant) \
- ((*(_enc)->opt_vtable.enquant_table_init)(_enquant,_dequant))
- # endif
- # if !defined(oc_enc_enquant_table_fixup)
- # define oc_enc_enquant_table_fixup(_enc,_enquant,_nqis) \
- ((*(_enc)->opt_vtable.enquant_table_fixup)(_enquant,_nqis))
- # endif
- # if !defined(oc_enc_quantize)
- # define oc_enc_quantize(_enc,_qdct,_dct,_dequant,_enquant) \
- ((*(_enc)->opt_vtable.quantize)(_qdct,_dct,_dequant,_enquant))
- # endif
- # if !defined(oc_enc_frag_recon_intra)
- # define oc_enc_frag_recon_intra(_enc,_dst,_ystride,_residue) \
- ((*(_enc)->opt_vtable.frag_recon_intra)(_dst,_ystride,_residue))
- # endif
- # if !defined(oc_enc_frag_recon_inter)
- # define oc_enc_frag_recon_inter(_enc,_dst,_src,_ystride,_residue) \
- ((*(_enc)->opt_vtable.frag_recon_inter)(_dst,_src,_ystride,_residue))
- # endif
- # if !defined(oc_enc_fdct8x8)
- # define oc_enc_fdct8x8(_enc,_y,_x) \
- ((*(_enc)->opt_vtable.fdct8x8)(_y,_x))
- # endif
- # else
- # if !defined(oc_enc_frag_sub)
- # define oc_enc_frag_sub(_enc,_diff,_src,_ref,_ystride) \
- oc_enc_frag_sub_c(_diff,_src,_ref,_ystride)
- # endif
- # if !defined(oc_enc_frag_sub_128)
- # define oc_enc_frag_sub_128(_enc,_diff,_src,_ystride) \
- oc_enc_frag_sub_128_c(_diff,_src,_ystride)
- # endif
- # if !defined(oc_enc_frag_sad)
- # define oc_enc_frag_sad(_enc,_src,_ref,_ystride) \
- oc_enc_frag_sad_c(_src,_ref,_ystride)
- # endif
- # if !defined(oc_enc_frag_sad_thresh)
- # define oc_enc_frag_sad_thresh(_enc,_src,_ref,_ystride,_thresh) \
- oc_enc_frag_sad_thresh_c(_src,_ref,_ystride,_thresh)
- # endif
- # if !defined(oc_enc_frag_sad2_thresh)
- # define oc_enc_frag_sad2_thresh(_enc,_src,_ref1,_ref2,_ystride,_thresh) \
- oc_enc_frag_sad2_thresh_c(_src,_ref1,_ref2,_ystride,_thresh)
- # endif
- # if !defined(oc_enc_frag_intra_sad)
- # define oc_enc_frag_intra_sad(_enc,_src,_ystride) \
- oc_enc_frag_intra_sad_c(_src,_ystride)
- # endif
- # if !defined(oc_enc_frag_satd)
- # define oc_enc_frag_satd(_enc,_dc,_src,_ref,_ystride) \
- oc_enc_frag_satd_c(_dc,_src,_ref,_ystride)
- # endif
- # if !defined(oc_enc_frag_satd2)
- # define oc_enc_frag_satd2(_enc,_dc,_src,_ref1,_ref2,_ystride) \
- oc_enc_frag_satd2_c(_dc,_src,_ref1,_ref2,_ystride)
- # endif
- # if !defined(oc_enc_frag_intra_satd)
- # define oc_enc_frag_intra_satd(_enc,_dc,_src,_ystride) \
- oc_enc_frag_intra_satd_c(_dc,_src,_ystride)
- # endif
- # if !defined(oc_enc_frag_ssd)
- # define oc_enc_frag_ssd(_enc,_src,_ref,_ystride) \
- oc_enc_frag_ssd_c(_src,_ref,_ystride)
- # endif
- # if !defined(oc_enc_frag_border_ssd)
- # define oc_enc_frag_border_ssd(_enc,_src,_ref,_ystride,_mask) \
- oc_enc_frag_border_ssd_c(_src,_ref,_ystride,_mask)
- # endif
- # if !defined(oc_enc_frag_copy2)
- # define oc_enc_frag_copy2(_enc,_dst,_src1,_src2,_ystride) \
- oc_enc_frag_copy2_c(_dst,_src1,_src2,_ystride)
- # endif
- # if !defined(oc_enc_enquant_table_init)
- # define oc_enc_enquant_table_init(_enc,_enquant,_dequant) \
- oc_enc_enquant_table_init_c(_enquant,_dequant)
- # endif
- # if !defined(oc_enc_enquant_table_fixup)
- # define oc_enc_enquant_table_fixup(_enc,_enquant,_nqis) \
- oc_enc_enquant_table_fixup_c(_enquant,_nqis)
- # endif
- # if !defined(oc_enc_quantize)
- # define oc_enc_quantize(_enc,_qdct,_dct,_dequant,_enquant) \
- oc_enc_quantize_c(_qdct,_dct,_dequant,_enquant)
- # endif
- # if !defined(oc_enc_frag_recon_intra)
- # define oc_enc_frag_recon_intra(_enc,_dst,_ystride,_residue) \
- oc_frag_recon_intra_c(_dst,_ystride,_residue)
- # endif
- # if !defined(oc_enc_frag_recon_inter)
- # define oc_enc_frag_recon_inter(_enc,_dst,_src,_ystride,_residue) \
- oc_frag_recon_inter_c(_dst,_src,_ystride,_residue)
- # endif
- # if !defined(oc_enc_fdct8x8)
- # define oc_enc_fdct8x8(_enc,_y,_x) oc_enc_fdct8x8_c(_y,_x)
- # endif
- # endif
- #define OC_PACKET_EMPTY (0)
- #define OC_PACKET_READY (1)
- #define OC_SP_LEVEL_SLOW (0)
- #define OC_SP_LEVEL_EARLY_SKIP (1)
- #define OC_SP_LEVEL_FAST_ANALYSIS (2)
- #define OC_SP_LEVEL_NOSATD (3)
- #define OC_SP_LEVEL_NOMC (4)
- #define OC_SP_LEVEL_MAX (4)
- # define OC_BIT_SCALE (6)
- # define OC_RMSE_SCALE (5)
- # define OC_LOGQ_BINS (8)
- # define OC_COMP_BINS (24)
- # define OC_SAD_SHIFT (6)
- # define OC_SATD_SHIFT (9)
- # define OC_RD_SCALE_BITS (12-OC_BIT_SCALE)
- # define OC_RD_ISCALE_BITS (11)
- # if LONG_MAX>2147483647
- # define OC_RD_SCALE(_ssd,_rd_scale) \
- ((unsigned)((unsigned long)(_ssd)*(_rd_scale) \
- +((1<<OC_RD_SCALE_BITS)>>1)>>OC_RD_SCALE_BITS))
- # else
- # define OC_RD_SCALE(_ssd,_rd_scale) \
- (((_ssd)>>OC_RD_SCALE_BITS)*(_rd_scale) \
- +(((_ssd)&(1<<OC_RD_SCALE_BITS)-1)*(_rd_scale) \
- +((1<<OC_RD_SCALE_BITS)>>1)>>OC_RD_SCALE_BITS))
- # endif
- # define OC_RD_SKIP_SCALE(_ssd,_rd_scale) \
- ((_ssd)*(_rd_scale)+((1<<OC_RD_SCALE_BITS-4)>>1)>>OC_RD_SCALE_BITS-4)
- # define OC_RD_ISCALE(_lambda,_rd_iscale) \
- ((_lambda)*(_rd_iscale)+((1<<OC_RD_ISCALE_BITS)>>1)>>OC_RD_ISCALE_BITS)
- extern const unsigned char OC_MODE_BITS[2][OC_NMODES];
- extern const unsigned char OC_MV_BITS[2][64];
- extern const ogg_uint16_t OC_SB_RUN_VAL_MIN[8];
- extern const unsigned char OC_SB_RUN_CODE_NBITS[7];
- extern const unsigned char OC_BLOCK_RUN_CODE_NBITS[30];
- struct oc_enc_opt_vtable{
- void (*frag_sub)(ogg_int16_t _diff[64],const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- void (*frag_sub_128)(ogg_int16_t _diff[64],
- const unsigned char *_src,int _ystride);
- unsigned (*frag_sad)(const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- unsigned (*frag_sad_thresh)(const unsigned char *_src,
- const unsigned char *_ref,int _ystride,unsigned _thresh);
- unsigned (*frag_sad2_thresh)(const unsigned char *_src,
- const unsigned char *_ref1,const unsigned char *_ref2,int _ystride,
- unsigned _thresh);
- unsigned (*frag_intra_sad)(const unsigned char *_src,int _ystride);
- unsigned (*frag_satd)(int *_dc,const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- unsigned (*frag_satd2)(int *_dc,const unsigned char *_src,
- const unsigned char *_ref1,const unsigned char *_ref2,int _ystride);
- unsigned (*frag_intra_satd)(int *_dc,const unsigned char *_src,int _ystride);
- unsigned (*frag_ssd)(const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- unsigned (*frag_border_ssd)(const unsigned char *_src,
- const unsigned char *_ref,int _ystride,ogg_int64_t _mask);
- void (*frag_copy2)(unsigned char *_dst,
- const unsigned char *_src1,const unsigned char *_src2,int _ystride);
- void (*enquant_table_init)(void *_enquant,
- const ogg_uint16_t _dequant[64]);
- void (*enquant_table_fixup)(void *_enquant[3][3][2],int _nqis);
- int (*quantize)(ogg_int16_t _qdct[64],const ogg_int16_t _dct[64],
- const ogg_uint16_t _dequant[64],const void *_enquant);
- void (*frag_recon_intra)(unsigned char *_dst,int _ystride,
- const ogg_int16_t _residue[64]);
- void (*frag_recon_inter)(unsigned char *_dst,
- const unsigned char *_src,int _ystride,const ogg_int16_t _residue[64]);
- void (*fdct8x8)(ogg_int16_t _y[64],const ogg_int16_t _x[64]);
- };
- struct oc_enc_opt_data{
-
- size_t enquant_table_size;
-
- int enquant_table_alignment;
- };
- void oc_enc_accel_init(oc_enc_ctx *_enc);
- struct oc_mb_enc_info{
-
- unsigned cneighbors[4];
-
- unsigned pneighbors[4];
-
- unsigned char ncneighbors;
-
- unsigned char npneighbors;
-
- unsigned char refined;
-
- oc_mv2 analysis_mv[3];
-
- oc_mv unref_mv[2];
-
- oc_mv block_mv[4];
-
- oc_mv ref_mv[4];
-
- ogg_uint16_t error[2];
-
- unsigned satd[2];
-
- unsigned block_satd[4];
- };
- struct oc_mode_scheme_chooser{
-
- const unsigned char *mode_ranks[8];
-
- unsigned char scheme0_ranks[OC_NMODES];
-
- unsigned char scheme0_list[OC_NMODES];
-
- unsigned mode_counts[OC_NMODES];
-
- unsigned char scheme_list[8];
-
- ptrdiff_t scheme_bits[8];
- };
- void oc_mode_scheme_chooser_init(oc_mode_scheme_chooser *_chooser);
- struct oc_fr_state{
-
- ptrdiff_t bits;
-
- unsigned sb_partial_count:16;
-
- unsigned sb_full_count:16;
-
- unsigned b_coded_count_prev:6;
-
- signed int b_coded_prev:2;
-
- unsigned b_coded_count:6;
-
- signed int b_coded:2;
-
- unsigned b_count:5;
-
- unsigned sb_prefer_partial:1;
-
- signed int sb_partial:2;
-
- unsigned sb_bits:6;
-
- signed int sb_full:2;
- };
- struct oc_qii_state{
- ptrdiff_t bits;
- unsigned qi01_count:14;
- signed int qi01:2;
- unsigned qi12_count:14;
- signed int qi12:2;
- };
- struct oc_enc_pipeline_state{
-
- OC_ALIGN16(ogg_int16_t dct_data[64*3]);
- OC_ALIGN16(signed char bounding_values[256]);
- oc_fr_state fr[3];
- oc_qii_state qs[3];
-
- unsigned *skip_ssd[3];
-
- ptrdiff_t *coded_fragis[3];
- ptrdiff_t *uncoded_fragis[3];
- ptrdiff_t ncoded_fragis[3];
- ptrdiff_t nuncoded_fragis[3];
-
- ptrdiff_t froffset[3];
-
- int fragy0[3];
-
- int fragy_end[3];
-
- unsigned sbi0[3];
-
- unsigned sbi_end[3];
-
- int ndct_tokens1[3];
-
- int eob_run1[3];
-
- int loop_filter;
- };
- struct oc_mode_rd{
-
- ogg_int16_t rate;
-
- ogg_int16_t rmse;
- };
- # if defined(OC_COLLECT_METRICS)
- # include "collect.h"
- # endif
- struct oc_iir_filter{
- ogg_int32_t c[2];
- ogg_int64_t g;
- ogg_int32_t x[2];
- ogg_int32_t y[2];
- };
- struct oc_frame_metrics{
-
- ogg_int32_t log_scale;
-
- unsigned dup_count:31;
-
- unsigned frame_type:1;
-
- unsigned activity_avg;
- };
- struct oc_rc_state{
-
- ogg_int64_t bits_per_frame;
-
- ogg_int64_t fullness;
-
- ogg_int64_t target;
-
- ogg_int64_t max;
-
- ogg_int64_t log_npixels;
-
- unsigned exp[2];
-
- int buf_delay;
-
- ogg_uint32_t prev_drop_count;
-
- ogg_int64_t log_drop_scale;
-
- ogg_int64_t log_scale[2];
-
- ogg_int64_t log_qtarget;
-
- unsigned char drop_frames;
-
- unsigned char cap_overflow;
-
- unsigned char cap_underflow;
-
- oc_iir_filter scalefilter[2];
- int inter_count;
- int inter_delay;
- int inter_delay_target;
- oc_iir_filter vfrfilter;
-
- int twopass;
-
- unsigned char twopass_buffer[48];
-
- int twopass_buffer_bytes;
- int twopass_buffer_fill;
-
- unsigned char twopass_force_kf;
-
- oc_frame_metrics prev_metrics;
-
- oc_frame_metrics cur_metrics;
-
- oc_frame_metrics *frame_metrics;
- int nframe_metrics;
- int cframe_metrics;
-
- int frame_metrics_head;
-
- ogg_uint32_t frames_total[3];
-
- ogg_uint32_t frames_left[3];
-
- ogg_int64_t scale_sum[2];
-
- int scale_window0;
-
- int scale_window_end;
-
- int nframes[3];
-
- ogg_int64_t rate_bias;
- };
- void oc_rc_state_init(oc_rc_state *_rc,oc_enc_ctx *_enc);
- void oc_rc_state_clear(oc_rc_state *_rc);
- void oc_enc_rc_resize(oc_enc_ctx *_enc);
- int oc_enc_select_qi(oc_enc_ctx *_enc,int _qti,int _clamp);
- void oc_enc_calc_lambda(oc_enc_ctx *_enc,int _frame_type);
- int oc_enc_update_rc_state(oc_enc_ctx *_enc,
- long _bits,int _qti,int _qi,int _trial,int _droppable);
- int oc_enc_rc_2pass_out(oc_enc_ctx *_enc,unsigned char **_buf);
- int oc_enc_rc_2pass_in(oc_enc_ctx *_enc,unsigned char *_buf,size_t _bytes);
- struct th_enc_ctx{
-
- oc_theora_state state;
-
- oggpack_buffer opb;
-
- oc_mb_enc_info *mb_info;
-
- ogg_int16_t *frag_dc;
-
- unsigned *coded_mbis;
-
- size_t ncoded_mbis;
-
- int packet_state;
-
- ogg_uint32_t keyframe_frequency_force;
-
- ogg_uint32_t dup_count;
-
- ogg_uint32_t nqueued_dups;
-
- ogg_uint32_t prev_dup_count;
-
- int sp_level;
-
- unsigned char vp3_compatible;
-
- unsigned char coded_inter_frame;
-
- unsigned char prevframe_dropped;
-
- unsigned char huff_idxs[2][2][2];
-
- size_t mv_bits[2];
-
- oc_mode_scheme_chooser chooser;
-
- oc_enc_pipeline_state pipe;
-
- int mcu_nvsbs;
-
- unsigned *mcu_skip_ssd;
-
- ogg_uint16_t *mcu_rd_scale;
- ogg_uint16_t *mcu_rd_iscale;
-
- unsigned char **dct_tokens[3];
-
- ogg_uint16_t **extra_bits[3];
-
- ptrdiff_t ndct_tokens[3][64];
-
- ogg_uint16_t eob_run[3][64];
-
- unsigned char dct_token_offs[3][64];
-
- int dc_pred_last[3][4];
- #if defined(OC_COLLECT_METRICS)
-
- unsigned *frag_sad;
-
- unsigned *frag_satd;
-
- unsigned *frag_ssd;
- #endif
-
- int lambda;
-
- unsigned activity_avg;
-
- unsigned luma_avg;
-
- th_huff_code huff_codes[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS];
-
- th_quant_info qinfo;
-
- ogg_uint16_t dequant_dc[64][3][2];
-
- const ogg_uint16_t *dequant[3][3][2];
-
- void *enquant[3][3][2];
-
- void *enquant_tables[64][3][2];
-
- unsigned char *enquant_table_data;
-
- ogg_int64_t log_qavg[2][64];
-
- ogg_int16_t log_plq[64][3][2];
-
- ogg_uint16_t chroma_rd_scale[2][64][2];
-
- oc_mode_rd mode_rd[3][3][2][OC_COMP_BINS];
-
- oc_rc_state rc;
- # if defined(OC_ENC_USE_VTABLE)
-
- oc_enc_opt_vtable opt_vtable;
- # endif
-
- oc_enc_opt_data opt_data;
- };
- void oc_enc_analyze_intra(oc_enc_ctx *_enc,int _recode);
- int oc_enc_analyze_inter(oc_enc_ctx *_enc,int _allow_keyframe,int _recode);
- void oc_mcenc_search(oc_enc_ctx *_enc,int _mbi);
- void oc_mcenc_refine1mv(oc_enc_ctx *_enc,int _mbi,int _frame);
- void oc_mcenc_refine4mv(oc_enc_ctx *_enc,int _mbi);
- struct oc_token_checkpoint{
-
- unsigned char pli;
-
- unsigned char zzi;
-
- ogg_uint16_t eob_run;
-
- ptrdiff_t ndct_tokens;
- };
- void oc_enc_tokenize_start(oc_enc_ctx *_enc);
- int oc_enc_tokenize_ac(oc_enc_ctx *_enc,int _pli,ptrdiff_t _fragi,
- ogg_int16_t *_qdct_out,const ogg_int16_t *_qdct_in,
- const ogg_uint16_t *_dequant,const ogg_int16_t *_dct,
- int _zzi,oc_token_checkpoint **_stack,int _lambda,int _acmin);
- int oc_enc_tokenize_ac_fast(oc_enc_ctx *_enc,int _pli,ptrdiff_t _fragi,
- ogg_int16_t *_qdct_out,const ogg_int16_t *_qdct_in,
- const ogg_uint16_t *_dequant,const ogg_int16_t *_dct,
- int _zzi,oc_token_checkpoint **_stack,int _lambda,int _acmin);
- void oc_enc_tokenlog_rollback(oc_enc_ctx *_enc,
- const oc_token_checkpoint *_stack,int _n);
- void oc_enc_pred_dc_frag_rows(oc_enc_ctx *_enc,
- int _pli,int _fragy0,int _frag_yend);
- void oc_enc_tokenize_dc_frag_list(oc_enc_ctx *_enc,int _pli,
- const ptrdiff_t *_coded_fragis,ptrdiff_t _ncoded_fragis,
- int _prev_ndct_tokens1,int _prev_eob_run1);
- void oc_enc_tokenize_finish(oc_enc_ctx *_enc);
- int oc_state_flushheader(oc_theora_state *_state,int *_packet_state,
- oggpack_buffer *_opb,const th_quant_info *_qinfo,
- const th_huff_code _codes[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS],
- const char *_vendor,th_comment *_tc,ogg_packet *_op);
- void oc_enc_accel_init_c(oc_enc_ctx *_enc);
- void oc_enc_frag_sub_c(ogg_int16_t _diff[64],
- const unsigned char *_src,const unsigned char *_ref,int _ystride);
- void oc_enc_frag_sub_128_c(ogg_int16_t _diff[64],
- const unsigned char *_src,int _ystride);
- unsigned oc_enc_frag_sad_c(const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- unsigned oc_enc_frag_sad_thresh_c(const unsigned char *_src,
- const unsigned char *_ref,int _ystride,unsigned _thresh);
- unsigned oc_enc_frag_sad2_thresh_c(const unsigned char *_src,
- const unsigned char *_ref1,const unsigned char *_ref2,int _ystride,
- unsigned _thresh);
- unsigned oc_enc_frag_intra_sad_c(const unsigned char *_src, int _ystride);
- unsigned oc_enc_frag_satd_c(int *_dc,const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- unsigned oc_enc_frag_satd2_c(int *_dc,const unsigned char *_src,
- const unsigned char *_ref1,const unsigned char *_ref2,int _ystride);
- unsigned oc_enc_frag_intra_satd_c(int *_dc,
- const unsigned char *_src,int _ystride);
- unsigned oc_enc_frag_ssd_c(const unsigned char *_src,
- const unsigned char *_ref,int _ystride);
- unsigned oc_enc_frag_border_ssd_c(const unsigned char *_src,
- const unsigned char *_ref,int _ystride,ogg_int64_t _mask);
- void oc_enc_frag_copy2_c(unsigned char *_dst,
- const unsigned char *_src1,const unsigned char *_src2,int _ystride);
- void oc_enc_enquant_table_init_c(void *_enquant,
- const ogg_uint16_t _dequant[64]);
- void oc_enc_enquant_table_fixup_c(void *_enquant[3][3][2],int _nqis);
- int oc_enc_quantize_c(ogg_int16_t _qdct[64],const ogg_int16_t _dct[64],
- const ogg_uint16_t _dequant[64],const void *_enquant);
- void oc_enc_fdct8x8_c(ogg_int16_t _y[64],const ogg_int16_t _x[64]);
- #endif
|