[FFmpeg-devel] unable to decode png file.
UrdnotFirebug
powersheld at gmail.com
Sat Oct 4 10:32:21 CEST 2014
hi all. i'm one of developer which using ffmpeg to write program.
problem is that it always fails that try to decode png file.
with few experience, i found some weird bug. i hope it it my mistake.
here's the code.
-------------------------------------------------------------------------------------------------------------------------------
int imageToFrame(const char* fileName, const int& width, const int&
height, AVFrame** frame)
{
AVFormatContext* pFormatContext = NULL;
AVCodecContext* pCodecContext = NULL;
bool gotCodecContext = false;
AVFrame* rawFrame = NULL;
// No Problem
if(avformat_open_input(&pFormatContext, fileName, NULL, NULL) < 0
|| pFormatContext == NULL)
{
return 1;
}
// This is Problem!
/*
if(avformat_find_stream_info(pFormatContext, NULL) < 0)
{
return 1;
}
*/
for(unsigned int index=0; index<pFormatContext->nb_streams; index++)
{
pCodecContext = pFormatContext->streams[index]->codec;
if(pCodecContext->codec_type == AVMEDIA_TYPE_VIDEO)
{
gotCodecContext = true;
break;
}
}
if(gotCodecContext == false)
{
return 2;
}
// No Problem
if(avcodec_open2(pCodecContext,
avcodec_find_decoder(pCodecContext->codec_id), NULL) < 0)
{
return 3;
}
rawFrame = av_frame_alloc();
if(rawFrame == NULL)
{
return 4;
}
AVPacket packet;
int gotFrame=0;
// NO Problem
while (av_read_frame(pFormatContext, &packet) >= 0)
{
if(packet.stream_index != 0) continue;
// Always gotFrame is 0 until remove avformat_find_stream_info
if(avcodec_decode_video2(pCodecContext, rawFrame, &gotFrame,
&packet) == 0 && gotFrame)
{
break;
}
}
-------------------------------------------------------------------------------------------------------------------------------
this is simple code that extract one frame from image file.
when i use avformat_find_stream_info function with AVFormatContext which
contain PNG file,
avcodec_decode_video2 is always fail to decode.
(return code is 0 but gotframe is always 0)
but it can decode from packet if i remove avformat_find_stream_info.
it appears only png file. jpg was no problem with decode even using
avformat_find_stream_info.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 200x200.png
Type: image/png
Size: 49575 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20141004/4044b8f2/attachment.png>
More information about the ffmpeg-devel
mailing list