diff options
-rw-r--r-- | graphics/swfdec/Makefile | 48 | ||||
-rw-r--r-- | graphics/swfdec/distinfo | 3 | ||||
-rw-r--r-- | graphics/swfdec/files/patch-configure | 24 | ||||
-rw-r--r-- | graphics/swfdec/files/patch-swfdec-gtk_Makefile.in | 10 | ||||
-rw-r--r-- | graphics/swfdec/files/swfdec_playback_oss.c | 265 | ||||
-rw-r--r-- | graphics/swfdec/pkg-descr | 6 | ||||
-rw-r--r-- | graphics/swfdec/pkg-plist | 88 | ||||
-rw-r--r-- | www/swfdec-plugin/Makefile | 31 | ||||
-rw-r--r-- | www/swfdec-plugin/distinfo | 3 | ||||
-rw-r--r-- | www/swfdec-plugin/pkg-descr | 8 | ||||
-rw-r--r-- | www/swfdec-plugin/pkg-plist | 10 |
11 files changed, 496 insertions, 0 deletions
diff --git a/graphics/swfdec/Makefile b/graphics/swfdec/Makefile new file mode 100644 index 000000000..c2adccc8b --- /dev/null +++ b/graphics/swfdec/Makefile @@ -0,0 +1,48 @@ +# ex:ts=8 +# Ports collection makefile for: swfdec +# Date created: Apr 5, 2003 +# Whom: ijliao +# +# $FreeBSD$ +# $MCom$ + +PORTNAME= swfdec +PORTVERSION= 0.9.2 +CATEGORIES= graphics +MASTER_SITES= http://swfdec.freedesktop.org/download/swfdec/${PORTVERSION:R}/ + +MAINTAINER= kwm@FreeBSD.org +COMMENT= Flash Rendering Library + +LIB_DEPENDS= oil-0.3.0:${PORTSDIR}/devel/liboil \ + soup-2.4.1:${PORTSDIR}/devel/libsoup + +USE_LDCONFIG= yes +USE_GNOME= gnomehack gtk20 ltverhack +USE_GSTREAMER= core good mp3 ffmpeg +USE_AUTOTOOLS= libtool:15 +CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ + LDFLAGS="-Wl,-Bsymbolic -L${LOCALBASE}/lib" + +PLIST_SUB= VERSION=${PORTVERSION:R} + +OPTIONS= PULSEAUDIO "Enable the PulseAudio sound module" off + +.include <bsd.port.pre.mk> + +.if defined(WITH_PULSEAUDIO) +LIB_DEPENDS+= pulse.0:${PORTSDIR}/audio/pulseaudio +CONFIGURE_ARGS+= --with-audio=pulse +.else +CONFIGURE_ARGS+= --with-audio=oss +.endif + +post-extract: + @${CP} ${FILESDIR}/swfdec_playback_oss.c \ + ${WRKSRC}/swfdec-gtk + +post-patch: + @${REINPLACE_CMD} -e 's|-Wmissing-include-dirs||g' \ + ${WRKSRC}/configure + +.include <bsd.port.post.mk> diff --git a/graphics/swfdec/distinfo b/graphics/swfdec/distinfo new file mode 100644 index 000000000..2af4511f2 --- /dev/null +++ b/graphics/swfdec/distinfo @@ -0,0 +1,3 @@ +MD5 (swfdec-0.9.2.tar.gz) = 7be5e39236e2d6efa61a18e83e5ab73d +SHA256 (swfdec-0.9.2.tar.gz) = 7d56a3044c19e7ca4b492f3739d9aa6f6bdb6e51ecf4daa5d29c035ae430f1ef +SIZE (swfdec-0.9.2.tar.gz) = 10016751 diff --git a/graphics/swfdec/files/patch-configure b/graphics/swfdec/files/patch-configure new file mode 100644 index 000000000..4f14187ab --- /dev/null +++ b/graphics/swfdec/files/patch-configure @@ -0,0 +1,24 @@ +--- configure.orig 2008-08-14 12:43:55.000000000 -0400 ++++ configure 2008-08-14 12:45:51.000000000 -0400 +@@ -1563,7 +1563,7 @@ Optional Packages: + both] + --with-tags[=TAGS] include additional configurations [automatic] + --with-pkg-config-path colon-separated list of pkg-config(1) dirs +- --with-audio=[auto/pulse/none] ++ --with-audio=[auto/pulse/oss/none] + audio backend to use + --with-html-dir=PATH path to installed docs + +@@ -22752,6 +22752,12 @@ echo "$as_me: WARNING: no alsa audio sup + fi + fi + ++if test "$with_audio" = "oss"; then ++ AUDIO_TYPE=oss ++ AUDIO_CFLAGS= ++ AUDIO_LIBS= ++fi ++ + if test "$with_audio" = "pulse"; then + + pkg_failed=no diff --git a/graphics/swfdec/files/patch-swfdec-gtk_Makefile.in b/graphics/swfdec/files/patch-swfdec-gtk_Makefile.in new file mode 100644 index 000000000..ddd87704a --- /dev/null +++ b/graphics/swfdec/files/patch-swfdec-gtk_Makefile.in @@ -0,0 +1,10 @@ +--- swfdec-gtk/Makefile.in.orig 2008-08-14 12:41:05.000000000 -0400 ++++ swfdec-gtk/Makefile.in 2008-08-14 12:45:58.000000000 -0400 +@@ -281,6 +282,7 @@ libswfdec_@SWFDEC_MAJORMINOR@include_HEA + + EXTRA_DIST = \ + swfdec_playback_alsa.c \ ++ swfdec_playback_oss.c \ + swfdec_playback_pulse.c \ + swfdec_playback_none.c + diff --git a/graphics/swfdec/files/swfdec_playback_oss.c b/graphics/swfdec/files/swfdec_playback_oss.c new file mode 100644 index 000000000..160f26db9 --- /dev/null +++ b/graphics/swfdec/files/swfdec_playback_oss.c @@ -0,0 +1,265 @@ +/* Swfdec + * Copyright © 2006 Benjamin Otte <otte@gnome.org> + * Copyright © 2007 Eric Anholt <eric@anholt.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <sys/ioctl.h> +#include <sys/soundcard.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> + +#include "swfdec_playback.h" + +/** @file Implements swfdec audio playback by opening /dev/dsp per stream + * and playing out through that. + * + * Allowing multiple access to /dev/dsp is not required by the OSS API spec, + * but FreeBSD's sound system lets you, which is what this file was written + * for. + */ + +/*** DEFINITIONS ***/ + +struct _SwfdecPlayback { + SwfdecPlayer * player; + GList * streams; /* all Stream objects */ + GMainContext * context; /* context we work in */ +}; + +typedef struct { + SwfdecPlayback * sound; /* reference to sound object */ + SwfdecAudio * audio; /* the audio we play back */ + int dsp_fd; + int fragsize; /* Audio fragment size */ + GSource * source; /* source for writing data */ + guint offset; /* offset into sound */ +} Stream; + +/* Size of one of our audio samples, in bytes */ +#define SAMPLESIZE 2 +#define CHANNELS 2 + +/*** STREAMS ***/ + +static gboolean +handle_stream (GIOChannel *source, GIOCondition cond, gpointer data) +{ + Stream *stream = data; + char *frag = malloc(stream->fragsize); + + if (frag == NULL) { + g_printerr ("Failed to allocate fragment of size %d\n", + stream->fragsize); + return FALSE; + } + + while (TRUE) { + int ret; + audio_buf_info spaceinfo; + + ret = ioctl(stream->dsp_fd, SNDCTL_DSP_GETOSPACE, &spaceinfo); + if (ret == -1) { + g_printerr ("Failed to get output buffer availability\n"); + free(frag); + return FALSE; + } + + if (spaceinfo.fragments == 0) + break; + + memset (frag, 0, stream->fragsize); + swfdec_audio_render (stream->audio, (gint16 *)frag, stream->offset, + stream->fragsize / SAMPLESIZE / CHANNELS); + + ret = write (stream->dsp_fd, frag, stream->fragsize); + if (ret != stream->fragsize) { + g_printerr ("Failed to write fragment\n"); + free(frag); + return FALSE; + } + + stream->offset += stream->fragsize / SAMPLESIZE / CHANNELS; + } + + free(frag); + + return TRUE; +} + +static void +swfdec_playback_stream_open (SwfdecPlayback *sound, SwfdecAudio *audio) +{ + GIOChannel *channel; + Stream *stream; + guint rate; + int dsp_fd, ret, format, channels, fragsize; + + dsp_fd = open("/dev/dsp", O_WRONLY); + if (dsp_fd == -1) { + g_printerr ("Failed to open /dev/dsp\n"); + return; + } + + format = AFMT_S16_LE; + ret = ioctl(dsp_fd, SNDCTL_DSP_SETFMT, &format); + if (ret == -1) { + g_printerr ("Failed to set sound format\n"); + close(dsp_fd); + return; + } + + channels = 2; + ret = ioctl(dsp_fd, SNDCTL_DSP_CHANNELS, &channels); + if (ret == -1) { + g_printerr ("Failed to set stereo\n"); + close(dsp_fd); + return; + } + + rate = 44100; + ret = ioctl(dsp_fd, SNDCTL_DSP_SPEED, &rate); + if (ret == -1) { + g_printerr ("Failed to set rate\n"); + close(dsp_fd); + return; + } + + ret = ioctl(dsp_fd, SNDCTL_DSP_GETBLKSIZE, &fragsize); + if (ret == -1) { + g_printerr ("Failed to get fragment size\n"); + close(dsp_fd); + return; + } + + stream = g_new0 (Stream, 1); + stream->sound = sound; + stream->audio = g_object_ref (audio); + stream->dsp_fd = dsp_fd; + stream->fragsize = fragsize; + sound->streams = g_list_prepend (sound->streams, stream); + + channel = g_io_channel_unix_new (stream->dsp_fd); + stream->source = g_io_create_watch (channel, G_IO_OUT); + g_source_set_priority (stream->source, G_PRIORITY_HIGH); + g_source_set_callback (stream->source, (GSourceFunc) handle_stream, stream, + NULL); + g_io_channel_unref (channel); + g_source_attach (stream->source, stream->sound->context); + + return; +} + +static void +swfdec_playback_stream_close (Stream *stream) +{ + close (stream->dsp_fd); + g_source_destroy (stream->source); + g_source_unref (stream->source); + stream->sound->streams = g_list_remove (stream->sound->streams, stream); + g_object_unref (stream->audio); + g_free (stream); +} + +/*** SOUND ***/ + +static void +advance_before (SwfdecPlayer *player, guint msecs, guint audio_samples, gpointer data) +{ + SwfdecPlayback *sound = data; + GList *walk; + + for (walk = sound->streams; walk; walk = walk->next) { + Stream *stream = walk->data; + if (audio_samples >= stream->offset) { + stream->offset = 0; + } else { + stream->offset -= audio_samples; + } + } +} + +static void +audio_added (SwfdecPlayer *player, SwfdecAudio *audio, SwfdecPlayback *sound) +{ + swfdec_playback_stream_open (sound, audio); +} + +static void +audio_removed (SwfdecPlayer *player, SwfdecAudio *audio, SwfdecPlayback *sound) +{ + GList *walk; + + for (walk = sound->streams; walk; walk = walk->next) { + Stream *stream = walk->data; + if (stream->audio == audio) { + swfdec_playback_stream_close (stream); + return; + } + } + g_assert_not_reached (); +} + +SwfdecPlayback * +swfdec_playback_open (SwfdecPlayer *player, GMainContext *context) +{ + SwfdecPlayback *sound; + const GList *walk; + + g_return_val_if_fail (SWFDEC_IS_PLAYER (player), NULL); + g_return_val_if_fail (context != NULL, NULL); + + sound = g_new0 (SwfdecPlayback, 1); + sound->player = player; + g_signal_connect (player, "advance", G_CALLBACK (advance_before), sound); + g_signal_connect (player, "audio-added", G_CALLBACK (audio_added), sound); + g_signal_connect (player, "audio-removed", G_CALLBACK (audio_removed), sound); + for (walk = swfdec_player_get_audio (player); walk; walk = walk->next) { + swfdec_playback_stream_open (sound, walk->data); + } + g_main_context_ref (context); + sound->context = context; + return sound; +} + +void +swfdec_playback_close (SwfdecPlayback *sound) +{ +#define REMOVE_HANDLER_FULL(obj,func,data,count) G_STMT_START {\ + if (g_signal_handlers_disconnect_by_func ((obj), \ + G_CALLBACK (func), (data)) != (count)) { \ + g_assert_not_reached (); \ + } \ +} G_STMT_END +#define REMOVE_HANDLER(obj,func,data) REMOVE_HANDLER_FULL (obj, func, data, 1) + + while (sound->streams) + swfdec_playback_stream_close (sound->streams->data); + REMOVE_HANDLER (sound->player, advance_before, sound); + REMOVE_HANDLER (sound->player, audio_added, sound); + REMOVE_HANDLER (sound->player, audio_removed, sound); + g_main_context_unref (sound->context); + g_free (sound); +} + + diff --git a/graphics/swfdec/pkg-descr b/graphics/swfdec/pkg-descr new file mode 100644 index 000000000..7e094c545 --- /dev/null +++ b/graphics/swfdec/pkg-descr @@ -0,0 +1,6 @@ +Swfdec is a library for rendering Flash animations and games. It was +originally designed as a basis library for creating Flash plugins for +GStreamer, but it is a fully standalone library which only use the +libart library for drawing. + +WWW: http://www.schleef.org/swfdec/ diff --git a/graphics/swfdec/pkg-plist b/graphics/swfdec/pkg-plist new file mode 100644 index 000000000..139848184 --- /dev/null +++ b/graphics/swfdec/pkg-plist @@ -0,0 +1,88 @@ +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec-gtk.h +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec_gtk_keys.h +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec_gtk_loader.h +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec_gtk_player.h +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec_gtk_socket.h +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec_gtk_system.h +include/swfdec-%%VERSION%%/swfdec-gtk/swfdec_gtk_widget.h +include/swfdec-%%VERSION%%/swfdec/swfdec.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_array.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_context.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_debugger.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_frame.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_function.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_native_function.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_object.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_relay.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_string_value.h +include/swfdec-%%VERSION%%/swfdec/swfdec_as_types.h +include/swfdec-%%VERSION%%/swfdec/swfdec_audio.h +include/swfdec-%%VERSION%%/swfdec/swfdec_buffer.h +include/swfdec-%%VERSION%%/swfdec/swfdec_enums.h +include/swfdec-%%VERSION%%/swfdec/swfdec_file_loader.h +include/swfdec-%%VERSION%%/swfdec/swfdec_gc_object.h +include/swfdec-%%VERSION%%/swfdec/swfdec_keys.h +include/swfdec-%%VERSION%%/swfdec/swfdec_loader.h +include/swfdec-%%VERSION%%/swfdec/swfdec_player.h +include/swfdec-%%VERSION%%/swfdec/swfdec_player_scripting.h +include/swfdec-%%VERSION%%/swfdec/swfdec_rectangle.h +include/swfdec-%%VERSION%%/swfdec/swfdec_renderer.h +include/swfdec-%%VERSION%%/swfdec/swfdec_script.h +include/swfdec-%%VERSION%%/swfdec/swfdec_socket.h +include/swfdec-%%VERSION%%/swfdec/swfdec_stream.h +include/swfdec-%%VERSION%%/swfdec/swfdec_system.h +include/swfdec-%%VERSION%%/swfdec/swfdec_url.h +include/swfdec-%%VERSION%%/swfdec/swfdec_version.h +lib/libswfdec-%%VERSION%%.a +lib/libswfdec-%%VERSION%%.la +lib/libswfdec-%%VERSION%%.so +lib/libswfdec-%%VERSION%%.so.2 +lib/libswfdec-gtk-%%VERSION%%.a +lib/libswfdec-gtk-%%VERSION%%.la +lib/libswfdec-gtk-%%VERSION%%.so +lib/libswfdec-gtk-%%VERSION%%.so.2 +libdata/pkgconfig/swfdec-%%VERSION%%.pc +libdata/pkgconfig/swfdec-gtk-%%VERSION%%.pc +share/gtk-doc/html/swfdec/SwfdecAsContext.html +share/gtk-doc/html/swfdec/SwfdecAsDebugger.html +share/gtk-doc/html/swfdec/SwfdecAsFunction.html +share/gtk-doc/html/swfdec/SwfdecAsRelay.html +share/gtk-doc/html/swfdec/SwfdecAudio.html +share/gtk-doc/html/swfdec/SwfdecGtkPlayer.html +share/gtk-doc/html/swfdec/SwfdecGtkWidget.html +share/gtk-doc/html/swfdec/SwfdecLoader.html +share/gtk-doc/html/swfdec/SwfdecPlayer.html +share/gtk-doc/html/swfdec/SwfdecPlayerScripting.html +share/gtk-doc/html/swfdec/SwfdecRenderer.html +share/gtk-doc/html/swfdec/SwfdecSocket.html +share/gtk-doc/html/swfdec/SwfdecStream.html +share/gtk-doc/html/swfdec/SwfdecSystem.html +share/gtk-doc/html/swfdec/ch01.html +share/gtk-doc/html/swfdec/ch02.html +share/gtk-doc/html/swfdec/ch03.html +share/gtk-doc/html/swfdec/ch04.html +share/gtk-doc/html/swfdec/home.png +share/gtk-doc/html/swfdec/index.html +share/gtk-doc/html/swfdec/index.sgml +share/gtk-doc/html/swfdec/ix01.html +share/gtk-doc/html/swfdec/left.png +share/gtk-doc/html/swfdec/right.png +share/gtk-doc/html/swfdec/style.css +share/gtk-doc/html/swfdec/swfdec-Arrays.html +share/gtk-doc/html/swfdec/swfdec-Enumerations-and-Types.html +share/gtk-doc/html/swfdec/swfdec-Gtk-extension-objects.html +share/gtk-doc/html/swfdec/swfdec-Internals.html +share/gtk-doc/html/swfdec/swfdec-SwfdecAsFrame.html +share/gtk-doc/html/swfdec/swfdec-SwfdecAsObject.html +share/gtk-doc/html/swfdec/swfdec-SwfdecAsValue.html +share/gtk-doc/html/swfdec/swfdec-SwfdecBuffer.html +share/gtk-doc/html/swfdec/swfdec-SwfdecRectangle.html +share/gtk-doc/html/swfdec/swfdec-SwfdecURL.html +share/gtk-doc/html/swfdec/swfdec-Version-Information.html +share/gtk-doc/html/swfdec/swfdec.devhelp +share/gtk-doc/html/swfdec/swfdec.devhelp2 +share/gtk-doc/html/swfdec/up.png +@dirrm share/gtk-doc/html/swfdec +@dirrm include/swfdec-%%VERSION%%/swfdec-gtk +@dirrm include/swfdec-%%VERSION%%/swfdec +@dirrm include/swfdec-%%VERSION%% diff --git a/www/swfdec-plugin/Makefile b/www/swfdec-plugin/Makefile new file mode 100644 index 000000000..072545cfe --- /dev/null +++ b/www/swfdec-plugin/Makefile @@ -0,0 +1,31 @@ +# Ports collection makefile for: swfdec-plugin +# Date created: Jun 14, 2005 +# Whom: anholt +# +# $FreeBSD$ +# + +PORTNAME= swfdec-plugin +PORTVERSION= 0.9.2 +CATEGORIES= www +MASTER_SITES= http://swfdec.freedesktop.org/download/swfdec-mozilla/${PORTVERSION:R}/ +DISTNAME= swfdec-mozilla-${PORTVERSION} + +MAINTAINER= kwm@FreeBSD.org +COMMENT= Flash rendering plugin + +LIB_DEPENDS= swfdec-0.9:${PORTSDIR}/graphics/swfdec + +USE_AUTOTOOLS= libtool:15 +INSTALLS_ICONS= yes +USE_GNOME= gtk20 +CONFIGURE_ARGS= --with-plugin-dir="${WEBPLUGINS_DIR}" + +USE_LDCONFIG= yes + +USE_WEBPLUGINS= gecko* +WEBPLUGINS_FILES=libswfdecmozilla.so + +.include <bsd.port.pre.mk> +.include "${PORTSDIR}/www/firefox/Makefile.webplugins" +.include <bsd.port.post.mk> diff --git a/www/swfdec-plugin/distinfo b/www/swfdec-plugin/distinfo new file mode 100644 index 000000000..b185f126e --- /dev/null +++ b/www/swfdec-plugin/distinfo @@ -0,0 +1,3 @@ +MD5 (swfdec-mozilla-0.9.2.tar.gz) = 5e19c365d02f1ece2e7caec13c2b23d4 +SHA256 (swfdec-mozilla-0.9.2.tar.gz) = 8c8cfb52b47efabefab90577fb118ab2699c803cebbc82891700f8e2d712343b +SIZE (swfdec-mozilla-0.9.2.tar.gz) = 381189 diff --git a/www/swfdec-plugin/pkg-descr b/www/swfdec-plugin/pkg-descr new file mode 100644 index 000000000..c217ddea0 --- /dev/null +++ b/www/swfdec-plugin/pkg-descr @@ -0,0 +1,8 @@ +swfdec-plugin is a Mozilla plugin for rendering flash (.swf) animations using +the gstreamer framework and the swfdec library. It should currently play Flash +4 files, and Flash 5 support is under development. + +WWW: http://www.schleef.org/swfdec/ + +- Eric Anholt +anholt@FreeBSD.org diff --git a/www/swfdec-plugin/pkg-plist b/www/swfdec-plugin/pkg-plist new file mode 100644 index 000000000..02ca9225c --- /dev/null +++ b/www/swfdec-plugin/pkg-plist @@ -0,0 +1,10 @@ +%%WEBPLUGINS_DIR%%/libswfdecmozilla.a +%%WEBPLUGINS_DIR%%/libswfdecmozilla.la +%%WEBPLUGINS_DIR%%/libswfdecmozilla.so +share/icons/hicolor/16x16/apps/swfdec-mozilla.png +share/icons/hicolor/22x22/apps/swfdec-mozilla.png +share/icons/hicolor/24x24/apps/swfdec-mozilla.png +share/icons/hicolor/32x32/apps/swfdec-mozilla.png +share/icons/hicolor/48x48/apps/swfdec-mozilla.png +share/icons/hicolor/scalable/apps/swfdec-mozilla.svg +@dirrmtry %%WEBPLUGINS_DIR%% |