mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-17 23:34:07 +00:00
added pxa270 optimized mplayer
This commit is contained in:
parent
3b8ec8e63c
commit
17ebb975a4
3 changed files with 447 additions and 0 deletions
51
aur/mplayer-z2/PKGBUILD
Normal file
51
aur/mplayer-z2/PKGBUILD
Normal file
|
@ -0,0 +1,51 @@
|
|||
# $Id: PKGBUILD 117246 2011-03-30 14:23:30Z ibiru $
|
||||
# Maintainer: Kai Uwe Jesussek <kajot@gmx.net>
|
||||
# Contributor: Ionut Biru <ibiru@archlinux.org>
|
||||
# Contributor: Hugo Doria <hugo@archlinux.org>
|
||||
|
||||
pkgname=mplayer-z2
|
||||
pkgver=1.0rc4
|
||||
pkgrel=1
|
||||
pkgdesc="A movie player for linux"
|
||||
arch=('i686' 'x86_64' 'arm')
|
||||
depends=('libmad' 'cdparanoia' 'libxinerama' 'sdl' 'lame' 'libtheora' 'xvidcore' 'libmng' 'libxss'
|
||||
'smbclient' 'aalib' 'libcaca' 'x264' 'faac' 'ttf-dejavu' 'libxvmc' 'enca' 'mpg123-arm'
|
||||
'opencore-amr' 'libdca' 'a52dec')
|
||||
license=('GPL')
|
||||
url="http://www.mplayerhq.hu/"
|
||||
makedepends=('unzip' 'yasm')
|
||||
backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf')
|
||||
source=('mplayer-1.0rc4-pxa-wejp.patch' 'mplayer.conf' 'http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc4.tar.bz2' )
|
||||
conflicts=('mplayer')
|
||||
provides=('mplayer')
|
||||
md5sums=('480d11daa4962629e6fb26bd61993a0f'
|
||||
'6e960e87b4aee28889f0ea5c65f711fb'
|
||||
'1699c94de39da9c4c5d34e8f58e418f0')
|
||||
|
||||
build() {
|
||||
# Custom CFLAGS break the mplayer build
|
||||
unset CFLAGS LDFLAGS
|
||||
|
||||
cd ${srcdir}/MPlayer-1.0rc4
|
||||
#patch -p1 < ${srcdir}/mplayer-1.0rc4-pxa-wejp.patch
|
||||
#./configure --enable-armv5te --enable-iwmmxt --enable-pxa \
|
||||
#--enable-faad-fixed --enable-tremor-low \
|
||||
#--disable-mp3lib --disable-libvorbis --disable-vidix \
|
||||
#--extra-cflags="-march=iwmmxt" \
|
||||
#--disable-runtime-cpudetection --disable-sighandler \
|
||||
#--disable-live --enable-alsa --enable-mpg123 \
|
||||
#--extra-ldflags="-lmpg123" \
|
||||
##--confdir=/etc/mplayer
|
||||
|
||||
[ "$CARCH" = "i686" ] && sed 's|-march=i486|-march=i686|g' -i config.mak
|
||||
|
||||
#make
|
||||
make -j1 DESTDIR=${pkgdir} install
|
||||
install -Dm644 etc/{codecs.conf,input.conf,example.conf} ${pkgdir}/etc/mplayer/
|
||||
mkdir -p ${pkgdir}/etc/mplayer/
|
||||
cp ${srcdir}/mplayer.conf ${pkgdir}/etc/mplayer/
|
||||
install -dm755 ${pkgdir}/usr/share/mplayer/
|
||||
ln -s /usr/share/fonts/TTF/DejaVuSans.ttf ${pkgdir}/usr/share/mplayer/subfont.ttf
|
||||
rm -rf ${pkgdir}/usr/share/mplayer/font
|
||||
}
|
||||
|
393
aur/mplayer-z2/mplayer-1.0rc4-pxa-wejp.patch
Normal file
393
aur/mplayer-z2/mplayer-1.0rc4-pxa-wejp.patch
Normal file
|
@ -0,0 +1,393 @@
|
|||
diff -ruN MPlayer-1.0rc4/configure MPlayer-1.0rc4-pxa/configure
|
||||
--- MPlayer-1.0rc4/configure 2010-07-29 02:31:57.000000000 +0200
|
||||
+++ MPlayer-1.0rc4-pxa/configure 2011-02-27 14:12:12.000000000 +0100
|
||||
@@ -630,6 +630,7 @@
|
||||
_svga=auto
|
||||
_vesa=auto
|
||||
_fbdev=auto
|
||||
+_pxa=no
|
||||
_dvb=auto
|
||||
_dxr2=auto
|
||||
_dxr3=auto
|
||||
@@ -997,6 +998,8 @@
|
||||
--enable-fbdev) _fbdev=yes ;;
|
||||
--disable-fbdev) _fbdev=no ;;
|
||||
--enable-dvb) _dvb=yes ;;
|
||||
+ --enable-pxa) _pxa=yes ;;
|
||||
+ --disable-pxa) _pxa=no ;;
|
||||
--disable-dvb) _dvb=no ;;
|
||||
--enable-dxr2) _dxr2=yes ;;
|
||||
--disable-dxr2) _dxr2=no ;;
|
||||
@@ -4875,7 +4878,15 @@
|
||||
fi
|
||||
echores "$_fbdev"
|
||||
|
||||
-
|
||||
+echocheck "PXA27x Overlay Support"
|
||||
+if test "$_pxa" = yes ; then
|
||||
+ def_pxa='#define CONFIG_PXA 1'
|
||||
+ vomodules="pxa $vomodules"
|
||||
+else
|
||||
+ def_pxa='#undef CONFIG_PXA'
|
||||
+ novomodules="pxa $novomodules"
|
||||
+fi
|
||||
+echores "$_pxa"
|
||||
|
||||
echocheck "DVB"
|
||||
if test "$_dvb" = auto ; then
|
||||
@@ -8644,6 +8655,7 @@
|
||||
PRIORITY = $_priority
|
||||
PULSE = $_pulse
|
||||
PVR = $_pvr
|
||||
+PXA = $_pxa
|
||||
QTX_CODECS = $_qtx
|
||||
QTX_CODECS_WIN32 = $_qtx_codecs_win32
|
||||
QTX_EMULATION = $_qtx_emulation
|
||||
@@ -9121,6 +9133,7 @@
|
||||
$def_dxr2
|
||||
$def_dxr3
|
||||
$def_fbdev
|
||||
+$def_pxa
|
||||
$def_ggi
|
||||
$def_ggiwmh
|
||||
$def_gif
|
||||
diff -ruN MPlayer-1.0rc4/libvo/video_out.c MPlayer-1.0rc4-pxa/libvo/video_out.c
|
||||
--- MPlayer-1.0rc4/libvo/video_out.c 2010-06-13 14:04:13.000000000 +0200
|
||||
+++ MPlayer-1.0rc4-pxa/libvo/video_out.c 2011-02-27 03:24:10.000000000 +0100
|
||||
@@ -114,6 +114,7 @@
|
||||
extern vo_functions_t video_out_fbdev;
|
||||
extern const vo_functions_t video_out_fbdev2;
|
||||
extern vo_functions_t video_out_svga;
|
||||
+extern const vo_functions_t video_out_pxa;
|
||||
extern const vo_functions_t video_out_png;
|
||||
extern const vo_functions_t video_out_ggi;
|
||||
extern const vo_functions_t video_out_aa;
|
||||
@@ -214,6 +215,9 @@
|
||||
&video_out_fbdev,
|
||||
&video_out_fbdev2,
|
||||
#endif
|
||||
+#ifdef CONFIG_PXA
|
||||
+ &video_out_pxa,
|
||||
+#endif
|
||||
#ifdef CONFIG_SVGALIB
|
||||
&video_out_svga,
|
||||
#endif
|
||||
diff -ruN MPlayer-1.0rc4/libvo/vo_pxa.c MPlayer-1.0rc4-pxa/libvo/vo_pxa.c
|
||||
--- MPlayer-1.0rc4/libvo/vo_pxa.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ MPlayer-1.0rc4-pxa/libvo/vo_pxa.c 2011-02-26 22:18:06.000000000 +0100
|
||||
@@ -0,0 +1,304 @@
|
||||
+/*
|
||||
+ * Video driver for PXA27x/3xx Overlay 2
|
||||
+ * by Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
+ * (C) 2007
|
||||
+ */
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <errno.h>
|
||||
+#include <fcntl.h>
|
||||
+
|
||||
+#include <linux/fb.h>
|
||||
+
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/mman.h>
|
||||
+
|
||||
+#include "config.h"
|
||||
+#include "video_out.h"
|
||||
+#include "video_out_internal.h"
|
||||
+#include "sub.h"
|
||||
+#include "aspect.h"
|
||||
+#include "mp_msg.h"
|
||||
+#include "subopt-helper.h"
|
||||
+
|
||||
+static vo_info_t info = {
|
||||
+ "PXA27x/3xx overlay",
|
||||
+ "pxa",
|
||||
+ "Vasily Khoruzhick <anarsoul@gmail.com>",
|
||||
+ ""
|
||||
+};
|
||||
+
|
||||
+LIBVO_EXTERN(pxa);
|
||||
+
|
||||
+/* VO driver state */
|
||||
+
|
||||
+static int overlay_width, overlay_height, overlay_x, overlay_y;
|
||||
+static int overlay_fd = -1;
|
||||
+static void *overlay_mem;
|
||||
+static size_t overlay_mem_size;
|
||||
+static uint8_t *y_plane;
|
||||
+static uint8_t *u_plane;
|
||||
+static uint8_t *v_plane;
|
||||
+
|
||||
+static int vo_pxa_check_format(uint32_t format)
|
||||
+{
|
||||
+ switch (format)
|
||||
+ {
|
||||
+ /* Planar YUV Formats */
|
||||
+ case IMGFMT_YV12:
|
||||
+ case IMGFMT_IYUV:
|
||||
+ case IMGFMT_I420:
|
||||
+ return( VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW
|
||||
+ | VFCAP_ACCEPT_STRIDE );
|
||||
+ break;
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: format %s is not supported\n",
|
||||
+ vo_format_name(format));
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*****************************************************************************
|
||||
+ * preinit
|
||||
+ *
|
||||
+ * Preinitializes driver
|
||||
+ * arg - currently it's vo_subdevice
|
||||
+ * returns: zero on successful initialization, non-zero on error.
|
||||
+ *
|
||||
+ ****************************************************************************/
|
||||
+static int preinit(const char *vo_subdevice)
|
||||
+{
|
||||
+ int r, fb = -1;
|
||||
+ struct fb_var_screeninfo fbvar;
|
||||
+
|
||||
+ fb = open("/dev/fb0", O_RDWR);
|
||||
+ r = ioctl(fb, FBIOGET_VSCREENINFO, &fbvar);
|
||||
+ if (r) {
|
||||
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: get_vscreeninfo ioctl failed");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ overlay_width = fbvar.xres;
|
||||
+ overlay_height = fbvar.yres;
|
||||
+
|
||||
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: main plane res is %dx%d\n",
|
||||
+ overlay_width, overlay_height);
|
||||
+
|
||||
+ close(fb);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*****************************************************************************
|
||||
+ * config
|
||||
+ *
|
||||
+ * Config the display driver.
|
||||
+ * params:
|
||||
+ * src_width,srcheight: image source size
|
||||
+ * dst_width,dst_height: size of the requested window size, just a hint
|
||||
+ * fullscreen: flag, 0=windowd 1=fullscreen, just a hint
|
||||
+ * title: window title, if available
|
||||
+ * format: fourcc of pixel format
|
||||
+ * returns : zero on successful initialization, non-zero on error.
|
||||
+ *
|
||||
+ ****************************************************************************/
|
||||
+static int config(uint32_t src_width, uint32_t src_height,
|
||||
+ uint32_t dst_width, uint32_t dst_height, uint32_t flags,
|
||||
+ char *title, uint32_t format)
|
||||
+{
|
||||
+ int r;
|
||||
+ struct fb_var_screeninfo fbvar;
|
||||
+ struct fb_fix_screeninfo fbfix;
|
||||
+ int i;
|
||||
+
|
||||
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: config() src_width:%d, src_height:%d, dst_width:%d, dst_height:%d\n",
|
||||
+ src_width, src_height, dst_width, dst_height);
|
||||
+
|
||||
+ /* Check format */
|
||||
+ if (!vo_pxa_check_format(format))
|
||||
+ goto error;
|
||||
+
|
||||
+ /* Check src image */
|
||||
+ if (src_width > overlay_width || src_height > overlay_height) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: src image is too big, scaling not supported.\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (dst_width > overlay_width || dst_height > overlay_height) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: dst is too big, scaling not supported.\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (src_width != dst_width || src_height != dst_height) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: src != dst, scaling not supported.\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ overlay_x = (overlay_width - dst_width) / 2;
|
||||
+ overlay_y = (overlay_height - dst_height) / 2;
|
||||
+
|
||||
+ overlay_fd = open("/dev/fb2", O_RDWR);
|
||||
+ r = ioctl(overlay_fd, FBIOGET_VSCREENINFO, &fbvar);
|
||||
+ if (r) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: get_vscreeninfo ioctl failed\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ fbvar.xres_virtual = fbvar.xres = overlay_width;
|
||||
+ fbvar.yres_virtual = fbvar.yres = overlay_height;
|
||||
+ fbvar.bits_per_pixel = 16;
|
||||
+ fbvar.activate = FB_ACTIVATE_NOW;
|
||||
+
|
||||
+ fbvar.nonstd = (4 << 20) | (0 << 10) | (0); /* YUV420P, X=0, Y=0 */
|
||||
+
|
||||
+ r = ioctl(overlay_fd, FBIOPUT_VSCREENINFO, &fbvar);
|
||||
+ if (r) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: put_vscreeninfo ioctl failed\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+ r = ioctl(overlay_fd, FBIOGET_FSCREENINFO, &fbfix);
|
||||
+ if (r) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: get_fscreeninfo ioctl failed\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ overlay_mem_size = fbfix.smem_len;
|
||||
+ overlay_mem = mmap(NULL, overlay_mem_size, (PROT_READ | PROT_WRITE),
|
||||
+ MAP_SHARED, overlay_fd, 0);
|
||||
+
|
||||
+ if (overlay_mem == MAP_FAILED) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: failed to mmap overlay");
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ y_plane = overlay_mem;
|
||||
+ u_plane = y_plane + overlay_width * overlay_height;
|
||||
+ v_plane = u_plane + overlay_width * overlay_height / 4;
|
||||
+
|
||||
+ /* Fill the overlay with black */
|
||||
+ memset(y_plane, 16,
|
||||
+ overlay_width * overlay_height);
|
||||
+ memset(u_plane, 128,
|
||||
+ overlay_width * overlay_height / 4);
|
||||
+ memset(v_plane, 128,
|
||||
+ overlay_width * overlay_height / 4);
|
||||
+
|
||||
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: configured and opened 2nd overlay");
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+error:
|
||||
+ if (overlay_mem)
|
||||
+ munmap(overlay_mem, overlay_mem_size);
|
||||
+ if (overlay_fd != -1)
|
||||
+ close(overlay_fd);
|
||||
+
|
||||
+ overlay_mem = NULL;
|
||||
+ overlay_fd = -1;
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+static int control(uint32_t request, void *data, ...)
|
||||
+{
|
||||
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: control %08x\n", request );
|
||||
+
|
||||
+ switch( request )
|
||||
+ {
|
||||
+ case VOCTRL_QUERY_FORMAT:
|
||||
+ return( vo_pxa_check_format( *(uint32_t *)data ) );
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return VO_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+int draw_frame(uint8_t *src[])
|
||||
+{
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/*****************************************************************************
|
||||
+ *
|
||||
+ * draw_slice
|
||||
+ *
|
||||
+ * Draw a planar YUV slice to the buffer:
|
||||
+ * params:
|
||||
+ * src[3] = source image planes (Y,U,V)
|
||||
+ * stride[3] = source image planes line widths (in bytes)
|
||||
+ * w,h = width*height of area to be copied (in Y pixels)
|
||||
+ * x,y = position at the destination image (in Y pixels)
|
||||
+ *
|
||||
+ ****************************************************************************/
|
||||
+int draw_slice(uint8_t *src[], int stride[], int w,int h, int x,int y)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ x += overlay_x;
|
||||
+ y += overlay_y;
|
||||
+
|
||||
+ uint8_t *dst_y = y_plane + y * overlay_width + x;
|
||||
+ uint8_t *dst_u = u_plane + y * overlay_width / 4 + x / 2;
|
||||
+ uint8_t *dst_v = v_plane + y * overlay_width / 4 + x / 2;
|
||||
+ uint8_t *src_y = src[0];
|
||||
+ uint8_t *src_u = src[1];
|
||||
+ uint8_t *src_v = src[2];
|
||||
+
|
||||
+ mp_msg(MSGT_VO, MSGL_V, "vo_pxa: draw_slice() w %d h %d x %d y %d stride %d %d %d\n",
|
||||
+ w, h, x, y, stride[0], stride[1], stride[2] );
|
||||
+
|
||||
+ if (w + x > overlay_width || h + y > overlay_height) {
|
||||
+ mp_msg(MSGT_VO, MSGL_ERR, "vo_pxa: too big image\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < h; i++) {
|
||||
+ fast_memcpy(dst_y, src_y, w);
|
||||
+ src_y += stride[0];
|
||||
+ dst_y += overlay_width;
|
||||
+ }
|
||||
+ for (i = 0; i < h / 2; i++) {
|
||||
+ fast_memcpy(dst_u, src_u, w / 2);
|
||||
+ fast_memcpy(dst_v, src_v, w / 2);
|
||||
+ src_u += stride[1];
|
||||
+ src_v += stride[2];
|
||||
+ dst_u += overlay_width / 2;
|
||||
+ dst_v += overlay_width / 2;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void draw_osd(void)
|
||||
+{
|
||||
+ /* FIXME */
|
||||
+ /* vo_draw_text(in_width, in_height, draw_alpha); */
|
||||
+}
|
||||
+
|
||||
+static void flip_page(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static void check_events(void)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static void uninit(void)
|
||||
+{
|
||||
+ if (overlay_mem)
|
||||
+ munmap(overlay_mem, overlay_mem_size);
|
||||
+ if (overlay_fd != -1)
|
||||
+ close(overlay_fd);
|
||||
+
|
||||
+ overlay_mem = NULL;
|
||||
+ overlay_fd = -1;
|
||||
+}
|
||||
diff -ruN MPlayer-1.0rc4/Makefile MPlayer-1.0rc4-pxa/Makefile
|
||||
--- MPlayer-1.0rc4/Makefile 2010-07-29 19:08:19.000000000 +0200
|
||||
+++ MPlayer-1.0rc4-pxa/Makefile 2011-02-27 14:14:21.000000000 +0100
|
||||
@@ -541,6 +541,7 @@
|
||||
SRCS_MPLAYER-$(DXR3) += libvo/vo_dxr3.c
|
||||
SRCS_MPLAYER-$(ESD) += libao2/ao_esd.c
|
||||
SRCS_MPLAYER-$(FBDEV) += libvo/vo_fbdev.c libvo/vo_fbdev2.c
|
||||
+SRCS_MPLAYER-$(PXA) += libvo/vo_pxa.c
|
||||
SRCS_MPLAYER-$(GGI) += libvo/vo_ggi.c
|
||||
SRCS_MPLAYER-$(GIF) += libvo/vo_gif89a.c
|
||||
SRCS_MPLAYER-$(GL) += libvo/gl_common.c libvo/vo_gl.c \
|
3
aur/mplayer-z2/mplayer.conf
Normal file
3
aur/mplayer-z2/mplayer.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
ao=alsa
|
||||
vo=pxa
|
||||
vf=rotate=2
|
Loading…
Reference in a new issue