static int cavs_find_frame_end(ParseContext *pc, const uint8_t *buf,

                               int buf_size) {

    int pic_found, i;

    uint32_t state;



    pic_found= pc->frame_start_found;

    state= pc->state;



    i=0;

    if(!pic_found){

        for(i=0; i<buf_size; i++){

            state= (state<<8) | buf[i];

            if(state == PIC_I_START_CODE || state == PIC_PB_START_CODE){

                i++;

                pic_found=1;

                break;

            }

        }

    }



    if(pic_found){

        /* EOF considered as end of frame */

        if (buf_size == 0)

            return 0;

        for(; i<buf_size; i++){

            state= (state<<8) | buf[i];

            if((state&0xFFFFFF00) == 0x100){

                if(state < SLICE_MIN_START_CODE || state > SLICE_MAX_START_CODE){

                    pc->frame_start_found=0;

                    pc->state=-1;

                    return i-3;

                }

            }

        }

    }

    pc->frame_start_found= pic_found;

    pc->state= state;

    return END_NOT_FOUND;

}

static int cavs_find_frame_end(ParseContext *pc, const uint8_t *buf,

                               int buf_size) {

    int pic_found, i;

    uint32_t state;



    pic_found= pc->frame_start_found;

    state= pc->state;



    i=0;

    if(!pic_found){

        for(i=0; i<buf_size; i++){

            state= (state<<8) | buf[i];

            if(state == PIC_I_START_CODE || state == PIC_PB_START_CODE){

                i++;

                pic_found=1;

                break;

            }

        }

    }



    if(pic_found){

        

        if (buf_size == 0)

            return 0;

        for(; i<buf_size; i++){

            state= (state<<8) | buf[i];

            if((state&0xFFFFFF00) == 0x100){

                if(state < SLICE_MIN_START_CODE || state > SLICE_MAX_START_CODE){

                    pc->frame_start_found=0;

                    pc->state=-1;

                    return i-3;

                }

            }

        }

    }

    pc->frame_start_found= pic_found;

    pc->state= state;

    return END_NOT_FOUND;

}

static int FUNC_0(ParseContext *VAR_0, const uint8_t *VAR_1,

                               int VAR_2) {

    int VAR_3, VAR_4;

    uint32_t state;



    VAR_3= VAR_0->frame_start_found;

    state= VAR_0->state;



    VAR_4=0;

    if(!VAR_3){

        for(VAR_4=0; VAR_4<VAR_2; VAR_4++){

            state= (state<<8) | VAR_1[VAR_4];

            if(state == PIC_I_START_CODE || state == PIC_PB_START_CODE){

                VAR_4++;

                VAR_3=1;

                break;

            }

        }

    }



    if(VAR_3){

        

        if (VAR_2 == 0)

            return 0;

        for(; VAR_4<VAR_2; VAR_4++){

            state= (state<<8) | VAR_1[VAR_4];

            if((state&0xFFFFFF00) == 0x100){

                if(state < SLICE_MIN_START_CODE || state > SLICE_MAX_START_CODE){

                    VAR_0->frame_start_found=0;

                    VAR_0->state=-1;

                    return VAR_4-3;

                }

            }

        }

    }

    VAR_0->frame_start_found= VAR_3;

    VAR_0->state= state;

    return END_NOT_FOUND;

}

static int FUNC_0(ParseContext *VAR_0, const uint8_t *VAR_1,
int VAR_2) { int VAR_3, VAR_4; uint32_t state; VAR_3= VAR_0->frame_start_found; state= VAR_0->state; VAR_4=0; if(!VAR_3){ for(VAR_4=0; VAR_4<VAR_2; VAR_4++){ state= (state<<8) | VAR_1[VAR_4]; if(state == PIC_I_START_CODE || state == PIC_PB_START_CODE){ VAR_4++; VAR_3=1; break; } } } if(VAR_3){ if (VAR_2 == 0)
return 0; for(; VAR_4<VAR_2; VAR_4++){ state= (state<<8) | VAR_1[VAR_4]; if((state&0xFFFFFF00) == 0x100){ if(state < SLICE_MIN_START_CODE || state > SLICE_MAX_START_CODE){ VAR_0->frame_start_found=0; VAR_0->state=-1; return VAR_4-3; } } } } VAR_0->frame_start_found= VAR_3; VAR_0->state= state; return END_NOT_FOUND; }