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

Reply via email to