Segment Features. Removal of #ifdefs

Removal of configure #ifdefs so that segment features
always available. Removal of code supporting old
segment feature method.

Still a good deal of tidying up to do.

Change-Id: I397855f086f8c09ab1fae0a5f65d9e06d2e3e39f
This commit is contained in:
Paul Wilkins 2011-11-03 12:50:09 +00:00
Родитель 2370d440bd
Коммит a10a268e58
20 изменённых файлов: 147 добавлений и 338 удалений

Просмотреть файл

@ -104,16 +104,12 @@ typedef enum
{
SEG_LVL_ALT_Q = 0, // Use alternate Quantizer ....
SEG_LVL_ALT_LF = 1, // Use alternate loop filter value...
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
SEG_LVL_REF_FRAME = 2, // Optional Segment reference frame
SEG_LVL_MODE = 3, // Optional Segment mode
SEG_LVL_EOB = 4, // EOB end stop marker.
SEG_LVL_TRANSFORM = 5, // Block transform size.
SEG_LVL_MAX = 6 // Number of MB level features supported
#else
SEG_LVL_MAX = 2 // Number of MB level features supported
#endif
} SEG_LVL_FEATURES;
@ -261,9 +257,8 @@ typedef struct MacroBlockD
// Segment features
signed char segment_feature_data[MAX_MB_SEGMENTS][SEG_LVL_MAX];
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
unsigned int segment_feature_mask[MAX_MB_SEGMENTS];
#endif
/* mode_based Loop filter adjustment */
unsigned char mode_ref_lf_delta_enabled;

Просмотреть файл

@ -92,12 +92,6 @@ DECLARE_ALIGNED(16, short, vp8_default_zig_zag_mask[16]);
DECLARE_ALIGNED(64, short, vp8_default_zig_zag_mask_8x8[64]);//int64_t
#endif
#if CONFIG_SEGFEATURES
const int vp8_seg_feature_data_bits[SEG_LVL_MAX] = {7, 6, 4, 4, 4, 2};
#else
const int vp8_seg_feature_data_bits[SEG_LVL_MAX] = {7, 6};
#endif
/* Array indices are identical to previously-existing CONTEXT_NODE indices */
const vp8_tree_index vp8_coef_tree[ 22] = /* corresponding _CONTEXT_NODEs */

Просмотреть файл

@ -106,7 +106,5 @@ extern short vp8_default_zig_zag_mask[16];
extern DECLARE_ALIGNED(64, const int, vp8_default_zig_zag1d_8x8[64]);
extern short vp8_default_zig_zag_mask_8x8[64];//int64_t
#endif
extern const int vp8_seg_feature_data_bits[SEG_LVL_MAX];
void vp8_coef_tree_initialize(void);
#endif

Просмотреть файл

@ -14,9 +14,9 @@
#include "onyxc_int.h"
#include "vpx_mem/vpx_mem.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
//#endif
typedef unsigned char uc;
@ -221,11 +221,8 @@ void vp8_loop_filter_frame_init(VP8_COMMON *cm,
// Set the baseline filter values for each segment
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( segfeature_active( xd, seg, SEG_LVL_ALT_LF ) )
#else
if ( xd->segmentation_enabled )
#endif
{
/* Abs value */
if (xd->mb_segement_abs_delta == SEGMENT_ABSDATA)

Просмотреть файл

@ -10,9 +10,9 @@
#include "vp8/common/seg_common.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
const int segfeaturedata_signed[SEG_LVL_MAX] = {1, 1, 0, 0, 0, 0};
const int vp8_seg_feature_data_bits[SEG_LVL_MAX] = {7, 6, 4, 4, 4, 2};
// These functions provide access to new segment level features.
// Eventually these function may be "optimized out" but for the moment,
@ -48,6 +48,11 @@ void disable_segfeature( MACROBLOCKD *xd,
xd->segment_feature_mask[segment_id] &= ~(1 << feature_id);
}
int seg_feature_data_bits( SEG_LVL_FEATURES feature_id )
{
return vp8_seg_feature_data_bits[feature_id];
}
int is_segfeature_signed( SEG_LVL_FEATURES feature_id )
{
return ( segfeaturedata_signed[feature_id] );
@ -103,5 +108,3 @@ int check_segref_inter(MACROBLOCKD *xd, int segment_id)
}
// TBD? Functions to read and write segment data with range / validity checking
#endif

Просмотреть файл

@ -15,9 +15,8 @@
#include "onyxd_int.h"
#include "vp8/common/findnearmv.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#if CONFIG_SEGMENTATION
#include "vp8/common/seg_common.h"
@ -93,21 +92,18 @@ static void vp8_kfread_modes(VP8D_COMP *pbi, MODE_INFO *m, int mb_row, int mb_co
if (pbi->mb.update_mb_segmentation_map)
vp8_read_mb_features(bc, &m->mbmi, &pbi->mb);
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( pbi->common.mb_no_coeff_skip &&
( !segfeature_active( &pbi->mb,
m->mbmi.segment_id, SEG_LVL_EOB ) ||
(pbi->mb.segment_feature_data[m->mbmi.segment_id]
[SEG_LVL_EOB] != 0) ) )
#else
// Read the macroblock coeff skip flag if this feature is in use,
// else default to 0
if (pbi->common.mb_no_coeff_skip)
#endif
{
m->mbmi.mb_skip_coeff = vp8_read(bc, pbi->prob_skip_false);
}
else
{
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( segfeature_active( &pbi->mb,
m->mbmi.segment_id, SEG_LVL_EOB ) &&
(pbi->mb.segment_feature_data[m->mbmi.segment_id]
@ -116,7 +112,6 @@ static void vp8_kfread_modes(VP8D_COMP *pbi, MODE_INFO *m, int mb_row, int mb_co
m->mbmi.mb_skip_coeff = 1;
}
else
#endif
m->mbmi.mb_skip_coeff = 0;
}
@ -238,15 +233,12 @@ static MV_REFERENCE_FRAME read_ref_frame( VP8D_COMP *pbi,
MV_REFERENCE_FRAME ref_frame;
int seg_ref_active;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
MACROBLOCKD *const xd = &pbi->mb;
seg_ref_active = segfeature_active( xd,
segment_id,
SEG_LVL_REF_FRAME );
#else
seg_ref_active = 0;
#endif
// Segment reference frame features not available
if ( !seg_ref_active )
@ -264,7 +256,7 @@ static MV_REFERENCE_FRAME read_ref_frame( VP8D_COMP *pbi,
}
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Segment reference frame features are enabled
else
{
@ -335,7 +327,6 @@ static MV_REFERENCE_FRAME read_ref_frame( VP8D_COMP *pbi,
}
}
}
#endif
return (MV_REFERENCE_FRAME)ref_frame;
}
@ -500,15 +491,12 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
#endif
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( pbi->common.mb_no_coeff_skip &&
( !segfeature_active( xd,
mbmi->segment_id, SEG_LVL_EOB ) ||
(xd->segment_feature_data[mbmi->segment_id]
[SEG_LVL_EOB] != 0) ) )
#else
if (pbi->common.mb_no_coeff_skip)
#endif
{
// Read the macroblock coeff skip flag if this feature is in use,
// else default to 0
@ -516,7 +504,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
}
else
{
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( segfeature_active( xd,
mbmi->segment_id, SEG_LVL_EOB ) &&
(xd->segment_feature_data[mbmi->segment_id]
@ -525,7 +513,6 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
mbmi->mb_skip_coeff = 1;
}
else
#endif
mbmi->mb_skip_coeff = 0;
}
@ -543,7 +530,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
mbmi->ref_frame, pbi->common.ref_frame_sign_bias);
vp8_mv_ref_probs(mv_ref_p, rct);
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Is the segment level mode feature enabled for this segment
if ( segfeature_active( xd, mbmi->segment_id, SEG_LVL_MODE ) )
{
@ -554,9 +541,6 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
{
mbmi->mode = read_mv_ref(bc, mv_ref_p);
}
#else
mbmi->mode = read_mv_ref(bc, mv_ref_p);
#endif
mbmi->uv_mode = DC_PRED;
switch (mbmi->mode)
@ -709,12 +693,11 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
/* required for left and above block mv */
mbmi->mv.as_int = 0;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( segfeature_active( xd, mbmi->segment_id, SEG_LVL_MODE ) )
mbmi->mode = (MB_PREDICTION_MODE)
get_segdata( xd, mbmi->segment_id, SEG_LVL_MODE );
else
#endif
{
mbmi->mode = (MB_PREDICTION_MODE)
vp8_read_ymode(bc, pbi->common.fc.ymode_prob);
@ -741,12 +724,11 @@ void vp8_decode_mode_mvs(VP8D_COMP *pbi)
MODE_INFO *mi = pbi->common.mi;
int mb_row = -1;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#if 0
FILE *statsfile;
statsfile = fopen("decsegmap.stt", "a");
fprintf(statsfile, "\n" );
#endif
#endif
mb_mode_mv_init(pbi);
@ -772,10 +754,9 @@ void vp8_decode_mode_mvs(VP8D_COMP *pbi)
mb_to_bottom_edge = ((pbi->common.mb_rows - 1 - mb_row) * 16) << 3;
mb_to_bottom_edge += RIGHT_BOTTOM_MARGIN;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#if 0
fprintf(statsfile, "\n" );
#endif
#endif
while (++mb_col < pbi->common.mb_cols)
@ -818,12 +799,12 @@ void vp8_decode_mode_mvs(VP8D_COMP *pbi)
}
#endif
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#if 0
fprintf(statsfile, "%2d%2d%2d ",
mi->mbmi.segment_id, mi->mbmi.ref_frame, mi->mbmi.mode );
#endif
#endif
mi++; /* next macroblock */
}
@ -831,10 +812,10 @@ void vp8_decode_mode_mvs(VP8D_COMP *pbi)
mi++; /* skip left predictor each row */
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#if 0
fclose(statsfile);
#endif
#endif
}

Просмотреть файл

@ -37,9 +37,8 @@
#include "decoderthreading.h"
#include "dboolhuff.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#include <assert.h>
#include <stdio.h>
@ -81,11 +80,8 @@ void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
// Set the Q baseline allowing for any segment level adjustment
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( segfeature_active( xd, segment_id, SEG_LVL_ALT_Q ) )
#else
if ( xd->segmentation_enabled )
#endif
{
/* Abs Value */
if (xd->mb_segement_abs_delta == SEGMENT_ABSDATA)
@ -807,10 +803,9 @@ static void init_frame(VP8D_COMP *pbi)
// Reset the segment feature data to the default stats:
// Features disabled, 0, with delta coding (Default state).
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
vpx_memset(xd->segment_feature_mask, 0,
sizeof(xd->segment_feature_mask));
#endif
vpx_memset(xd->segment_feature_data, 0,
sizeof(xd->segment_feature_data));
@ -883,7 +878,6 @@ int vp8_decode_frame(VP8D_COMP *pbi)
int mb_row;
int i, j, k, l;
const int *const mb_feature_data_bits = vp8_seg_feature_data_bits;
int corrupt_tokens = 0;
int prev_independent_partitions = pbi->independent_partitions;
@ -1028,58 +1022,41 @@ int vp8_decode_frame(VP8D_COMP *pbi)
if (xd->update_mb_segmentation_data)
{
int data;
xd->mb_segement_abs_delta = (unsigned char)vp8_read_bit(bc);
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
clearall_segfeatures( xd );
// For each segmentation...
for (j = 0; j < MAX_MB_SEGMENTS; j++)
for (i = 0; i < MAX_MB_SEGMENTS; i++)
{
// For each of the segments features...
for (i = 0; i < SEG_LVL_MAX; i++)
for (j = 0; j < SEG_LVL_MAX; j++)
{
#else
// Clear down feature data structure
vpx_memset(xd->segment_feature_data, 0,
sizeof(xd->segment_feature_data));
// For each segmentation feature...
for (i = 0; i < SEG_LVL_MAX; i++)
{
// For each segmentation...
for (j = 0; j < MAX_MB_SEGMENTS; j++)
{
#endif
// Is the feature enabled
if (vp8_read_bit(bc))
{
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Update the feature data and mask
enable_segfeature(xd, j, i);
#endif
xd->segment_feature_data[j][i] =
(signed char)vp8_read_literal(
bc, mb_feature_data_bits[i]);
enable_segfeature(xd, i, j);
#if CONFIG_SEGFEATURES
data = (signed char)vp8_read_literal(
bc, seg_feature_data_bits(j));
//#if CONFIG_SEGFEATURES
// Is the segment data signed..
if ( is_segfeature_signed(i) )
#else
if ( 1 )
#endif
if ( is_segfeature_signed(j) )
{
if (vp8_read_bit(bc))
{
xd->segment_feature_data[j][i] =
-xd->segment_feature_data[j][i];
}
data = - data;
}
}
else
{
xd->segment_feature_data[j][i] = 0;
}
data = 0;
set_segdata(xd, i, j, data);
}
}
}

Просмотреть файл

@ -16,9 +16,8 @@
#include "vpx_ports/mem.h"
#include "detokenize.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#define BOOL_DATA UINT8
@ -651,7 +650,7 @@ int vp8_decode_mb_tokens(VP8D_COMP *dx, MACROBLOCKD *xd)
INT16 v;
const vp8_prob *Prob;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
int seg_eob = 16;
int segment_id = xd->mode_info_context->mbmi.segment_id;
@ -659,7 +658,6 @@ int vp8_decode_mb_tokens(VP8D_COMP *dx, MACROBLOCKD *xd)
{
seg_eob = xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
#endif
type = 3;
i = 0;
@ -701,10 +699,9 @@ BLOCK_LOOP:
Prob += v * ENTROPY_NODES;
DO_WHILE:
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( c == seg_eob )
goto BLOCK_FINISHED;
#endif
Prob += coef_bands_x[c];
DECODE_AND_BRANCH_IF_ZERO(Prob[EOB_CONTEXT_NODE], BLOCK_FINISHED);

Просмотреть файл

@ -69,11 +69,10 @@ static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd, MB_ROW_D
vpx_memcpy(mbd->segment_feature_data,
xd->segment_feature_data,
sizeof(xd->segment_feature_data));
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
vpx_memcpy(mbd->segment_feature_mask,
xd->segment_feature_mask,
sizeof(xd->segment_feature_mask));
#endif
/*signed char ref_lf_deltas[MAX_REF_LF_DELTAS];*/
vpx_memcpy(mbd->ref_lf_deltas, xd->ref_lf_deltas, sizeof(xd->ref_lf_deltas));

Просмотреть файл

@ -25,9 +25,8 @@
#include "defaultcoefcounts.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#if CONFIG_SEGMENTATION
static int segment_cost = 0;
@ -883,13 +882,10 @@ static void encode_ref_frame( vp8_writer *const w,
int prob_gf_coded )
{
int seg_ref_active;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
seg_ref_active = segfeature_active( xd,
segment_id,
SEG_LVL_REF_FRAME );
#else
seg_ref_active = 0;
#endif
// No segment features or segment reference frame featuure is disabled
if ( !seg_ref_active )
@ -913,7 +909,7 @@ static void encode_ref_frame( vp8_writer *const w,
}
}
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
else
{
if (rf == INTRA_FRAME)
@ -955,7 +951,6 @@ static void encode_ref_frame( vp8_writer *const w,
}
}
}
#endif
}
static void pack_inter_mode_mvs(VP8_COMP *const cpi)
@ -985,13 +980,12 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
cpi->mb.partition_info = cpi->mb.pi;
// Calculate the probabilities to be used to code the reference frame based on actual useage this frame
#if CONFIG_SEGFEATURES
// Calculate the probabilities to be used to code the reference frame
// based on actual useage this frame
//#if CONFIG_SEGFEATURES
cpi->prob_intra_coded = (rf_intra + rf_inter)
? rf_intra * 255 / (rf_intra + rf_inter) : 1;
#else
cpi->prob_intra_coded = rf_intra * 255 / (rf_intra + rf_inter);
#endif
if (!cpi->prob_intra_coded)
cpi->prob_intra_coded = 1;
@ -1111,13 +1105,10 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
#endif
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( pc->mb_no_coeff_skip &&
( !segfeature_active( xd, segment_id, SEG_LVL_EOB ) ||
(xd->segment_feature_data[segment_id][SEG_LVL_EOB] != 0) ) )
#else
if (pc->mb_no_coeff_skip)
#endif
{
vp8_encode_bool(w, mi->mb_skip_coeff, prob_skip_false);
}
@ -1133,12 +1124,9 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
active_section = 6;
#endif
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( !segfeature_active( xd, segment_id, SEG_LVL_MODE ) )
write_ymode(w, mode, pc->fc.ymode_prob);
#else
write_ymode(w, mode, pc->fc.ymode_prob);
#endif
if (mode == B_PRED)
{
@ -1172,15 +1160,13 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
active_section = 3;
#endif
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Is the segment coding of reference frame enabled
if ( !segfeature_active( xd, segment_id, SEG_LVL_MODE ) )
{
write_mv_ref(w, mode, mv_ref_p);
}
#else
write_mv_ref(w, mode, mv_ref_p);
#endif
{
switch (mode) /* new, split require MVs */
{
@ -1268,9 +1254,8 @@ static void write_kfmodes(VP8_COMP *cpi)
int mb_row = -1;
int prob_skip_false = 0;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
MACROBLOCKD *xd = &cpi->mb.e_mbd;
#endif
if (c->mb_no_coeff_skip)
{
@ -1332,13 +1317,10 @@ static void write_kfmodes(VP8_COMP *cpi)
#endif
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( c->mb_no_coeff_skip &&
( !segfeature_active( xd, segment_id, SEG_LVL_EOB ) ||
(xd->segment_feature_data[segment_id][SEG_LVL_EOB] != 0) ) )
#else
if (c->mb_no_coeff_skip)
#endif
{
vp8_encode_bool(bc, m->mbmi.mb_skip_coeff, prob_skip_false);
}
@ -1591,12 +1573,10 @@ int vp8_estimate_entropy_savings(VP8_COMP *cpi)
if (cpi->common.frame_type != KEY_FRAME)
{
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
new_intra = (rf_intra + rf_inter)
? rf_intra * 255 / (rf_intra + rf_inter) : 1;
#else
new_intra = rf_intra * 255 / (rf_intra + rf_inter);
#endif
if (!new_intra)
new_intra = 1;
@ -1988,7 +1968,6 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
oh.version = pc->version;
oh.first_partition_length_in_bytes = 0;
mb_feature_data_bits = vp8_seg_feature_data_bits;
cx_data += 3;
#if defined(SECTIONBITS_OUTPUT)
@ -2049,59 +2028,44 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
vp8_write_bit(bc, (xd->mb_segement_abs_delta) ? 1 : 0);
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// For each segments id...
for (j = 0; j < MAX_MB_SEGMENTS; j++)
for (i = 0; i < MAX_MB_SEGMENTS; i++)
{
// For each segmentation codable feature...
for (i = 0; i < SEG_LVL_MAX; i++)
#else
// For each segmentation codable feature...
for (i = 0; i < SEG_LVL_MAX; i++)
{
// For each of the segments id...
for (j = 0; j < MAX_MB_SEGMENTS; j++)
#endif
for (j = 0; j < SEG_LVL_MAX; j++)
{
Data = xd->segment_feature_data[j][i];
Data = get_segdata( xd, i, j );
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// If the feature is enabled...
if ( segfeature_active( xd, j, i ) )
#else
// If the feature is enabled...Indicated by non zero
// value in VP8
if (Data)
#endif
if ( segfeature_active( xd, i, j ) )
{
vp8_write_bit(bc, 1);
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Is the segment data signed..
if ( is_segfeature_signed(i) )
#else
if ( 1 )
#endif
if ( is_segfeature_signed(j) )
{
// Encode the relevant feature data
if (Data < 0)
{
Data = - Data;
vp8_write_literal(bc, Data,
mb_feature_data_bits[i]);
seg_feature_data_bits(j));
vp8_write_bit(bc, 1);
}
else
{
vp8_write_literal(bc, Data,
mb_feature_data_bits[i]);
seg_feature_data_bits(j));
vp8_write_bit(bc, 0);
}
}
// Unsigned data element so no sign bit needed
else
vp8_write_literal(bc, Data,
mb_feature_data_bits[i]);
seg_feature_data_bits(j));
}
else
vp8_write_bit(bc, 0);

Просмотреть файл

@ -46,9 +46,8 @@ typedef struct
int src;
int src_stride;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
int eob_max_offset;
#endif
} BLOCK;

Просмотреть файл

@ -31,9 +31,8 @@
#include "vp8/common/subpixel.h"
#include "vpx_ports/vpx_timer.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
//#define DBG_PRNT_SEGMAP 1
#endif
#if CONFIG_RUNTIME_CPU_DETECT
#define RTCD(x) &cpi->common.rtcd.x
@ -846,7 +845,7 @@ void encode_mb_row(VP8_COMP *cpi,
#endif
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// debug output
#if DBG_PRNT_SEGMAP
{
@ -856,7 +855,6 @@ void encode_mb_row(VP8_COMP *cpi,
fclose(statsfile);
}
#endif
#endif
}
void init_encode_frame_mb_context(VP8_COMP *cpi)
@ -967,7 +965,7 @@ void vp8_encode_frame(VP8_COMP *cpi)
int totalrate;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// debug output
#if DBG_PRNT_SEGMAP
{
@ -976,7 +974,6 @@ void vp8_encode_frame(VP8_COMP *cpi)
fprintf(statsfile, "\n" );
fclose(statsfile);
}
#endif
#endif
vpx_memset(segment_counts, 0, sizeof(segment_counts));
@ -1350,7 +1347,7 @@ void vp8_encode_frame(VP8_COMP *cpi)
cpi->prob_gf_coded = 1;
}
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
else
{
// Trap case where cpi->count_mb_ref_frame_usage[] blank.
@ -1358,7 +1355,6 @@ void vp8_encode_frame(VP8_COMP *cpi)
cpi->prob_last_coded = 128;
cpi->prob_gf_coded = 128;
}
#endif
}
#if 0
// Keep record of the total distortion this time around for future use
@ -1661,7 +1657,7 @@ int vp8cx_encode_inter_macroblock
vp8cx_mb_init_quantizer(cpi, x);
}
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
else
{
//segfeature_test_function(cpi, xd);
@ -1680,7 +1676,6 @@ int vp8cx_encode_inter_macroblock
}
#endif
}
#endif
}
{
@ -1711,8 +1706,7 @@ int vp8cx_encode_inter_macroblock
vp8_update_zbin_extra(cpi, x);
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// If we have just a single reference frame coded for a segment then
// exclude from the reference frame counts used to work out
// probabilities. NOTE: At the moment we dont support custom trees
@ -1726,9 +1720,6 @@ int vp8cx_encode_inter_macroblock
{
cpi->count_mb_ref_frame_usage[xd->mode_info_context->mbmi.ref_frame]++;
}
#else
cpi->count_mb_ref_frame_usage[xd->mode_info_context->mbmi.ref_frame] ++;
#endif
#if CONFIG_T8X8
if (xd->segmentation_enabled)

Просмотреть файл

@ -356,9 +356,8 @@ static void setup_mbby_copy(MACROBLOCK *mbdst, MACROBLOCK *mbsrc)
z->block[i].src = x->block[i].src;
*/
z->block[i].src_stride = x->block[i].src_stride;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
z->block[i].eob_max_offset = x->block[i].eob_max_offset;
#endif
}
{
@ -397,11 +396,10 @@ static void setup_mbby_copy(MACROBLOCK *mbdst, MACROBLOCK *mbsrc)
xd->segment_feature_data,
sizeof(xd->segment_feature_data));
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
vpx_memcpy(zd->segment_feature_mask,
xd->segment_feature_mask,
sizeof(xd->segment_feature_mask));
#endif
for (i = 0; i < 25; i++)
{

Просмотреть файл

@ -34,10 +34,9 @@
#include "vpx_ports/vpx_timer.h"
#include "temporal_filter.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#include "mbgraph.h"
#endif
#if ARCH_ARM
#include "vpx_ports/arm.h"
@ -338,9 +337,8 @@ static void setup_features(VP8_COMP *cpi)
vpx_memset(xd->mb_segment_tree_probs, 255, sizeof(xd->mb_segment_tree_probs));
vpx_memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
vpx_memset(xd->segment_feature_mask, 0, sizeof(xd->segment_feature_mask));
#endif
xd->mode_ref_lf_delta_enabled = 0;
xd->mode_ref_lf_delta_update = 0;
@ -458,10 +456,9 @@ static void segmentation_test_function(VP8_PTR ptr)
feature_data[SEG_LVL_ALT_LF][2] = 0;
feature_data[SEG_LVL_ALT_LF][3] = 0;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Enable features as required
enable_segfeature(xd, 1, SEG_LVL_ALT_Q);
#endif
// Initialise the feature data structure
// SEGMENT_DELTADATA 0, SEGMENT_ABSDATA 1
@ -474,7 +471,7 @@ static void segmentation_test_function(VP8_PTR ptr)
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
static void init_seg_features(VP8_COMP *cpi)
{
VP8_COMMON *cm = &cpi->common;
@ -656,8 +653,6 @@ static void print_seg_map(VP8_COMP *cpi)
fclose(statsfile);
}
#endif
// A simple function to cyclically refresh the background at a lower Q
static void cyclic_background_refresh(VP8_COMP *cpi, int Q, int lf_adjustment)
{
@ -741,11 +736,10 @@ static void cyclic_background_refresh(VP8_COMP *cpi, int Q, int lf_adjustment)
feature_data[SEG_LVL_ALT_LF][2] = 0;
feature_data[SEG_LVL_ALT_LF][3] = 0;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Enable the loop and quant changes in the feature mask
enable_segfeature(xd, 1, SEG_LVL_ALT_Q);
enable_segfeature(xd, 1, SEG_LVL_ALT_LF);
#endif
// Initialise the feature data structure
// SEGMENT_DELTADATA 0, SEGMENT_ABSDATA 1
@ -2133,7 +2127,7 @@ VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf)
}
#endif
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
for (i = 0; i < ( sizeof(cpi->mbgraph_stats) /
sizeof(cpi->mbgraph_stats[0]) ); i++)
{
@ -2142,7 +2136,6 @@ VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf)
sizeof(*cpi->mbgraph_stats[i].mb_stats),
1));
}
#endif
// Should we use the cyclic refresh method.
// Currently this is tied to error resilliant mode
@ -2598,12 +2591,11 @@ void vp8_remove_compressor(VP8_PTR *ptr)
vpx_free(cpi->tok);
vpx_free(cpi->cyclic_refresh_map);
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
for (i = 0; i < sizeof(cpi->mbgraph_stats) / sizeof(cpi->mbgraph_stats[0]); i++)
{
vpx_free(cpi->mbgraph_stats[i].mb_stats);
}
#endif
vp8_remove_common(&cpi->common);
vpx_free(cpi);
@ -3698,14 +3690,9 @@ static void encode_frame_to_data_rate
cpi->mb.e_mbd.segmentation_enabled = 1;
cpi->mb.e_mbd.update_mb_segmentation_map = 1;
#else
#if CONFIG_SEGFEATURES
// Test code for new segment features
init_seg_features( cpi );
#else
// Set default state for segment update flags
cpi->mb.e_mbd.update_mb_segmentation_map = 0;
cpi->mb.e_mbd.update_mb_segmentation_data = 0;
#endif
//#if CONFIG_SEGFEATURES
// Test code for new segment features
init_seg_features( cpi );
#endif
if (cpi->drop_frames_allowed)
@ -4712,11 +4699,10 @@ static void encode_frame_to_data_rate
#endif
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#if 0
// Debug stats for segment feature experiments.
print_seg_map(cpi);
#endif
#endif
// If this was a kf or Gf note the Q
@ -5445,7 +5431,7 @@ int vp8_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned
cpi->segment_encode_breakout[2] = threshold[2];
cpi->segment_encode_breakout[3] = threshold[3];
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Enable the loop and quant changes in the feature mask
for ( i = 0; i < 4; i++ )
{
@ -5459,7 +5445,6 @@ int vp8_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned
else
disable_segfeature(xd, i, SEG_LVL_ALT_LF);
}
#endif
// Initialise the feature data structure
// SEGMENT_DELTADATA 0, SEGMENT_ABSDATA 1

Просмотреть файл

@ -27,9 +27,8 @@
#include "rdopt.h"
#include "vpx_mem/vpx_mem.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#if CONFIG_RUNTIME_CPU_DETECT
#define IF_RTCD(x) (x)
@ -521,7 +520,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
this_mode = vp8_mode_order[mode_index];
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Experimental use of Segment features.
if ( xd->segmentation_enabled && !cm->refresh_alt_ref_frame )
{
@ -542,7 +541,9 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
continue;
}
}
#else
//#if !CONFIG_SEGFEATURES
/* TBD PGW
// Only consider ZEROMV/ALTREF_FRAME for alt ref frame,
// unless ARNR filtering is enabled in which case we want
// an unfiltered alternative
@ -552,27 +553,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
x->e_mbd.mode_info_context->mbmi.ref_frame != ALTREF_FRAME)
continue;
}
// Check to see if the testing frequency for this mode is at its max
// If so then prevent it from being tested and increase the threshold for its testing
if (cpi->mode_test_hit_counts[mode_index] && (cpi->mode_check_freq[mode_index] > 1))
{
//if ( (cpi->mbs_tested_so_far / cpi->mode_test_hit_counts[mode_index]) <= cpi->mode_check_freq[mode_index] )
if (cpi->mbs_tested_so_far <= (cpi->mode_check_freq[mode_index] * cpi->mode_test_hit_counts[mode_index]))
{
// Increase the threshold for coding this mode to make it less likely to be chosen
cpi->rd_thresh_mult[mode_index] += 4;
if (cpi->rd_thresh_mult[mode_index] > MAX_THRESHMULT)
cpi->rd_thresh_mult[mode_index] = MAX_THRESHMULT;
cpi->rd_threshes[mode_index] = (cpi->rd_baseline_thresh[mode_index] >> 7) * cpi->rd_thresh_mult[mode_index];
continue;
}
}
#endif
*/
// We have now reached the point where we are going to test the current mode so increment the counter for the number of times it has been tested
cpi->mode_test_hit_counts[mode_index] ++;

Просмотреть файл

@ -16,9 +16,8 @@
#include "quantize.h"
#include "vp8/common/quant_common.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#ifdef ENC_DEBUG
extern int enc_debug;
@ -136,11 +135,8 @@ void vp8_regular_quantize_b(BLOCK *b, BLOCKD *d)
eob = -1;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
for (i = 0; i < b->eob_max_offset; i++)
#else
for (i = 0; i < 16; i++)
#endif
{
rc = vp8_default_zig_zag1d[i];
z = coeff_ptr[rc];
@ -1178,11 +1174,8 @@ void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x)
int segment_id = xd->mode_info_context->mbmi.segment_id;
// Select the baseline MB Q index allowing for any segment level change.
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if ( segfeature_active( xd, segment_id, SEG_LVL_ALT_Q ) )
#else
if ( xd->segmentation_enabled )
#endif
{
// Abs Value
if (xd->mb_segement_abs_delta == SEGMENT_ABSDATA)
@ -1217,16 +1210,15 @@ void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x)
x->e_mbd.block[i].dequant = cpi->common.Y1dequant[QIndex];
x->block[i].zrun_zbin_boost = cpi->zrun_zbin_boost_y1[QIndex];
x->block[i].zbin_extra = (short)zbin_extra;
#if CONFIG_SEGFEATURES
// Segment max eob offset feature.
if ( segfeature_active( xd, segment_id, SEG_LVL_EOB ) )
{
x->block[i].eob_max_offset =
xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
else
x->block[i].eob_max_offset = 16;
#endif
//#if CONFIG_SEGFEATURES
// Segment max eob offset feature.
if ( segfeature_active( xd, segment_id, SEG_LVL_EOB ) )
{
x->block[i].eob_max_offset =
xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
else
x->block[i].eob_max_offset = 16;
}
// UV
@ -1245,16 +1237,15 @@ void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x)
x->e_mbd.block[i].dequant = cpi->common.UVdequant[QIndex];
x->block[i].zrun_zbin_boost = cpi->zrun_zbin_boost_uv[QIndex];
x->block[i].zbin_extra = (short)zbin_extra;
#if CONFIG_SEGFEATURES
// Segment max eob offset feature.
if ( segfeature_active( xd, segment_id, SEG_LVL_EOB ) )
{
x->block[i].eob_max_offset =
xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
else
x->block[i].eob_max_offset = 16;
#endif
//#if CONFIG_SEGFEATURES
// Segment max eob offset feature.
if ( segfeature_active( xd, segment_id, SEG_LVL_EOB ) )
{
x->block[i].eob_max_offset =
xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
else
x->block[i].eob_max_offset = 16;
}
// Y2
@ -1272,7 +1263,7 @@ void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x)
x->block[24].zrun_zbin_boost = cpi->zrun_zbin_boost_y2[QIndex];
x->block[24].zbin_extra = (short)zbin_extra;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// TBD perhaps not use for Y2
// Segment max eob offset feature.
if ( segfeature_active( xd, segment_id, SEG_LVL_EOB ) )
@ -1282,7 +1273,6 @@ void vp8cx_mb_init_quantizer(VP8_COMP *cpi, MACROBLOCK *x)
}
else
x->block[24].eob_max_offset = 16;
#endif
/* save this macroblock QIndex for vp8_update_zbin_extra() */
x->q_index = QIndex;

Просмотреть файл

@ -36,9 +36,8 @@
#include "dct.h"
#include "vp8/common/systemdependent.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
#if CONFIG_RUNTIME_CPU_DETECT
#define IF_RTCD(x) (x)
@ -2124,7 +2123,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
x->e_mbd.mode_info_context->mbmi.uv_mode = DC_PRED;
x->e_mbd.mode_info_context->mbmi.ref_frame = vp8_ref_frame_order[mode_index];
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// Experimental use of Segment features.
if ( xd->segmentation_enabled && !cm->refresh_alt_ref_frame )
{
@ -2145,7 +2144,9 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
continue;
}
}
#else
//#if !CONFIG_SEGFEATURES
// TBD PGW
/*
// Only consider ZEROMV/ALTREF_FRAME for alt ref frame,
// unless ARNR filtering is enabled in which case we want
// an unfiltered alternative
@ -2154,8 +2155,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
if (this_mode != ZEROMV ||
x->e_mbd.mode_info_context->mbmi.ref_frame != ALTREF_FRAME)
continue;
}
#endif
}*/
/* everything but intra */
if (x->e_mbd.mode_info_context->mbmi.ref_frame)
@ -2170,29 +2170,6 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
lf_or_gf = frame_lf_or_gf[x->e_mbd.mode_info_context->mbmi.ref_frame];
}
#if !CONFIG_SEGFEATURES
// Check to see if the testing frequency for this mode is at its max
// If so then prevent it from being tested and increase the threshold for its testing
if (cpi->mode_test_hit_counts[mode_index] && (cpi->mode_check_freq[mode_index] > 1))
{
if (cpi->mbs_tested_so_far <= cpi->mode_check_freq[mode_index] * cpi->mode_test_hit_counts[mode_index])
{
// Increase the threshold for coding this mode to make it less likely to be chosen
cpi->rd_thresh_mult[mode_index] += 4;
if (cpi->rd_thresh_mult[mode_index] > MAX_THRESHMULT)
cpi->rd_thresh_mult[mode_index] = MAX_THRESHMULT;
cpi->rd_threshes[mode_index] = (cpi->rd_baseline_thresh[mode_index] >> 7) * cpi->rd_thresh_mult[mode_index];
continue;
}
}
// We have now reached the point where we are going to test the current mode so increment the counter for the number of times it has been tested
cpi->mode_test_hit_counts[mode_index] ++;
#endif
// Experimental code. Special case for gf and arf zeromv modes. Increase zbin size to supress noise
if (cpi->zbin_mode_boost_enabled)
{

Просмотреть файл

@ -109,10 +109,8 @@ void vp8_set_segment_data(VP8_PTR ptr,
vpx_memcpy(cpi->mb.e_mbd.segment_feature_data, feature_data,
sizeof(cpi->mb.e_mbd.segment_feature_data));
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// TBD ?? Set the feature mask
// vpx_memcpy(cpi->mb.e_mbd.segment_feature_mask, 0,
// sizeof(cpi->mb.e_mbd.segment_feature_mask));
#endif
}

Просмотреть файл

@ -17,9 +17,8 @@
#include "tokenize.h"
#include "vpx_mem/vpx_mem.h"
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
#include "vp8/common/seg_common.h"
#endif
/* Global event counters used for accumulating statistics across several
compressions, then generating context.c = initial stats. */
@ -185,7 +184,7 @@ static void tokenize2nd_order_b
ENTROPY_CONTEXT * l;
int band, rc, v, token;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
int seg_eob = 16;
int segment_id = xd->mode_info_context->mbmi.segment_id;
@ -193,7 +192,6 @@ static void tokenize2nd_order_b
{
seg_eob = xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
#endif
b = xd->block + 24;
qcoeff_ptr = b->qcoeff;
@ -222,11 +220,8 @@ static void tokenize2nd_order_b
t++;
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if (c < seg_eob)
#else
if (c < 16)
#endif
{
band = vp8_coef_bands[c];
t->Token = DCT_EOB_TOKEN;
@ -325,7 +320,7 @@ static void tokenize1st_order_b
int band, rc, v;
int tmp1, tmp2;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
int seg_eob = 16;
int segment_id = xd->mode_info_context->mbmi.segment_id;
@ -333,7 +328,6 @@ static void tokenize1st_order_b
{
seg_eob = xd->segment_feature_data[segment_id][SEG_LVL_EOB];
}
#endif
b = xd->block;
/* Luma */
@ -370,11 +364,8 @@ static void tokenize1st_order_b
t++;
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if (c < seg_eob)
#else
if (c < 16)
#endif
{
band = vp8_coef_bands[c];
t->Token = DCT_EOB_TOKEN;
@ -422,11 +413,8 @@ static void tokenize1st_order_b
pt = vp8_prev_token_class[token];
t++;
}
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
if (c < seg_eob)
#else
if (c < 16)
#endif
{
band = vp8_coef_bands[c];
t->Token = DCT_EOB_TOKEN;
@ -491,7 +479,7 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t)
int has_y2_block;
int b;
#if CONFIG_SEGFEATURES
//#if CONFIG_SEGFEATURES
// If the MB is going to be skipped because of a segment level flag
// exclude this from the skip count stats used to calculate the
// transmitted skip probability;
@ -505,9 +493,6 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t)
}
else
skip_inc = 0;
#else
int skip_inc = 1;
#endif
has_y2_block = (x->mode_info_context->mbmi.mode != B_PRED
#if CONFIG_I8X8

Просмотреть файл

@ -217,9 +217,9 @@ void vp8_arch_x86_encoder_init(VP8_COMP *cpi)
cpi->rtcd.encodemb.submby = vp8_subtract_mby_sse2;
cpi->rtcd.encodemb.submbuv = vp8_subtract_mbuv_sse2;
#if !CONFIG_SEGFEATURES
cpi->rtcd.quantize.quantb = vp8_regular_quantize_b_sse2;
#endif
//#if !CONFIG_SEGFEATURES
// cpi->rtcd.quantize.quantb = vp8_regular_quantize_b_sse2;
//#endif
cpi->rtcd.quantize.fastquantb = vp8_fast_quantize_b_sse2;
#if !(CONFIG_REALTIME_ONLY)
@ -281,9 +281,9 @@ void vp8_arch_x86_encoder_init(VP8_COMP *cpi)
cpi->rtcd.variance.sad4x4x8 = vp8_sad4x4x8_sse4;
cpi->rtcd.search.full_search = vp8_full_search_sadx8;
#if !CONFIG_SEGFEATURES
cpi->rtcd.quantize.quantb = vp8_regular_quantize_b_sse4;
#endif
//#if !CONFIG_SEGFEATURES
// cpi->rtcd.quantize.quantb = vp8_regular_quantize_b_sse4;
//#endif
}
#endif