void enc_tile(jxr_t *p, rect_t *tile) { rect_t mb_window[2]; rect_t is_tile_edge; uint32_t mby, mbx; enc_tile_header(p->out, &p->param); //printf("%d, %d, %d, %d\n", tile->left, tile->right, tile->top, tile->bottom); for (mby = tile->top; mby <= tile->bottom; mby++) { for (mbx = tile->left; mbx <= tile->right; mbx++) { //printf("(%3d, %3d)", mbx, mby); check_tile_edge(&is_tile_edge, mbx, mby, tile); calc_rect(mb_window, mbx, mby, p->param.mb_width, p->param.mb_height); //printf("%d, %d, %d, %d\n", mb_window[0].left, mb_window[0].right, mb_window[0].top, mb_window[0].bottom); enc_mb_stage1(p, mb_window, &is_tile_edge, mbx, mby); enc_mb_stage2(p, tile, &is_tile_edge, mbx, mby); //printf("\n"); //if (mbx == 0 && mby == 1) exit(0); } } write_align(&p->out[0]); if (get_flag(p->param.flags, FREQUENCY_MODE_CODESTREAM_FLAG)) { write_align(&p->out[1]); write_align(&p->out[2]); write_align(&p->out[3]); } int mbs = (tile->right - tile->left + 1) * (tile->bottom - tile->top + 1); int tb = get_total_bits(p->out); //printf("|Total : %d[bits]|MBs : %d| %3.2f[bits/MB]|Comp. Ratio %f|\n", tb, mbs, (float)tb/mbs, (float)tb/(mbs*6144)); }
static int writer_align(lua_State* L) { writer_t* writer = lua_touserdata(L, 1); lua_Integer integer = luaL_checkinteger(L, 2); write_align(writer, integer); return 0; }