Dear Sven,

I understand and I am proud and happy  to have my buffer system working like
a charm.

I thank you very much ...

Best regards


Gilles Maire

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

> Dear Gilles,
>
> > I will try even if I don't understand why it will work :)
>
> The ffmpeg structures AVPacket, AVPicture and AVFrame often uses shared
> memory areas. So it is often problematic to store these kind of structures
> in own written lists. Sometimes it is better (this is my experience) to copy
> AVPackets (with av_dup_packet) and AVFrames (with av_picture_copy).
>
> regards,
> Sven
>
> >
> > 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
>
> _______________________________________________
> 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