Carl Eugen Hoyos <cehoyos@...> writes:
> 
> Axel Holzinger <aholzinger@...> writes:
> 
> > > Note that (major) parts of the 3.0 API are deprecated.
> >
> > But isn't the 3.0 API the newest one?
> 
> No.

Interesting, thanks for the clarification. I thought 3.0.x is the trunk 
version. So it might be smart to wait for the next API change to not having to 
do the porting effort twice.

> I cannot answer how you have to change your code (and you
> did not provide any code that could be changed by readers)

Well, I didn't do by means as it is C++ and I didn't want to inspire a C/C++ 
flame war. Whatever, here's a snippet:
//! AVFrame Wrapper
class Frame : public AVFrame {
public:
   typedef std::pair<int64_t, AVCodecContext*> UserInfo;
   Frame(AVCodecContext *ctx=0, AVPicture const *pic=nullptr);
...
};

//! Swscale Wrapper
class SwsContextHandle {
public:
   SwsContextHandle(int iWidth, int iHeight, AVPixelFormat iFormat, int oWidth, 
int oHeight, AVPixelFormat oFormat);
   void resample(const AVPicture& input, AVPicture& output);
...
};

Frame::Frame(AVCodecContext *ctx, AVPicture const *pic)
{
   AVFrame *frame = this;
   memset(frame, 0, sizeof(AVFrame));
   frame->extended_data = NULL;
   get_frame_defaults(frame);

   avcodec_get_frame_defaults(this);
   if(ctx) {
      opaque = new UserInfo(0, ctx);
      ctx->get_buffer = our_get_buffer;
      ctx->release_buffer = our_release_buffer;
      ctx->get_buffer(ctx, this);
      if (pic) {
         SwsContextHandle swctx(ctx->width, ctx->height, ctx->pix_fmt, 
ctx->width, ctx->height, ctx->pix_fmt);  // deep copy
         swctx.resample(*pic, *this);
      }
   }
}

> but both ffmpeg.c itself (or libavformat/*.c) and every open
> source software using FFmpeg had to be changed so it should
> be possible to find examples.
> Debian for example had to patch many packages to update to
> 3.0.

This is clearly a viable approach, nevertheless it's a rocky road and my idea 
was that a lot of projects need(ed) to update from 2.8.x to 3.0.x and so I 
thought that there is a lot of need for such a documentation and that I just 
wasn't able to find it.

As it's not there this might mean everybody is going that rocky road and doing 
it on his own or perhaps not many projects did yet port to th new version?

> Sorry, Carl Eugen

Fair enough
Axel


_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to