[XviD-devel] 2nd pass "controlled" mode

Dirk Knop xvid-devel@xvid.org
Wed, 27 Nov 2002 18:22:11 +0100


Hi,

I need the 2nd pass to be an exact copy of the first pass (frame-type 
wise), so I looked a bit into encoder.c .
I think that the changes have to be done in encoder_encode_bframes, 
right before the "ipvop_loop:".

I just wanted to add a small function:

if (pFrame->intra != -1)   {  /* dynamic decision means -1 */
    switch (pFrame->intra)  {
        case 0:
                    framecodep(...);
                    emms();
                    return XVID_ERR_OK;
                    break;
        case 1:
                    framecodei(...);
                    emms();
                    return XVID_ERR_OK;
                    break;
        case 2:
                    framecodeb(...);
                    emms();
                    return XVID_ERR_OK;
                    break;
        default:
                    break;
    }

Unfortunately I don't really understand what to pass along with 
FrameCodeXYZ, and we need to take care of skipped frames and pad-frames 
as well. Also, the resorting of the bframe-.stuff is a bit too much for 
my understanding of the code ;)

I hope  that someone with more insights / better understanding of that 
(dynamic) bframe-stuff (IPB-decision-loop) can correct that and/or 
 implement this kind of steering.

Thanks again,

best regards,
Koepi