void ff_hevc_hls_filter(HEVCContext *s, int x, int y, int ctb_size)

{

    deblocking_filter_CTB(s, x, y);

    if (s->sps->sao_enabled) {

        int x_end = x >= s->sps->width  - ctb_size;

        int y_end = y >= s->sps->height - ctb_size;

        if (y && x)

            sao_filter_CTB(s, x - ctb_size, y - ctb_size);

        if (x && y_end)

            sao_filter_CTB(s, x - ctb_size, y);

        if (y && x_end) {

            sao_filter_CTB(s, x, y - ctb_size);

            if (s->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&s->ref->tf, y - ctb_size, 0);

        }

        if (x_end && y_end) {

            sao_filter_CTB(s, x , y);

            if (s->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&s->ref->tf, y, 0);

        }

    } else {

        if (y && x >= s->sps->width - ctb_size)

            if (s->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&s->ref->tf, y, 0);

    }

}

void ff_hevc_hls_filter(HEVCContext *s, int x, int y, int ctb_size)

{

    deblocking_filter_CTB(s, x, y);

    if (s->sps->sao_enabled) {

        int x_end = x >= s->sps->width  - ctb_size;

        int y_end = y >= s->sps->height - ctb_size;

        if (y && x)

            sao_filter_CTB(s, x - ctb_size, y - ctb_size);

        if (x && y_end)

            sao_filter_CTB(s, x - ctb_size, y);

        if (y && x_end) {

            sao_filter_CTB(s, x, y - ctb_size);

            if (s->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&s->ref->tf, y - ctb_size, 0);

        }

        if (x_end && y_end) {

            sao_filter_CTB(s, x , y);

            if (s->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&s->ref->tf, y, 0);

        }

    } else {

        if (y && x >= s->sps->width - ctb_size)

            if (s->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&s->ref->tf, y, 0);

    }

}

void FUNC_0(HEVCContext *VAR_0, int VAR_1, int VAR_2, int VAR_3)

{

    deblocking_filter_CTB(VAR_0, VAR_1, VAR_2);

    if (VAR_0->sps->sao_enabled) {

        int VAR_4 = VAR_1 >= VAR_0->sps->width  - VAR_3;

        int VAR_5 = VAR_2 >= VAR_0->sps->height - VAR_3;

        if (VAR_2 && VAR_1)

            sao_filter_CTB(VAR_0, VAR_1 - VAR_3, VAR_2 - VAR_3);

        if (VAR_1 && VAR_5)

            sao_filter_CTB(VAR_0, VAR_1 - VAR_3, VAR_2);

        if (VAR_2 && VAR_4) {

            sao_filter_CTB(VAR_0, VAR_1, VAR_2 - VAR_3);

            if (VAR_0->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&VAR_0->ref->tf, VAR_2 - VAR_3, 0);

        }

        if (VAR_4 && VAR_5) {

            sao_filter_CTB(VAR_0, VAR_1 , VAR_2);

            if (VAR_0->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&VAR_0->ref->tf, VAR_2, 0);

        }

    } else {

        if (VAR_2 && VAR_1 >= VAR_0->sps->width - VAR_3)

            if (VAR_0->threads_type & FF_THREAD_FRAME )

                ff_thread_report_progress(&VAR_0->ref->tf, VAR_2, 0);

    }

}

void FUNC_0(HEVCContext *VAR_0, int VAR_1, int VAR_2, int VAR_3)
{ deblocking_filter_CTB(VAR_0, VAR_1, VAR_2); if (VAR_0->sps->sao_enabled) { int VAR_4 = VAR_1 >= VAR_0->sps->width  - VAR_3; int VAR_5 = VAR_2 >= VAR_0->sps->height - VAR_3; if (VAR_2 && VAR_1)
sao_filter_CTB(VAR_0, VAR_1 - VAR_3, VAR_2 - VAR_3); if (VAR_1 && VAR_5)
sao_filter_CTB(VAR_0, VAR_1 - VAR_3, VAR_2); if (VAR_2 && VAR_4) { sao_filter_CTB(VAR_0, VAR_1, VAR_2 - VAR_3); if (VAR_0->threads_type & FF_THREAD_FRAME )
ff_thread_report_progress(&VAR_0->ref->tf, VAR_2 - VAR_3, 0); } if (VAR_4 && VAR_5) { sao_filter_CTB(VAR_0, VAR_1 , VAR_2); if (VAR_0->threads_type & FF_THREAD_FRAME )
ff_thread_report_progress(&VAR_0->ref->tf, VAR_2, 0); } } else { if (VAR_2 && VAR_1 >= VAR_0->sps->width - VAR_3)
if (VAR_0->threads_type & FF_THREAD_FRAME )
ff_thread_report_progress(&VAR_0->ref->tf, VAR_2, 0); } }