On Thu, 2010-02-04 at 13:49 +0100, Miguel Angel Arcos wrote: > Hi developers, > > I'm working with avcodec and I'm having some troubles to decode frame data > from an IP Camera. First, after init the library correctly I do the next: > > /* My Code */ > avcodec_init(); > avcodec_register_all(); > pCodec = avcodec_find_decoder(CODEC_ID_H264); > > if pCodec is OK > avcodec_alloc_context(MyContext) > avcodec_get_context_defaults(MyContext) > MyContext->width = CamWidth > MyContext->height = CamHeight > MyContext->pix_fmt = PIX_FMT_RGB32; /*/ I'm not completely sure about it* > avcodec_open(MyContext,pCodec) > > if avcodec_open(MyContext,pCodec) is OK > avcodec_alloc_frame(MyAVFrame) > avcodec_get_frame_defaults(MyAVFrame) > av_init_packet(MyAVPacket) > MyAVPacket->size = CamSizeImage; > MyAVPacket->data= CompressedBuffer; > *ret = avcodec_decode_video2(MyContext,MyAVFrame,got_picture,MyAVPacket) > * //* Problem!!* > > The last line return -1 and got_picture 0. I revised all the parameters in > MyContext and I can't see where is the problem. Any suggestions? > > Thanks in advance. >
You can't decode H.264 to RGB32 directly - it most likely outputs YOU420P or something like that. You have to convert the given images to your desired pixel format. Use libswscale for that - see libavformat/output-example.c for an example how to initialize it. ffplay.c also has some useful examples, but it's a bit larger. /Tomas _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user
