- int w = fmt->i_width;
- int h = fmt->i_height;
- int r = cfg->radius;
- if (i > 0) {
- w >>= sys->h_shift;
- h >>= sys->v_shift;
- r = ((r >> sys->h_shift) + (r >> sys->v_shift)) / 2;
- r = __MIN(__MAX((r + 1) & ~1, RADIUS_MIN), RADIUS_MAX);
- }
+ const vlc_chroma_description_t *chroma = sys->chroma;
+ int w = fmt->i_width * chroma->p[i].w.num / chroma->p[i].w.den;
+ int h = fmt->i_height * chroma->p[i].h.num / chroma->p[i].h.den;
+ int r = (cfg->radius * chroma->p[i].w.num / chroma->p[i].w.den +
+ cfg->radius * chroma->p[i].h.num / chroma->p[i].h.den) / 2;
+ r = __MIN(__MAX((r + 1) & ~1, RADIUS_MIN), RADIUS_MAX);