while (y + stripe_h <= row_h) { // Change the HAVE_BOTTOM bit in edges to (sby + 1 != f->sbh || y + stripe_h != row_h)
edges ^= (-(sby + 1 != f->sbh || y + stripe_h != row_h) ^ edges) & LR_HAVE_BOTTOM;
lr_fn(p, stride, left, lpf, unit_w, stripe_h, ¶ms, edges HIGHBD_CALL_SUFFIX);
left += stripe_h;
y += stripe_h;
p += stripe_h * PXSTRIDE(stride);
edges |= LR_HAVE_TOP;
stripe_h = imin(64 >> ss_ver, row_h - y);
if (stripe_h == 0) break;
lpf += 4 * PXSTRIDE(stride);
}
}
staticvoid backup4xU(pixel (*dst)[4], const pixel *src, const ptrdiff_t src_stride,
int u)
{
for (; u > 0; u--, dst++, src += PXSTRIDE(src_stride))
pixel_copy(dst, src, 4);
}
staticvoid lr_sbrow(const Dav1dFrameContext *const f, pixel *p, const int y, const int w, const int h, const int row_h, const int plane)
{ const int chroma = !!plane; const int ss_ver = chroma & (f->sr_cur.p.p.layout == DAV1D_PIXEL_LAYOUT_I420); const int ss_hor = chroma & (f->sr_cur.p.p.layout != DAV1D_PIXEL_LAYOUT_I444); const ptrdiff_t p_stride = f->sr_cur.p.stride[chroma];
const int unit_size_log2 = f->frame_hdr->restoration.unit_size[!!plane]; const int unit_size = 1 << unit_size_log2; const int half_unit_size = unit_size >> 1; const int max_unit_size = unit_size + half_unit_size;
// Y coordinate of the sbrow (y is 8 luma pixel rows above row_y) const int row_y = y + ((8 >> ss_ver) * !!y);
// FIXME This is an ugly hack to lookup the proper AV1Filter unit for // chroma planes. Question: For Multithreaded decoding, is it better // to store the chroma LR information with collocated Luma information? // In other words. For a chroma restoration unit locate at 128,128 and // with a 4:2:0 chroma subsampling, do we store the filter information at // the AV1Filter unit located at (128,128) or (256,256) // TODO Support chroma subsampling. const int shift_hor = 7 - ss_hor;
/* maximum sbrow height is 128 + 8 rows offset */
ALIGN_STK_16(pixel, pre_lr_border, 2, [128 + 8][4]); const Av1RestorationUnit *lr[2];
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.