diff options
author | Serkan Kaba <serkan@gentoo.org> | 2008-10-29 20:22:21 +0000 |
---|---|---|
committer | Serkan Kaba <serkan@gentoo.org> | 2008-10-29 20:22:21 +0000 |
commit | 8777b08195d7271e97cfe4e10323248524bed168 (patch) | |
tree | db980cae76b4852e5c0371e7ea697f6e33995999 /media-video/jubler | |
parent | Version bump to 2.05 (diff) | |
download | gentoo-2-8777b08195d7271e97cfe4e10323248524bed168.tar.gz gentoo-2-8777b08195d7271e97cfe4e10323248524bed168.tar.bz2 gentoo-2-8777b08195d7271e97cfe4e10323248524bed168.zip |
Version bump that works with newer ffmpeg. Fixes bug #218091, #242946. Thanks to Luca Barbato <lu_zero@gentoo.org>, Alexis Ballier <aballier@gentoo.org> for help.
(Portage version: 2.2_rc12/cvs/Linux 2.6.25-gentoo-r7 x86_64)
Diffstat (limited to 'media-video/jubler')
-rw-r--r-- | media-video/jubler/ChangeLog | 11 | ||||
-rw-r--r-- | media-video/jubler/files/jubler-3.9.6-ffmpegfix.patch | 155 | ||||
-rw-r--r-- | media-video/jubler/files/jubler-3.9.6.patch | 180 | ||||
-rw-r--r-- | media-video/jubler/jubler-3.9.6.ebuild | 82 |
4 files changed, 427 insertions, 1 deletions
diff --git a/media-video/jubler/ChangeLog b/media-video/jubler/ChangeLog index adc2553961aa..53cbbf433f10 100644 --- a/media-video/jubler/ChangeLog +++ b/media-video/jubler/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for media-video/jubler # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/ChangeLog,v 1.20 2008/07/18 22:53:23 betelgeuse Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/ChangeLog,v 1.21 2008/10/29 20:22:21 serkan Exp $ + +*jubler-3.9.6 (29 Oct 2008) + + 29 Oct 2008; Serkan Kaba <serkan@gentoo.org> + +files/jubler-3.9.6-ffmpegfix.patch, +files/jubler-3.9.6.patch, + +jubler-3.9.6.ebuild: + Version bump that works with newer ffmpeg. Fixes bug #218091, #242946. + Thanks to Luca Barbato <lu_zero@gentoo.org>, Alexis Ballier + <aballier@gentoo.org> for help. 18 Jul 2008; Petteri Räty <betelgeuse@gentoo.org> jubler-3.4.1.ebuild, jubler-3.9.0.ebuild: diff --git a/media-video/jubler/files/jubler-3.9.6-ffmpegfix.patch b/media-video/jubler/files/jubler-3.9.6-ffmpegfix.patch new file mode 100644 index 000000000000..c712cf97dcfc --- /dev/null +++ b/media-video/jubler/files/jubler-3.9.6-ffmpegfix.patch @@ -0,0 +1,155 @@ +--- Jubler-3.9.6/resources/ffdecode/decodeframe.c 2008-08-10 20:15:55.000000000 +0300 ++++ jubler/resources/ffdecode/decodeframe.c 2008-10-29 06:46:11.000000000 +0200 +@@ -39,19 +39,23 @@ + #include "defaults.h" + #include "utilities.h" + ++#define MAXSIZE 16383 ++ ++ + AVPicture *decodeFrame(JNIEnv * env, jobject this, const char *input_filename, jlong timepos, jint *width, jint *height, jfloat resize); + int file_info(JNIEnv * env, jobject this, char *input_filename); ++void storenumb (jbyte * data, int number); + + static int sws_flags = SWS_BICUBIC; + + +-JNIEXPORT jintArray JNICALL Java_com_panayotis_jubler_media_preview_decoders_FFMPEG_grabFrame(JNIEnv * env, jobject this, jstring video, jlong time, jfloat resize) { ++JNIEXPORT jbyteArray JNICALL Java_com_panayotis_jubler_media_preview_decoders_FFMPEG_grabFrame(JNIEnv * env, jobject this, jstring video, jlong time, jfloat resize) { + /* Pointers for c-like strings */ + const char *video_c; + + /* Here we'll store the frame for java */ +- jintArray matrix = NULL; +- jint* matrixdata = NULL; ++ jbyteArray matrix = NULL; ++ jbyte* matrixdata = NULL; + + /* Frame raw data */ + AVPicture* pict; +@@ -65,18 +69,20 @@ + if (pict) { + + // make array +- matrix = (*env)->NewIntArray(env, width*height+2); // 4 bytes per pixel (int) plus picture information ++ matrix = (*env)->NewByteArray(env, width*height*3+4); // 3 bytes per pixel + picture width information (2*2) + + if (matrix) { + /* Find pointer for matrix size */ +- matrixdata = (*env)->GetIntArrayElements(env, matrix, 0); ++ matrixdata = (*env)->GetByteArrayElements(env, matrix, 0); + +- /* This is a trick: the first 2 elements are not video data but the size of the video */ +- matrixdata[0] = width; +- matrixdata[1] = height; +- memcpy(matrixdata+2, pict->data[0], 4*width*height); ++ /* This is a trick: the first 4 bytes are not video data but the size of the video */ ++ storenumb(matrixdata, width); ++ storenumb(matrixdata+2, height); ++ ++ /* Copy the actual color map to picture buffer */ ++ memcpy(matrixdata+4, pict->data[0], 3*width*height); + /* Release the matrix data pointer */ +- (*env)->ReleaseIntArrayElements(env, matrix, matrixdata, 0); ++ (*env)->ReleaseByteArrayElements(env, matrix, matrixdata, 0); + } else { + DEBUG(env, this, "grabFrame", "Can not create array into memory."); + } +@@ -206,14 +212,24 @@ + av_free_packet(&pkt); + } + if (retflag != FALSE) { +- *width = (ccx->width) * resize; +- *height = (ccx->height) * resize; ++ /* Calculating new picture size and keep aspect ratio */ ++ *width = (ccx->width) * resize; ++ *height = (ccx->height) * resize; ++ if (*width > MAXSIZE ) { ++ *height = ( (*height) * MAXSIZE) / (*width); ++ *width = MAXSIZE; ++ } ++ if (*height > MAXSIZE) { ++ *width = ( (*width) * MAXSIZE) / (*height); ++ *height = MAXSIZE; ++ } ++ + DEBUG(env, this, "decodeFrame", "Resampling from (%i,%i) with resize factor %f to (%i,%i)",ccx->width, ccx->height, resize,*width, *height); + // Allocate an AVPicture +- avpicture_alloc(pict, PIX_FMT_RGBA32, *width, *height); ++ avpicture_alloc(pict, PIX_FMT_RGB24, *width, *height); + swsContext = sws_getCachedContext(swsContext, + ccx->width, ccx->height, ccx->pix_fmt, +- *width, *height, PIX_FMT_RGBA32, ++ *width, *height, PIX_FMT_RGB24, + sws_flags, NULL, NULL, NULL); + if (swsContext == NULL) { + DEBUG(env, this, "decodeFrame", "swscale context initialization failed."); +@@ -264,5 +280,8 @@ + return 0; + } + +- ++void storenumb (jbyte * data, int number) { ++ data[0] = number/128; ++ data[1] = number % 128; ++} + +--- Jubler-3.9.6/src/com/panayotis/jubler/media/preview/decoders/FFMPEG.java 2008-09-08 18:22:10.000000000 +0300 ++++ jubler/src/com/panayotis/jubler/media/preview/decoders/FFMPEG.java 2008-10-29 06:46:03.000000000 +0200 +@@ -56,23 +56,8 @@ + public final class FFMPEG extends NativeDecoder { + private static boolean library_is_present = false; + +- private static final int[] bitmasks; +- private static final ColorModel cmodel; +- +- + static { + library_is_present = SystemFileFinder.loadLibrary("ffdecode"); +- +- int[] LE_BITMASKS = {0xff0000, 0xff00, 0xff, 0xff000000}; +- int[] BE_BITMASKS = {0xff00, 0xff0000, 0xff000000, 0xff}; +- +- if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) { +- bitmasks = LE_BITMASKS; +- cmodel = ColorModel.getRGBdefault(); +- } else { +- bitmasks = BE_BITMASKS; +- cmodel = new DirectColorModel(32, bitmasks[0], bitmasks[1], bitmasks[2], bitmasks[3]); +- } + } + + /** Creates a new instance of FFMPEG */ +@@ -82,13 +67,16 @@ + if ( vfile==null || (!isDecoderValid()) ) return null; + + time *= 1000000; +- int[] frame = grabFrame(vfile.getPath(), (long)time, resize); +- if (frame==null) return null; +- +- SinglePixelPackedSampleModel model = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,frame[0], frame[1], bitmasks); +- DataBufferInt buffer = new DataBufferInt(frame, frame[0]*frame[1], 2); +- WritableRaster ras = Raster.createWritableRaster(model, buffer, null); +- BufferedImage image = new BufferedImage(cmodel, ras, true, null); ++ byte[] data = grabFrame(vfile.getPath(), (long)time, resize); ++ if (data==null) return null; ++ ++ byte[] frame = new byte[data.length-4]; ++ int X = data[0] * 128 + data[1]; ++ int Y = data[2] * 128 + data[3]; ++ System.arraycopy(data, 4, frame, 0, frame.length); ++ BufferedImage image = new BufferedImage(X, Y, BufferedImage.TYPE_3BYTE_BGR); ++ WritableRaster raster = image.getRaster(); ++ raster.setDataElements(0, 0, X, Y, frame); + return image; + } + +@@ -152,7 +140,7 @@ + } + + /* Get the image for this timestamp */ +- private native int[] grabFrame(String video, long time, float resize); ++ private native byte[] grabFrame(String video, long time, float resize); + + /* Create a wav file from the specified time stamps */ + private native boolean createClip(String audio, String wav, long from, long to); diff --git a/media-video/jubler/files/jubler-3.9.6.patch b/media-video/jubler/files/jubler-3.9.6.patch new file mode 100644 index 000000000000..32cbeb3b601f --- /dev/null +++ b/media-video/jubler/files/jubler-3.9.6.patch @@ -0,0 +1,180 @@ +diff -Nur Jubler-3.9.6/build.xml Jubler-3.9.6_patched/build.xml +--- Jubler-3.9.6/build.xml 2008-09-07 02:05:23.000000000 +0300 ++++ Jubler-3.9.6_patched/build.xml 2008-09-22 19:40:36.000000000 +0300 +@@ -69,22 +69,6 @@ + + + +- <!-- Define new ant tasks --> +- +- <taskdef name="izpack" +- onerror="report" +- classpath="../../Tools/IzPack/standalone-compiler.jar" +- classname="com.izforge.izpack.ant.IzPackTask"/> +- +- <taskdef name="launch4j" +- onerror="report" +- classpath="../../Tools/launch4j/launch4j.jar:../TOOLS/launch4j/lib/xstream.jar" +- classname="net.sf.launch4j.ant.Launch4jTask"/> +- +- <taskdef name="jarbundler" +- onerror="report" +- classpath="../../Tools/jarbundler/jarbundler-1.9.jar" +- classname="net.sourceforge.jarbundler.JarBundler" /> + + + +@@ -397,9 +381,6 @@ + + + +- <target name="-pre-compile"> +- <copy todir="src/com"> <fileset dir="resources/system/no_mac"/> </copy> +- </target> + <target name="-post-compile"> + <delete dir="build/classes/com/apple" failonerror="false"/> + <delete dir="src/com/apple" failonerror="false"/> +diff -Nur Jubler-3.9.6/resources/ffdecode/Makefile Jubler-3.9.6_patched/resources/ffdecode/Makefile +--- Jubler-3.9.6/resources/ffdecode/Makefile 2008-09-22 11:01:58.000000000 +0300 ++++ Jubler-3.9.6_patched/resources/ffdecode/Makefile 2008-09-22 19:41:30.000000000 +0300 +@@ -12,9 +12,6 @@ + # Name of the produced library + PROJ=ffdecode + +-# Paths of include files +-JAVA_HOME=${shell /bin/sh ../system/findjava.sh -j} +- + # Current Path + CPATH=${shell pwd} + +@@ -106,7 +103,6 @@ + CCPREF_NOS=${shell echo ${CCPREF} | sed -e 's/-$$//g' } + DCONFIG=--with-mp4v2 --host=${CCPREF_NOS} + +-CC=${CCPREF}gcc + RANLIB=${CCPREF}ranlib + + ifeq (${NOSTRIP},) +@@ -121,7 +117,7 @@ + .SUFFIXES:.o .c + + .c.o: +- ${CC} ${CFLAGS} ${GCCOPTS} -std=c99 -pedantic -O3 -Wall ${INCS} -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${SYSTEM} -c -o $@ $? ++ ${CC} ${CFLAGS} ${GCCOPTS} -std=c99 -pedantic -Wall ${INCS} -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${SYSTEM} -c -o $@ $? + + + develop:javacheck +diff -Nur Jubler-3.9.6/src/com/panayotis/jubler/information/HelpBrowser.java Jubler-3.9.6_patched/src/com/panayotis/jubler/information/HelpBrowser.java +--- Jubler-3.9.6/src/com/panayotis/jubler/information/HelpBrowser.java 2008-09-08 18:22:32.000000000 +0300 ++++ Jubler-3.9.6_patched/src/com/panayotis/jubler/information/HelpBrowser.java 2008-09-22 19:42:04.000000000 +0300 +@@ -47,7 +47,7 @@ + + history = new ArrayList<String>(); + +- String initpage = "file:"+SystemFileFinder.getJublerAppPath()+"/help/jubler-faq.html"; ++ String initpage = "file:"+SystemFileFinder.getJublerAppPath()+"/../help/jubler-faq.html"; + setPage(initpage); + history.add(initpage); + +diff -Nur Jubler-3.9.6/src/com/panayotis/jubler/Main.java Jubler-3.9.6_patched/src/com/panayotis/jubler/Main.java +--- Jubler-3.9.6/src/com/panayotis/jubler/Main.java 2008-09-16 12:51:40.000000000 +0300 ++++ Jubler-3.9.6_patched/src/com/panayotis/jubler/Main.java 2008-09-22 19:42:48.000000000 +0300 +@@ -105,17 +105,9 @@ + /* Load arguments, in a mac way */ + SystemDependent.initApplication(); + +- /* Check current version in a new thread */ +- Thread versioncheck = new Thread() { +- public void run() { +- StaticJubler.initVersion(); +- } +- }; +- + new Jubler(); // Display initial Jubler window + splash.dispose(); // Hide splash screen + loader.start(); // initialize loader +- versioncheck.start(); + } + + static private MainSplash splash; +diff -Nur Jubler-3.9.6/src/com/panayotis/jubler/os/SystemDependent.java Jubler-3.9.6_patched/src/com/panayotis/jubler/os/SystemDependent.java +--- Jubler-3.9.6/src/com/panayotis/jubler/os/SystemDependent.java 2008-09-20 23:59:27.000000000 +0300 ++++ Jubler-3.9.6_patched/src/com/panayotis/jubler/os/SystemDependent.java 2008-09-22 19:43:40.000000000 +0300 +@@ -25,10 +25,6 @@ + + import static com.panayotis.jubler.i18n.I18N._; + +-import com.apple.eawt.Application; +-import com.apple.eawt.ApplicationAdapter; +-import com.apple.eawt.ApplicationEvent; +- + import com.panayotis.jubler.Jubler; + import com.panayotis.jubler.Main; + import com.panayotis.jubler.StaticJubler; +@@ -113,10 +109,6 @@ + + + public static void initApplication() { +- /* In Linux this is a dummy function */ +- if (isMacOSX()) { +- JublerApp japp = new JublerApp(); +- } + } + + +@@ -342,35 +334,3 @@ + } + } + +- +- +-class JublerApp extends Application { +- public JublerApp() { +- setEnabledPreferencesMenu(true); +- addApplicationListener(new ApplicationHandler()); +- } +-} +- +-class ApplicationHandler extends ApplicationAdapter { +- +- public ApplicationHandler() {} +- +- public void handleAbout(ApplicationEvent event) { +- StaticJubler.showAbout(); +- event.setHandled(true); +- } +- +- public void handlePreferences(ApplicationEvent event) { +- Jubler.prefs.showPreferencesDialog(); +- event.setHandled(true); +- } +- +- public void handleQuit(ApplicationEvent event) { +- StaticJubler.prepareQuitAll(); +- event.setHandled(false); +- } +- +- public void handleOpenFile(ApplicationEvent event) { +- Main.asyncAddSubtitle(event.getFilename()); +- } +-} +diff -Nur Jubler-3.9.6/src/com/panayotis/jubler/os/SystemFileFinder.java Jubler-3.9.6_patched/src/com/panayotis/jubler/os/SystemFileFinder.java +--- Jubler-3.9.6/src/com/panayotis/jubler/os/SystemFileFinder.java 2008-09-08 18:22:32.000000000 +0300 ++++ Jubler-3.9.6_patched/src/com/panayotis/jubler/os/SystemFileFinder.java 2008-09-22 19:44:30.000000000 +0300 +@@ -58,15 +58,12 @@ + } + + public static boolean loadLibrary(String name) { +- File libfile = findFile("lib"+pathseparator+System.mapLibraryName(name)); +- if (libfile!=null) { + try { +- System.load(libfile.getAbsolutePath()); ++ System.loadLibrary(name); + return true; + } catch (UnsatisfiedLinkError e) { + e.printStackTrace(); + } +- } + return false; + } + diff --git a/media-video/jubler/jubler-3.9.6.ebuild b/media-video/jubler/jubler-3.9.6.ebuild new file mode 100644 index 000000000000..778688d966d8 --- /dev/null +++ b/media-video/jubler/jubler-3.9.6.ebuild @@ -0,0 +1,82 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-video/jubler/jubler-3.9.6.ebuild,v 1.1 2008/10/29 20:22:21 serkan Exp $ + +inherit gnome2 eutils java-pkg-2 java-ant-2 toolchain-funcs + +MY_PN=${PN/#j/J} +DESCRIPTION="Java subtitle editor" +HOMEPAGE="http://www.jubler.org/" +SRC_URI="mirror://sourceforge/${PN}/${MY_PN}-src-${PV}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="mplayer nls spell" + +RDEPEND=">=virtual/jre-1.5 + >=media-video/ffmpeg-0.4.9_p20080326 + mplayer? ( media-video/mplayer ) + spell? + ( + app-text/aspell + >=dev-java/zemberek-2.0 + )" + +DEPEND=">=virtual/jdk-1.5 + media-video/ffmpeg + app-text/docbook-sgml-utils + dev-util/pkgconfig + nls? ( sys-devel/gettext )" + +S=${WORKDIR}/${MY_PN}-${PV} + +pkg_setup() { + if use spell && ! built_with_use dev-java/zemberek linguas_tr; then + die "Zemberek should be built with Turkish language support" + fi + if use mplayer && ! built_with_use media-video/mplayer srt; then + msg="media-video/mplayer needs to be built with the srt use flag" + eerror ${msg} + die ${msg} + fi + java-pkg-2_pkg_setup +} + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}/${P}.patch" + epatch "${FILESDIR}/${P}-ffmpegfix.patch" + chmod +x resources/installers/linux/iconinstall +} + +src_compile() { + java-pkg_filter-compiler ecj-3.2 + eant $(use nls && echo i18n) jar faq || die "eant failed" + cp -v dist/help/jubler-faq.html build/classes/help || die "cp failed" + cd resources/ffdecode || die + CC=$(tc-getCC) NOSTRIP=true emake linuxdyn || die "make failed" +} + +src_install() { + java-pkg_dojar dist/Jubler.jar + use spell && java-pkg_register-dependency zemberek zemberek2-cekirdek.jar + use spell && java-pkg_register-dependency zemberek zemberek2-tr.jar + java-pkg_doso resources/ffdecode/libffdecode.so + doicon resources/installers/linux/jubler.png + domenu resources/installers/linux/jubler.desktop + + DESTDIR="${D}" eant linuxdesktopintegration + rm -vr "${D}/usr/share/menu" || die + + java-pkg_dolauncher jubler --main com.panayotis.jubler.Main + doman resources/installers/linux/jubler.1 + insinto /usr/share/jubler/help + doins dist/help/* +} + +pkg_preinst() { + gnome2_pkg_preinst + java-pkg-2_pkg_preinst +} |