Oh thank you Sven !

I will try even if I don't understand why it will work :)

Thanks again

Gilles M

2011/2/1 Sven Alisch <[email protected]>

> Good evening Gilles,
>
> > I make  a
> >
> > struct BuffVideo *buf= malloc( sizeof (BuffVideo)) ;
> > buf->pFrame=avcodec_alloc_frame();
> > buf->id=i++;
>
> This is ok but not complete. You have to do a little bit more. So like
> here:
>
> int size = avpicture_get_size(c->pix_fmt, c->width, c->height); // c is a
> AVCodecContext
> uint8_t* picture_buf = av_malloc(size);
> avpicture_fill((AVPicture *)buf->pFrame, picture_buf, c->pix_fmt, c->width,
> c->height);
>
>
> > avcodec_decode_video2(pCodecCtx, buf->pFrame, &frameFinished, &packet);
>
> And this is OK to, BUT! don't use buf->pFrame! Use a new (temporary)
> AVFrame. For instance make
>
> AVFrame* temp = avcodec_alloc_frame();
> avcodec_decode_video2(pCodecCtx, temp, &frameFinished, &packet);
>
> and when frameFinished is true make a real copy! So like this:
>
> av_picture_copy((AVPicture*)buf->pFrame, (AVPicture*)temp, c->pix_fmt,
> c->width, c->height);
>
> >
> > but when all is done and when I want to swscale all my frame in list, all
> > the frame are empty unless the last one with the last value of frame
> > decoded.
>
> Try it out. It should work.
>
> >
> > I suppose the AVFrame keep only pointer to uint[4] ...
> >
> > Idea ?
>
> I hope it work.
>
> regards,
> Sven
>
> >
> > Gilles M
> > _______________________________________________
> > libav-user mailing list
> > [email protected]
> > https://lists.mplayerhq.hu/mailman/listinfo/libav-user
>
> _______________________________________________
> libav-user mailing list
> [email protected]
> https://lists.mplayerhq.hu/mailman/listinfo/libav-user
>
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to