void ff_er_add_slice(MpegEncContext *s, int startx, int starty, int endx, int endy, int status){
    const int start_i= clip(startx + starty * s->mb_width    , 0, s->mb_num-1);
    const int end_i  = clip(endx   + endy   * s->mb_width    , 0, s->mb_num);
    const int start_xy= s->mb_index2xy[start_i];
    const int end_xy  = s->mb_index2xy[end_i];
    int mask= -1;
    if(!s->error_resilience) return;
    mask &= ~VP_START;
    if(status & (AC_ERROR|AC_END)){
        mask &= ~(AC_ERROR|AC_END);
        s->error_count -= end_i - start_i + 1;
    if(status & (DC_ERROR|DC_END)){
        mask &= ~(DC_ERROR|DC_END);
        s->error_count -= end_i - start_i + 1;
    if(status & (MV_ERROR|MV_END)){
        mask &= ~(MV_ERROR|MV_END);
        s->error_count -= end_i - start_i + 1;
    if(status & (AC_ERROR|DC_ERROR|MV_ERROR)) s->error_count= INT_MAX;
    if(mask == ~0x7F){
        memset(&s->error_status_table[start_xy], 0, (end_xy - start_xy) * sizeof(uint8_t));
    }else{
        int i;
        for(i=start_xy; i<end_xy; i++){
            s->error_status_table[ i ] &= mask;
    if(end_i == s->mb_num)
        s->error_count= INT_MAX;
    else{
        s->error_status_table[end_xy] &= mask;
        s->error_status_table[end_xy] |= status;
    s->error_status_table[start_xy] |= VP_START;
    if(start_xy > 0 && s->avctx->thread_count <= 1 && s->avctx->skip_top*s->mb_width < start_i){
        int prev_status= s->error_status_table[ s->mb_index2xy[start_i - 1] ];
        prev_status &= ~ VP_START;
        if(prev_status != (MV_END|DC_END|AC_END)) s->error_count= INT_MAX;
void ff_er_add_slice(MpegEncContext *s, int startx, int starty, int endx, int endy, int status){
    const int start_i= clip(startx + starty * s->mb_width    , 0, s->mb_num-1);
    const int end_i  = clip(endx   + endy   * s->mb_width    , 0, s->mb_num);
    const int start_xy= s->mb_index2xy[start_i];
    const int end_xy  = s->mb_index2xy[end_i];
    int mask= -1;
    if(!s->error_resilience) return;
    mask &= ~VP_START;
    if(status & (AC_ERROR|AC_END)){
        mask &= ~(AC_ERROR|AC_END);
        s->error_count -= end_i - start_i + 1;
    if(status & (DC_ERROR|DC_END)){
        mask &= ~(DC_ERROR|DC_END);
        s->error_count -= end_i - start_i + 1;
    if(status & (MV_ERROR|MV_END)){
        mask &= ~(MV_ERROR|MV_END);
        s->error_count -= end_i - start_i + 1;
    if(status & (AC_ERROR|DC_ERROR|MV_ERROR)) s->error_count= INT_MAX;
    if(mask == ~0x7F){
        memset(&s->error_status_table[start_xy], 0, (end_xy - start_xy) * sizeof(uint8_t));
    }else{
        int i;
        for(i=start_xy; i<end_xy; i++){
            s->error_status_table[ i ] &= mask;
    if(end_i == s->mb_num)
        s->error_count= INT_MAX;
    else{
        s->error_status_table[end_xy] &= mask;
        s->error_status_table[end_xy] |= status;
    s->error_status_table[start_xy] |= VP_START;
    if(start_xy > 0 && s->avctx->thread_count <= 1 && s->avctx->skip_top*s->mb_width < start_i){
        int prev_status= s->error_status_table[ s->mb_index2xy[start_i - 1] ];
        prev_status &= ~ VP_START;
        if(prev_status != (MV_END|DC_END|AC_END)) s->error_count= INT_MAX;
void FUNC_0(MpegEncContext *VAR_0, int VAR_1, int VAR_2, int VAR_3, int VAR_4, int VAR_5){
    const int VAR_6= clip(VAR_1 + VAR_2 * VAR_0->mb_width    , 0, VAR_0->mb_num-1);
    const int VAR_7  = clip(VAR_3   + VAR_4   * VAR_0->mb_width    , 0, VAR_0->mb_num);
    const int VAR_8= VAR_0->mb_index2xy[VAR_6];
    const int VAR_9  = VAR_0->mb_index2xy[VAR_7];
    int VAR_10= -1;
    if(!VAR_0->error_resilience) return;
    VAR_10 &= ~VP_START;
    if(VAR_5 & (AC_ERROR|AC_END)){
        VAR_10 &= ~(AC_ERROR|AC_END);
        VAR_0->error_count -= VAR_7 - VAR_6 + 1;
    if(VAR_5 & (DC_ERROR|DC_END)){
        VAR_10 &= ~(DC_ERROR|DC_END);
        VAR_0->error_count -= VAR_7 - VAR_6 + 1;
    if(VAR_5 & (MV_ERROR|MV_END)){
        VAR_10 &= ~(MV_ERROR|MV_END);
        VAR_0->error_count -= VAR_7 - VAR_6 + 1;
    if(VAR_5 & (AC_ERROR|DC_ERROR|MV_ERROR)) VAR_0->error_count= INT_MAX;
    if(VAR_10 == ~0x7F){
        memset(&VAR_0->error_status_table[VAR_8], 0, (VAR_9 - VAR_8) * sizeof(uint8_t));
    }else{
        int VAR_11;
        for(VAR_11=VAR_8; VAR_11<VAR_9; VAR_11++){
            VAR_0->error_status_table[ VAR_11 ] &= VAR_10;
    if(VAR_7 == VAR_0->mb_num)
        VAR_0->error_count= INT_MAX;
    else{
        VAR_0->error_status_table[VAR_9] &= VAR_10;
        VAR_0->error_status_table[VAR_9] |= VAR_5;
    VAR_0->error_status_table[VAR_8] |= VP_START;
    if(VAR_8 > 0 && VAR_0->avctx->thread_count <= 1 && VAR_0->avctx->skip_top*VAR_0->mb_width < VAR_6){
        int VAR_12= VAR_0->error_status_table[ VAR_0->mb_index2xy[VAR_6 - 1] ];
        VAR_12 &= ~ VP_START;
        if(VAR_12 != (MV_END|DC_END|AC_END)) VAR_0->error_count= INT_MAX;
void FUNC_0(MpegEncContext *VAR_0, int VAR_1, int VAR_2, int VAR_3, int VAR_4, int VAR_5){ const int VAR_6= clip(VAR_1 + VAR_2 * VAR_0->mb_width    , 0, VAR_0->mb_num-1); const int VAR_7  = clip(VAR_3   + VAR_4   * VAR_0->mb_width    , 0, VAR_0->mb_num); const int VAR_8= VAR_0->mb_index2xy[VAR_6]; const int VAR_9  = VAR_0->mb_index2xy[VAR_7]; int VAR_10= -1; if(!VAR_0->error_resilience) return; VAR_10 &= ~VP_START; if(VAR_5 & (AC_ERROR|AC_END)){ VAR_10 &= ~(AC_ERROR|AC_END); VAR_0->error_count -= VAR_7 - VAR_6 + 1; if(VAR_5 & (DC_ERROR|DC_END)){ VAR_10 &= ~(DC_ERROR|DC_END); VAR_0->error_count -= VAR_7 - VAR_6 + 1; if(VAR_5 & (MV_ERROR|MV_END)){ VAR_10 &= ~(MV_ERROR|MV_END); VAR_0->error_count -= VAR_7 - VAR_6 + 1; if(VAR_5 & (AC_ERROR|DC_ERROR|MV_ERROR)) VAR_0->error_count= INT_MAX; if(VAR_10 == ~0x7F){ memset(&VAR_0->error_status_table[VAR_8], 0, (VAR_9 - VAR_8) * sizeof(uint8_t)); }else{ int VAR_11; for(VAR_11=VAR_8; VAR_11<VAR_9; VAR_11++){ VAR_0->error_status_table[ VAR_11 ] &= VAR_10; if(VAR_7 == VAR_0->mb_num)
VAR_0->error_count= INT_MAX; else{ VAR_0->error_status_table[VAR_9] &= VAR_10; VAR_0->error_status_table[VAR_9] |= VAR_5; VAR_0->error_status_table[VAR_8] |= VP_START; if(VAR_8 > 0 && VAR_0->avctx->thread_count <= 1 && VAR_0->avctx->skip_top*VAR_0->mb_width < VAR_6){ int VAR_12= VAR_0->error_status_table[ VAR_0->mb_index2xy[VAR_6 - 1] ]; VAR_12 &= ~ VP_START; if(VAR_12 != (MV_END|DC_END|AC_END)) VAR_0->error_count= INT_MAX;