From cinelerra-commits-admin@skolelinux.no  Fri Apr 11 08:01:04 2008
Return-Path: <cinelerra-commits-admin@skolelinux.no>
X-Original-To: cinelerra-commits@e.kevb.net
Delivered-To: cinelerra-commits@e.kevb.net
Received: from init.linpro.no (init.linpro.no [80.232.38.252])
	by e.kevb.net (Postfix) with ESMTP id 2E209ED0F6D
	for <cinelerra-commits@e.kevb.net>; Fri, 11 Apr 2008 08:01:04 -0400 (EDT)
Received: from localhost ([127.0.0.1] helo=init.linpro.no)
	by init.linpro.no with esmtp (Exim 4.50 #1 (Debian))
	id 1JkHvf-0005HH-Dn; Fri, 11 Apr 2008 14:00:32 +0200
Received: from [193.69.32.11] (helo=virusvask01.itsjefen.no)
	by init.linpro.no with esmtp (Exim 4.50 #1 (Debian))
	id 1Jk9cm-0004Ms-ST
	for <cinelerra-commits@skolelinux.no>; Fri, 11 Apr 2008 05:08:28 +0200
Received: from [193.69.32.11] by 80.232.38.252 (e-nough); Fri, 11 Apr 03:59:56 2008 +0100
Received: from localhost (localhost.localdomain [127.0.0.1])
	by virusvask01.itsjefen.no (Postfix) with ESMTP id 358628AC016
	for <cinelerra-commits@skolelinux.no>; Fri, 11 Apr 2008 05:08:00 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at virusvask01.itsjefen.no
Received: from virusvask01.itsjefen.no ([127.0.0.1])
	by localhost (virusvask01.itsjefen.no [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id Z9VQUhZy73lx for <cinelerra-commits@skolelinux.no>;
	Fri, 11 Apr 2008 05:07:56 +0200 (CEST)
Received: from mail-forward.uio.no (mail-forward.uio.no [129.240.10.42])
	by virusvask01.itsjefen.no (Postfix) with ESMTP id 4CFBF8AC015
	for <cinelerra-commits@skolelinux.no>; Fri, 11 Apr 2008 05:07:55 +0200 (CEST)
Received: from mail-mx3.uio.no ([129.240.10.44])
	by pat.uio.no with esmtp (Exim 4.67)
	(envelope-from <rafael2k@user.skolelinux.no>)
	id 1Jk9cJ-0007PU-Nf
	for cinelerra-commits@skolelinux.no; Fri, 11 Apr 2008 05:07:55 +0200
Received: from user.skolelinux.no ([158.36.191.139])
	by mail-mx3.uio.no with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.67)
	(envelope-from <rafael2k@user.skolelinux.no>)
	id 1Jk9cJ-0007Ma-Fg
	for cinelerra-commits@skolelinux.no; Fri, 11 Apr 2008 05:07:55 +0200
Received: from rafael2k by user.skolelinux.no with local (Exim 4.63)
	(envelope-from <rafael2k@user.skolelinux.no>)
	id 1Jk9cJ-0005jx-CA
	for cinelerra-commits@skolelinux.no; Fri, 11 Apr 2008 05:07:55 +0200
To: cinelerra-commits@skolelinux.no
Content-Type: text/plain; charset=UTF-8
From: "Rafael Diniz <rafael@riseup.net>" <rafael2k@user.skolelinux.no>
Message-Id: <E1Jk9cJ-0005jx-CA@user.skolelinux.no>
X-UiO-Spam-info: not spam, SpamAssassin (score=0.0, required=5.0, autolearn=disabled, none)
X-UiO-Scanned: 4EDB2440ED8FA047FB6D585BCC73F8BF4CDCBBB1
X-UiO-SR-test: 310F18FBA68432090C0ECF378A5963CD76741D7A
X-UiO-SPAM-Test: remote_host: 158.36.191.139 spam_score: 0 maxlevel 200 minaction 2 bait 0 mail/h: 1 total 22136 max/h 1171 blacklist 0 greylist 0 ratelimit 0
Content-Transfer-Encoding: quoted-printable
X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on spamtrap
X-Spam-Status: No, hits=0.0 required=5.0 tests=DSPAM=0	version=2.63
X-Spam-Level: 
X-DSPAM-Signature: !DSPAM:47fed44486395379992913!
X-DSPAM-Probability: 0.0000
X-DSPAM-Confidence: 0.9997
X-Spam-Score: 0.0 (/)
Subject: [Cinelerra-commits] r1056 - in trunk/hvirtual: . cinelerra
Sender: cinelerra-commits-admin@skolelinux.no
Errors-To: cinelerra-commits-admin@skolelinux.no
X-BeenThere: cinelerra-commits@skolelinux.no
X-Mailman-Version: 2.0.13
Precedence: bulk
List-Unsubscribe: <https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra-commits>,
	<mailto:cinelerra-commits-request@skolelinux.no?subject=unsubscribe>
List-Id: Commits to the Cinelerra CVS. <cinelerra-commits.skolelinux.no>
List-Post: <mailto:cinelerra-commits@skolelinux.no>
List-Help: <mailto:cinelerra-commits-request@skolelinux.no?subject=help>
List-Subscribe: <https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra-commits>,
	<mailto:cinelerra-commits-request@skolelinux.no?subject=subscribe>
List-Archive: <https://init.linpro.no/pipermail/skolelinux.no/cinelerra-commits/>
Date: Fri, 11 Apr 2008 05:07:55 +0200
X-Spam-Score: 0.0 (/)

Author: rafael2k
Date: 2008-04-11 05:07:55 +0200 (Fri, 11 Apr 2008)
New Revision: 1056

Modified:
   trunk/hvirtual/cinelerra/ffmpeg.C
   trunk/hvirtual/cinelerra/ffmpeg.h
   trunk/hvirtual/configure.in
Log:
ffmpeg swscale patch

Modified: trunk/hvirtual/cinelerra/ffmpeg.C
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/hvirtual/cinelerra/ffmpeg.C	2008-03-08 22:33:45 UTC (rev 1055)
+++ trunk/hvirtual/cinelerra/ffmpeg.C	2008-04-11 03:07:55 UTC (rev 1056)
@@ -1,10 +1,18 @@
 #include <string.h>
=20
+#ifdef HAVE_SWSCALER
+extern "C" {
+#include <swscale.h>
+}
+#endif
+
+
 #include "filebase.h"
 #include "quicktime.h"
 #include "ffmpeg.h"
 #include "guicast.h"
=20
+
 FFMPEG::FFMPEG(Asset *asset) {
 	this->asset =3D asset;
 	codec =3D 0;
@@ -139,23 +147,49 @@
 		color_model_to_pix_fmt(frame_in->get_color_model());
 	PixelFormat pix_fmt_out =3D=20
 		color_model_to_pix_fmt(frame_out->get_color_model());
-
+#ifdef HAVE_SWSCALER
+	// We need a context for swscale
+	struct SwsContext *convert_ctx;
+#endif
 	// do conversion within libavcodec if possible
 	if (pix_fmt_in !=3D PIX_FMT_NB && pix_fmt_out !=3D PIX_FMT_NB) {
 		// set up a temporary pictures from frame_in and frame_out
 		AVPicture picture_in, picture_out;
 		init_picture_from_frame(&picture_in, frame_in);
 		init_picture_from_frame(&picture_out, frame_out);
-
-		int result =3D img_convert(&picture_out,
-					 pix_fmt_out,
-					 &picture_in,
-					 pix_fmt_in,
-					 frame_in->get_w(),
-					 frame_out->get_h());
+		int result;
+#ifndef HAVE_SWSCALER
+		result =3D img_convert(&picture_out,
+				     pix_fmt_out,
+				     &picture_in,
+				     pix_fmt_in,
+				     frame_in->get_w(),
+				     frame_out->get_h());
 		if (result) {
 			printf("FFMPEG::convert_cmodel img_convert() failed\n");
 		}
+#else
+		convert_ctx =3D sws_getContext(frame_in->get_w(), frame_in->get_h(),pi=
x_fmt_in,
+				frame_out->get_w(),frame_out->get_h(),pix_fmt_out,
+				SWS_BICUBIC, NULL, NULL, NULL);
+
+		if(convert_ctx =3D=3D NULL){
+			printf("FFMPEG::convert_cmodel : swscale context initialization faile=
d\n");
+			return 1;
+		}
+
+		result =3D sws_scale(convert_ctx,=20
+				picture_in.data, picture_in.linesize,
+				frame_in->get_w(), frame_in->get_h(),
+				picture_out.data, picture_out.linesize);
+
+=09
+		sws_freeContext(convert_ctx);
+
+		if(result){
+			printf("FFMPEG::convert_cmodel sws_scale() failed\n");
+		}
+#endif
 		return result;
 	}
=20
@@ -207,20 +241,48 @@
 	int cmodel_out =3D frame_out->get_color_model();
 	PixelFormat pix_fmt_out =3D color_model_to_pix_fmt(cmodel_out);
=20
+#ifdef HAVE_SWSCALER
+	// We need a context for swscale
+	struct SwsContext *convert_ctx;
+#endif
+	int result;
+#ifndef HAVE_SWSCALER
 	// do conversion within libavcodec if possible
 	if (pix_fmt_out !=3D PIX_FMT_NB) {
-		int result =3D img_convert(&picture_out,
-					 pix_fmt_out,
-					 picture_in,
-					 pix_fmt_in,
-					 width_in,
-					 height_in);
+		result =3D img_convert(&picture_out,
+				     pix_fmt_out,
+				     picture_in,
+				     pix_fmt_in,
+				     width_in,
+				     height_in);
 		if (result) {
 			printf("FFMPEG::convert_cmodel img_convert() failed\n");
 		}
 		return result;
 	}
+#else
+	convert_ctx =3D sws_getContext(width_in, height_in,pix_fmt_in,
+				     frame_out->get_w(),frame_out->get_h(),pix_fmt_out,
+				     SWS_BICUBIC, NULL, NULL, NULL);
+
+	if(convert_ctx =3D=3D NULL){
+	  printf("FFMPEG::convert_cmodel : swscale context initialization faile=
d\n");
+	  return 1;
+	}
+
+	result =3D sws_scale(convert_ctx,=20
+			   picture_in->data, picture_in->linesize,
+			   width_in, height_in,
+			   picture_out.data, picture_out.linesize);
+
 =09
+		sws_freeContext(convert_ctx);
+
+		if(result){
+			printf("FFMPEG::convert_cmodel sws_scale() failed\n");
+		}
+#endif
+=09
 	// make an intermediate temp frame only if necessary
 	int cmodel_in =3D pix_fmt_to_color_model(pix_fmt_in);
 	if (cmodel_in =3D=3D BC_TRANSPARENCY) {

Modified: trunk/hvirtual/cinelerra/ffmpeg.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/hvirtual/cinelerra/ffmpeg.h	2008-03-08 22:33:45 UTC (rev 1055)
+++ trunk/hvirtual/cinelerra/ffmpeg.h	2008-04-11 03:07:55 UTC (rev 1056)
@@ -3,7 +3,7 @@
=20
 extern "C" {
 #include <avcodec.h>
-};
+}
=20
 #include "asset.h"
 #include "guicast.h"

Modified: trunk/hvirtual/configure.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/hvirtual/configure.in	2008-03-08 22:33:45 UTC (rev 1055)
+++ trunk/hvirtual/configure.in	2008-04-11 03:07:55 UTC (rev 1056)
@@ -345,9 +345,30 @@
 AC_ARG_WITH([external-ffmpeg], AC_HELP_STRING([--with-external-ffmpeg], =
[use external ffmpeg library]))
=20
 if test "x$with_external_ffmpeg" =3D "xyes"; then
-     PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc])
+     PKG_CHECK_MODULES([FFMPEG_TEMP], [libavcodec libpostproc])
      FFMPEG_FOLDER=3D""
      FFMPEG_EXTERNALTEXT=3D"External ffmpeg"
+		  =20
+     dnl --------------------------------------------------------------
+     dnl check if libavcodec contains img_convert
+     dnl if not, that means that libswscale is compiled in
+    =20
+     AC_MSG_CHECKING(for ffmpeg swscale support)
+     saved_LIBS=3D"$LIBS"
+     LIBS=3D"$saved_LIBS $FFMPEG_TEMP_LIBS"
+     AC_TRY_LINK([#include <libavcodec/avcodec.h>],
+		 [img_convert(0, 0, 0,0,0,0)],
+		 enable_ffmpeg_swscale=3Dno,enable_ffmpeg_swscale=3Dyes)
+     LIBS=3D"$saved_LIBS"
+     AC_MSG_RESULT($enable_ffmpeg_swscale)
+     if test x"$enable_ffmpeg_swscale" =3D xyes; then
+	     dnl AC_DEFINE(HAVE_SWSCALER)
+	     PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc libswscale])
+	     FFMPEG_CFLAGS=3D"$FFMPEG_CFLAGS -I/usr/include/libavcodec -I/usr/i=
nclude/libswscale -DHAVE_SWSCALER"
+     else
+	     PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc])
+     fi
+     FFMPEG_EXTERNALTEXT=3D"External ffmpeg"
 else
      FFMPEG_FOLDER=3Dffmpeg
      FFMPEG_CFLAGS=3D"-I\$(top_srcdir)/quicktime/ffmpeg/libavcodec"


_______________________________________________
Cinelerra-commits mailing list
Cinelerra-commits@skolelinux.no
https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra-commits
