I believe it may be possible to use FF_API_PIX_FMT to determine the older version complatibility. Somebody please confirm this if possible.
Attached is a (I think correct) patch for the current svn version of LiVES. With some minor adjustment it should be possible to apply it to older versions of LiVES.
Index: libweed/weed-compat.h =================================================================== --- libweed/weed-compat.h (revision 2352) +++ libweed/weed-compat.h (working copy) @@ -42,7 +42,7 @@ */ -/* (C) Gabriel "Salsaman" Finch, 2005 - 2012 */ +/* (C) Gabriel "Salsaman" Finch, 2005 - 2016 */ #ifndef __WEED_COMPAT_H__ #define __WEED_COMPAT_H__ @@ -595,6 +595,8 @@ #include <weed/weed-palettes.h> #endif +#ifdef FF_API_PIX_FMT + int avi_pix_fmt_to_weed_palette(enum PixelFormat pix_fmt, int *clamped) { // clamped may be set to NULL if you are not interested in the value @@ -635,7 +637,7 @@ case PIX_FMT_YUVJ420P: if (clamped) *clamped=WEED_YUV_CLAMPING_UNCLAMPED; return WEED_PALETTE_YUV420P; - + default: return WEED_PALETTE_END; } @@ -642,10 +644,7 @@ } - - enum PixelFormat weed_palette_to_avi_pix_fmt(int pal, int *clamped) { - switch (pal) { case WEED_PALETTE_RGB24: return PIX_FMT_RGB24; @@ -684,11 +683,100 @@ default: return PIX_FMT_NONE; } +} - return PIX_FMT_NONE; +#else +int avi_pix_fmt_to_weed_palette(enum AVPixelFormat pix_fmt, int *clamped) { + // clamped may be set to NULL if you are not interested in the value + + switch (pix_fmt) { + case AV_PIX_FMT_RGB24: + return WEED_PALETTE_RGB24; + case AV_PIX_FMT_BGR24: + return WEED_PALETTE_BGR24; + case AV_PIX_FMT_RGBA: + return WEED_PALETTE_RGBA32; + case AV_PIX_FMT_BGRA: + return WEED_PALETTE_BGRA32; + case AV_PIX_FMT_ARGB: + return WEED_PALETTE_ARGB32; + case AV_PIX_FMT_YUV444P: + return WEED_PALETTE_YUV444P; + case AV_PIX_FMT_YUV422P: + return WEED_PALETTE_YUV422P; + case AV_PIX_FMT_YUV420P: + return WEED_PALETTE_YUV420P; + case AV_PIX_FMT_YUYV422: + return WEED_PALETTE_YUYV; + case AV_PIX_FMT_UYVY422: + return WEED_PALETTE_UYVY; + case AV_PIX_FMT_UYYVYY411: + return WEED_PALETTE_YUV411; + case AV_PIX_FMT_GRAY8: + return WEED_PALETTE_A8; + case AV_PIX_FMT_MONOWHITE: + case AV_PIX_FMT_MONOBLACK: + return WEED_PALETTE_A1; + case AV_PIX_FMT_YUVJ422P: + if (clamped) *clamped=WEED_YUV_CLAMPING_UNCLAMPED; + return WEED_PALETTE_YUV422P; + case AV_PIX_FMT_YUVJ444P: + if (clamped) *clamped=WEED_YUV_CLAMPING_UNCLAMPED; + return WEED_PALETTE_YUV444P; + case AV_PIX_FMT_YUVJ420P: + if (clamped) *clamped=WEED_YUV_CLAMPING_UNCLAMPED; + return WEED_PALETTE_YUV420P; + + default: + return WEED_PALETTE_END; + } } + +enum AVPixelFormat weed_palette_to_avi_pix_fmt(int pal, int *clamped) { + switch (pal) { + case WEED_PALETTE_RGB24: + return AV_PIX_FMT_RGB24; + case WEED_PALETTE_BGR24: + return AV_PIX_FMT_BGR24; + case WEED_PALETTE_RGBA32: + return AV_PIX_FMT_RGBA; + case WEED_PALETTE_BGRA32: + return AV_PIX_FMT_BGRA; + case WEED_PALETTE_ARGB32: + return AV_PIX_FMT_ARGB; + case WEED_PALETTE_YUV444P: + if (clamped && *clamped==WEED_YUV_CLAMPING_UNCLAMPED) + return AV_PIX_FMT_YUVJ444P; + return AV_PIX_FMT_YUV444P; + case WEED_PALETTE_YUV422P: + if (clamped && *clamped==WEED_YUV_CLAMPING_UNCLAMPED) + return AV_PIX_FMT_YUVJ422P; + return AV_PIX_FMT_YUV422P; + case WEED_PALETTE_YUV420P: + if (clamped && *clamped==WEED_YUV_CLAMPING_UNCLAMPED) + return AV_PIX_FMT_YUVJ420P; + return AV_PIX_FMT_YUV420P; + case WEED_PALETTE_YUYV: + return AV_PIX_FMT_YUYV422; + case WEED_PALETTE_UYVY: + return AV_PIX_FMT_UYVY422; + case WEED_PALETTE_YUV411: + return AV_PIX_FMT_UYYVYY411; + + case WEED_PALETTE_A8: + return AV_PIX_FMT_GRAY8; + case WEED_PALETTE_A1: + return AV_PIX_FMT_MONOBLACK; + + default: + return AV_PIX_FMT_NONE; + } +} + +#endif + #endif // HAVE_AVUTIL #endif // HAVE_AVCODEC Index: lives-plugins/plugins/decoders/mkv_decoder.c =================================================================== --- lives-plugins/plugins/decoders/mkv_decoder.c (revision 2406) +++ lives-plugins/plugins/decoders/mkv_decoder.c (working copy) @@ -1,5 +1,5 @@ // LiVES - mkv decoder plugin -// (c) G. Finch 2011 <salsa...@xs4all.nl,salsa...@gmail.com> +// (c) G. Finch 2011 - 2016 <salsa...@gmail.com> /* * This file is free software; you can redistribute it and/or @@ -40,7 +40,7 @@ #include <sys/stat.h> #include <pthread.h> -const char *plugin_version="LiVES mkv decoder version 1.2"; +const char *plugin_version="LiVES mkv decoder version 1.3"; #ifdef HAVE_AV_CONFIG_H #undef HAVE_AV_CONFIG_H @@ -901,7 +901,7 @@ out->data = newdata; memcpy(out->data+out->size, in->data, in->size); out->size += in->size; - av_destruct_packet(in); + av_packet_unref(in); av_free(in); return 0; } Index: lives-plugins/plugins/decoders/mpegts_decoder.c =================================================================== --- lives-plugins/plugins/decoders/mpegts_decoder.c (revision 2406) +++ lives-plugins/plugins/decoders/mpegts_decoder.c (working copy) @@ -1,5 +1,5 @@ // LiVES - mpegts decoder plugin -// (c) G. Finch 2012 - 2014 <salsa...@gmail.com> +// (c) G. Finch 2012 - 2016 <salsa...@gmail.com> /* * This file is free software; you can redistribute it and/or @@ -34,7 +34,7 @@ #include <endian.h> #endif -const char *plugin_version="LiVES mpegts decoder version 1.2a"; +const char *plugin_version="LiVES mpegts decoder version 1.3"; #ifdef HAVE_AV_CONFIG_H #undef HAVE_AV_CONFIG_H @@ -1023,7 +1023,10 @@ static void new_pes_packet(PESContext *pes, AVPacket *pkt) { av_init_packet(pkt); +#if !HAVE_AVPACKET_UNREF pkt->destruct = av_destruct_packet; +#endif + pkt->data = pes->buffer; pkt->size = pes->data_index; Index: src/colourspace.c =================================================================== --- src/colourspace.c (revision 2432) +++ src/colourspace.c (working copy) @@ -80,8 +80,13 @@ int iheight; int width; int height; +#ifdef FF_API_PIX_FMT enum PixelFormat ipixfmt; enum PixelFormat opixfmt; +#else + enum AVPixelFormat ipixfmt; + enum AVPixelFormat opixfmt; +#endif int flags; struct SwsContext *ctx; }; @@ -10313,7 +10318,12 @@ static struct SwsContext *swscale_find_context(int iwidth, int iheight, int width, int height, - enum PixelFormat ipixfmt, enum PixelFormat opixfmt, int flags) { +#ifdef FF_API_PIX_FMT + enum PixelFormat ipixfmt, enum PixelFormat opixfmt, int flags) +#else + enum AVPixelFormat ipixfmt, enum AVPixelFormat opixfmt, int flags) +#endif +{ register int i; struct _swscale_ctx tmpctx; @@ -10351,7 +10361,12 @@ } -static void swscale_add_context(int iwidth, int iheight, int width, int height, enum PixelFormat ipixfmt, enum PixelFormat opixfmt, +static void swscale_add_context(int iwidth, int iheight, int width, int height, +#ifdef FF_API_PIX_FMT + enum PixelFormat ipixfmt, enum PixelFormat opixfmt, +#else + enum AVPixelFormat ipixfmt, enum AVPixelFormat opixfmt, +#endif int flags, struct SwsContext *ctx) { // add at head of list register int i; @@ -10496,8 +10511,12 @@ boolean store_ctx=FALSE; +#ifdef FF_API_PIX_FMT enum PixelFormat ipixfmt,opixfmt; - +#else + enum AVPixelFormat ipixfmt,opixfmt; +#endif + int flags; old_layer=weed_plant_copy(layer);