Hello guys, this is my first posting to ffmpeg-devel, and I believe my mail format is correct.
I'm using ffmpeg for encoding video in real-time, so low encode delay is needed. Once I call "avcodec_send_frame(avctx, frame)", I'd like to get the encoded data from "avcodec_receive_packet(avctx, avpkt)". However I cannot do that in ffmpeg and Intel QSV (qsv), "avcodec_receive_packet()" returns nothing when I input the first frame to qsv encoder by calling "avcodec_send_frame()". Of cource, after second frame inputs, qsv encoder returns valid data. I'd like to get a valid data from first calling. I've tried some cases and as a result, my requirement is satisfied when avcodec/qsvenc.c will be fixed like below diff info. Then I have a question. Why q->async_fifo is set to be q->async_depth "+ 1"? Anybody knows? --- a/avcodec/qsvenc.c +++ b/avcodec/qsvenc.c @@ -803,7 +803,7 @@ q->param.AsyncDepth = q->async_depth; - q->async_fifo = av_fifo_alloc((1 + q->async_depth) * + q->async_fifo = av_fifo_alloc((q->async_depth) * (sizeof(AVPacket) + sizeof(mfxSyncPoint*) + sizeof(mfxBitstream*))); if (!q->async_fifo) return AVERROR(ENOMEM); _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel