static int mjpeg_probe(AVProbeData *p)

{

    int i;

    int state = -1;

    int nb_invalid = 0;

    int nb_frames = 0;



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

        int c;

        if (p->buf[i] != 0xFF)

            continue;

        c = p->buf[i+1];

        switch (c) {

        case 0xD8:

            state = 0xD8;

            break;

        case 0xC0:

        case 0xC1:

        case 0xC2:

        case 0xC3:

        case 0xC5:

        case 0xC6:

        case 0xC7:

        case 0xF7:

            if (state == 0xD8) {

                state = 0xC0;

            } else

                nb_invalid++;

            break;

        case 0xDA:

            if (state == 0xC0) {

                state = 0xDA;

            } else

                nb_invalid++;

            break;

        case 0xD9:

            if (state == 0xDA) {

                state = 0xD9;

                nb_frames++;

            } else

                nb_invalid++;

            break;

        default:

            if (  (c >= 0x02 && c <= 0xBF)

                || c == 0xC8) {

                nb_invalid++;

            }

        }

    }



    if (nb_invalid*4 + 1 < nb_frames) {

        static const char ct_jpeg[] = "\r\nContent-Type: image/jpeg\r\n\r\n";

        int i;



        for (i=0; i<FFMIN(p->buf_size - sizeof(ct_jpeg), 100); i++)

            if (!memcmp(p->buf + i, ct_jpeg, sizeof(ct_jpeg) - 1))

                return AVPROBE_SCORE_EXTENSION;



        if (nb_invalid == 0 && nb_frames > 2)

            return AVPROBE_SCORE_EXTENSION / 2;

        return AVPROBE_SCORE_EXTENSION / 4;

    }



    return 0;

}

static int mjpeg_probe(AVProbeData *p)

{

    int i;

    int state = -1;

    int nb_invalid = 0;

    int nb_frames = 0;



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

        int c;

        if (p->buf[i] != 0xFF)

            continue;

        c = p->buf[i+1];

        switch (c) {

        case 0xD8:

            state = 0xD8;

            break;

        case 0xC0:

        case 0xC1:

        case 0xC2:

        case 0xC3:

        case 0xC5:

        case 0xC6:

        case 0xC7:

        case 0xF7:

            if (state == 0xD8) {

                state = 0xC0;

            } else

                nb_invalid++;

            break;

        case 0xDA:

            if (state == 0xC0) {

                state = 0xDA;

            } else

                nb_invalid++;

            break;

        case 0xD9:

            if (state == 0xDA) {

                state = 0xD9;

                nb_frames++;

            } else

                nb_invalid++;

            break;

        default:

            if (  (c >= 0x02 && c <= 0xBF)

                || c == 0xC8) {

                nb_invalid++;

            }

        }

    }



    if (nb_invalid*4 + 1 < nb_frames) {

        static const char ct_jpeg[] = "\r\nContent-Type: image/jpeg\r\n\r\n";

        int i;



        for (i=0; i<FFMIN(p->buf_size - sizeof(ct_jpeg), 100); i++)

            if (!memcmp(p->buf + i, ct_jpeg, sizeof(ct_jpeg) - 1))

                return AVPROBE_SCORE_EXTENSION;



        if (nb_invalid == 0 && nb_frames > 2)

            return AVPROBE_SCORE_EXTENSION / 2;

        return AVPROBE_SCORE_EXTENSION / 4;

    }



    return 0;

}

static int FUNC_0(AVProbeData *VAR_0)

{

    int VAR_6;

    int VAR_2 = -1;

    int VAR_3 = 0;

    int VAR_4 = 0;



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

        int c;

        if (VAR_0->buf[VAR_6] != 0xFF)

            continue;

        c = VAR_0->buf[VAR_6+1];

        switch (c) {

        case 0xD8:

            VAR_2 = 0xD8;

            break;

        case 0xC0:

        case 0xC1:

        case 0xC2:

        case 0xC3:

        case 0xC5:

        case 0xC6:

        case 0xC7:

        case 0xF7:

            if (VAR_2 == 0xD8) {

                VAR_2 = 0xC0;

            } else

                VAR_3++;

            break;

        case 0xDA:

            if (VAR_2 == 0xC0) {

                VAR_2 = 0xDA;

            } else

                VAR_3++;

            break;

        case 0xD9:

            if (VAR_2 == 0xDA) {

                VAR_2 = 0xD9;

                VAR_4++;

            } else

                VAR_3++;

            break;

        default:

            if (  (c >= 0x02 && c <= 0xBF)

                || c == 0xC8) {

                VAR_3++;

            }

        }

    }



    if (VAR_3*4 + 1 < VAR_4) {

        static const char VAR_5[] = "\r\nContent-Type: image/jpeg\r\n\r\n";

        int VAR_6;



        for (VAR_6=0; VAR_6<FFMIN(VAR_0->buf_size - sizeof(VAR_5), 100); VAR_6++)

            if (!memcmp(VAR_0->buf + VAR_6, VAR_5, sizeof(VAR_5) - 1))

                return AVPROBE_SCORE_EXTENSION;



        if (VAR_3 == 0 && VAR_4 > 2)

            return AVPROBE_SCORE_EXTENSION / 2;

        return AVPROBE_SCORE_EXTENSION / 4;

    }



    return 0;

}

static int FUNC_0(AVProbeData *VAR_0)
{ int VAR_6; int VAR_2 = -1; int VAR_3 = 0; int VAR_4 = 0; for (VAR_6=0; VAR_6<VAR_0->buf_size-2; VAR_6++) { int c; if (VAR_0->buf[VAR_6] != 0xFF)
continue; c = VAR_0->buf[VAR_6+1]; switch (c) { case 0xD8:
VAR_2 = 0xD8; break; case 0xC0:
case 0xC1:
case 0xC2:
case 0xC3:
case 0xC5:
case 0xC6:
case 0xC7:
case 0xF7:
if (VAR_2 == 0xD8) { VAR_2 = 0xC0; } else VAR_3++; break; case 0xDA:
if (VAR_2 == 0xC0) { VAR_2 = 0xDA; } else VAR_3++; break; case 0xD9:
if (VAR_2 == 0xDA) { VAR_2 = 0xD9; VAR_4++; } else VAR_3++; break; default:
if (  (c >= 0x02 && c <= 0xBF)
|| c == 0xC8) { VAR_3++; } } } if (VAR_3*4 + 1 < VAR_4) { static const char VAR_5[] = "\r\nContent-Type: image/jpeg\r\n\r\n"; int VAR_6; for (VAR_6=0; VAR_6<FFMIN(VAR_0->buf_size - sizeof(VAR_5), 100); VAR_6++) if (!memcmp(VAR_0->buf + VAR_6, VAR_5, sizeof(VAR_5) - 1))
return AVPROBE_SCORE_EXTENSION; if (VAR_3 == 0 && VAR_4 > 2)
return AVPROBE_SCORE_EXTENSION / 2; return AVPROBE_SCORE_EXTENSION / 4; } return 0; }