Bug 180118

Summary: [PATCH] multimedia/vlc : fix build with VAAPI after libva update
Product: Ports & Packages Reporter: geraud
Component: Individual Port(s)Assignee: freebsd-multimedia (Nobody) <multimedia>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description geraud 2013-06-30 04:50:00 UTC
The latest update of multimedia/libva introduces an API change making vlc crash when building.

Fix: See attached patch.

WARNING!

I am 100% C-illiterate. This patch comes after reading this commit in libva :

http://cgit.freedesktop.org/libva/commit/?id=824a70ae1ef79458e65079374209a0cb16b65c31

and I figured that they were just shuffling arguments around and adding two new ones at the end. I tried to apply the logic to vlc, rebuilt and it worked.

This is clearly a WORKSFORME patch. Unexpected results of applying this patch range from "this patch may eat your homework" to "this patch may end our civilization as we know it". I won't be held responsible for anything that happens. You have been warned!

Patch attached with submission follows:
How-To-Repeat: build vlc with VAAPI option.
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-06-30 04:50:13 UTC
Responsible Changed
From-To: freebsd-ports-bugs->freebsd-multimedia

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Guido Falsi freebsd_committer freebsd_triage 2013-07-06 21:08:59 UTC
State Changed
From-To: open->closed

Committed. Thanks!
Comment 3 dfilter service freebsd_committer freebsd_triage 2013-07-06 21:09:02 UTC
Author: madpilot
Date: Sat Jul  6 20:08:45 2013
New Revision: 322412
URL: http://svnweb.freebsd.org/changeset/ports/322412

Log:
  Fix build of gnash [1] and vlc [2] after libva update.
  
  PR:		ports/180118 [2]
  Submitted by:	Geraud CONTINSOUZAS <geraud@gcu.info>
  Approved by:	dinoex [1], nox [2]

Added:
  head/graphics/gnash/files/patch-libdevice-caapi-VaapiSurface.cpp   (contents, props changed)
  head/multimedia/vlc/files/patch-modules-codec-avcodec-vaapi.c   (contents, props changed)
Modified:
  head/graphics/gnash/Makefile

Modified: head/graphics/gnash/Makefile
==============================================================================
--- head/graphics/gnash/Makefile	Sat Jul  6 19:59:15 2013	(r322411)
+++ head/graphics/gnash/Makefile	Sat Jul  6 20:08:45 2013	(r322412)
@@ -3,7 +3,7 @@
 
 PORTNAME=	gnash
 PORTVERSION=	0.8.10
-PORTREVISION=	5
+PORTREVISION=	6
 CATEGORIES=	graphics
 MASTER_SITES=	GNU/${PORTNAME}/${PORTVERSION}/
 

Added: head/graphics/gnash/files/patch-libdevice-caapi-VaapiSurface.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/graphics/gnash/files/patch-libdevice-caapi-VaapiSurface.cpp	Sat Jul  6 20:08:45 2013	(r322412)
@@ -0,0 +1,13 @@
+--- libdevice/vaapi/VaapiSurface.cpp.orig	2012-01-19 20:17:48.000000000 +0100
++++ libdevice/vaapi/VaapiSurface.cpp	2013-07-05 01:44:21.927681308 +0200
+@@ -62,8 +62,8 @@
+     VAStatus status;
+     VASurfaceID surface_id;
+     status = vaCreateSurfaces(gvactx->display(),
+-                              width, height, VA_RT_FORMAT_YUV420,
+-                              1, &surface_id);
++                              VA_RT_FORMAT_YUV420, width, height,
++                              &surface_id, 1, NULL, 0);
+     if (!vaapi_check_status(status, "vaCreateSurfaces()")) {
+         return;
+     }

Added: head/multimedia/vlc/files/patch-modules-codec-avcodec-vaapi.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/vlc/files/patch-modules-codec-avcodec-vaapi.c	Sat Jul  6 20:08:45 2013	(r322412)
@@ -0,0 +1,13 @@
+--- modules/codec/avcodec/vaapi.c.orig	2013-01-22 10:51:40.000000000 +0100
++++ modules/codec/avcodec/vaapi.c	2013-07-05 01:43:15.340713238 +0200
+@@ -246,8 +246,8 @@
+ 
+     /* Create surfaces */
+     VASurfaceID pi_surface_id[p_va->i_surface_count];
+-    if( vaCreateSurfaces( p_va->p_display, i_width, i_height, VA_RT_FORMAT_YUV420,
+-                          p_va->i_surface_count, pi_surface_id ) )
++    if( vaCreateSurfaces( p_va->p_display, VA_RT_FORMAT_YUV420, i_width, i_height,
++                          pi_surface_id, p_va->i_surface_count, NULL, 0 ) )
+     {
+         for( int i = 0; i < p_va->i_surface_count; i++ )
+             p_va->p_surface[i].i_id = VA_INVALID_SURFACE;
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"