Package: gst-libav1.0
Version: 1.6.1-1
Severity: important
Tags: patch
User: pkg-multimedia-maintain...@lists.alioth.debian.org
Usertags: ffmpeg2.9

Dear Maintainer,

your package fails to build with the upcoming ffmpeg 2.9.
This bug will become release-critical at some point when the
ffmpeg2.9 transition gets closer.

Attached is a patch replacing the deprecated functionality.
It also works with ffmpeg 2.8.
Please apply this patch and forward it upstream, if necessary.

These changes are non-trivial and should be runtime-tested.

Best regards,
Andreas

diff --git a/debian/control b/debian/control
index 7a1e349..52521cd 100644
--- a/debian/control
+++ b/debian/control
@@ -24,6 +24,7 @@ Build-Depends: debhelper (>= 9),
                liborc-0.4-dev (>= 1:0.4.16),
                libavutil-dev (>= 7:2.7),
                libavcodec-dev (>= 7:2.7),
+               libavfilter-dev,
                libavformat-dev (>= 7:2.7),
                libswscale-dev (>= 7:2.7),
                libbz2-dev,
diff --git a/debian/patches/ffmpeg_2.9.patch b/debian/patches/ffmpeg_2.9.patch
new file mode 100644
index 0000000..563ed9d
--- /dev/null
+++ b/debian/patches/ffmpeg_2.9.patch
@@ -0,0 +1,498 @@
+Description: Replace deprecated FFmpeg API
+Author: Andreas Cadhalpun <andreas.cadhal...@googlemail.com>
+Last-Update: <2015-11-02>
+
+--- gst-libav1.0-1.6.1.orig/configure.ac
++++ gst-libav1.0-1.6.1/configure.ac
+@@ -256,7 +256,7 @@ AC_ARG_WITH(system-libav,
+             [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
+ 
+ if test "x$with_system_libav" = "xyes"; then
+-  PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil)
++  PKG_CHECK_MODULES(LIBAV, libavfilter libavformat libavcodec libavutil)
+   PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
+   saved_CPPFLAGS="$CPPFLAGS"
+   CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavcfg.c
++++ gst-libav1.0-1.6.1/ext/libav/gstavcfg.c
+@@ -173,13 +173,10 @@ gst_ffmpeg_idct_algo_get_type (void)
+       {FF_IDCT_SIMPLEMMX, "Simple MMX", "simplemmx"},
+       {FF_IDCT_ARM, "ARM", "arm"},
+       {FF_IDCT_ALTIVEC, "Altivec", "altivec"},
+-      {FF_IDCT_SH4, "SH4", "sh4"},
+       {FF_IDCT_SIMPLEARM, "Simple ARM", "simplearm"},
+-      {FF_IDCT_IPP, "IPP", "ipp"},
+       {FF_IDCT_XVID, "XVID", "xvid"},
+       {FF_IDCT_SIMPLEARMV5TE, "Simple ARMV5TE", "simplearmv5te"},
+       {FF_IDCT_SIMPLEARMV6, "Simple ARMV6", "simplearmv6"},
+-      {FF_IDCT_SIMPLEVIS, "Simple Vis", "simplevis"},
+       {FF_IDCT_FAAN, "FAAN", "faan"},
+       {FF_IDCT_SIMPLENEON, "Simple NEON", "simpleneon"},
+       {0, NULL, NULL},
+@@ -665,7 +662,7 @@ gst_ffmpeg_cfg_init (void)
+   gst_ffmpeg_add_pspec (pspec, interlaced, FALSE, mpeg, NULL);
+ 
+   pspec = g_param_spec_int ("max-bframes", "Max B-Frames",
+-      "Maximum B-frames in a row", 0, FF_MAX_B_FRAMES, 0,
++      "Maximum B-frames in a row", 0, INT_MAX, 0,
+       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+   gst_ffmpeg_add_pspec (pspec, config.max_b_frames, FALSE, mpeg, NULL);
+ 
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavcodecmap.c
++++ gst-libav1.0-1.6.1/ext/libav/gstavcodecmap.c
+@@ -758,10 +758,6 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec
+       }
+       break;
+ 
+-    case AV_CODEC_ID_MPEG2VIDEO_XVMC:
+-      /* this is a special ID - don't need it in GStreamer, I think */
+-      break;
+-
+     case AV_CODEC_ID_H263:
+       if (encode) {
+         caps =
+@@ -2178,7 +2174,7 @@ gst_ffmpeg_codecid_to_caps (enum AVCodec
+  */
+ 
+ static GstCaps *
+-gst_ffmpeg_pixfmt_to_caps (enum PixelFormat pix_fmt, AVCodecContext * context,
++gst_ffmpeg_pixfmt_to_caps (enum AVPixelFormat pix_fmt, AVCodecContext * context,
+     enum AVCodecID codec_id)
+ {
+   GstCaps *caps = NULL;
+@@ -2509,7 +2505,7 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps
+ typedef struct
+ {
+   GstVideoFormat format;
+-  enum PixelFormat pixfmt;
++  enum AVPixelFormat pixfmt;
+ } PixToFmt;
+ 
+ /* FIXME : FILLME */
+@@ -2601,7 +2597,7 @@ static const PixToFmt pixtofmttable[] =
+ };
+ 
+ GstVideoFormat
+-gst_ffmpeg_pixfmt_to_videoformat (enum PixelFormat pixfmt)
++gst_ffmpeg_pixfmt_to_videoformat (enum AVPixelFormat pixfmt)
+ {
+   guint i;
+ 
+@@ -2613,7 +2609,7 @@ gst_ffmpeg_pixfmt_to_videoformat (enum P
+   return GST_VIDEO_FORMAT_UNKNOWN;
+ }
+ 
+-static enum PixelFormat
++static enum AVPixelFormat
+ gst_ffmpeg_videoformat_to_pixfmt_for_codec (GstVideoFormat format,
+     const AVCodec * codec)
+ {
+@@ -2637,7 +2633,7 @@ gst_ffmpeg_videoformat_to_pixfmt_for_cod
+   return AV_PIX_FMT_NONE;
+ }
+ 
+-enum PixelFormat
++enum AVPixelFormat
+ gst_ffmpeg_videoformat_to_pixfmt (GstVideoFormat format)
+ {
+   return gst_ffmpeg_videoformat_to_pixfmt_for_codec (format, NULL);
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavcodecmap.h
++++ gst-libav1.0-1.6.1/ext/libav/gstavcodecmap.h
+@@ -132,8 +132,8 @@ void
+ gst_ffmpeg_audioinfo_to_context (GstAudioInfo *info,
+ 				 AVCodecContext *context);
+ 
+-GstVideoFormat gst_ffmpeg_pixfmt_to_videoformat (enum PixelFormat pixfmt);
+-enum PixelFormat gst_ffmpeg_videoformat_to_pixfmt (GstVideoFormat format);
++GstVideoFormat gst_ffmpeg_pixfmt_to_videoformat (enum AVPixelFormat pixfmt);
++enum AVPixelFormat gst_ffmpeg_videoformat_to_pixfmt (GstVideoFormat format);
+ 
+ GstAudioFormat gst_ffmpeg_smpfmt_to_audioformat (enum AVSampleFormat sample_fmt);
+ 
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavdeinterlace.c
++++ gst-libav1.0-1.6.1/ext/libav/gstavdeinterlace.c
+@@ -25,6 +25,9 @@
+ #endif
+ 
+ #include <libavcodec/avcodec.h>
++#include <libavfilter/avfilter.h>
++#include <libavfilter/buffersrc.h>
++#include <libavfilter/buffersink.h>
+ 
+ #include <gst/gst.h>
+ #include <gst/video/video.h>
+@@ -91,8 +94,16 @@ typedef struct _GstFFMpegDeinterlace
+   gboolean reconfigure;
+   GstFFMpegDeinterlaceMode new_mode;
+ 
+-  enum PixelFormat pixfmt;
++  enum AVPixelFormat pixfmt;
+   AVPicture from_frame, to_frame;
++
++  AVFilterContext *buffersink_ctx;
++  AVFilterContext *buffersrc_ctx;
++  AVFilterGraph *filter_graph;
++  AVFrame *filter_frame;
++  int last_width, last_height;
++  enum AVPixelFormat last_pixfmt;
++
+ } GstFFMpegDeinterlace;
+ 
+ typedef struct _GstFFMpegDeinterlaceClass
+@@ -135,6 +146,8 @@ G_DEFINE_TYPE (GstFFMpegDeinterlace, gst
+ static GstFlowReturn gst_ffmpegdeinterlace_chain (GstPad * pad,
+     GstObject * parent, GstBuffer * inbuf);
+ 
++static void gst_ffmpegdeinterlace_dispose (GObject *obj);
++
+ static void
+ gst_ffmpegdeinterlace_class_init (GstFFMpegDeinterlaceClass * klass)
+ {
+@@ -167,6 +180,8 @@ gst_ffmpegdeinterlace_class_init (GstFFM
+   gst_element_class_set_static_metadata (element_class,
+       "libav Deinterlace element", "Filter/Effect/Video/Deinterlace",
+       "Deinterlace video", "Luca Ognibene <luo...@tin.it>");
++
++  gobject_class->dispose = gst_ffmpegdeinterlace_dispose;
+ }
+ 
+ static void
+@@ -277,8 +292,84 @@ gst_ffmpegdeinterlace_init (GstFFMpegDei
+   deinterlace->reconfigure = FALSE;
+   deinterlace->mode = DEFAULT_MODE;
+   deinterlace->new_mode = -1;
++  deinterlace->last_width = -1;
++  deinterlace->last_height = -1;
++  deinterlace->last_pixfmt = AV_PIX_FMT_NONE;
++}
++
++static void delete_filter_graph(GstFFMpegDeinterlace *deinterlace) {
++    if (deinterlace->filter_graph) {
++        av_frame_free(&deinterlace->filter_frame);
++        avfilter_graph_free(&deinterlace->filter_graph);
++    }
++}
++
++static void gst_ffmpegdeinterlace_dispose (GObject *obj) {
++  GstFFMpegDeinterlace * deinterlace = GST_FFMPEGDEINTERLACE(obj);
++  delete_filter_graph(deinterlace);
++}
++
++static int init_filter_graph(GstFFMpegDeinterlace *deinterlace, enum AVPixelFormat pixfmt, int width, int height) {
++    AVFilterInOut *inputs = NULL, *outputs = NULL;
++    char args[512];
++    int res;
++
++    delete_filter_graph(deinterlace);
++    deinterlace->filter_graph = avfilter_graph_alloc();
++    snprintf(args, sizeof(args),
++             "buffer=video_size=%dx%d:pix_fmt=%d:time_base=1/1:pixel_aspect=0/1[in];"
++             "[in]yadif[out];"
++             "[out]buffersink",
++             width, height, pixfmt);
++    res = avfilter_graph_parse2(deinterlace->filter_graph, args, &inputs, &outputs);
++    if (res < 0)
++        return res;
++    if(inputs || outputs)
++        return -1;
++    res = avfilter_graph_config(deinterlace->filter_graph, NULL);
++    if (res < 0)
++        return res;
++
++    deinterlace->buffersrc_ctx = avfilter_graph_get_filter(deinterlace->filter_graph, "Parsed_buffer_0");
++    deinterlace->buffersink_ctx = avfilter_graph_get_filter(deinterlace->filter_graph, "Parsed_buffersink_2");
++    if (!deinterlace->buffersrc_ctx || !deinterlace->buffersink_ctx)
++        return -1;
++    deinterlace->filter_frame = av_frame_alloc();
++    deinterlace->last_width = width;
++    deinterlace->last_height = height;
++    deinterlace->last_pixfmt = pixfmt;
++
++    return 0;
+ }
+ 
++static int process_filter_graph(GstFFMpegDeinterlace *deinterlace, AVPicture *dst, const AVPicture *src,
++                                enum AVPixelFormat pixfmt, int width, int height) {
++    int res;
++
++    if (!deinterlace->filter_graph || width != deinterlace->last_width ||
++        height != deinterlace->last_height || pixfmt != deinterlace->last_pixfmt) {
++        res = init_filter_graph(deinterlace, pixfmt, width, height);
++        if (res < 0)
++            return res;
++    }
++
++    memcpy(deinterlace->filter_frame->data, src->data, sizeof(src->data));
++    memcpy(deinterlace->filter_frame->linesize, src->linesize, sizeof(src->linesize));
++    deinterlace->filter_frame->width = width;
++    deinterlace->filter_frame->height = height;
++    deinterlace->filter_frame->format = pixfmt;
++    res = av_buffersrc_add_frame(deinterlace->buffersrc_ctx, deinterlace->filter_frame);
++    if (res < 0)
++        return res;
++    res = av_buffersink_get_frame(deinterlace->buffersink_ctx, deinterlace->filter_frame);
++    if (res < 0)
++        return res;
++    av_picture_copy(dst, (const AVPicture *) deinterlace->filter_frame, pixfmt, width, height);
++    av_frame_unref(deinterlace->filter_frame);
++
++    return 0;
++ }
++
+ static GstFlowReturn
+ gst_ffmpegdeinterlace_chain (GstPad * pad, GstObject * parent,
+     GstBuffer * inbuf)
+@@ -320,7 +411,7 @@ gst_ffmpegdeinterlace_chain (GstPad * pa
+   gst_ffmpeg_avpicture_fill (&deinterlace->to_frame, to_map.data,
+       deinterlace->pixfmt, deinterlace->width, deinterlace->height);
+ 
+-  avpicture_deinterlace (&deinterlace->to_frame, &deinterlace->from_frame,
++  process_filter_graph (deinterlace, &deinterlace->to_frame, &deinterlace->from_frame,
+       deinterlace->pixfmt, deinterlace->width, deinterlace->height);
+   gst_buffer_unmap (outbuf, &to_map);
+   gst_buffer_unmap (inbuf, &from_map);
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavutils.c
++++ gst-libav1.0-1.6.1/ext/libav/gstavutils.c
+@@ -279,7 +279,7 @@ gst_ffmpeg_avpicture_get_size (int pix_f
+ 
+ int
+ gst_ffmpeg_avpicture_fill (AVPicture * picture,
+-    uint8_t * ptr, enum PixelFormat pix_fmt, int width, int height)
++    uint8_t * ptr, enum AVPixelFormat pix_fmt, int width, int height)
+ {
+   int size, w2, h2, size2;
+   int stride, stride2;
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavutils.h
++++ gst-libav1.0-1.6.1/ext/libav/gstavutils.h
+@@ -42,7 +42,7 @@ gst_ffmpeg_avpicture_get_size (int pix_f
+ int
+ gst_ffmpeg_avpicture_fill (AVPicture * picture,
+                            uint8_t *   ptr,
+-                           enum PixelFormat pix_fmt,
++                           enum AVPixelFormat pix_fmt,
+                            int         width,
+                            int         height);
+ 
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavviddec.c
++++ gst-libav1.0-1.6.1/ext/libav/gstavviddec.c
+@@ -461,9 +461,6 @@ gst_ffmpegviddec_set_format (GstVideoDec
+ 
+   /* set buffer functions */
+   ffmpegdec->context->get_buffer2 = gst_ffmpegviddec_get_buffer2;
+-  ffmpegdec->context->get_buffer = NULL;
+-  ffmpegdec->context->reget_buffer = NULL;
+-  ffmpegdec->context->release_buffer = NULL;
+   ffmpegdec->context->draw_horiz_band = NULL;
+ 
+   /* reset coded_width/_height to prevent it being reused from last time when
+@@ -637,19 +634,10 @@ gst_ffmpegvideodec_prepare_dr_pool (GstF
+   avcodec_align_dimensions2 (ffmpegdec->context, &width, &height,
+       linesize_align);
+ 
+-  if (ffmpegdec->context->flags & CODEC_FLAG_EMU_EDGE)
+-    edge = 0;
+-  else
+-    edge = avcodec_get_edge_width ();
+-
+-  /* increase the size for the padding */
+-  width += edge << 1;
+-  height += edge << 1;
+-
+-  align.padding_top = edge;
+-  align.padding_left = edge;
+-  align.padding_right = width - GST_VIDEO_INFO_WIDTH (info) - edge;
+-  align.padding_bottom = height - GST_VIDEO_INFO_HEIGHT (info) - edge;
++  align.padding_top = 0;
++  align.padding_left = 0;
++  align.padding_right = width - GST_VIDEO_INFO_WIDTH (info);
++  align.padding_bottom = height - GST_VIDEO_INFO_HEIGHT (info);
+ 
+   /* add extra padding to match libav buffer allocation sizes */
+   align.padding_bottom++;
+@@ -842,10 +830,6 @@ gst_ffmpegviddec_get_buffer2 (AVCodecCon
+ 
+   picture->buf[0] = av_buffer_create (NULL, 0, dummy_free_buffer, dframe, 0);
+ 
+-  /* tell ffmpeg we own this buffer, transfer the ref we have on the buffer to
+-   * the opaque data. */
+-  picture->type = FF_BUFFER_TYPE_USER;
+-
+   GST_LOG_OBJECT (ffmpegdec, "returned frame %p", dframe->buffer);
+ 
+   return 0;
+@@ -1382,8 +1366,6 @@ gst_ffmpegviddec_video_frame (GstFFMpegV
+       (guint64) ffmpegdec->picture->pts);
+   GST_DEBUG_OBJECT (ffmpegdec, "picture: num %d",
+       ffmpegdec->picture->coded_picture_number);
+-  GST_DEBUG_OBJECT (ffmpegdec, "picture: ref %d",
+-      ffmpegdec->picture->reference);
+   GST_DEBUG_OBJECT (ffmpegdec, "picture: display %d",
+       ffmpegdec->picture->display_picture_number);
+   GST_DEBUG_OBJECT (ffmpegdec, "picture: opaque %p",
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavviddec.h
++++ gst-libav1.0-1.6.1/ext/libav/gstavviddec.h
+@@ -41,7 +41,7 @@ struct _GstFFMpegVidDec
+   gboolean opened;
+ 
+   /* current output pictures */
+-  enum PixelFormat pic_pix_fmt;
++  enum AVPixelFormat pic_pix_fmt;
+   gint pic_width;
+   gint pic_height;
+   gint pic_par_n;
+@@ -72,7 +72,7 @@ struct _GstFFMpegVidDec
+   GstBufferPool *internal_pool;
+   gint pool_width;
+   gint pool_height;
+-  enum PixelFormat pool_format;
++  enum AVPixelFormat pool_format;
+   GstVideoInfo pool_info;
+ };
+ 
+--- gst-libav1.0-1.6.1.orig/ext/libav/gstavvidenc.c
++++ gst-libav1.0-1.6.1/ext/libav/gstavvidenc.c
+@@ -290,7 +290,7 @@ gst_ffmpegvidenc_set_format (GstVideoEnc
+   GstCaps *allowed_caps;
+   GstCaps *icaps;
+   GstVideoCodecState *output_format;
+-  enum PixelFormat pix_fmt;
++  enum AVPixelFormat pix_fmt;
+   GstFFMpegVidEnc *ffmpegenc = (GstFFMpegVidEnc *) encoder;
+   GstFFMpegVidEncClass *oclass =
+       (GstFFMpegVidEncClass *) G_OBJECT_GET_CLASS (ffmpegenc);
+--- gst-libav1.0-1.6.1.orig/ext/libswscale/gstffmpegscale.c
++++ gst-libav1.0-1.6.1/ext/libswscale/gstffmpegscale.c
+@@ -45,7 +45,7 @@ typedef struct _GstFFMpegScale
+   /* state */
+   GstVideoInfo in_info, out_info;
+ 
+-  enum PixelFormat in_pixfmt, out_pixfmt;
++  enum AVPixelFormat in_pixfmt, out_pixfmt;
+   struct SwsContext *ctx;
+ 
+   /* property */
+@@ -214,8 +214,8 @@ gst_ffmpegscale_init (GstFFMpegScale * s
+ {
+   scale->method = DEFAULT_PROP_METHOD;
+   scale->ctx = NULL;
+-  scale->in_pixfmt = PIX_FMT_NONE;
+-  scale->out_pixfmt = PIX_FMT_NONE;
++  scale->in_pixfmt = AV_PIX_FMT_NONE;
++  scale->out_pixfmt = AV_PIX_FMT_NONE;
+ }
+ 
+ static void
+@@ -226,8 +226,8 @@ gst_ffmpegscale_reset (GstFFMpegScale *
+     scale->ctx = NULL;
+   }
+ 
+-  scale->in_pixfmt = PIX_FMT_NONE;
+-  scale->out_pixfmt = PIX_FMT_NONE;
++  scale->in_pixfmt = AV_PIX_FMT_NONE;
++  scale->out_pixfmt = AV_PIX_FMT_NONE;
+ }
+ 
+ static void
+@@ -442,11 +442,11 @@ gst_ffmpegscale_get_unit_size (GstBaseTr
+ 
+ /* Convert a GstCaps (video/raw) to a FFMPEG PixFmt
+  */
+-static enum PixelFormat
++static enum AVPixelFormat
+ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps)
+ {
+   GstVideoInfo info;
+-  enum PixelFormat pix_fmt;
++  enum AVPixelFormat pix_fmt;
+ 
+   GST_DEBUG ("converting caps %" GST_PTR_FORMAT, caps);
+ 
+@@ -455,52 +455,52 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps
+ 
+   switch (GST_VIDEO_INFO_FORMAT (&info)) {
+     case GST_VIDEO_FORMAT_YUY2:
+-      pix_fmt = PIX_FMT_YUYV422;
++      pix_fmt = AV_PIX_FMT_YUYV422;
+       break;
+     case GST_VIDEO_FORMAT_UYVY:
+-      pix_fmt = PIX_FMT_UYVY422;
++      pix_fmt = AV_PIX_FMT_UYVY422;
+       break;
+     case GST_VIDEO_FORMAT_I420:
+-      pix_fmt = PIX_FMT_YUV420P;
++      pix_fmt = AV_PIX_FMT_YUV420P;
+       break;
+     case GST_VIDEO_FORMAT_Y41B:
+-      pix_fmt = PIX_FMT_YUV411P;
++      pix_fmt = AV_PIX_FMT_YUV411P;
+       break;
+     case GST_VIDEO_FORMAT_Y42B:
+-      pix_fmt = PIX_FMT_YUV422P;
++      pix_fmt = AV_PIX_FMT_YUV422P;
+       break;
+     case GST_VIDEO_FORMAT_YUV9:
+-      pix_fmt = PIX_FMT_YUV410P;
++      pix_fmt = AV_PIX_FMT_YUV410P;
+       break;
+     case GST_VIDEO_FORMAT_ARGB:
+-      pix_fmt = PIX_FMT_ARGB;
++      pix_fmt = AV_PIX_FMT_ARGB;
+       break;
+     case GST_VIDEO_FORMAT_RGBA:
+-      pix_fmt = PIX_FMT_RGBA;
++      pix_fmt = AV_PIX_FMT_RGBA;
+       break;
+     case GST_VIDEO_FORMAT_BGRA:
+-      pix_fmt = PIX_FMT_BGRA;
++      pix_fmt = AV_PIX_FMT_BGRA;
+       break;
+     case GST_VIDEO_FORMAT_ABGR:
+-      pix_fmt = PIX_FMT_ABGR;
++      pix_fmt = AV_PIX_FMT_ABGR;
+       break;
+     case GST_VIDEO_FORMAT_BGR:
+-      pix_fmt = PIX_FMT_BGR24;
++      pix_fmt = AV_PIX_FMT_BGR24;
+       break;
+     case GST_VIDEO_FORMAT_RGB:
+-      pix_fmt = PIX_FMT_RGB24;
++      pix_fmt = AV_PIX_FMT_RGB24;
+       break;
+     case GST_VIDEO_FORMAT_RGB16:
+-      pix_fmt = PIX_FMT_RGB565;
++      pix_fmt = AV_PIX_FMT_RGB565;
+       break;
+     case GST_VIDEO_FORMAT_RGB15:
+-      pix_fmt = PIX_FMT_RGB555;
++      pix_fmt = AV_PIX_FMT_RGB555;
+       break;
+     case GST_VIDEO_FORMAT_RGB8P:
+-      pix_fmt = PIX_FMT_PAL8;
++      pix_fmt = AV_PIX_FMT_PAL8;
+       break;
+     default:
+-      pix_fmt = PIX_FMT_NONE;
++      pix_fmt = AV_PIX_FMT_NONE;
+       break;
+   }
+   return pix_fmt;
+@@ -508,7 +508,7 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps
+   /* ERROR */
+ invalid_caps:
+   {
+-    return PIX_FMT_NONE;
++    return AV_PIX_FMT_NONE;
+   }
+ }
+ 
+@@ -537,8 +537,8 @@ gst_ffmpegscale_set_caps (GstBaseTransfo
+   scale->in_pixfmt = gst_ffmpeg_caps_to_pixfmt (incaps);
+   scale->out_pixfmt = gst_ffmpeg_caps_to_pixfmt (outcaps);
+ 
+-  if (!ok || scale->in_pixfmt == PIX_FMT_NONE ||
+-      scale->out_pixfmt == PIX_FMT_NONE ||
++  if (!ok || scale->in_pixfmt == AV_PIX_FMT_NONE ||
++      scale->out_pixfmt == AV_PIX_FMT_NONE ||
+       GST_VIDEO_INFO_FORMAT (&scale->in_info) == GST_VIDEO_FORMAT_UNKNOWN ||
+       GST_VIDEO_INFO_FORMAT (&scale->out_info) == GST_VIDEO_FORMAT_UNKNOWN)
+     goto refuse_caps;
diff --git a/debian/patches/series b/debian/patches/series
index e69de29..a827249 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -0,0 +1 @@
+ffmpeg_2.9.patch

Reply via email to