static int mpegps_probe(AVProbeData *p)

{

    uint32_t code= -1;

    int sys=0, pspack=0, priv1=0, vid=0, audio=0, invalid=0;

    int i;

    int score=0;



    for(i=0; i<p->buf_size; i++){

        code = (code<<8) + p->buf[i];

        if ((code & 0xffffff00) == 0x100) {

            int len= p->buf[i+1] << 8 | p->buf[i+2];

            int pes= check_pes(p->buf+i, p->buf+p->buf_size);



            if(code == SYSTEM_HEADER_START_CODE) sys++;

            else if(code == PACK_START_CODE)     pspack++;

            else if((code & 0xf0) == VIDEO_ID &&  pes) vid++;

            // skip pes payload to avoid start code emulation for private

            // and audio streams

            else if((code & 0xe0) == AUDIO_ID &&  pes) {audio++; i+=len;}

            else if(code == PRIVATE_STREAM_1  &&  pes) {priv1++; i+=len;}



            else if((code & 0xf0) == VIDEO_ID && !pes) invalid++;

            else if((code & 0xe0) == AUDIO_ID && !pes) invalid++;

            else if(code == PRIVATE_STREAM_1  && !pes) invalid++;

        }

    }



    if(vid+audio > invalid)     /* invalid VDR files nd short PES streams */

        score= AVPROBE_SCORE_MAX/4;



//av_log(NULL, AV_LOG_ERROR, "%d %d %d %d %d %d len:%d\n", sys, priv1, pspack,vid, audio, invalid, p->buf_size);

    if(sys>invalid && sys*9 <= pspack*10)

        return pspack > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; // +1 for .mpg

    if(pspack > invalid && (priv1+vid+audio)*10 >= pspack*9)

        return pspack > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; // +1 for .mpg

    if((!!vid ^ !!audio) && (audio > 4 || vid > 1) && !sys && !pspack && p->buf_size>2048 && vid + audio > invalid) /* PES stream */

        return (audio > 12 || vid > 3) ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4;



    //02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1

    //mp3_misidentified_2.mp3 has sys:0 priv1:0 pspack:0 vid:0 audio:6

    return score;

}

static int mpegps_probe(AVProbeData *p)

{

    uint32_t code= -1;

    int sys=0, pspack=0, priv1=0, vid=0, audio=0, invalid=0;

    int i;

    int score=0;



    for(i=0; i<p->buf_size; i++){

        code = (code<<8) + p->buf[i];

        if ((code & 0xffffff00) == 0x100) {

            int len= p->buf[i+1] << 8 | p->buf[i+2];

            int pes= check_pes(p->buf+i, p->buf+p->buf_size);



            if(code == SYSTEM_HEADER_START_CODE) sys++;

            else if(code == PACK_START_CODE)     pspack++;

            else if((code & 0xf0) == VIDEO_ID &&  pes) vid++;

            

            

            else if((code & 0xe0) == AUDIO_ID &&  pes) {audio++; i+=len;}

            else if(code == PRIVATE_STREAM_1  &&  pes) {priv1++; i+=len;}



            else if((code & 0xf0) == VIDEO_ID && !pes) invalid++;

            else if((code & 0xe0) == AUDIO_ID && !pes) invalid++;

            else if(code == PRIVATE_STREAM_1  && !pes) invalid++;

        }

    }



    if(vid+audio > invalid)     

        score= AVPROBE_SCORE_MAX/4;





    if(sys>invalid && sys*9 <= pspack*10)

        return pspack > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; 

    if(pspack > invalid && (priv1+vid+audio)*10 >= pspack*9)

        return pspack > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; 

    if((!!vid ^ !!audio) && (audio > 4 || vid > 1) && !sys && !pspack && p->buf_size>2048 && vid + audio > invalid) 

        return (audio > 12 || vid > 3) ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4;



    

    

    return score;

}

static int FUNC_0(AVProbeData *VAR_0)

{

    uint32_t code= -1;

    int VAR_1=0, VAR_2=0, VAR_3=0, VAR_4=0, VAR_5=0, VAR_6=0;

    int VAR_7;

    int VAR_8=0;



    for(VAR_7=0; VAR_7<VAR_0->buf_size; VAR_7++){

        code = (code<<8) + VAR_0->buf[VAR_7];

        if ((code & 0xffffff00) == 0x100) {

            int len= VAR_0->buf[VAR_7+1] << 8 | VAR_0->buf[VAR_7+2];

            int pes= check_pes(VAR_0->buf+VAR_7, VAR_0->buf+VAR_0->buf_size);



            if(code == SYSTEM_HEADER_START_CODE) VAR_1++;

            else if(code == PACK_START_CODE)     VAR_2++;

            else if((code & 0xf0) == VIDEO_ID &&  pes) VAR_4++;

            

            

            else if((code & 0xe0) == AUDIO_ID &&  pes) {VAR_5++; VAR_7+=len;}

            else if(code == PRIVATE_STREAM_1  &&  pes) {VAR_3++; VAR_7+=len;}



            else if((code & 0xf0) == VIDEO_ID && !pes) VAR_6++;

            else if((code & 0xe0) == AUDIO_ID && !pes) VAR_6++;

            else if(code == PRIVATE_STREAM_1  && !pes) VAR_6++;

        }

    }



    if(VAR_4+VAR_5 > VAR_6)     

        VAR_8= AVPROBE_SCORE_MAX/4;





    if(VAR_1>VAR_6 && VAR_1*9 <= VAR_2*10)

        return VAR_2 > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; 

    if(VAR_2 > VAR_6 && (VAR_3+VAR_4+VAR_5)*10 >= VAR_2*9)

        return VAR_2 > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; 

    if((!!VAR_4 ^ !!VAR_5) && (VAR_5 > 4 || VAR_4 > 1) && !VAR_1 && !VAR_2 && VAR_0->buf_size>2048 && VAR_4 + VAR_5 > VAR_6) 

        return (VAR_5 > 12 || VAR_4 > 3) ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4;



    

    

    return VAR_8;

}

static int FUNC_0(AVProbeData *VAR_0)
{ uint32_t code= -1; int VAR_1=0, VAR_2=0, VAR_3=0, VAR_4=0, VAR_5=0, VAR_6=0; int VAR_7; int VAR_8=0; for(VAR_7=0; VAR_7<VAR_0->buf_size; VAR_7++){ code = (code<<8) + VAR_0->buf[VAR_7]; if ((code & 0xffffff00) == 0x100) { int len= VAR_0->buf[VAR_7+1] << 8 | VAR_0->buf[VAR_7+2]; int pes= check_pes(VAR_0->buf+VAR_7, VAR_0->buf+VAR_0->buf_size); if(code == SYSTEM_HEADER_START_CODE) VAR_1++; else if(code == PACK_START_CODE)     VAR_2++; else if((code & 0xf0) == VIDEO_ID &&  pes) VAR_4++; else if((code & 0xe0) == AUDIO_ID &&  pes) {VAR_5++; VAR_7+=len;} else if(code == PRIVATE_STREAM_1  &&  pes) {VAR_3++; VAR_7+=len;} else if((code & 0xf0) == VIDEO_ID && !pes) VAR_6++; else if((code & 0xe0) == AUDIO_ID && !pes) VAR_6++; else if(code == PRIVATE_STREAM_1  && !pes) VAR_6++; } } if(VAR_4+VAR_5 > VAR_6)
VAR_8= AVPROBE_SCORE_MAX/4; if(VAR_1>VAR_6 && VAR_1*9 <= VAR_2*10)
return VAR_2 > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; if(VAR_2 > VAR_6 && (VAR_3+VAR_4+VAR_5)*10 >= VAR_2*9)
return VAR_2 > 2 ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; if((!!VAR_4 ^ !!VAR_5) && (VAR_5 > 4 || VAR_4 > 1) && !VAR_1 && !VAR_2 && VAR_0->buf_size>2048 && VAR_4 + VAR_5 > VAR_6)
return (VAR_5 > 12 || VAR_4 > 3) ? AVPROBE_SCORE_MAX/2+2 : AVPROBE_SCORE_MAX/4; return VAR_8; }