Hi dear community,
                           I have to study the source code of the ffmpeg
source code file libavcodec/libx264.c, that ffmpeg use to encode using x264,
I paste the function of major interest for my goal:

static int X264_frame(AVCodecContext *ctx, uint8_t *buf, int bufsize, void
*data)
{
    X264Context *x4 = ctx->priv_data;
    AVFrame *frame = data;
    x264_nal_t *nal;
    int nnal, i;
    x264_picture_t pic_out;

    x4->pic.img.i_csp = X264_CSP_I420;
    x4->pic.img.i_plane = 3;

    if (frame) {
        for(i = 0; i < 3; i++){
            x4->pic.img.plane[i] = frame->data[i];
            x4->pic.img.i_stride[i] = frame->linesize[i];
        }

        x4->pic.i_pts = frame->pts;
        x4->pic.i_type = X264_TYPE_AUTO;
    }

    if(x264_encoder_encode(x4->enc, &nal, &nnal, frame? &x4->pic: NULL,
                           &pic_out))
        return -1;

    bufsize = encode_nals(ctx, buf, bufsize, nal, nnal, 0);
    if(bufsize < 0)
        return -1;

    /* FIXME: dts */
    x4->out_pic.pts = pic_out.i_pts;

    switch(pic_out.i_type){
    case X264_TYPE_IDR:
    case X264_TYPE_I:
        x4->out_pic.pict_type = FF_I_TYPE;
        break;
    case X264_TYPE_P:
        x4->out_pic.pict_type = FF_P_TYPE;
        break;
    case X264_TYPE_B:
    case X264_TYPE_BREF:
        x4->out_pic.pict_type = FF_B_TYPE;
        break;
    }

    x4->out_pic.key_frame = pic_out.i_type == X264_TYPE_IDR;
    x4->out_pic.quality = (pic_out.i_qpplus1 - 1) * FF_QP2LAMBDA;

    return bufsize;
}


 and when I observe the frame encoder function, I don't understand a very
delicate step. The x264 function x264_encoder_encode save the encoded frame
at the address &pic_out, but the function Encoder_frame() don't save these
reference in any variables and I cannot understand why the encoded frame
will not be miss. Where I can find the binary array that include the encoded
frame? I need to understand what buffer contain the encoded frame.
Thank in advance.

Best Regards
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to