static int pnm_decode_header(AVCodecContext *avctx, PNMContext * const s){

    char buf1[32], tuple_type[32];

    int h, w, depth, maxval;;



    pnm_get(s, buf1, sizeof(buf1));

    if (!strcmp(buf1, "P4")) {

        avctx->pix_fmt = PIX_FMT_MONOWHITE;

    } else if (!strcmp(buf1, "P5")) {

        if (avctx->codec_id == CODEC_ID_PGMYUV) 

            avctx->pix_fmt = PIX_FMT_YUV420P;

        else

            avctx->pix_fmt = PIX_FMT_GRAY8;

    } else if (!strcmp(buf1, "P6")) {

        avctx->pix_fmt = PIX_FMT_RGB24;

    } else if (!strcmp(buf1, "P7")) {

        w = -1;

        h = -1;

        maxval = -1;

        depth = -1;

        tuple_type[0] = '\0';

        for(;;) {

            pnm_get(s, buf1, sizeof(buf1));

            if (!strcmp(buf1, "WIDTH")) {

                pnm_get(s, buf1, sizeof(buf1));

                w = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "HEIGHT")) {

                pnm_get(s, buf1, sizeof(buf1));

                h = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "DEPTH")) {

                pnm_get(s, buf1, sizeof(buf1));

                depth = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "MAXVAL")) {

                pnm_get(s, buf1, sizeof(buf1));

                maxval = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "TUPLETYPE")) {

                pnm_get(s, tuple_type, sizeof(tuple_type));

            } else if (!strcmp(buf1, "ENDHDR")) {

                break;

            } else {

                return -1;

            }

        }

        /* check that all tags are present */

        if (w <= 0 || h <= 0 || maxval <= 0 || depth <= 0 || tuple_type[0] == '\0')

            return -1;

        avctx->width = w;

        avctx->height = h;

        if (depth == 1) {

            if (maxval == 1)

                avctx->pix_fmt = PIX_FMT_MONOWHITE;

            else 

                avctx->pix_fmt = PIX_FMT_GRAY8;

        } else if (depth == 3) {

            avctx->pix_fmt = PIX_FMT_RGB24;

        } else if (depth == 4) {

            avctx->pix_fmt = PIX_FMT_RGBA32;

        } else {

            return -1;

        }

        return 0;

    } else {

        return -1;

    }

    pnm_get(s, buf1, sizeof(buf1));

    avctx->width = atoi(buf1);

    if (avctx->width <= 0)

        return -1;

    pnm_get(s, buf1, sizeof(buf1));

    avctx->height = atoi(buf1);

    if (avctx->height <= 0)

        return -1;

    if (avctx->pix_fmt != PIX_FMT_MONOWHITE) {

        pnm_get(s, buf1, sizeof(buf1));

    }



    /* more check if YUV420 */

    if (avctx->pix_fmt == PIX_FMT_YUV420P) {

        if ((avctx->width & 1) != 0)

            return -1;

        h = (avctx->height * 2);

        if ((h % 3) != 0)

            return -1;

        h /= 3;

        avctx->height = h;

    }

    return 0;

}

static int pnm_decode_header(AVCodecContext *avctx, PNMContext * const s){

    char buf1[32], tuple_type[32];

    int h, w, depth, maxval;;



    pnm_get(s, buf1, sizeof(buf1));

    if (!strcmp(buf1, "P4")) {

        avctx->pix_fmt = PIX_FMT_MONOWHITE;

    } else if (!strcmp(buf1, "P5")) {

        if (avctx->codec_id == CODEC_ID_PGMYUV) 

            avctx->pix_fmt = PIX_FMT_YUV420P;

        else

            avctx->pix_fmt = PIX_FMT_GRAY8;

    } else if (!strcmp(buf1, "P6")) {

        avctx->pix_fmt = PIX_FMT_RGB24;

    } else if (!strcmp(buf1, "P7")) {

        w = -1;

        h = -1;

        maxval = -1;

        depth = -1;

        tuple_type[0] = '\0';

        for(;;) {

            pnm_get(s, buf1, sizeof(buf1));

            if (!strcmp(buf1, "WIDTH")) {

                pnm_get(s, buf1, sizeof(buf1));

                w = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "HEIGHT")) {

                pnm_get(s, buf1, sizeof(buf1));

                h = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "DEPTH")) {

                pnm_get(s, buf1, sizeof(buf1));

                depth = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "MAXVAL")) {

                pnm_get(s, buf1, sizeof(buf1));

                maxval = strtol(buf1, NULL, 10);

            } else if (!strcmp(buf1, "TUPLETYPE")) {

                pnm_get(s, tuple_type, sizeof(tuple_type));

            } else if (!strcmp(buf1, "ENDHDR")) {

                break;

            } else {

                return -1;

            }

        }

        

        if (w <= 0 || h <= 0 || maxval <= 0 || depth <= 0 || tuple_type[0] == '\0')

            return -1;

        avctx->width = w;

        avctx->height = h;

        if (depth == 1) {

            if (maxval == 1)

                avctx->pix_fmt = PIX_FMT_MONOWHITE;

            else 

                avctx->pix_fmt = PIX_FMT_GRAY8;

        } else if (depth == 3) {

            avctx->pix_fmt = PIX_FMT_RGB24;

        } else if (depth == 4) {

            avctx->pix_fmt = PIX_FMT_RGBA32;

        } else {

            return -1;

        }

        return 0;

    } else {

        return -1;

    }

    pnm_get(s, buf1, sizeof(buf1));

    avctx->width = atoi(buf1);

    if (avctx->width <= 0)

        return -1;

    pnm_get(s, buf1, sizeof(buf1));

    avctx->height = atoi(buf1);

    if (avctx->height <= 0)

        return -1;

    if (avctx->pix_fmt != PIX_FMT_MONOWHITE) {

        pnm_get(s, buf1, sizeof(buf1));

    }



    

    if (avctx->pix_fmt == PIX_FMT_YUV420P) {

        if ((avctx->width & 1) != 0)

            return -1;

        h = (avctx->height * 2);

        if ((h % 3) != 0)

            return -1;

        h /= 3;

        avctx->height = h;

    }

    return 0;

}

        if (w <= 0 || h <= 0 || maxval <= 0 || depth <= 0 || tuple_type[0] == '\0')     if (avctx->height <= 0)
static int FUNC_0(AVCodecContext *VAR_0, PNMContext * const VAR_1){

    char VAR_2[32], VAR_3[32];

    int VAR_4, VAR_5, VAR_6, VAR_7;;



    pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

    if (!strcmp(VAR_2, "P4")) {

        VAR_0->pix_fmt = PIX_FMT_MONOWHITE;

    } else if (!strcmp(VAR_2, "P5")) {

        if (VAR_0->codec_id == CODEC_ID_PGMYUV) 

            VAR_0->pix_fmt = PIX_FMT_YUV420P;

        else

            VAR_0->pix_fmt = PIX_FMT_GRAY8;

    } else if (!strcmp(VAR_2, "P6")) {

        VAR_0->pix_fmt = PIX_FMT_RGB24;

    } else if (!strcmp(VAR_2, "P7")) {

        VAR_5 = -1;

        VAR_4 = -1;

        VAR_7 = -1;

        VAR_6 = -1;

        VAR_3[0] = '\0';

        for(;;) {

            pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

            if (!strcmp(VAR_2, "WIDTH")) {

                pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

                VAR_5 = strtol(VAR_2, NULL, 10);

            } else if (!strcmp(VAR_2, "HEIGHT")) {

                pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

                VAR_4 = strtol(VAR_2, NULL, 10);

            } else if (!strcmp(VAR_2, "DEPTH")) {

                pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

                VAR_6 = strtol(VAR_2, NULL, 10);

            } else if (!strcmp(VAR_2, "MAXVAL")) {

                pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

                VAR_7 = strtol(VAR_2, NULL, 10);

            } else if (!strcmp(VAR_2, "TUPLETYPE")) {

                pnm_get(VAR_1, VAR_3, sizeof(VAR_3));

            } else if (!strcmp(VAR_2, "ENDHDR")) {

                break;

            } else {

                return -1;

            }

        }

        

        if (VAR_5 <= 0 || VAR_4 <= 0 || VAR_7 <= 0 || VAR_6 <= 0 || VAR_3[0] == '\0')

            return -1;

        VAR_0->width = VAR_5;

        VAR_0->height = VAR_4;

        if (VAR_6 == 1) {

            if (VAR_7 == 1)

                VAR_0->pix_fmt = PIX_FMT_MONOWHITE;

            else 

                VAR_0->pix_fmt = PIX_FMT_GRAY8;

        } else if (VAR_6 == 3) {

            VAR_0->pix_fmt = PIX_FMT_RGB24;

        } else if (VAR_6 == 4) {

            VAR_0->pix_fmt = PIX_FMT_RGBA32;

        } else {

            return -1;

        }

        return 0;

    } else {

        return -1;

    }

    pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

    VAR_0->width = atoi(VAR_2);

    if (VAR_0->width <= 0)

        return -1;

    pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

    VAR_0->height = atoi(VAR_2);

    if (VAR_0->height <= 0)

        return -1;

    if (VAR_0->pix_fmt != PIX_FMT_MONOWHITE) {

        pnm_get(VAR_1, VAR_2, sizeof(VAR_2));

    }



    

    if (VAR_0->pix_fmt == PIX_FMT_YUV420P) {

        if ((VAR_0->width & 1) != 0)

            return -1;

        VAR_4 = (VAR_0->height * 2);

        if ((VAR_4 % 3) != 0)

            return -1;

        VAR_4 /= 3;

        VAR_0->height = VAR_4;

    }

    return 0;

}

static int FUNC_0(AVCodecContext *VAR_0, PNMContext * const VAR_1){ char VAR_2[32], VAR_3[32]; int VAR_4, VAR_5, VAR_6, VAR_7;; pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); if (!strcmp(VAR_2, "P4")) { VAR_0->pix_fmt = PIX_FMT_MONOWHITE; } else if (!strcmp(VAR_2, "P5")) { if (VAR_0->codec_id == CODEC_ID_PGMYUV)
VAR_0->pix_fmt = PIX_FMT_YUV420P; else
VAR_0->pix_fmt = PIX_FMT_GRAY8; } else if (!strcmp(VAR_2, "P6")) { VAR_0->pix_fmt = PIX_FMT_RGB24; } else if (!strcmp(VAR_2, "P7")) { VAR_5 = -1; VAR_4 = -1; VAR_7 = -1; VAR_6 = -1; VAR_3[0] = '\0'; for(;;) { pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); if (!strcmp(VAR_2, "WIDTH")) { pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); VAR_5 = strtol(VAR_2, NULL, 10); } else if (!strcmp(VAR_2, "HEIGHT")) { pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); VAR_4 = strtol(VAR_2, NULL, 10); } else if (!strcmp(VAR_2, "DEPTH")) { pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); VAR_6 = strtol(VAR_2, NULL, 10); } else if (!strcmp(VAR_2, "MAXVAL")) { pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); VAR_7 = strtol(VAR_2, NULL, 10); } else if (!strcmp(VAR_2, "TUPLETYPE")) { pnm_get(VAR_1, VAR_3, sizeof(VAR_3)); } else if (!strcmp(VAR_2, "ENDHDR")) { break; } else { return -1; } } if (VAR_5 <= 0 || VAR_4 <= 0 || VAR_7 <= 0 || VAR_6 <= 0 || VAR_3[0] == '\0')
return -1; VAR_0->width = VAR_5; VAR_0->height = VAR_4; if (VAR_6 == 1) { if (VAR_7 == 1)
VAR_0->pix_fmt = PIX_FMT_MONOWHITE; else
VAR_0->pix_fmt = PIX_FMT_GRAY8; } else if (VAR_6 == 3) { VAR_0->pix_fmt = PIX_FMT_RGB24; } else if (VAR_6 == 4) { VAR_0->pix_fmt = PIX_FMT_RGBA32; } else { return -1; } return 0; } else { return -1; } pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); VAR_0->width = atoi(VAR_2); if (VAR_0->width <= 0)
return -1; pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); VAR_0->height = atoi(VAR_2); if (VAR_0->height <= 0)
return -1; if (VAR_0->pix_fmt != PIX_FMT_MONOWHITE) { pnm_get(VAR_1, VAR_2, sizeof(VAR_2)); } if (VAR_0->pix_fmt == PIX_FMT_YUV420P) { if ((VAR_0->width & 1) != 0)
return -1; VAR_4 = (VAR_0->height * 2); if ((VAR_4 % 3) != 0)
return -1; VAR_4 /= 3; VAR_0->height = VAR_4; } return 0; }