put_bits(&s->pb, 6, (time_code / fps) % 60); put_bits(&s->pb, 6, (time_code % fps) / FRAME_RATE_BASE);
put_bits(&s->pb, 6, (UINT32)((time_code / fps) % 60)); put_bits(&s->pb, 6, (UINT32)((time_code % fps) / FRAME_RATE_BASE));
static void mpeg1_encode_sequence_header(MpegEncContext *s){        unsigned int vbv_buffer_size;        unsigned int fps, v;        int n;        UINT64 time_code;                if ((s->picture_number % s->gop_size) == 0) {            /* mpeg1 header repeated every gop */            put_header(s, SEQ_START_CODE);                        /* search closest frame rate */            {                int i, dmin, d;                s->frame_rate_index = 0;                dmin = 0x7fffffff;                for(i=1;i<9;i++) {                    d = abs(s->frame_rate - frame_rate_tab[i]);                    if (d < dmin) {                        dmin = d;                        s->frame_rate_index = i;                    }                }            }             put_bits(&s->pb, 12, s->width);            put_bits(&s->pb, 12, s->height);            put_bits(&s->pb, 4, 1); /* 1/1 aspect ratio */            put_bits(&s->pb, 4, s->frame_rate_index);            v = s->bit_rate / 400;            if (v > 0x3ffff)                v = 0x3ffff;            put_bits(&s->pb, 18, v);            put_bits(&s->pb, 1, 1); /* marker */            /* vbv buffer size: slightly greater than an I frame. We add               some margin just in case */            vbv_buffer_size = (3 * s->I_frame_bits) / (2 * 8);            put_bits(&s->pb, 10, (vbv_buffer_size + 16383) / 16384);             put_bits(&s->pb, 1, 1); /* constrained parameter flag */            put_bits(&s->pb, 1, 0); /* no custom intra matrix */            put_bits(&s->pb, 1, 0); /* no custom non intra matrix */            put_header(s, GOP_START_CODE);            put_bits(&s->pb, 1, 0); /* do drop frame */            /* time code : we must convert from the real frame rate to a               fake mpeg frame rate in case of low frame rate */            fps = frame_rate_tab[s->frame_rate_index];            time_code = s->fake_picture_number * FRAME_RATE_BASE;            s->gop_picture_number = s->fake_picture_number;            put_bits(&s->pb, 5, (time_code / (fps * 3600)) % 24);            put_bits(&s->pb, 6, (time_code / (fps * 60)) % 60);            put_bits(&s->pb, 1, 1);            put_bits(&s->pb, 6, (time_code / fps) % 60);            put_bits(&s->pb, 6, (time_code % fps) / FRAME_RATE_BASE);            put_bits(&s->pb, 1, 1); /* closed gop */            put_bits(&s->pb, 1, 0); /* broken link */        }        if (s->frame_rate < (24 * FRAME_RATE_BASE) && s->picture_number > 0) {            /* insert empty P pictures to slow down to the desired               frame rate. Each fake pictures takes about 20 bytes */            fps = frame_rate_tab[s->frame_rate_index];            n = ((s->picture_number * fps) / s->frame_rate) - 1;            while (s->fake_picture_number < n) {                mpeg1_skip_picture(s, s->fake_picture_number -                                    s->gop_picture_number);                 s->fake_picture_number++;            }        }        s->fake_picture_number++;}