Lines Matching defs:ref

59  * DiracBlock->ref flags, if set then the block does MC from the given ref
89 uint8_t ref;
1109 unsigned idx, ref;
1171 for (ref = 0; ref < s->num_refs; ref++) {
1173 s->globalmc[ref].pan_tilt[0] = dirac_get_se_golomb(gb);
1174 s->globalmc[ref].pan_tilt[1] = dirac_get_se_golomb(gb);
1179 s->globalmc[ref].zrs_exp = get_interleaved_ue_golomb(gb);
1180 s->globalmc[ref].zrs[0][0] = dirac_get_se_golomb(gb);
1181 s->globalmc[ref].zrs[0][1] = dirac_get_se_golomb(gb);
1182 s->globalmc[ref].zrs[1][0] = dirac_get_se_golomb(gb);
1183 s->globalmc[ref].zrs[1][1] = dirac_get_se_golomb(gb);
1185 s->globalmc[ref].zrs[0][0] = 1;
1186 s->globalmc[ref].zrs[1][1] = 1;
1190 s->globalmc[ref].perspective_exp = get_interleaved_ue_golomb(gb);
1191 s->globalmc[ref].perspective[0] = dirac_get_se_golomb(gb);
1192 s->globalmc[ref].perspective[1] = dirac_get_se_golomb(gb);
1194 if (s->globalmc[ref].perspective_exp + (uint64_t)s->globalmc[ref].zrs_exp > 30) {
1349 return block[-1].ref & refmask;
1351 return block[-stride].ref & refmask;
1354 pred = (block[-1].ref & refmask) + (block[-stride].ref & refmask) + (block[-stride-1].ref & refmask);
1364 if (x && !(block[-1].ref & 3)) {
1370 if (y && !(block[-stride].ref & 3)) {
1376 if (x && y && !(block[-1-stride].ref & 3)) {
1391 static inline void pred_mv(DiracBlock *block, int stride, int x, int y, int ref)
1394 int refmask = ref+1;
1398 if (x && (block[-1].ref & mask) == refmask)
1399 pred[n++] = block[-1].u.mv[ref];
1401 if (y && (block[-stride].ref & mask) == refmask)
1402 pred[n++] = block[-stride].u.mv[ref];
1404 if (x && y && (block[-stride-1].ref & mask) == refmask)
1405 pred[n++] = block[-stride-1].u.mv[ref];
1409 block->u.mv[ref][0] = 0;
1410 block->u.mv[ref][1] = 0;
1413 block->u.mv[ref][0] = pred[0][0];
1414 block->u.mv[ref][1] = pred[0][1];
1417 block->u.mv[ref][0] = (pred[0][0] + pred[1][0] + 1) >> 1;
1418 block->u.mv[ref][1] = (pred[0][1] + pred[1][1] + 1) >> 1;
1421 block->u.mv[ref][0] = mid_pred(pred[0][0], pred[1][0], pred[2][0]);
1422 block->u.mv[ref][1] = mid_pred(pred[0][1], pred[1][1], pred[2][1]);
1427 static void global_mv(DiracContext *s, DiracBlock *block, int x, int y, int ref)
1429 int ez = s->globalmc[ref].zrs_exp;
1430 int ep = s->globalmc[ref].perspective_exp;
1431 int (*A)[2] = s->globalmc[ref].zrs;
1432 int *b = s->globalmc[ref].pan_tilt;
1433 int *c = s->globalmc[ref].perspective;
1439 block->u.mv[ref][0] = (mx + (1<<(ez+ep))) >> (ez+ep);
1440 block->u.mv[ref][1] = (my + (1<<(ez+ep))) >> (ez+ep);
1448 block->ref = pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_REF1);
1449 block->ref ^= dirac_get_arith_bit(arith, CTX_PMODE_REF1);
1452 block->ref |= pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_REF2);
1453 block->ref ^= dirac_get_arith_bit(arith, CTX_PMODE_REF2) << 1;
1456 if (!block->ref) {
1464 block->ref |= pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_GLOBAL);
1465 block->ref ^= dirac_get_arith_bit(arith, CTX_GLOBAL_BLOCK) << 2;
1469 if (block->ref & (i+1)) {
1470 if (block->ref & DIRAC_REF_MASK_GLOBAL) {
1648 int x, int y, int ref, int plane)
1651 uint8_t **ref_hpel = s->ref_pics[ref]->hpel[plane];
1652 int motion_x = block->u.mv[ref][0];
1653 int motion_y = block->u.mv[ref][1];
1766 switch (block->ref&3) {
1772 idx = mc_subpel(s, block, src, dstx, dsty, (block->ref&3)-1, plane);
1830 static int interpolate_refplane(DiracContext *s, DiracFrame *ref, int plane, int width, int height)
1837 ref->hpel[plane][0] = ref->avframe->data[plane];
1838 s->mpvencdsp.draw_edges(ref->hpel[plane][0], ref->avframe->linesize[plane], width, height, edge, edge, EDGE_TOP | EDGE_BOTTOM); /* EDGE_TOP | EDGE_BOTTOM values just copied to make it build, this needs to be ensured */
1845 if (!ref->hpel_base[plane][i])
1846 ref->hpel_base[plane][i] = av_malloc((height+2*edge) * ref->avframe->linesize[plane] + 32);
1847 if (!ref->hpel_base[plane][i]) {
1851 ref->hpel[plane][i] = ref->hpel_base[plane][i] + edge*ref->avframe->linesize[plane] + 16;
1854 if (!ref->interpolated[plane]) {
1855 s->diracdsp.dirac_hpel_filter(ref->hpel[plane][1], ref->hpel[plane][2],
1856 ref->hpel[plane][3], ref->hpel[plane][0],
1857 ref->avframe->linesize[plane], width, height);
1858 s->mpvencdsp.draw_edges(ref->hpel[plane][1], ref->avframe->linesize[plane], width, height, edge, edge, EDGE_TOP | EDGE_BOTTOM);
1859 s->mpvencdsp.draw_edges(ref->hpel[plane][2], ref->avframe->linesize[plane], width, height, edge, edge, EDGE_TOP | EDGE_BOTTOM);
1860 s->mpvencdsp.draw_edges(ref->hpel[plane][3], ref->avframe->linesize[plane], width, height, edge, edge, EDGE_TOP | EDGE_BOTTOM);
1862 ref->interpolated[plane] = 1;