static int decode_frame_header (bit_buffer_t *bitbuf,MpegEncContext *s) {

  int frame_size_code;



  /* unknown field */

  get_bits (bitbuf, 8);



  /* frame type */

  s->pict_type = get_bits (bitbuf, 2);



  if (s->pict_type == 3)

    return -1;



  if (s->pict_type == SVQ1_FRAME_INTRA) {



    /* unknown fields */

    if (s->f_code == 0x50 || s->f_code == 0x60) {

      get_bits (bitbuf, 16);

    }



    if ((s->f_code ^ 0x10) >= 0x50) {

      skip_bits(bitbuf,8*get_bits (bitbuf, 8));

    }



    get_bits (bitbuf, 2);

    get_bits (bitbuf, 2);

    get_bits (bitbuf, 1);



    /* load frame size */

    frame_size_code = get_bits (bitbuf, 3);



    if (frame_size_code == 7) {

      /* load width, height (12 bits each) */

      s->width = get_bits (bitbuf, 12);

      s->height = get_bits (bitbuf, 12);



      if (!s->width || !s->height)

        return -1;

    } else {

      /* get width, height from table */

      s->width = frame_size_table[frame_size_code].width;

      s->height = frame_size_table[frame_size_code].height;

    }

  }



  /* unknown fields */

  if (get_bits (bitbuf, 1) == 1) {

    get_bits (bitbuf, 1);

    get_bits (bitbuf, 1);



    if (get_bits (bitbuf, 2) != 0)

      return -1;

  }



  if (get_bits (bitbuf, 1) == 1) {

    get_bits (bitbuf, 1);

    get_bits (bitbuf, 4);

    get_bits (bitbuf, 1);

    get_bits (bitbuf, 2);



    while (get_bits (bitbuf, 1) == 1) {

      get_bits (bitbuf, 8);

    }

  }

  

  return 0;

}

static int decode_frame_header (bit_buffer_t *bitbuf,MpegEncContext *s) {

  int frame_size_code;



  

  get_bits (bitbuf, 8);



  

  s->pict_type = get_bits (bitbuf, 2);



  if (s->pict_type == 3)

    return -1;



  if (s->pict_type == SVQ1_FRAME_INTRA) {



    

    if (s->f_code == 0x50 || s->f_code == 0x60) {

      get_bits (bitbuf, 16);

    }



    if ((s->f_code ^ 0x10) >= 0x50) {

      skip_bits(bitbuf,8*get_bits (bitbuf, 8));

    }



    get_bits (bitbuf, 2);

    get_bits (bitbuf, 2);

    get_bits (bitbuf, 1);



    

    frame_size_code = get_bits (bitbuf, 3);



    if (frame_size_code == 7) {

      

      s->width = get_bits (bitbuf, 12);

      s->height = get_bits (bitbuf, 12);



      if (!s->width || !s->height)

        return -1;

    } else {

      

      s->width = frame_size_table[frame_size_code].width;

      s->height = frame_size_table[frame_size_code].height;

    }

  }



  

  if (get_bits (bitbuf, 1) == 1) {

    get_bits (bitbuf, 1);

    get_bits (bitbuf, 1);



    if (get_bits (bitbuf, 2) != 0)

      return -1;

  }



  if (get_bits (bitbuf, 1) == 1) {

    get_bits (bitbuf, 1);

    get_bits (bitbuf, 4);

    get_bits (bitbuf, 1);

    get_bits (bitbuf, 2);



    while (get_bits (bitbuf, 1) == 1) {

      get_bits (bitbuf, 8);

    }

  }

  

  return 0;

}

static int FUNC_0 (bit_buffer_t *VAR_0,MpegEncContext *VAR_1) {

  int VAR_2;



  

  get_bits (VAR_0, 8);



  

  VAR_1->pict_type = get_bits (VAR_0, 2);



  if (VAR_1->pict_type == 3)

    return -1;



  if (VAR_1->pict_type == SVQ1_FRAME_INTRA) {



    

    if (VAR_1->f_code == 0x50 || VAR_1->f_code == 0x60) {

      get_bits (VAR_0, 16);

    }



    if ((VAR_1->f_code ^ 0x10) >= 0x50) {

      skip_bits(VAR_0,8*get_bits (VAR_0, 8));

    }



    get_bits (VAR_0, 2);

    get_bits (VAR_0, 2);

    get_bits (VAR_0, 1);



    

    VAR_2 = get_bits (VAR_0, 3);



    if (VAR_2 == 7) {

      

      VAR_1->width = get_bits (VAR_0, 12);

      VAR_1->height = get_bits (VAR_0, 12);



      if (!VAR_1->width || !VAR_1->height)

        return -1;

    } else {

      

      VAR_1->width = frame_size_table[VAR_2].width;

      VAR_1->height = frame_size_table[VAR_2].height;

    }

  }



  

  if (get_bits (VAR_0, 1) == 1) {

    get_bits (VAR_0, 1);

    get_bits (VAR_0, 1);



    if (get_bits (VAR_0, 2) != 0)

      return -1;

  }



  if (get_bits (VAR_0, 1) == 1) {

    get_bits (VAR_0, 1);

    get_bits (VAR_0, 4);

    get_bits (VAR_0, 1);

    get_bits (VAR_0, 2);



    while (get_bits (VAR_0, 1) == 1) {

      get_bits (VAR_0, 8);

    }

  }

  

  return 0;

}

static int FUNC_0 (bit_buffer_t *VAR_0,MpegEncContext *VAR_1) { int VAR_2; get_bits (VAR_0, 8); VAR_1->pict_type = get_bits (VAR_0, 2); if (VAR_1->pict_type == 3)
return -1; if (VAR_1->pict_type == SVQ1_FRAME_INTRA) { if (VAR_1->f_code == 0x50 || VAR_1->f_code == 0x60) { get_bits (VAR_0, 16); } if ((VAR_1->f_code ^ 0x10) >= 0x50) { skip_bits(VAR_0,8*get_bits (VAR_0, 8)); } get_bits (VAR_0, 2); get_bits (VAR_0, 2); get_bits (VAR_0, 1); VAR_2 = get_bits (VAR_0, 3); if (VAR_2 == 7) { VAR_1->width = get_bits (VAR_0, 12); VAR_1->height = get_bits (VAR_0, 12); if (!VAR_1->width || !VAR_1->height)
return -1; } else { VAR_1->width = frame_size_table[VAR_2].width; VAR_1->height = frame_size_table[VAR_2].height; } } if (get_bits (VAR_0, 1) == 1) { get_bits (VAR_0, 1); get_bits (VAR_0, 1); if (get_bits (VAR_0, 2) != 0)
return -1; } if (get_bits (VAR_0, 1) == 1) { get_bits (VAR_0, 1); get_bits (VAR_0, 4); get_bits (VAR_0, 1); get_bits (VAR_0, 2); while (get_bits (VAR_0, 1) == 1) { get_bits (VAR_0, 8); } } return 0; }