Package: harvid
Version: 0.8.0-2
Severity: important
Tags: patch
User: pkg-multimedia-maintainers@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 have little regression potential.

Best regards,
Andreas

diff --git a/debian/patches/ffmpeg_2.9.patch b/debian/patches/ffmpeg_2.9.patch
new file mode 100644
index 0000000..04de003
--- /dev/null
+++ b/debian/patches/ffmpeg_2.9.patch
@@ -0,0 +1,299 @@
+Description: Replace deprecated FFmpeg API
+Author: Andreas Cadhalpun <andreas.cadhal...@googlemail.com>
+Last-Update: <2015-11-02>
+
+--- harvid-0.8.0.orig/libharvid/decoder_ctrl.c
++++ harvid-0.8.0/libharvid/decoder_ctrl.c
+@@ -29,7 +29,7 @@
+ #include "ffcompat.h"
+ #include "dlog.h"
+ 
+-#define DEFAULT_PIX_FMT (PIX_FMT_RGB24) // TODO global default
++#define DEFAULT_PIX_FMT (AV_PIX_FMT_RGB24) // TODO global default
+ 
+ //#define HASH_EMIT_KEYS 3
+ #define HASH_FUNCTION HASH_SAX
+@@ -104,15 +104,15 @@ static inline int my_open_movie(void **v
+   }
+   ff_create(vd);
+   assert (
+-         render_fmt == PIX_FMT_YUV420P
+-      || render_fmt == PIX_FMT_YUV440P
+-      || render_fmt == PIX_FMT_YUYV422
+-      || render_fmt == PIX_FMT_UYVY422
+-      || render_fmt == PIX_FMT_RGB24
+-      || render_fmt == PIX_FMT_BGR24
+-      || render_fmt == PIX_FMT_RGBA
+-      || render_fmt == PIX_FMT_ARGB
+-      || render_fmt == PIX_FMT_BGRA
++         render_fmt == AV_PIX_FMT_YUV420P
++      || render_fmt == AV_PIX_FMT_YUV440P
++      || render_fmt == AV_PIX_FMT_YUYV422
++      || render_fmt == AV_PIX_FMT_UYVY422
++      || render_fmt == AV_PIX_FMT_RGB24
++      || render_fmt == AV_PIX_FMT_BGR24
++      || render_fmt == AV_PIX_FMT_RGBA
++      || render_fmt == AV_PIX_FMT_ARGB
++      || render_fmt == AV_PIX_FMT_BGRA
+       );
+ 
+   if (!ff_open_movie (*vd, fn, render_fmt)) {
+@@ -144,7 +144,7 @@ static inline void my_get_info_canonical
+ static JVOBJECT *newjvo (JVOBJECT *jvo, pthread_mutex_t *appendlock) {
+   debugmsg(DEBUG_DCTL, "DCTL: newjvo() allocated new decoder object\n");
+   JVOBJECT *n = calloc(1, sizeof(JVOBJECT));
+-  n->fmt = PIX_FMT_NONE;
++  n->fmt = AV_PIX_FMT_NONE;
+   n->frame = -1;
+   pthread_mutex_init(&n->lock, NULL);
+   JVOBJECT *cptr = jvo;
+@@ -175,8 +175,8 @@ static JVOBJECT *testjvd(JVOBJECT *jvo,
+     if (!(cptr->flags&VOF_VALID) || cptr->id != id) {
+       continue;
+     }
+-    if (fmt != PIX_FMT_NONE && cptr->fmt != fmt
+-        && cptr->fmt != PIX_FMT_NONE
++    if (fmt != AV_PIX_FMT_NONE && cptr->fmt != fmt
++        && cptr->fmt != AV_PIX_FMT_NONE
+         ) {
+       continue;
+     }
+@@ -324,7 +324,7 @@ static int clearjvo(JVD *jvd, int f, int
+       my_destroy(&cptr->decoder);
+       cptr->decoder = NULL;
+       cptr->flags &= ~VOF_OPEN;
+-      cptr->fmt = PIX_FMT_NONE;
++      cptr->fmt = AV_PIX_FMT_NONE;
+     }
+ 
+     hashref_delete_jvo(jvd, cptr);
+@@ -410,7 +410,7 @@ static JVOBJECT *getjvo(JVD *jvd) {
+         if (cptr->flags&(VOF_OPEN)) {
+           my_destroy(&cptr->decoder); // close it.
+           cptr->decoder = NULL; // not really need..
+-          cptr->fmt = PIX_FMT_NONE;
++          cptr->fmt = AV_PIX_FMT_NONE;
+         }
+ 
+         hashref_delete_jvo(jvd, cptr);
+@@ -563,7 +563,7 @@ static JVOBJECT *new_video_object(JVD *j
+ 
+ 
+   jvo->id = id;
+-  jvo->fmt = fmt == PIX_FMT_NONE ? DEFAULT_PIX_FMT : fmt;
++  jvo->fmt = fmt == AV_PIX_FMT_NONE ? DEFAULT_PIX_FMT : fmt;
+   jvo->frame = -1;
+   jvo->flags |= VOF_VALID;
+ 
+@@ -619,7 +619,7 @@ static void * dctrl_get_decoder(void *p,
+    * use it IFF frame == -1  (ie. non-blocking info lookups) */
+   if (frame < 0) {
+     pthread_rwlock_rdlock(&jvd->lock_jdh);
+-    if (fmt == PIX_FMT_NONE) {
++    if (fmt == AV_PIX_FMT_NONE) {
+       HASH_FIND(hhi, jvd->jvi, &id, sizeof(unsigned short), jvo);
+     } else {
+       const JVOBJECT jvt = {id, fmt, 0};
+@@ -670,7 +670,7 @@ static void * dctrl_get_decoder(void *p,
+       jvo->lru = time(NULL);
+       pthread_mutex_unlock(&jvo->lock);
+ 
+-      if (fmt == PIX_FMT_NONE) fmt = DEFAULT_PIX_FMT;
++      if (fmt == AV_PIX_FMT_NONE) fmt = DEFAULT_PIX_FMT;
+ 
+       if (!my_open_movie(&jvo->decoder, get_fn(jvd, jvo->id), fmt)) {
+         pthread_mutex_lock(&jvo->lock);
+@@ -798,7 +798,7 @@ int dctrl_decode(void *p, unsigned short
+ 
+ int dctrl_get_info(void *p, unsigned short id, VInfo *i) {
+   int err = 0;
+-  JVOBJECT *jvo = (JVOBJECT*) dctrl_get_decoder(p, id, PIX_FMT_NONE, -1, &err);
++  JVOBJECT *jvo = (JVOBJECT*) dctrl_get_decoder(p, id, AV_PIX_FMT_NONE, -1, &err);
+   if (!jvo) return err;
+   my_get_info(jvo->decoder, i);
+   jvo->hitcount_info++;
+--- harvid-0.8.0.orig/libharvid/ffdecoder.c
++++ harvid-0.8.0/libharvid/ffdecoder.c
+@@ -103,7 +103,7 @@ static int ff_getbuffersize(void *ptr, s
+ 
+ static void render_empty_frame(ffst *ff, uint8_t* buf, int w, int h, int xoff, int ys) {
+   switch (ff->render_fmt) {
+-    case PIX_FMT_UYVY422:
++    case AV_PIX_FMT_UYVY422:
+       {
+ 	int i;
+ 	for (i = 0; i < w*h*2; i += 2) {
+@@ -111,7 +111,7 @@ static void render_empty_frame(ffst *ff,
+ 	}
+       }
+       break;
+-    case PIX_FMT_YUYV422:
++    case AV_PIX_FMT_YUYV422:
+       {
+ 	int i;
+ 	for (i = 0; i < w*h*2; i += 2) {
+@@ -119,25 +119,25 @@ static void render_empty_frame(ffst *ff,
+ 	}
+       }
+       break;
+-    case PIX_FMT_YUV420P:
++    case AV_PIX_FMT_YUV420P:
+       {
+ 	size_t Ylen = w * h;
+ 	memset(buf, 0, Ylen);
+ 	memset(buf+Ylen, 0x80, Ylen/2);
+       }
+       break;
+-    case PIX_FMT_YUV440P:
++    case AV_PIX_FMT_YUV440P:
+       {
+ 	size_t Ylen = w * h;
+ 	memset(buf, 0, Ylen);
+ 	memset(buf+Ylen, 0x80, Ylen);
+       }
+       break;
+-    case PIX_FMT_BGR24:
+-    case PIX_FMT_RGB24:
+-    case PIX_FMT_RGBA:
+-    case PIX_FMT_BGRA:
+-    case PIX_FMT_ARGB:
++    case AV_PIX_FMT_BGR24:
++    case AV_PIX_FMT_RGB24:
++    case AV_PIX_FMT_RGBA:
++    case AV_PIX_FMT_BGRA:
++    case AV_PIX_FMT_ARGB:
+       memset(buf, 0, ff_getbuffersize(ff, NULL));
+       break;
+     default:
+@@ -148,8 +148,8 @@ static void render_empty_frame(ffst *ff,
+ #if 1 // draw cross
+   int x,y;
+   switch (ff->render_fmt) {
+-    case PIX_FMT_YUV420P:
+-    case PIX_FMT_YUV440P:
++    case AV_PIX_FMT_YUV420P:
++    case AV_PIX_FMT_YUV440P:
+       for (x = 0, y = 0; x < w-1; x++, y = h * x / w) {
+ 	int off = (x + w * y);
+ 	buf[off]=127; buf[off+1]=127;
+@@ -157,8 +157,8 @@ static void render_empty_frame(ffst *ff,
+ 	buf[off]=127; buf[off+1]=127;
+       }
+       break;
+-    case PIX_FMT_YUYV422:
+-    case PIX_FMT_UYVY422:
++    case AV_PIX_FMT_YUYV422:
++    case AV_PIX_FMT_UYVY422:
+       for (x = 0, y = 0; x < w-1; x++, y = h * x / w) {
+ 	int off = (x + w * y) * 2;
+ 	buf[off] = 127; buf[off+1] = 127;
+@@ -166,8 +166,8 @@ static void render_empty_frame(ffst *ff,
+ 	buf[off] = 127; buf[off+1] = 127;
+       }
+       break;
+-    case PIX_FMT_RGB24:
+-    case PIX_FMT_BGR24:
++    case AV_PIX_FMT_RGB24:
++    case AV_PIX_FMT_BGR24:
+       for (x = 0, y = 0; x < w-1; x++, y = h * x / w) {
+ 	int off = 3 * (x + w * y);
+ 	buf[off]=255; buf[off+1]=255; buf[off+2]=255;
+@@ -175,11 +175,11 @@ static void render_empty_frame(ffst *ff,
+ 	buf[off]=255; buf[off+1]=255; buf[off+2]=255;
+       }
+       break;
+-    case PIX_FMT_RGBA:
+-    case PIX_FMT_BGRA:
+-    case PIX_FMT_ARGB:
++    case AV_PIX_FMT_RGBA:
++    case AV_PIX_FMT_BGRA:
++    case AV_PIX_FMT_ARGB:
+       {
+-      const int O = (ff->render_fmt == PIX_FMT_ARGB) ? 1 : 0;
++      const int O = (ff->render_fmt == AV_PIX_FMT_ARGB) ? 1 : 0;
+       for (x = 0, y = 0; x < w-1; x++, y = h * x / w) {
+ 	int off = 4 * (x + w * y) + O;
+ 	buf[off]=255; buf[off+1]=255; buf[off+2]=255;
+@@ -726,7 +726,7 @@ void ff_get_info_canonical(void *ptr, VI
+ 
+ void ff_create(void **ff) {
+   (*((ffst**)ff)) = (ffst*) calloc(1, sizeof(ffst));
+-  (*((ffst**)ff))->render_fmt = PIX_FMT_RGB24;
++  (*((ffst**)ff))->render_fmt = AV_PIX_FMT_RGB24;
+   (*((ffst**)ff))->want_ignstart = 0;
+   (*((ffst**)ff))->want_genpts = 0;
+   (*((ffst**)ff))->packet.data = NULL;
+@@ -769,25 +769,25 @@ void ff_resize(void *ptr, int w, int h,
+ 
+ const char * ff_fmt_to_text(int fmt) {
+   switch (fmt) {
+-    case PIX_FMT_NONE:
++    case AV_PIX_FMT_NONE:
+       return "-";
+-    case PIX_FMT_BGR24:
++    case AV_PIX_FMT_BGR24:
+       return "BGR24";
+-    case PIX_FMT_RGB24:
++    case AV_PIX_FMT_RGB24:
+       return "RGB24";
+-    case PIX_FMT_RGBA:
++    case AV_PIX_FMT_RGBA:
+       return "RGBA";
+-    case PIX_FMT_BGRA:
++    case AV_PIX_FMT_BGRA:
+       return "BGRA";
+-    case PIX_FMT_ARGB:
++    case AV_PIX_FMT_ARGB:
+       return "ARGB";
+-    case PIX_FMT_YUV420P:
++    case AV_PIX_FMT_YUV420P:
+       return "YUV420P";
+-    case PIX_FMT_YUYV422:
++    case AV_PIX_FMT_YUYV422:
+       return "YUYV422";
+-    case PIX_FMT_UYVY422:
++    case AV_PIX_FMT_UYVY422:
+       return "UYVY422";
+-    case PIX_FMT_YUV440P:
++    case AV_PIX_FMT_YUV440P:
+       return "YUV440P";
+     default:
+       return "?";
+--- harvid-0.8.0.orig/src/ics_handler.c
++++ harvid-0.8.0/src/ics_handler.c
+@@ -109,16 +109,16 @@ void parse_param(struct queryparserstate
+     else if (!strncmp(val, "jpeg",4)) {qps->a->render_fmt = FMT_JPG; qps->a->misc_int = atoi(&val[4]);}
+     else if (!strcmp(val, "png"))      qps->a->render_fmt = FMT_PNG;
+     else if (!strcmp(val, "ppm"))      qps->a->render_fmt = FMT_PPM;
+-    else if (!strcmp(val, "yuv"))     {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_YUV420P;}
+-    else if (!strcmp(val, "yuv420"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_YUV420P;}
+-    else if (!strcmp(val, "yuv440"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_YUV440P;}
+-    else if (!strcmp(val, "yuv422"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_YUYV422;}
+-    else if (!strcmp(val, "uyv422"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_UYVY422;}
+-    else if (!strcmp(val, "rgb"))     {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_RGB24;}
+-    else if (!strcmp(val, "bgr"))     {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_BGR24;}
+-    else if (!strcmp(val, "rgba"))    {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_RGBA;}
+-    else if (!strcmp(val, "argb"))    {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_ARGB;}
+-    else if (!strcmp(val, "bgra"))    {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = PIX_FMT_BGRA;}
++    else if (!strcmp(val, "yuv"))     {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_YUV420P;}
++    else if (!strcmp(val, "yuv420"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_YUV420P;}
++    else if (!strcmp(val, "yuv440"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_YUV440P;}
++    else if (!strcmp(val, "yuv422"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_YUYV422;}
++    else if (!strcmp(val, "uyv422"))  {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_UYVY422;}
++    else if (!strcmp(val, "rgb"))     {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_RGB24;}
++    else if (!strcmp(val, "bgr"))     {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_BGR24;}
++    else if (!strcmp(val, "rgba"))    {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_RGBA;}
++    else if (!strcmp(val, "argb"))    {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_ARGB;}
++    else if (!strcmp(val, "bgra"))    {qps->a->render_fmt = FMT_RAW; qps->a->decode_fmt = AV_PIX_FMT_BGRA;}
+     /* info, version, rc,... format */
+     else if (!strcmp(val, "html"))    qps->a->render_fmt = OUT_HTML;
+     else if (!strcmp(val, "xhtml"))   qps->a->render_fmt = OUT_HTML;
+@@ -141,7 +141,7 @@ static void parse_http_query_params(stru
+ static int parse_http_query(CONN *c, char *query, httpheader *h, ics_request_args *a) {
+   struct queryparserstate qps = {a, NULL, 0};
+ 
+-  a->decode_fmt = PIX_FMT_RGB24;
++  a->decode_fmt = AV_PIX_FMT_RGB24;
+   a->render_fmt = FMT_PNG;
+   a->frame = 0;
+   a->misc_int = 0;
diff --git a/debian/patches/series b/debian/patches/series
index 80c0dd0..9192c6f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 0001-Fix-build-with-libav-10.patch
 0002-spelling.patch
+ffmpeg_2.9.patch
_______________________________________________
pkg-multimedia-maintainers mailing list
pkg-multimedia-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers

Reply via email to