Merge "Adding encode_tiles() function."
This commit is contained in:
commit
5f72de91a8
@ -2977,6 +2977,33 @@ static int get_skip_encode_frame(const VP9_COMMON *cm) {
|
|||||||
cm->show_frame;
|
cm->show_frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void encode_tiles(VP9_COMP *cpi) {
|
||||||
|
const VP9_COMMON *const cm = &cpi->common;
|
||||||
|
const int tile_cols = 1 << cm->log2_tile_cols;
|
||||||
|
const int tile_rows = 1 << cm->log2_tile_rows;
|
||||||
|
int tile_col, tile_row;
|
||||||
|
TOKENEXTRA *tok = cpi->tok;
|
||||||
|
|
||||||
|
for (tile_row = 0; tile_row < tile_rows; ++tile_row) {
|
||||||
|
for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
|
||||||
|
TileInfo tile;
|
||||||
|
TOKENEXTRA *old_tok = tok;
|
||||||
|
int mi_row;
|
||||||
|
|
||||||
|
vp9_tile_init(&tile, cm, tile_row, tile_col);
|
||||||
|
for (mi_row = tile.mi_row_start; mi_row < tile.mi_row_end;
|
||||||
|
mi_row += MI_BLOCK_SIZE) {
|
||||||
|
if (cpi->sf.use_nonrd_pick_mode && cm->frame_type != KEY_FRAME)
|
||||||
|
encode_nonrd_sb_row(cpi, &tile, mi_row, &tok);
|
||||||
|
else
|
||||||
|
encode_rd_sb_row(cpi, &tile, mi_row, &tok);
|
||||||
|
}
|
||||||
|
cpi->tok_count[tile_row][tile_col] = (unsigned int)(tok - old_tok);
|
||||||
|
assert(tok - cpi->tok <= get_token_alloc(cm->mb_rows, cm->mb_cols));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void encode_frame_internal(VP9_COMP *cpi) {
|
static void encode_frame_internal(VP9_COMP *cpi) {
|
||||||
SPEED_FEATURES *const sf = &cpi->sf;
|
SPEED_FEATURES *const sf = &cpi->sf;
|
||||||
RD_OPT *const rd_opt = &cpi->rd;
|
RD_OPT *const rd_opt = &cpi->rd;
|
||||||
@ -3062,33 +3089,7 @@ static void encode_frame_internal(VP9_COMP *cpi) {
|
|||||||
struct vpx_usec_timer emr_timer;
|
struct vpx_usec_timer emr_timer;
|
||||||
vpx_usec_timer_start(&emr_timer);
|
vpx_usec_timer_start(&emr_timer);
|
||||||
|
|
||||||
{
|
encode_tiles(cpi);
|
||||||
// Take tiles into account and give start/end MB
|
|
||||||
int tile_col, tile_row;
|
|
||||||
TOKENEXTRA *tp = cpi->tok;
|
|
||||||
const int tile_cols = 1 << cm->log2_tile_cols;
|
|
||||||
const int tile_rows = 1 << cm->log2_tile_rows;
|
|
||||||
|
|
||||||
for (tile_row = 0; tile_row < tile_rows; tile_row++) {
|
|
||||||
for (tile_col = 0; tile_col < tile_cols; tile_col++) {
|
|
||||||
TileInfo tile;
|
|
||||||
TOKENEXTRA *tp_old = tp;
|
|
||||||
int mi_row;
|
|
||||||
|
|
||||||
// For each row of SBs in the frame
|
|
||||||
vp9_tile_init(&tile, cm, tile_row, tile_col);
|
|
||||||
for (mi_row = tile.mi_row_start;
|
|
||||||
mi_row < tile.mi_row_end; mi_row += MI_BLOCK_SIZE) {
|
|
||||||
if (sf->use_nonrd_pick_mode && cm->frame_type != KEY_FRAME)
|
|
||||||
encode_nonrd_sb_row(cpi, &tile, mi_row, &tp);
|
|
||||||
else
|
|
||||||
encode_rd_sb_row(cpi, &tile, mi_row, &tp);
|
|
||||||
}
|
|
||||||
cpi->tok_count[tile_row][tile_col] = (unsigned int)(tp - tp_old);
|
|
||||||
assert(tp - cpi->tok <= get_token_alloc(cm->mb_rows, cm->mb_cols));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vpx_usec_timer_mark(&emr_timer);
|
vpx_usec_timer_mark(&emr_timer);
|
||||||
cpi->time_encode_sb_row += vpx_usec_timer_elapsed(&emr_timer);
|
cpi->time_encode_sb_row += vpx_usec_timer_elapsed(&emr_timer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user