[Libav-user] FFMPEG decode video packet with avcodec_send_packet avcodec_receive_frame
Jérôme SALAYET
jerome.salayet at hymatom.fr
Tue Sep 8 13:09:45 EEST 2020
Hello,
I recently want to use the last FFMPEG release version to decode video packets. avcodec_decode_video2 is deprecated so I want to use avcodec_send_packet and avcodec_receive_frame
I'm just not sure waht about doing when receiving eror like AVERROR(EAGAIN), AVERROR_EOF... my code is below.
int FFMpegImgDecode( AVCodecContext* lpCodecCtx, AVPacket* lpAVPacket, AVFrame* lpAVFrame)
{ int iResult = 1;
int iDecodeResult = 1;
if ((lpCodecCtx!=NULL) && (lpAVFrame!=NULL) && (lpAVPacket!=NULL))
{ if (m_lpCodecCtx->codec_type == AVMEDIA_TYPE_VIDEO)
{ iResult = lpfnavcodec_send_packet( m_lpCodecCtx, &m_lpPacket);
if (iResult == AVERROR_EOF)
{ iResult = 0;
}
if (iResult == 0) // success
{ iDecodeResult = lpfnavcodec_receive_frame(m_lpCodecCtx, m_lpFrame);
// iDecodeResult == 0 => Success
// iDecodeResult == AVERROR(EAGAIN)) => Need to feed the next input frame
// else => Error
if (iDecodeResult==AVERROR(EAGAIN))
{ printf("avcodec_receive_frame ERROR [AVERROR(EAGAIN)]\r\n");
}
if ((iDecodeResult!=0) && (iDecodeResult!=AVERROR(EAGAIN)))
{ char szErrorText[255];
av_strerror( iResult, szErrorText, sizeof(szErrorText));
printf("avcodec_receive_frame ERROR [%i][%s]\r\n", iResult, szErrorText);
}
}
else
{ char szErrorText[255];
av_strerror( iResult, szErrorText, sizeof(szErrorText));
printf("avcodec_send_packet ERROR [%i][%s]\r\n", iResult, szErrorText);
iDecodeResult = iResult;
}
}
}
return iDecodeResult;
}
Also sometimes I receive error : avcodec_send_packet ERROR [-1094995529][Invalid data found when processing input].
It is when I decompress a h264 video stream from a camera. Do you think it is possible that this error can arrive if I have some network trouble with the camera.
Regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20200908/07590b9b/attachment.html>
More information about the Libav-user
mailing list