void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number)

{

    mpeg1_encode_sequence_header(s);



    /* mpeg1 picture header */

    put_header(s, PICTURE_START_CODE);

    /* temporal reference */



    // RAL: s->picture_number instead of s->fake_picture_number

    put_bits(&s->pb, 10, (s->picture_number - 

                          s->gop_picture_number) & 0x3ff); 

    s->fake_picture_number++;

    

    put_bits(&s->pb, 3, s->pict_type);



    s->vbv_delay_ptr= s->pb.buf + get_bit_count(&s->pb)/8;

    put_bits(&s->pb, 16, 0xFFFF); /* vbv_delay */

    

    // RAL: Forward f_code also needed for B frames

    if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) {

        put_bits(&s->pb, 1, 0); /* half pel coordinates */

        if(s->codec_id == CODEC_ID_MPEG1VIDEO)

            put_bits(&s->pb, 3, s->f_code); /* forward_f_code */

        else

            put_bits(&s->pb, 3, 7); /* forward_f_code */

    }

    

    // RAL: Backward f_code necessary for B frames

    if (s->pict_type == B_TYPE) {

        put_bits(&s->pb, 1, 0); /* half pel coordinates */

        if(s->codec_id == CODEC_ID_MPEG1VIDEO)

            put_bits(&s->pb, 3, s->b_code); /* backward_f_code */

        else

            put_bits(&s->pb, 3, 7); /* backward_f_code */

    }



    put_bits(&s->pb, 1, 0); /* extra bit picture */



    s->frame_pred_frame_dct = 1;

    if(s->codec_id == CODEC_ID_MPEG2VIDEO){

        put_header(s, EXT_START_CODE);

        put_bits(&s->pb, 4, 8); //pic ext

        if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) {

            put_bits(&s->pb, 4, s->f_code);

            put_bits(&s->pb, 4, s->f_code);

        }else{

            put_bits(&s->pb, 8, 255);

        }

        if (s->pict_type == B_TYPE) {

            put_bits(&s->pb, 4, s->b_code);

            put_bits(&s->pb, 4, s->b_code);

        }else{

            put_bits(&s->pb, 8, 255);

        }

        put_bits(&s->pb, 2, s->intra_dc_precision);

        put_bits(&s->pb, 2, s->picture_structure= PICT_FRAME);

        if (s->progressive_sequence) {

            put_bits(&s->pb, 1, 0); /* no repeat */

        } else {

            put_bits(&s->pb, 1, s->current_picture_ptr->top_field_first);

        }

        /* XXX: optimize the generation of this flag with entropy

           measures */

        s->frame_pred_frame_dct = s->progressive_sequence;

        

        put_bits(&s->pb, 1, s->frame_pred_frame_dct);

        put_bits(&s->pb, 1, s->concealment_motion_vectors);

        put_bits(&s->pb, 1, s->q_scale_type);

        put_bits(&s->pb, 1, s->intra_vlc_format);

        put_bits(&s->pb, 1, s->alternate_scan);

        put_bits(&s->pb, 1, s->repeat_first_field);

        put_bits(&s->pb, 1, s->chroma_420_type=1);

        s->progressive_frame = s->progressive_sequence;

        put_bits(&s->pb, 1, s->progressive_frame);

        put_bits(&s->pb, 1, 0); //composite_display_flag

    }

    if(s->flags & CODEC_FLAG_SVCD_SCAN_OFFSET){

        int i;



        put_header(s, USER_START_CODE);

        for(i=0; i<sizeof(svcd_scan_offset_placeholder); i++){

            put_bits(&s->pb, 8, svcd_scan_offset_placeholder[i]);

        }

    }

    

    s->mb_y=0;

    ff_mpeg1_encode_slice_header(s);

}

void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number)

{

    mpeg1_encode_sequence_header(s);



    

    put_header(s, PICTURE_START_CODE);

    



    

    put_bits(&s->pb, 10, (s->picture_number - 

                          s->gop_picture_number) & 0x3ff); 

    s->fake_picture_number++;

    

    put_bits(&s->pb, 3, s->pict_type);



    s->vbv_delay_ptr= s->pb.buf + get_bit_count(&s->pb)/8;

    put_bits(&s->pb, 16, 0xFFFF); 

    

    

    if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) {

        put_bits(&s->pb, 1, 0); 

        if(s->codec_id == CODEC_ID_MPEG1VIDEO)

            put_bits(&s->pb, 3, s->f_code); 

        else

            put_bits(&s->pb, 3, 7); 

    }

    

    

    if (s->pict_type == B_TYPE) {

        put_bits(&s->pb, 1, 0); 

        if(s->codec_id == CODEC_ID_MPEG1VIDEO)

            put_bits(&s->pb, 3, s->b_code); 

        else

            put_bits(&s->pb, 3, 7); 

    }



    put_bits(&s->pb, 1, 0); 



    s->frame_pred_frame_dct = 1;

    if(s->codec_id == CODEC_ID_MPEG2VIDEO){

        put_header(s, EXT_START_CODE);

        put_bits(&s->pb, 4, 8); 

        if (s->pict_type == P_TYPE || s->pict_type == B_TYPE) {

            put_bits(&s->pb, 4, s->f_code);

            put_bits(&s->pb, 4, s->f_code);

        }else{

            put_bits(&s->pb, 8, 255);

        }

        if (s->pict_type == B_TYPE) {

            put_bits(&s->pb, 4, s->b_code);

            put_bits(&s->pb, 4, s->b_code);

        }else{

            put_bits(&s->pb, 8, 255);

        }

        put_bits(&s->pb, 2, s->intra_dc_precision);

        put_bits(&s->pb, 2, s->picture_structure= PICT_FRAME);

        if (s->progressive_sequence) {

            put_bits(&s->pb, 1, 0); 

        } else {

            put_bits(&s->pb, 1, s->current_picture_ptr->top_field_first);

        }

        



        s->frame_pred_frame_dct = s->progressive_sequence;

        

        put_bits(&s->pb, 1, s->frame_pred_frame_dct);

        put_bits(&s->pb, 1, s->concealment_motion_vectors);

        put_bits(&s->pb, 1, s->q_scale_type);

        put_bits(&s->pb, 1, s->intra_vlc_format);

        put_bits(&s->pb, 1, s->alternate_scan);

        put_bits(&s->pb, 1, s->repeat_first_field);

        put_bits(&s->pb, 1, s->chroma_420_type=1);

        s->progressive_frame = s->progressive_sequence;

        put_bits(&s->pb, 1, s->progressive_frame);

        put_bits(&s->pb, 1, 0); 

    }

    if(s->flags & CODEC_FLAG_SVCD_SCAN_OFFSET){

        int i;



        put_header(s, USER_START_CODE);

        for(i=0; i<sizeof(svcd_scan_offset_placeholder); i++){

            put_bits(&s->pb, 8, svcd_scan_offset_placeholder[i]);

        }

    }

    

    s->mb_y=0;

    ff_mpeg1_encode_slice_header(s);

}

void FUNC_0(MpegEncContext *VAR_0, int VAR_1)

{

    mpeg1_encode_sequence_header(VAR_0);



    

    put_header(VAR_0, PICTURE_START_CODE);

    



    

    put_bits(&VAR_0->pb, 10, (VAR_0->VAR_1 - 

                          VAR_0->gop_picture_number) & 0x3ff); 

    VAR_0->fake_picture_number++;

    

    put_bits(&VAR_0->pb, 3, VAR_0->pict_type);



    VAR_0->vbv_delay_ptr= VAR_0->pb.buf + get_bit_count(&VAR_0->pb)/8;

    put_bits(&VAR_0->pb, 16, 0xFFFF); 

    

    

    if (VAR_0->pict_type == P_TYPE || VAR_0->pict_type == B_TYPE) {

        put_bits(&VAR_0->pb, 1, 0); 

        if(VAR_0->codec_id == CODEC_ID_MPEG1VIDEO)

            put_bits(&VAR_0->pb, 3, VAR_0->f_code); 

        else

            put_bits(&VAR_0->pb, 3, 7); 

    }

    

    

    if (VAR_0->pict_type == B_TYPE) {

        put_bits(&VAR_0->pb, 1, 0); 

        if(VAR_0->codec_id == CODEC_ID_MPEG1VIDEO)

            put_bits(&VAR_0->pb, 3, VAR_0->b_code); 

        else

            put_bits(&VAR_0->pb, 3, 7); 

    }



    put_bits(&VAR_0->pb, 1, 0); 



    VAR_0->frame_pred_frame_dct = 1;

    if(VAR_0->codec_id == CODEC_ID_MPEG2VIDEO){

        put_header(VAR_0, EXT_START_CODE);

        put_bits(&VAR_0->pb, 4, 8); 

        if (VAR_0->pict_type == P_TYPE || VAR_0->pict_type == B_TYPE) {

            put_bits(&VAR_0->pb, 4, VAR_0->f_code);

            put_bits(&VAR_0->pb, 4, VAR_0->f_code);

        }else{

            put_bits(&VAR_0->pb, 8, 255);

        }

        if (VAR_0->pict_type == B_TYPE) {

            put_bits(&VAR_0->pb, 4, VAR_0->b_code);

            put_bits(&VAR_0->pb, 4, VAR_0->b_code);

        }else{

            put_bits(&VAR_0->pb, 8, 255);

        }

        put_bits(&VAR_0->pb, 2, VAR_0->intra_dc_precision);

        put_bits(&VAR_0->pb, 2, VAR_0->picture_structure= PICT_FRAME);

        if (VAR_0->progressive_sequence) {

            put_bits(&VAR_0->pb, 1, 0); 

        } else {

            put_bits(&VAR_0->pb, 1, VAR_0->current_picture_ptr->top_field_first);

        }

        



        VAR_0->frame_pred_frame_dct = VAR_0->progressive_sequence;

        

        put_bits(&VAR_0->pb, 1, VAR_0->frame_pred_frame_dct);

        put_bits(&VAR_0->pb, 1, VAR_0->concealment_motion_vectors);

        put_bits(&VAR_0->pb, 1, VAR_0->q_scale_type);

        put_bits(&VAR_0->pb, 1, VAR_0->intra_vlc_format);

        put_bits(&VAR_0->pb, 1, VAR_0->alternate_scan);

        put_bits(&VAR_0->pb, 1, VAR_0->repeat_first_field);

        put_bits(&VAR_0->pb, 1, VAR_0->chroma_420_type=1);

        VAR_0->progressive_frame = VAR_0->progressive_sequence;

        put_bits(&VAR_0->pb, 1, VAR_0->progressive_frame);

        put_bits(&VAR_0->pb, 1, 0); 

    }

    if(VAR_0->flags & CODEC_FLAG_SVCD_SCAN_OFFSET){

        int VAR_2;



        put_header(VAR_0, USER_START_CODE);

        for(VAR_2=0; VAR_2<sizeof(svcd_scan_offset_placeholder); VAR_2++){

            put_bits(&VAR_0->pb, 8, svcd_scan_offset_placeholder[VAR_2]);

        }

    }

    

    VAR_0->mb_y=0;

    ff_mpeg1_encode_slice_header(VAR_0);

}

void FUNC_0(MpegEncContext *VAR_0, int VAR_1)
{ mpeg1_encode_sequence_header(VAR_0); put_header(VAR_0, PICTURE_START_CODE); put_bits(&VAR_0->pb, 10, (VAR_0->VAR_1 -
VAR_0->gop_picture_number) & 0x3ff); VAR_0->fake_picture_number++; put_bits(&VAR_0->pb, 3, VAR_0->pict_type); VAR_0->vbv_delay_ptr= VAR_0->pb.buf + get_bit_count(&VAR_0->pb)/8; put_bits(&VAR_0->pb, 16, 0xFFFF); if (VAR_0->pict_type == P_TYPE || VAR_0->pict_type == B_TYPE) { put_bits(&VAR_0->pb, 1, 0); if(VAR_0->codec_id == CODEC_ID_MPEG1VIDEO)
put_bits(&VAR_0->pb, 3, VAR_0->f_code); else
put_bits(&VAR_0->pb, 3, 7); } if (VAR_0->pict_type == B_TYPE) { put_bits(&VAR_0->pb, 1, 0); if(VAR_0->codec_id == CODEC_ID_MPEG1VIDEO)
put_bits(&VAR_0->pb, 3, VAR_0->b_code); else
put_bits(&VAR_0->pb, 3, 7); } put_bits(&VAR_0->pb, 1, 0); VAR_0->frame_pred_frame_dct = 1; if(VAR_0->codec_id == CODEC_ID_MPEG2VIDEO){ put_header(VAR_0, EXT_START_CODE); put_bits(&VAR_0->pb, 4, 8); if (VAR_0->pict_type == P_TYPE || VAR_0->pict_type == B_TYPE) { put_bits(&VAR_0->pb, 4, VAR_0->f_code); put_bits(&VAR_0->pb, 4, VAR_0->f_code); }else{ put_bits(&VAR_0->pb, 8, 255); } if (VAR_0->pict_type == B_TYPE) { put_bits(&VAR_0->pb, 4, VAR_0->b_code); put_bits(&VAR_0->pb, 4, VAR_0->b_code); }else{ put_bits(&VAR_0->pb, 8, 255); } put_bits(&VAR_0->pb, 2, VAR_0->intra_dc_precision); put_bits(&VAR_0->pb, 2, VAR_0->picture_structure= PICT_FRAME); if (VAR_0->progressive_sequence) { put_bits(&VAR_0->pb, 1, 0); } else { put_bits(&VAR_0->pb, 1, VAR_0->current_picture_ptr->top_field_first); } VAR_0->frame_pred_frame_dct = VAR_0->progressive_sequence; put_bits(&VAR_0->pb, 1, VAR_0->frame_pred_frame_dct); put_bits(&VAR_0->pb, 1, VAR_0->concealment_motion_vectors); put_bits(&VAR_0->pb, 1, VAR_0->q_scale_type); put_bits(&VAR_0->pb, 1, VAR_0->intra_vlc_format); put_bits(&VAR_0->pb, 1, VAR_0->alternate_scan); put_bits(&VAR_0->pb, 1, VAR_0->repeat_first_field); put_bits(&VAR_0->pb, 1, VAR_0->chroma_420_type=1); VAR_0->progressive_frame = VAR_0->progressive_sequence; put_bits(&VAR_0->pb, 1, VAR_0->progressive_frame); put_bits(&VAR_0->pb, 1, 0); } if(VAR_0->flags & CODEC_FLAG_SVCD_SCAN_OFFSET){ int VAR_2; put_header(VAR_0, USER_START_CODE); for(VAR_2=0; VAR_2<sizeof(svcd_scan_offset_placeholder); VAR_2++){ put_bits(&VAR_0->pb, 8, svcd_scan_offset_placeholder[VAR_2]); } } VAR_0->mb_y=0; ff_mpeg1_encode_slice_header(VAR_0); }