All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oo 0/4] mplayer changes and gconf-native drop
@ 2011-11-30  8:06 Martin Jansa
  2011-11-30  8:06 ` [meta-oo 1/4] mplayer-common: import from OE-classic Martin Jansa
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  8:06 UTC (permalink / raw)
  To: openembedded-devel

The following changes since commit f3ca7acd0b678a9247e432aee34512a26e30f509:

  libsdl-x11: drop from meta-oe (2011-11-30 08:52:38 +0100)

are available in the git repository at:
  git://git.openembedded.org/meta-openembedded-contrib jansa/pull
  http://cgit.openembedded.org/cgit.cgi/meta-openembedded-contrib/log/?h=jansa/pull

Martin Jansa (4):
  mplayer-common: import from OE-classic
  mplayer2: drop armv7a/omapfb optimizations, those can be applied from
    bsp layer if needed
  mplayer2: drop OPTIMIZATIONs for now
  gconf-native: drop from meta-gnome, newer version is in oe-core

 .../recipes-gnome/gconf/gconf-native_2.6.1.bb      |   17 -
 .../recipes-multimedia/mplayer/mplayer-common.bb   |   22 +
 .../mplayer/mplayer-common/mplayer.conf            |   15 +
 .../0001-video-out-for-omapfb-support.patch        |  826 --------------------
 meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb |   28 +-
 5 files changed, 43 insertions(+), 865 deletions(-)
 delete mode 100644 meta-gnome/recipes-gnome/gconf/gconf-native_2.6.1.bb
 create mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
 create mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
 delete mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch

-- 
1.7.8.rc4




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [meta-oo 1/4] mplayer-common: import from OE-classic
  2011-11-30  8:06 [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
@ 2011-11-30  8:06 ` Martin Jansa
  2011-11-30  8:06 ` [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed Martin Jansa
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  8:06 UTC (permalink / raw)
  To: openembedded-devel

From: Martin Jansa <martin.jansa@gmail.com>

* default ao is now alsa instead of oss
* ffmp3float is terribly slow on armv4t without FPU, mad is better
* commit b28081b6039db85f18bf9e722fece59bff6e7b0f

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 .../recipes-multimedia/mplayer/mplayer-common.bb   |   22 ++++++++++++++++++++
 .../mplayer/mplayer-common/mplayer.conf            |   15 +++++++++++++
 2 files changed, 37 insertions(+), 0 deletions(-)
 create mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
 create mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf

diff --git a/meta-oe/recipes-multimedia/mplayer/mplayer-common.bb b/meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
new file mode 100644
index 0000000..889bb95
--- /dev/null
+++ b/meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
@@ -0,0 +1,22 @@
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: MIT (see COPYING.MIT)
+
+DESCRIPTION = "Preconfigured mplayer preferences"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+PV = "0.0.1"
+
+SRC_URI = "file://mplayer.conf"
+
+# Yes, really /usr/etc!!!
+do_install() {
+	install -d "${D}/usr${sysconfdir}/mplayer"
+
+	install -m 0644 ${WORKDIR}/mplayer.conf "${D}/usr${sysconfdir}/mplayer"
+}
+
+FILES_${PN} = "/usr${sysconfdir}/mplayer"
+
+inherit allarch
diff --git a/meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf b/meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
new file mode 100644
index 0000000..37ad65f
--- /dev/null
+++ b/meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
@@ -0,0 +1,15 @@
+
+# You probably shouldn't touch these
+ac=mad,
+ao=alsa,
+
+# Required on SL-Cxxxx for correct rotation in the *VT*,
+# breaks rotation in X!
+# vf=rotate=1
+
+# Enable fullscreen display by default
+# fs=true
+
+# Drop frames to keep audio and video in sync
+framedrop=true
+
-- 
1.7.8.rc4




^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed
  2011-11-30  8:06 [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
  2011-11-30  8:06 ` [meta-oo 1/4] mplayer-common: import from OE-classic Martin Jansa
@ 2011-11-30  8:06 ` Martin Jansa
  2011-11-30  9:24   ` Koen Kooi
  2011-11-30  8:06 ` [meta-oo 3/4] mplayer2: drop OPTIMIZATIONs for now Martin Jansa
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  8:06 UTC (permalink / raw)
  To: openembedded-devel

* not everybody has FEED_ARCH in OVERRIDES
* and not everybody has PKGARCHCOMPAT_ARMV7A enabled so we would need to
  duplicate armv7a and armv7a-vfp-neon
* example of working omapfb patch and optimizations is in
  meta-smartphone layer
  http://git.shr-project.org/git/?p=meta-smartphone.git;a=commit;h=483afbee82869a0b2dacadc4b9580c47dcb59d26

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 .../0001-video-out-for-omapfb-support.patch        |  826 --------------------
 meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb |   21 +-
 2 files changed, 1 insertions(+), 846 deletions(-)
 delete mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch

diff --git a/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch b/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
deleted file mode 100644
index a362ef6..0000000
--- a/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
+++ /dev/null
@@ -1,826 +0,0 @@
-From 2a42cec41a018008d07ea33b2b91dca191d78481 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Thu, 25 Nov 2010 16:49:53 +0100
-Subject: [PATCH] video out for omapfb support
-
-Upstream-Status: Pending
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
----
- Makefile          |    2 +-
- libvo/video_out.c |    2 +
- libvo/vo_omapfb.c |  591 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- libvo/yuv.S       |  170 +++++++++++++++
- 4 files changed, 764 insertions(+), 1 deletions(-)
- create mode 100644 libvo/vo_omapfb.c
- create mode 100644 libvo/yuv.S
-
-diff --git a/Makefile b/Makefile
-index 83304a2..1e88d40 100644
---- a/Makefile
-+++ b/Makefile
-@@ -450,7 +450,7 @@ SRCS_MPLAYER-$(DIRECTFB)     += libvo/vo_directfb2.c libvo/vo_dfbmga.c
- SRCS_MPLAYER-$(DIRECTX)      += libao2/ao_dsound.c libvo/vo_directx.c
- 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-$(FBDEV)        += libvo/vo_fbdev.c libvo/vo_fbdev2.c libvo/vo_omapfb.c libvo/yuv.S
- SRCS_MPLAYER-$(FFMPEG)       += libvo/vo_png.c
- SRCS_MPLAYER-$(GGI)          += libvo/vo_ggi.c
- SRCS_MPLAYER-$(GIF)          += libvo/vo_gif89a.c
-diff --git a/libvo/video_out.c b/libvo/video_out.c
-index e796784..1433834 100644
---- a/libvo/video_out.c
-+++ b/libvo/video_out.c
-@@ -95,6 +95,7 @@ extern struct vo_driver video_out_null;
- extern struct vo_driver video_out_bl;
- extern struct vo_driver video_out_fbdev;
- extern struct vo_driver video_out_fbdev2;
-+extern struct vo_driver video_out_omapfb;
- extern struct vo_driver video_out_svga;
- extern struct vo_driver video_out_png;
- extern struct vo_driver video_out_ggi;
-@@ -193,6 +194,7 @@ const struct vo_driver *video_out_drivers[] =
- #ifdef CONFIG_FBDEV
-         &video_out_fbdev,
-         &video_out_fbdev2,
-+        &video_out_omapfb,
- #endif
- #ifdef CONFIG_SVGALIB
-         &video_out_svga,
-diff --git a/libvo/vo_omapfb.c b/libvo/vo_omapfb.c
-new file mode 100644
-index 0000000..7bd8927
---- /dev/null
-+++ b/libvo/vo_omapfb.c
-@@ -0,0 +1,591 @@
-+/*
-+ 
-+Copyright (C) 2008 Gregoire Gentil <gregoire@gentil.com>
-+Portions Copyright (C) 2009 Howard Chu <hyc@symas.com>
-+This file adds an optimized vo output to mplayer for the OMAP platform. This is a first pass and an attempt to help to improve
-+media playing on the OMAP platform. The usual disclaimer comes here: this code is provided without any warranty.
-+Many bugs and issues still exist. Feed-back is welcome.
-+
-+This output uses the yuv420_to_yuv422 conversion from Mans Rullgard, and is heavily inspired from the work of Siarhei Siamashka.
-+I would like to thank those two persons here, without them this code would certainly not exist.
-+
-+Two options of the output are available:
-+fb_overlay_only (disabled by default): only the overlay is drawn. X11 stuff is ignored.
-+dbl_buffer (disabled by default): add double buffering. Some tearsync flags are probably missing in the code.
-+
-+Syntax is the following:
-+mplayer -ao alsa -vo omapfb /test.avi
-+mplayer -nosound -vo omapfb:fb_overlay_only:dbl_buffer /test.avi
-+
-+You need to have two planes on your system. On beagleboard, it means something like: video=omapfb:vram:2M,vram:4M
-+
-+Known issues:
-+1) A green line or some vertical lines (if mplayer decides to draw bands instead of frame) may appear.
-+It's an interpolation bug in the color conversion that needs to be fixed
-+
-+2) The color conversion accepts only 16-pixel multiple for width and height.
-+
-+3) The scaling down is disabled as the scaling down kernel patch for the OMAP3 platform doesn't seem to work yet.
-+
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program 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 General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-+*/
-+ 
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <fcntl.h>
-+#include <unistd.h>
-+#include <errno.h>
-+
-+#include <sys/mman.h>
-+#include <sys/ioctl.h>
-+#include <linux/fb.h>
-+
-+#include "config.h"
-+#include "video_out.h"
-+#include "video_out_internal.h"
-+#include "fastmemcpy.h"
-+#include "sub/sub.h"
-+#include "mp_msg.h"
-+#include "omapfb.h"
-+#include "x11_common.h"
-+
-+#include "libswscale/swscale.h"
-+#include "libmpcodecs/vf_scale.h"
-+#include "libavcodec/avcodec.h"
-+
-+#include "aspect.h"
-+
-+#include "subopt-helper.h"
-+
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+#include <X11/Xatom.h>
-+#include "wskeys.h"
-+
-+static vo_info_t info = {
-+	"omapfb video driver",
-+	"omapfb",
-+	"",
-+	""
-+};
-+
-+LIBVO_EXTERN(omapfb)
-+
-+static int fb_overlay_only = 0; // if set, we need only framebuffer overlay, but do not need any x11 code
-+static int dbl_buffer = 0;
-+static int fullscreen_flag = 0;
-+static int plane_ready = 0;
-+static uint32_t drwX, drwY;
-+
-+extern void yuv420_to_yuv422(uint8_t *yuv, uint8_t *y, uint8_t *u, uint8_t *v, int w, int h, int yw, int cw, int dw);
-+static struct fb_var_screeninfo sinfo_p0;
-+static struct fb_var_screeninfo sinfo;
-+static struct fb_var_screeninfo sinfo2;
-+static struct fb_fix_screeninfo finfo;
-+static struct omapfb_mem_info minfo;
-+static struct omapfb_plane_info pinfo;
-+static int xoff, yoff;
-+
-+static struct {
-+    unsigned x;
-+    unsigned y;
-+    uint8_t *buf;
-+} fb_pages[2];
-+static int dev_fd = -1;
-+static int fb_page_flip = 0;
-+static int page = 0;
-+static void omapfb_update(int x, int y, int out_w, int out_h, int show);
-+
-+extern void mplayer_put_key( int code );
-+#include "input/keycodes.h"
-+
-+#define TRANSPARENT_COLOR_KEY 0xff0
-+
-+static Display *display = NULL; // pointer to X Display structure.
-+static int screen_num; // number of screen to place the window on.
-+static Window win = 0;
-+static Window parent = 0; // pointer to the newly created window.
-+
-+/* This is used to intercept window closing requests.  */
-+static Atom wm_delete_window;
-+
-+
-+void vo_calc_drwXY(uint32_t *drwX, uint32_t *drwY)
-+{
-+    *drwX = *drwY = 0;
-+    if (vo_fs) {
-+        aspect(&vo_dwidth, &vo_dheight, A_ZOOM);
-+        vo_dwidth  = FFMIN(vo_dwidth, vo_screenwidth);
-+        vo_dheight = FFMIN(vo_dheight, vo_screenheight);
-+        *drwX      = (vo_screenwidth - vo_dwidth) / 2;
-+        *drwY      = (vo_screenheight - vo_dheight) / 2;
-+        mp_msg(MSGT_VO, MSGL_V, "[vo-fs] dx: %d dy: %d dw: %d dh: %d\n",
-+               *drwX, *drwY, vo_dwidth, vo_dheight);
-+    } else if (WinID == 0) {
-+        *drwX = vo_dx;
-+        *drwY = vo_dy;
-+    }
-+}
-+
-+static void getPrimaryPlaneInfo()
-+{
-+    int dev_fd = open("/dev/fb0", O_RDWR);
-+
-+    if (dev_fd == -1) {
-+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error /dev/fb0\n");
-+        return -1;
-+    }
-+
-+    ioctl(dev_fd, FBIOGET_VSCREENINFO, &sinfo_p0);
-+    close(dev_fd);
-+}
-+
-+/**
-+ * Function to get the offset to be used when in windowed mode
-+ * or when using -wid option
-+ */
-+static void x11_get_window_abs_position(Display *display, Window window,
-+                                             int *wx, int *wy, int *ww, int *wh)
-+{
-+    Window root, parent;
-+    Window *child;
-+    unsigned int n_children;
-+    XWindowAttributes attribs;
-+
-+    /* Get window attributes */
-+    XGetWindowAttributes(display, window, &attribs);
-+
-+    /* Get relative position of given window */
-+    *wx = attribs.x;
-+    *wy = attribs.y;
-+    if (ww)
-+        *ww = attribs.width;
-+    if (wh)
-+        *wh = attribs.height;
-+
-+    /* Query window tree information */
-+    XQueryTree(display, window, &root, &parent, &child, &n_children);
-+    if (parent)
-+    {
-+      int x, y;
-+      /* If we have a parent we must go there and discover his position*/
-+      x11_get_window_abs_position(display, parent, &x, &y, NULL, NULL);
-+      *wx += x;
-+      *wy += y;
-+    }
-+
-+    /* If we had children, free it */
-+    if(n_children)
-+        XFree(child);
-+}
-+
-+static void x11_check_events(void)
-+{
-+    int e = vo_x11_check_events(mDisplay);
-+
-+    if (e & VO_EVENT_RESIZE)
-+        vo_calc_drwXY(&drwX, &drwY);
-+
-+    if (e & VO_EVENT_EXPOSE || e & VO_EVENT_RESIZE)
-+    {
-+        vo_xv_draw_colorkey(drwX, drwY, vo_dwidth - 1, vo_dheight - 1);
-+        omapfb_update(0, 0, 0, 0, 1);
-+    }
-+}
-+
-+static void x11_uninit()
-+{
-+    if (display) {
-+        XCloseDisplay(display);
-+        display = NULL;
-+    }
-+}
-+
-+/**
-+ * Initialize framebuffer
-+ */
-+static int preinit(const char *arg)
-+{
-+    opt_t subopts[] = {
-+        {"fb_overlay_only", OPT_ARG_BOOL, &fb_overlay_only, NULL},
-+        {"dbl_buffer", OPT_ARG_BOOL, &dbl_buffer, NULL},
-+        {NULL}
-+    };
-+
-+    if (subopt_parse(arg, subopts) != 0) {
-+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] unknown suboptions: %s\n", arg);
-+        return -1;
-+    }
-+
-+    getPrimaryPlaneInfo();
-+    dev_fd = open("/dev/fb1", O_RDWR);
-+
-+    if (dev_fd == -1) {
-+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error /dev/fb1\n");
-+        return -1;
-+    }
-+
-+    ioctl(dev_fd, FBIOGET_VSCREENINFO, &sinfo);
-+    ioctl(dev_fd, OMAPFB_QUERY_PLANE, &pinfo);
-+    ioctl(dev_fd, OMAPFB_QUERY_MEM, &minfo);
-+
-+    if (!fb_overlay_only && !vo_init())
-+    {
-+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Could not open X, overlay only...\n");        
-+        fb_overlay_only = 1;
-+    }
-+
-+    return 0;
-+}
-+
-+static void omapfb_update(int x, int y, int out_w, int out_h, int show)
-+{
-+    int xres, yres;
-+    if (!fb_overlay_only)
-+        x11_get_window_abs_position(mDisplay, vo_window, &x, &y, &out_w, &out_h);
-+
-+    /* Check for new screen rotation */
-+    ioctl(dev_fd, FBIOGET_VSCREENINFO, &sinfo2);
-+    if (sinfo2.rotate != sinfo_p0.rotate)
-+        getPrimaryPlaneInfo();
-+
-+    if ( (!x && !y && !out_w && !out_h) ||
-+        (out_w < sinfo.xres_virtual / 4) || (out_h < sinfo.yres_virtual / 4) ||  /* HW can't scale down by more than 4x */
-+        (out_w > sinfo.xres_virtual * 8) || (out_h > sinfo.yres_virtual * 8) ) { /* HW can't scale up by more than 8x */
-+        pinfo.enabled = 0;
-+        pinfo.pos_x = 0;
-+        pinfo.pos_y = 0;
-+        ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo);
-+        return;
-+    }
-+
-+    xres = sinfo.xres_virtual;
-+    yres = sinfo.yres_virtual;
-+
-+    /* Handle clipping: if the left or top edge of the window goes
-+     * offscreen, clamp the overlay to the left or top edge of the
-+     * screen, and set the difference into the frame offset. Also
-+     * decrease the overlay size by the offset. The offset must
-+     * take window scaling into account as well.
-+     *
-+     * Likewise, if the right or bottom edge of the window goes
-+     * offscreen, clamp the overlay to the right or bottom edge of
-+     * the screen, and decrease the overlay size accordingly. The
-+     * hardware will truncate the output accordingly, so no offset
-+     * is needed. Also take window scaling into account.  -- hyc
-+     */
-+    if (x < 0) {
-+        /* clamp to left edge */
-+        xoff = -x;
-+        if (out_w != sinfo.xres_virtual) {
-+            /* account for scaling */
-+            xoff *= sinfo.xres_virtual;
-+            xoff /= out_w;
-+        }
-+        xres -= xoff;
-+        out_w += x;
-+        x = 0;
-+    } else {
-+        xoff = 0;
-+        if (x + out_w > sinfo_p0.xres) {
-+            /* clamp to right edge */
-+            int diff = sinfo_p0.xres - x;
-+            if (out_w != sinfo.xres_virtual) {
-+                /* account for scaling */
-+                xres = diff * sinfo.xres_virtual;
-+                xres /= out_w;
-+            } else {
-+                xres = diff;
-+            }
-+            out_w = diff;
-+        }
-+    }
-+
-+    if (y < 0) {
-+        /* clamp to top edge - this seldom occurs since the window
-+         * titlebar is usually forced to stay visible
-+         */
-+        yoff = -y;
-+        if (out_h != sinfo.yres_virtual) {
-+            /* account for scaling */
-+            yoff *= sinfo.yres_virtual;
-+            yoff /= out_h;
-+        }
-+        yres -= yoff;
-+        out_h += y;
-+        y = 0;
-+    } else {
-+        yoff = 0;
-+        if (y + out_h > sinfo_p0.yres) {
-+            /* clamp to bottom edge */
-+            int diff = sinfo_p0.yres - y;
-+            if (out_h != sinfo.yres_virtual) {
-+                /* account for scaling */
-+                yres = diff * sinfo.yres_virtual;
-+                yres /= out_h;
-+            } else {
-+                yres = diff;
-+            }
-+            out_h = diff;
-+        }
-+    }
-+
-+    if (xoff & 1)
-+        xoff++;
-+    if (xres & 1)
-+        xres--;
-+
-+    pinfo.enabled = show;
-+    pinfo.pos_x = x;
-+    pinfo.pos_y = y;
-+    pinfo.out_width  = out_w;
-+    pinfo.out_height = out_h;
-+
-+    sinfo.xoffset = fb_pages[page].x + xoff;
-+    sinfo.yoffset = fb_pages[page].y + yoff;
-+    /* If we had to change the overlay dimensions, update it */
-+    if (xres != sinfo2.xres || yres != sinfo2.yres ||
-+        sinfo.xoffset != sinfo2.xoffset ||
-+        sinfo.yoffset != sinfo2.yoffset) {
-+        sinfo.xres = xres;
-+        sinfo.yres = yres;
-+        sinfo.rotate = sinfo2.rotate;
-+        ioctl(dev_fd, FBIOPUT_VSCREENINFO, &sinfo);
-+    }
-+
-+    ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo);
-+}
-+
-+static int config(uint32_t width, uint32_t height, uint32_t d_width,
-+		uint32_t d_height, uint32_t flags, char *title,
-+		uint32_t format)
-+{
-+    uint8_t *fbmem;
-+    int i;
-+    struct omapfb_color_key color_key;
-+
-+    XVisualInfo vinfo;
-+    XSetWindowAttributes xswa;
-+    XWindowAttributes attribs;
-+    unsigned long xswamask;
-+    int depth;
-+
-+    Window root, parent;
-+    Window *child;
-+    unsigned int n_children;
-+
-+    fullscreen_flag = flags & VOFLAG_FULLSCREEN;
-+    if (!fb_overlay_only)
-+    {
-+        if (!title)
-+            title = "MPlayer OMAPFB (X11/FB) render";
-+
-+        XGetWindowAttributes(mDisplay, mRootWin, &attribs);
-+        depth = attribs.depth;
-+        if (depth != 15 && depth != 16 && depth != 24 && depth != 32)
-+            depth = 24;
-+        XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo);
-+
-+        xswa.border_pixel = 0;
-+        xswa.background_pixel = xv_colorkey = TRANSPARENT_COLOR_KEY;
-+
-+        xswamask = CWBackPixel | CWBorderPixel;
-+        xv_ck_info.method = CK_METHOD_BACKGROUND;
-+
-+        vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, vo_dwidth, vo_dheight,
-+                                flags, CopyFromParent, "omapfb", title);
-+        XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa);
-+
-+        /* Need to receive events on the parent window -- so when it is
-+           moved / resized / etc., we know. */
-+        if(WinID > 0)
-+        {
-+            /* Query window tree information */
-+            XQueryTree(mDisplay, vo_window, &root, &parent, &child, &n_children);
-+            if (n_children)
-+                XFree(child);
-+
-+            XUnmapWindow(mDisplay, vo_window);
-+            if (parent)
-+                XSelectInput(mDisplay, parent, StructureNotifyMask);
-+            XMapWindow(mDisplay, vo_window);
-+        }
-+
-+        vo_calc_drwXY(&drwX, &drwY);
-+        vo_xv_draw_colorkey(drwX, drwY, vo_dwidth - 1, vo_dheight - 1);
-+    }
-+
-+    fbmem = mmap(NULL, minfo.size, PROT_READ|PROT_WRITE, MAP_SHARED, dev_fd, 0);
-+    if (fbmem == MAP_FAILED) {
-+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error mmap\n");
-+        return -1;
-+    }
-+
-+    for (i = 0; i < minfo.size / 4; i++)
-+        ((uint32_t*)fbmem)[i] = 0x80008000;
-+
-+    sinfo.xres = width & ~15;
-+    sinfo.yres = height & ~15;
-+    sinfo.xoffset = 0;
-+    sinfo.yoffset = 0;
-+    sinfo.nonstd = OMAPFB_COLOR_YUY422;
-+
-+    fb_pages[0].x = 0;
-+    fb_pages[0].y = 0;
-+    fb_pages[0].buf = fbmem;
-+
-+    if (dbl_buffer && minfo.size >= sinfo.xres * sinfo.yres * 2) {
-+        sinfo.xres_virtual = sinfo.xres;
-+        sinfo.yres_virtual = sinfo.yres * 2;
-+        fb_pages[1].x = 0;
-+        fb_pages[1].y = sinfo.yres;
-+        fb_pages[1].buf = fbmem + sinfo.xres * sinfo.yres * 2;
-+        fb_page_flip = 1;
-+    } else {
-+        sinfo.xres_virtual = sinfo.xres;
-+        sinfo.yres_virtual = sinfo.yres;
-+        fb_page_flip = 0;
-+    }
-+
-+    ioctl(dev_fd, FBIOPUT_VSCREENINFO, &sinfo);
-+    ioctl(dev_fd, FBIOGET_FSCREENINFO, &finfo);
-+
-+    if (WinID <= 0) {
-+        if (fullscreen_flag) {
-+            omapfb_update(0, 0, sinfo_p0.xres, sinfo_p0.yres, 1);
-+        } else {
-+            omapfb_update(sinfo_p0.xres / 2 - sinfo.xres / 2, sinfo_p0.yres / 2 - sinfo.yres / 2, sinfo.xres, sinfo.yres, 1);
-+        }
-+    }
-+
-+    color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD;
-+    color_key.background = 0x0;
-+    color_key.trans_key = TRANSPARENT_COLOR_KEY;
-+    if (fb_overlay_only)
-+        color_key.key_type = OMAPFB_COLOR_KEY_DISABLED;
-+    else
-+        color_key.key_type = OMAPFB_COLOR_KEY_GFX_DST;
-+    ioctl(dev_fd, OMAPFB_SET_COLOR_KEY, &color_key);
-+
-+    plane_ready = 1;
-+    return 0;
-+}
-+
-+static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride)
-+{
-+    vo_draw_alpha_yuy2(w, h, src, srca, stride, fb_pages[page].buf + y0 * finfo.line_length + x0 * 2, finfo.line_length);
-+}
-+
-+static void draw_osd(void)
-+{
-+    vo_draw_text(sinfo.xres, sinfo.yres, draw_alpha);
-+}
-+
-+static int draw_frame(uint8_t *src[])
-+{
-+    return 1;
-+}
-+
-+static int draw_slice(uint8_t *src[], int stride[], int w, int h, int x, int y)
-+{
-+    if (x!=0)
-+        return 0;
-+
-+    if (!plane_ready)
-+        return 0;
-+
-+    ioctl(dev_fd, OMAPFB_SYNC_GFX);
-+
-+    yuv420_to_yuv422(fb_pages[page].buf + y * finfo.line_length, src[0], src[1], src[2], w & ~15, h, stride[0], stride[1], finfo.line_length);
-+    return 0;
-+}
-+
-+static void flip_page(void)
-+{
-+    if (fb_page_flip) {
-+        sinfo.xoffset = fb_pages[page].x + xoff;
-+        sinfo.yoffset = fb_pages[page].y + yoff;
-+        ioctl(dev_fd, FBIOPAN_DISPLAY, &sinfo);
-+        page ^= fb_page_flip;
-+    }
-+}
-+
-+static int query_format(uint32_t format)
-+{
-+    // For simplicity pretend that we can only do YV12, support for
-+    // other formats can be added quite easily if/when needed
-+    if (format != IMGFMT_YV12)
-+        return 0;
-+
-+    return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_ACCEPT_STRIDE;
-+}
-+
-+
-+/**
-+ * Uninitialize framebuffer
-+ */
-+static void uninit()
-+{
-+    pinfo.enabled = 0;
-+    ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo);
-+
-+    if (!fb_overlay_only) {
-+        struct omapfb_color_key color_key;
-+        color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD;
-+        color_key.key_type = OMAPFB_COLOR_KEY_DISABLED;
-+        ioctl(dev_fd, OMAPFB_SET_COLOR_KEY, &color_key);
-+    }
-+
-+    close(dev_fd);
-+
-+    if (!fb_overlay_only)
-+        x11_uninit();
-+}
-+
-+
-+static int control(uint32_t request, void *data, ...)
-+{
-+    switch (request) {
-+        case VOCTRL_QUERY_FORMAT:
-+            return query_format(*((uint32_t*)data));
-+        case VOCTRL_FULLSCREEN: {
-+            if (WinID > 0) return VO_FALSE;
-+            if (fullscreen_flag) {
-+                if (!fb_overlay_only)
-+                    vo_x11_fullscreen();
-+                fullscreen_flag = 0;
-+                omapfb_update(sinfo_p0.xres / 2 - sinfo.xres / 2, sinfo_p0.yres / 2 - sinfo.yres / 2, sinfo.xres, sinfo.yres, 1);
-+            } else {
-+                if (!fb_overlay_only)
-+                    vo_x11_fullscreen();
-+                fullscreen_flag = 1;
-+                omapfb_update(0, 0, sinfo_p0.xres, sinfo_p0.yres, 1);
-+            }
-+            return VO_TRUE;
-+        }
-+        case VOCTRL_UPDATE_SCREENINFO:
-+            update_xinerama_info();
-+            return VO_TRUE;
-+    }
-+    return VO_NOTIMPL;
-+}
-+
-+
-+static void check_events(void)
-+{
-+    if (!fb_overlay_only)
-+        x11_check_events();
-+}
-diff --git a/libvo/yuv.S b/libvo/yuv.S
-new file mode 100644
-index 0000000..1cd2c1d
---- /dev/null
-+++ b/libvo/yuv.S
-@@ -0,0 +1,170 @@
-+/*
-+    Copyright (C) 2008 Mans Rullgard
-+
-+    Permission is hereby granted, free of charge, to any person
-+    obtaining a copy of this software and associated documentation
-+    files (the "Software"), to deal in the Software without
-+    restriction, including without limitation the rights to use, copy,
-+    modify, merge, publish, distribute, sublicense, and/or sell copies
-+    of the Software, and to permit persons to whom the Software is
-+    furnished to do so, subject to the following conditions:
-+
-+    The above copyright notice and this permission notice shall be
-+    included in all copies or substantial portions of the Software.
-+
-+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-+    DEALINGS IN THE SOFTWARE.
-+ */
-+
-+        .macro mov32    rd, val
-+        movw            \rd, #:lower16:\val
-+        movt            \rd, #:upper16:\val
-+        .endm
-+
-+        .fpu neon
-+        .text
-+
-+@ yuv420_to_yuv422(uint8_t *yuv, uint8_t *y, uint8_t *u, uint8_t *v,
-+@                  int w, int h, int yw, int cw, int dw)
-+
-+#define yuv  r0
-+#define y    r1
-+#define u    r2
-+#define v    r3
-+#define w    r4
-+#define h    r5
-+#define yw   r6
-+#define cw   r7
-+#define dw   r8
-+
-+#define tyuv r9
-+#define ty   r10
-+#define tu   r11
-+#define tv   r12
-+#define i    lr
-+
-+        .global yuv420_to_yuv422
-+        .func   yuv420_to_yuv422
-+yuv420_to_yuv422:
-+        push            {r4-r11,lr}
-+        add             r4,  sp,  #36
-+.Ldo_conv:
-+        ldm             r4, {r4-r8}
-+        push            {r4}
-+1:
-+        mov             tu,   u
-+        mov             tv,   v
-+        vld1.64         {d2}, [u,:64], cw               @ u0
-+        vld1.64         {d3}, [v,:64], cw               @ v0
-+        mov             tyuv, yuv
-+        mov             ty,   y
-+        vzip.8          d2,   d3                        @ u0v0
-+        mov             i,    #16
-+2:                      
-+        pld             [y, #64]
-+        vld1.64         {d0, d1},   [y,:128], yw        @ y0
-+        pld             [u, #64]
-+        subs            i,    i,    #4
-+        vld1.64         {d6},       [u,:64],  cw        @ u2
-+        pld             [y, #64]
-+        vld1.64         {d4, d5},   [y,:128], yw        @ y1
-+        pld             [v, #64]
-+        vld1.64         {d7},       [v,:64],  cw        @ v2
-+        pld             [y, #64]
-+        vld1.64         {d16,d17},  [y,:128], yw        @ y2
-+        vzip.8          d6,   d7                        @ u2v2
-+        pld             [u, #64]
-+        vld1.64         {d22},      [u,:64],  cw        @ u4
-+        pld             [v, #64]
-+        vld1.64         {d23},      [v,:64],  cw        @ v4
-+        pld             [y, #64]
-+        vld1.64         {d20,d21},  [y,:128], yw        @ y3
-+        vmov            q9,   q3                        @ u2v2
-+        vzip.8          d22,  d23                       @ u4v4
-+        vrhadd.u8       q3,   q1,   q3                  @ u1v1
-+        vzip.8          q0,   q1                        @ y0u0y0v0
-+        vmov            q12,  q11                       @ u4v4
-+        vzip.8          q2,   q3                        @ y1u1y1v1
-+        vrhadd.u8       q11,  q9,   q11                 @ u3v3
-+        vst1.64         {d0-d3},    [yuv,:128], dw      @ y0u0y0v0
-+        vzip.8          q8,   q9                        @ y2u2y2v2
-+        vst1.64         {d4-d7},    [yuv,:128], dw      @ y1u1y1v1
-+        vzip.8          q10,  q11                       @ y3u3y3v3
-+        vst1.64         {d16-d19},  [yuv,:128], dw      @ y2u2y2v2
-+        vmov            q1,   q12
-+        vst1.64         {d20-d23},  [yuv,:128], dw      @ y3u3y3v3
-+        bgt             2b
-+
-+        subs            w,    w,    #16
-+        add             yuv,  tyuv, #32
-+        add             y,    ty,   #16
-+        add             u,    tu,   #8
-+        add             v,    tv,   #8
-+        bgt             1b
-+
-+        ldr             w,    [sp]
-+        subs            h,    h,    #16
-+        add             yuv,  yuv,  dw, lsl #4
-+        sub             yuv,  yuv,  w,  lsl #1
-+        add             y,    y,    yw, lsl #4
-+        sub             y,    y,    w
-+        add             u,    u,    cw, lsl #3
-+        sub             u,    u,    w,  asr #1
-+        add             v,    v,    cw, lsl #3
-+        sub             v,    v,    w,  asr #1
-+        bgt             1b
-+
-+        pop             {r3-r11,pc}
-+        .endfunc
-+
-+        .func   neon_open
-+neon_open:
-+        push            {r4-r8,lr}
-+        ldrd            r4,  r5,  [r0, #16]
-+        ldrd            r6,  r7,  [r0, #24]
-+        lsl             r8,  r4,  #1
-+        mov32           r0,  conv_params
-+        stm             r0,  {r4-r8}
-+        mov             r0,  #0
-+        pop             {r4-r8,pc}
-+        .endfunc
-+
-+        .func   neon_convert
-+neon_convert:
-+        push            {r4-r11,lr}
-+        ldr             r0,  [r0]
-+        mov32           r4,  conv_params
-+        ldm             r1,  {r1-r3}
-+        b               .Ldo_conv
-+        .endfunc
-+
-+        .func   neon_nop
-+neon_nop:
-+        bx              lr
-+        .endfunc
-+
-+        .section .bss
-+conv_params:
-+        .skip           5*4
-+        .size           conv_params, . - conv_params
-+
-+        .section        .rodata
-+.Lname: .asciz          "neon"
-+ofb_pixconv_neon:
-+        .word           .Lname
-+        .word           0               @ flags
-+        .word           neon_open
-+        .word           neon_convert
-+        .word           neon_nop        @ finish
-+        .word           neon_nop        @ close
-+        .size           ofb_pixconv_neon, . - ofb_pixconv_neon
-+
-+        .section        .ofb_pixconv, "a"
-+ofb_pixconv_neon_p:
-+        .word           ofb_pixconv_neon
--- 
-1.7.2.5
-
diff --git a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
index 10a69a9..c24cc4a 100644
--- a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
+++ b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.mplayerhq.hu/"
 DEPENDS = "libvpx live555 libdvdread libtheora virtual/libsdl ffmpeg xsp zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11 virtual/kernel libass \
 	   ${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad liba52 lame', d)}"
 
-#RDEPENDS_${PN} = "mplayer-common"
+RDEPENDS_${PN} = "mplayer-common"
 PROVIDES = "mplayer"
 RPROVIDES_${PN} = "mplayer"
 RCONFLICTS_${PN} = "mplayer"
@@ -17,10 +17,6 @@ SRC_URI = "git://repo.or.cz/mplayer.git;protocol=git;branch=master \
            file://cross.compile.codec-cfg.patch \
 "
 
-SRC_URI_append_aarmv7a = " \
-	   file://0001-video-out-for-omapfb-support.patch \
-	  "
-
 SRCREV = "e3f5043233336d8b4b0731c6a8b42a8fda5535ac"
 
 ARM_INSTRUCTION_SET = "ARM"
@@ -40,9 +36,6 @@ CONFFILES_${PN} += "/usr/etc/mplayer/input.conf \
 
 inherit autotools pkgconfig
 
-# We want a kernel header for armv7a, but we don't want to make mplayer machine specific for that
-STAGING_KERNEL_DIR = "${STAGING_DIR}/${MACHINE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/kernel"
-
 EXTRA_OECONF = " \
 	--prefix=/usr \
 	--mandir=${mandir} \
@@ -135,21 +128,9 @@ EXTRA_OECONF = " \
 	--extra-libs=' -lXext -lX11 -lBasicUsageEnvironment -lUsageEnvironment -lgroupsock -lliveMedia -lstdc++' \
 "
 
-EXTRA_OECONF_append_armv6 = " --enable-armv6"
-EXTRA_OECONF_append_armv7a = " --enable-armv6 --enable-neon"
-
 FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math"
-FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations  -ftree-vectorize -fomit-frame-pointer -O4 -ffast-math"
 BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
 
-do_configure_prepend_armv7a() {
-	cp ${STAGING_KERNEL_DIR}/arch/arm/plat-omap/include/mach/omapfb.h ${S}/libvo/omapfb.h || true
-	cp ${STAGING_KERNEL_DIR}/include/asm-arm/arch-omap/omapfb.h ${S}/libvo/omapfb.h || true
-	cp ${STAGING_KERNEL_DIR}/include/linux/omapfb.h ${S}/libvo/omapfb.h || true
-	cp ${STAGING_DIR_TARGET}/kernel/include/linux/omapfb.h ${S}/libvo/omapfb.h || true
-	sed -e 's/__user//g' -i ${S}/libvo/omapfb.h || true
-}
-
 CFLAGS_append = " -I${S}/libdvdread4 "
 
 do_configure() {
-- 
1.7.8.rc4




^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [meta-oo 3/4] mplayer2: drop OPTIMIZATIONs for now
  2011-11-30  8:06 [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
  2011-11-30  8:06 ` [meta-oo 1/4] mplayer-common: import from OE-classic Martin Jansa
  2011-11-30  8:06 ` [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed Martin Jansa
@ 2011-11-30  8:06 ` Martin Jansa
  2011-11-30  8:06 ` [meta-oo 4/4] gconf-native: drop from meta-gnome, newer version is in oe-core Martin Jansa
  2011-11-30  8:09 ` [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
  4 siblings, 0 replies; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  8:06 UTC (permalink / raw)
  To: openembedded-devel

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
index c24cc4a..d6656fd 100644
--- a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
+++ b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
@@ -128,8 +128,11 @@ EXTRA_OECONF = " \
 	--extra-libs=' -lXext -lX11 -lBasicUsageEnvironment -lUsageEnvironment -lgroupsock -lliveMedia -lstdc++' \
 "
 
-FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math"
-BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
+# drop FULL_OPTIMIZATION for now, because gcc-4.6 got ICE with -O4 and -ffast-math now like in libvpx
+# http://lists.linuxtogo.org/pipermail/openembedded-devel/2011-November/036001.html
+# but lowering to -O3 is not enough in this case
+# FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O4 -ffast-math"
+# BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
 
 CFLAGS_append = " -I${S}/libdvdread4 "
 
-- 
1.7.8.rc4




^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [meta-oo 4/4] gconf-native: drop from meta-gnome, newer version is in oe-core
  2011-11-30  8:06 [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
                   ` (2 preceding siblings ...)
  2011-11-30  8:06 ` [meta-oo 3/4] mplayer2: drop OPTIMIZATIONs for now Martin Jansa
@ 2011-11-30  8:06 ` Martin Jansa
  2011-11-30  8:09 ` [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
  4 siblings, 0 replies; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  8:06 UTC (permalink / raw)
  To: openembedded-devel

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 .../recipes-gnome/gconf/gconf-native_2.6.1.bb      |   17 -----------------
 1 files changed, 0 insertions(+), 17 deletions(-)
 delete mode 100644 meta-gnome/recipes-gnome/gconf/gconf-native_2.6.1.bb

diff --git a/meta-gnome/recipes-gnome/gconf/gconf-native_2.6.1.bb b/meta-gnome/recipes-gnome/gconf/gconf-native_2.6.1.bb
deleted file mode 100644
index 2ca2dad..0000000
--- a/meta-gnome/recipes-gnome/gconf/gconf-native_2.6.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-NOTE = "This is just a dummy package to get packages stop complaining about gconftool-2 \
-        which they are not using anyway... :D"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
-
-PR = "r1"
-
-inherit native
-
-do_install() {
-        install -d ${D}${bindir}
-        echo "#!/bin/sh" >${D}${bindir}/gconftool-2
-        chmod a+rx ${D}${bindir}/gconftool-2
-}
-
-NATIVE_INSTALL_WORKS = "1"
-- 
1.7.8.rc4




^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [meta-oo 0/4] mplayer changes and gconf-native drop
  2011-11-30  8:06 [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
                   ` (3 preceding siblings ...)
  2011-11-30  8:06 ` [meta-oo 4/4] gconf-native: drop from meta-gnome, newer version is in oe-core Martin Jansa
@ 2011-11-30  8:09 ` Martin Jansa
  4 siblings, 0 replies; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  8:09 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 1619 bytes --]

On Wed, Nov 30, 2011 at 09:06:39AM +0100, Martin Jansa wrote:
> The following changes since commit f3ca7acd0b678a9247e432aee34512a26e30f509:

sorry about typo in prefix, but I belive that it will show in koen's
patchwork :)

> 
>   libsdl-x11: drop from meta-oe (2011-11-30 08:52:38 +0100)
> 
> are available in the git repository at:
>   git://git.openembedded.org/meta-openembedded-contrib jansa/pull
>   http://cgit.openembedded.org/cgit.cgi/meta-openembedded-contrib/log/?h=jansa/pull
> 
> Martin Jansa (4):
>   mplayer-common: import from OE-classic
>   mplayer2: drop armv7a/omapfb optimizations, those can be applied from
>     bsp layer if needed
>   mplayer2: drop OPTIMIZATIONs for now
>   gconf-native: drop from meta-gnome, newer version is in oe-core
> 
>  .../recipes-gnome/gconf/gconf-native_2.6.1.bb      |   17 -
>  .../recipes-multimedia/mplayer/mplayer-common.bb   |   22 +
>  .../mplayer/mplayer-common/mplayer.conf            |   15 +
>  .../0001-video-out-for-omapfb-support.patch        |  826 --------------------
>  meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb |   28 +-
>  5 files changed, 43 insertions(+), 865 deletions(-)
>  delete mode 100644 meta-gnome/recipes-gnome/gconf/gconf-native_2.6.1.bb
>  create mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer-common.bb
>  create mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer-common/mplayer.conf
>  delete mode 100644 meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
> 
> -- 
> 1.7.8.rc4
> 

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed
  2011-11-30  8:06 ` [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed Martin Jansa
@ 2011-11-30  9:24   ` Koen Kooi
  2011-11-30  9:32     ` Martin Jansa
  0 siblings, 1 reply; 8+ messages in thread
From: Koen Kooi @ 2011-11-30  9:24 UTC (permalink / raw)
  To: openembedded-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Op 30-11-11 09:06, Martin Jansa schreef:
> * not everybody has FEED_ARCH in OVERRIDES * and not everybody has
> PKGARCHCOMPAT_ARMV7A enabled so we would need to duplicate armv7a and
> armv7a-vfp-neon

NAK on that. I'm not going to cripple mplayer because some distros lack
FEED_ARCH in overrides.

> * example of working omapfb patch and optimizations is in meta-smartphone
> layer 
> http://git.shr-project.org/git/?p=meta-smartphone.git;a=commit;h=483afbee82869a0b2dacadc4b9580c47dcb59d26

I
> 
do agree that that omapfb patch belongs in a BSP, not in the recipe.

regards,

Koen

> 
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- 
> .../0001-video-out-for-omapfb-support.patch        |  826
> -------------------- meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb |
> 21 +- 2 files changed, 1 insertions(+), 846 deletions(-) delete mode
> 100644
> meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
>
>  diff --git
> a/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
> b/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
>
> 
deleted file mode 100644
> index a362ef6..0000000 ---
> a/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
>
> 
+++ /dev/null
> @@ -1,826 +0,0 @@ -From 2a42cec41a018008d07ea33b2b91dca191d78481 Mon Sep
> 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Thu,
> 25 Nov 2010 16:49:53 +0100 -Subject: [PATCH] video out for omapfb
> support - -Upstream-Status: Pending -Signed-off-by: Martin Jansa
> <Martin.Jansa@gmail.com> -Signed-off-by: Koen Kooi
> <koen@dominion.thruhere.net> ---- - Makefile          |    2 +- -
> libvo/video_out.c |    2 + - libvo/vo_omapfb.c |  591
> +++++++++++++++++++++++++++++++++++++++++++++++++++++ - libvo/yuv.S
> |  170 +++++++++++++++ - 4 files changed, 764 insertions(+), 1
> deletions(-) - create mode 100644 libvo/vo_omapfb.c - create mode 100644
> libvo/yuv.S - -diff --git a/Makefile b/Makefile -index 83304a2..1e88d40
> 100644 ---- a/Makefile -+++ b/Makefile -@@ -450,7 +450,7 @@
> SRCS_MPLAYER-$(DIRECTFB)     += libvo/vo_directfb2.c libvo/vo_dfbmga.c -
> SRCS_MPLAYER-$(DIRECTX)      += libao2/ao_dsound.c libvo/vo_directx.c -
> 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-$(FBDEV)        += libvo/vo_fbdev.c
> libvo/vo_fbdev2.c libvo/vo_omapfb.c libvo/yuv.S - SRCS_MPLAYER-$(FFMPEG)
> += libvo/vo_png.c - SRCS_MPLAYER-$(GGI)          += libvo/vo_ggi.c -
> SRCS_MPLAYER-$(GIF)          += libvo/vo_gif89a.c -diff --git
> a/libvo/video_out.c b/libvo/video_out.c -index e796784..1433834 100644 
> ---- a/libvo/video_out.c -+++ b/libvo/video_out.c -@@ -95,6 +95,7 @@
> extern struct vo_driver video_out_null; - extern struct vo_driver
> video_out_bl; - extern struct vo_driver video_out_fbdev; - extern struct
> vo_driver video_out_fbdev2; -+extern struct vo_driver video_out_omapfb; -
> extern struct vo_driver video_out_svga; - extern struct vo_driver
> video_out_png; - extern struct vo_driver video_out_ggi; -@@ -193,6 +194,7
> @@ const struct vo_driver *video_out_drivers[] = - #ifdef CONFIG_FBDEV -
> &video_out_fbdev, -         &video_out_fbdev2, -+
> &video_out_omapfb, - #endif - #ifdef CONFIG_SVGALIB -
> &video_out_svga, -diff --git a/libvo/vo_omapfb.c b/libvo/vo_omapfb.c -new
> file mode 100644 -index 0000000..7bd8927 ---- /dev/null -+++
> b/libvo/vo_omapfb.c -@@ -0,0 +1,591 @@ -+/* -+ -+Copyright (C) 2008
> Gregoire Gentil <gregoire@gentil.com> -+Portions Copyright (C) 2009
> Howard Chu <hyc@symas.com> -+This file adds an optimized vo output to
> mplayer for the OMAP platform. This is a first pass and an attempt to
> help to improve -+media playing on the OMAP platform. The usual
> disclaimer comes here: this code is provided without any warranty. -+Many
> bugs and issues still exist. Feed-back is welcome. -+ -+This output uses
> the yuv420_to_yuv422 conversion from Mans Rullgard, and is heavily
> inspired from the work of Siarhei Siamashka. -+I would like to thank
> those two persons here, without them this code would certainly not
> exist. -+ -+Two options of the output are available: -+fb_overlay_only
> (disabled by default): only the overlay is drawn. X11 stuff is ignored. 
> -+dbl_buffer (disabled by default): add double buffering. Some tearsync
> flags are probably missing in the code. -+ -+Syntax is the following: 
> -+mplayer -ao alsa -vo omapfb /test.avi -+mplayer -nosound -vo
> omapfb:fb_overlay_only:dbl_buffer /test.avi -+ -+You need to have two
> planes on your system. On beagleboard, it means something like:
> video=omapfb:vram:2M,vram:4M -+ -+Known issues: -+1) A green line or some
> vertical lines (if mplayer decides to draw bands instead of frame) may
> appear. -+It's an interpolation bug in the color conversion that needs to
> be fixed -+ -+2) The color conversion accepts only 16-pixel multiple for
> width and height. -+ -+3) The scaling down is disabled as the scaling
> down kernel patch for the OMAP3 platform doesn't seem to work yet. -+ -+
> * This program is free software; you can redistribute it and/or modify -+
> * it under the terms of the GNU General Public License as published by -+
> * the Free Software Foundation; either version 2 of the License, or -+ *
> (at your option) any later version. -+ * -+ * This program 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 General Public License for more
> details. -+ * -+ * You should have received a copy of the GNU General
> Public License -+ * along with this program; if not, write to the Free
> Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
> 02110-1301 USA -+*/ -+ -+#include <stdio.h> -+#include <stdlib.h> 
> -+#include <string.h> -+#include <fcntl.h> -+#include <unistd.h> 
> -+#include <errno.h> -+ -+#include <sys/mman.h> -+#include <sys/ioctl.h> 
> -+#include <linux/fb.h> -+ -+#include "config.h" -+#include
> "video_out.h" -+#include "video_out_internal.h" -+#include
> "fastmemcpy.h" -+#include "sub/sub.h" -+#include "mp_msg.h" -+#include
> "omapfb.h" -+#include "x11_common.h" -+ -+#include
> "libswscale/swscale.h" -+#include "libmpcodecs/vf_scale.h" -+#include
> "libavcodec/avcodec.h" -+ -+#include "aspect.h" -+ -+#include
> "subopt-helper.h" -+ -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> 
> -+#include <X11/Xatom.h> -+#include "wskeys.h" -+ -+static vo_info_t info
> = { -+	"omapfb video driver", -+	"omapfb", -+	"", -+	"" -+}; -+ 
> -+LIBVO_EXTERN(omapfb) -+ -+static int fb_overlay_only = 0; // if set, we
> need only framebuffer overlay, but do not need any x11 code -+static int
> dbl_buffer = 0; -+static int fullscreen_flag = 0; -+static int
> plane_ready = 0; -+static uint32_t drwX, drwY; -+ -+extern void
> yuv420_to_yuv422(uint8_t *yuv, uint8_t *y, uint8_t *u, uint8_t *v, int w,
> int h, int yw, int cw, int dw); -+static struct fb_var_screeninfo
> sinfo_p0; -+static struct fb_var_screeninfo sinfo; -+static struct
> fb_var_screeninfo sinfo2; -+static struct fb_fix_screeninfo finfo; 
> -+static struct omapfb_mem_info minfo; -+static struct omapfb_plane_info
> pinfo; -+static int xoff, yoff; -+ -+static struct { -+    unsigned x; -+
> unsigned y; -+    uint8_t *buf; -+} fb_pages[2]; -+static int dev_fd =
> -1; -+static int fb_page_flip = 0; -+static int page = 0; -+static void
> omapfb_update(int x, int y, int out_w, int out_h, int show); -+ -+extern
> void mplayer_put_key( int code ); -+#include "input/keycodes.h" -+ 
> -+#define TRANSPARENT_COLOR_KEY 0xff0 -+ -+static Display *display =
> NULL; // pointer to X Display structure. -+static int screen_num; //
> number of screen to place the window on. -+static Window win = 0; 
> -+static Window parent = 0; // pointer to the newly created window. -+ 
> -+/* This is used to intercept window closing requests.  */ -+static Atom
> wm_delete_window; -+ -+ -+void vo_calc_drwXY(uint32_t *drwX, uint32_t
> *drwY) -+{ -+    *drwX = *drwY = 0; -+    if (vo_fs) { -+
> aspect(&vo_dwidth, &vo_dheight, A_ZOOM); -+        vo_dwidth  =
> FFMIN(vo_dwidth, vo_screenwidth); -+        vo_dheight =
> FFMIN(vo_dheight, vo_screenheight); -+        *drwX      =
> (vo_screenwidth - vo_dwidth) / 2; -+        *drwY      = (vo_screenheight
> - vo_dheight) / 2; -+        mp_msg(MSGT_VO, MSGL_V, "[vo-fs] dx: %d dy:
> %d dw: %d dh: %d\n", -+               *drwX, *drwY, vo_dwidth,
> vo_dheight); -+    } else if (WinID == 0) { -+        *drwX = vo_dx; -+
> *drwY = vo_dy; -+    } -+} -+ -+static void getPrimaryPlaneInfo() -+{ -+
> int dev_fd = open("/dev/fb0", O_RDWR); -+ -+    if (dev_fd == -1) { -+
> mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error /dev/fb0\n"); -+
> return -1; -+    } -+ -+    ioctl(dev_fd, FBIOGET_VSCREENINFO,
> &sinfo_p0); -+    close(dev_fd); -+} -+ -+/** -+ * Function to get the
> offset to be used when in windowed mode -+ * or when using -wid option -+
> */ -+static void x11_get_window_abs_position(Display *display, Window
> window, -+                                             int *wx, int *wy,
> int *ww, int *wh) -+{ -+    Window root, parent; -+    Window *child; -+
> unsigned int n_children; -+    XWindowAttributes attribs; -+ -+    /* Get
> window attributes */ -+    XGetWindowAttributes(display, window,
> &attribs); -+ -+    /* Get relative position of given window */ -+    *wx
> = attribs.x; -+    *wy = attribs.y; -+    if (ww) -+        *ww =
> attribs.width; -+    if (wh) -+        *wh = attribs.height; -+ -+    /*
> Query window tree information */ -+    XQueryTree(display, window, &root,
> &parent, &child, &n_children); -+    if (parent) -+    { -+      int x,
> y; -+      /* If we have a parent we must go there and discover his
> position*/ -+      x11_get_window_abs_position(display, parent, &x, &y,
> NULL, NULL); -+      *wx += x; -+      *wy += y; -+    } -+ -+    /* If
> we had children, free it */ -+    if(n_children) -+        XFree(child); 
> -+} -+ -+static void x11_check_events(void) -+{ -+    int e =
> vo_x11_check_events(mDisplay); -+ -+    if (e & VO_EVENT_RESIZE) -+
> vo_calc_drwXY(&drwX, &drwY); -+ -+    if (e & VO_EVENT_EXPOSE || e &
> VO_EVENT_RESIZE) -+    { -+        vo_xv_draw_colorkey(drwX, drwY,
> vo_dwidth - 1, vo_dheight - 1); -+        omapfb_update(0, 0, 0, 0, 1); 
> -+    } -+} -+ -+static void x11_uninit() -+{ -+    if (display) { -+
> XCloseDisplay(display); -+        display = NULL; -+    } -+} -+ -+/** -+
> * Initialize framebuffer -+ */ -+static int preinit(const char *arg) -+{ 
> -+    opt_t subopts[] = { -+        {"fb_overlay_only", OPT_ARG_BOOL,
> &fb_overlay_only, NULL}, -+        {"dbl_buffer", OPT_ARG_BOOL,
> &dbl_buffer, NULL}, -+        {NULL} -+    }; -+ -+    if
> (subopt_parse(arg, subopts) != 0) { -+        mp_msg(MSGT_VO, MSGL_FATAL,
> "[omapfb] unknown suboptions: %s\n", arg); -+        return -1; -+    } 
> -+ -+    getPrimaryPlaneInfo(); -+    dev_fd = open("/dev/fb1", O_RDWR); 
> -+ -+    if (dev_fd == -1) { -+        mp_msg(MSGT_VO, MSGL_FATAL,
> "[omapfb] Error /dev/fb1\n"); -+        return -1; -+    } -+ -+
> ioctl(dev_fd, FBIOGET_VSCREENINFO, &sinfo); -+    ioctl(dev_fd,
> OMAPFB_QUERY_PLANE, &pinfo); -+    ioctl(dev_fd, OMAPFB_QUERY_MEM,
> &minfo); -+ -+    if (!fb_overlay_only && !vo_init()) -+    { -+
> mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Could not open X, overlay
> only...\n"); -+        fb_overlay_only = 1; -+    } -+ -+    return 0; 
> -+} -+ -+static void omapfb_update(int x, int y, int out_w, int out_h,
> int show) -+{ -+    int xres, yres; -+    if (!fb_overlay_only) -+
> x11_get_window_abs_position(mDisplay, vo_window, &x, &y, &out_w,
> &out_h); -+ -+    /* Check for new screen rotation */ -+    ioctl(dev_fd,
> FBIOGET_VSCREENINFO, &sinfo2); -+    if (sinfo2.rotate !=
> sinfo_p0.rotate) -+        getPrimaryPlaneInfo(); -+ -+    if ( (!x && !y
> && !out_w && !out_h) || -+        (out_w < sinfo.xres_virtual / 4) ||
> (out_h < sinfo.yres_virtual / 4) ||  /* HW can't scale down by more than
> 4x */ -+        (out_w > sinfo.xres_virtual * 8) || (out_h >
> sinfo.yres_virtual * 8) ) { /* HW can't scale up by more than 8x */ -+
> pinfo.enabled = 0; -+        pinfo.pos_x = 0; -+        pinfo.pos_y = 0; 
> -+        ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo); -+        return; -+
> } -+ -+    xres = sinfo.xres_virtual; -+    yres = sinfo.yres_virtual; 
> -+ -+    /* Handle clipping: if the left or top edge of the window goes 
> -+     * offscreen, clamp the overlay to the left or top edge of the -+
> * screen, and set the difference into the frame offset. Also -+     *
> decrease the overlay size by the offset. The offset must -+     * take
> window scaling into account as well. -+     * -+     * Likewise, if the
> right or bottom edge of the window goes -+     * offscreen, clamp the
> overlay to the right or bottom edge of -+     * the screen, and decrease
> the overlay size accordingly. The -+     * hardware will truncate the
> output accordingly, so no offset -+     * is needed. Also take window
> scaling into account.  -- hyc -+     */ -+    if (x < 0) { -+        /*
> clamp to left edge */ -+        xoff = -x; -+        if (out_w !=
> sinfo.xres_virtual) { -+            /* account for scaling */ -+
> xoff *= sinfo.xres_virtual; -+            xoff /= out_w; -+        } -+
> xres -= xoff; -+        out_w += x; -+        x = 0; -+    } else { -+
> xoff = 0; -+        if (x + out_w > sinfo_p0.xres) { -+            /*
> clamp to right edge */ -+            int diff = sinfo_p0.xres - x; -+
> if (out_w != sinfo.xres_virtual) { -+                /* account for
> scaling */ -+                xres = diff * sinfo.xres_virtual; -+
> xres /= out_w; -+            } else { -+                xres = diff; -+
> } -+            out_w = diff; -+        } -+    } -+ -+    if (y < 0) { 
> -+        /* clamp to top edge - this seldom occurs since the window -+
> * titlebar is usually forced to stay visible -+         */ -+        yoff
> = -y; -+        if (out_h != sinfo.yres_virtual) { -+            /*
> account for scaling */ -+            yoff *= sinfo.yres_virtual; -+
> yoff /= out_h; -+        } -+        yres -= yoff; -+        out_h += y; 
> -+        y = 0; -+    } else { -+        yoff = 0; -+        if (y +
> out_h > sinfo_p0.yres) { -+            /* clamp to bottom edge */ -+
> int diff = sinfo_p0.yres - y; -+            if (out_h !=
> sinfo.yres_virtual) { -+                /* account for scaling */ -+
> yres = diff * sinfo.yres_virtual; -+                yres /= out_h; -+
> } else { -+                yres = diff; -+            } -+
> out_h = diff; -+        } -+    } -+ -+    if (xoff & 1) -+
> xoff++; -+    if (xres & 1) -+        xres--; -+ -+    pinfo.enabled =
> show; -+    pinfo.pos_x = x; -+    pinfo.pos_y = y; -+    pinfo.out_width
> = out_w; -+    pinfo.out_height = out_h; -+ -+    sinfo.xoffset =
> fb_pages[page].x + xoff; -+    sinfo.yoffset = fb_pages[page].y + yoff; 
> -+    /* If we had to change the overlay dimensions, update it */ -+
> if (xres != sinfo2.xres || yres != sinfo2.yres || -+        sinfo.xoffset
> != sinfo2.xoffset || -+        sinfo.yoffset != sinfo2.yoffset) { -+
> sinfo.xres = xres; -+        sinfo.yres = yres; -+        sinfo.rotate =
> sinfo2.rotate; -+        ioctl(dev_fd, FBIOPUT_VSCREENINFO, &sinfo); -+
> } -+ -+    ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo); -+} -+ -+static int
> config(uint32_t width, uint32_t height, uint32_t d_width, -+		uint32_t
> d_height, uint32_t flags, char *title, -+		uint32_t format) -+{ -+
> uint8_t *fbmem; -+    int i; -+    struct omapfb_color_key color_key; -+ 
> -+    XVisualInfo vinfo; -+    XSetWindowAttributes xswa; -+
> XWindowAttributes attribs; -+    unsigned long xswamask; -+    int
> depth; -+ -+    Window root, parent; -+    Window *child; -+    unsigned
> int n_children; -+ -+    fullscreen_flag = flags & VOFLAG_FULLSCREEN; -+
> if (!fb_overlay_only) -+    { -+        if (!title) -+            title =
> "MPlayer OMAPFB (X11/FB) render"; -+ -+
> XGetWindowAttributes(mDisplay, mRootWin, &attribs); -+        depth =
> attribs.depth; -+        if (depth != 15 && depth != 16 && depth != 24 &&
> depth != 32) -+            depth = 24; -+
> XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo); -+ -+
> xswa.border_pixel = 0; -+        xswa.background_pixel = xv_colorkey =
> TRANSPARENT_COLOR_KEY; -+ -+        xswamask = CWBackPixel |
> CWBorderPixel; -+        xv_ck_info.method = CK_METHOD_BACKGROUND; -+ -+
> vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, vo_dwidth, vo_dheight, -+
> flags, CopyFromParent, "omapfb", title); -+
> XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); -+ -+
> /* Need to receive events on the parent window -- so when it is -+
> moved / resized / etc., we know. */ -+        if(WinID > 0) -+        { 
> -+            /* Query window tree information */ -+
> XQueryTree(mDisplay, vo_window, &root, &parent, &child, &n_children); -+
> if (n_children) -+                XFree(child); -+ -+
> XUnmapWindow(mDisplay, vo_window); -+            if (parent) -+
> XSelectInput(mDisplay, parent, StructureNotifyMask); -+
> XMapWindow(mDisplay, vo_window); -+        } -+ -+
> vo_calc_drwXY(&drwX, &drwY); -+        vo_xv_draw_colorkey(drwX, drwY,
> vo_dwidth - 1, vo_dheight - 1); -+    } -+ -+    fbmem = mmap(NULL,
> minfo.size, PROT_READ|PROT_WRITE, MAP_SHARED, dev_fd, 0); -+    if (fbmem
> == MAP_FAILED) { -+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error
> mmap\n"); -+        return -1; -+    } -+ -+    for (i = 0; i <
> minfo.size / 4; i++) -+        ((uint32_t*)fbmem)[i] = 0x80008000; -+ -+
> sinfo.xres = width & ~15; -+    sinfo.yres = height & ~15; -+
> sinfo.xoffset = 0; -+    sinfo.yoffset = 0; -+    sinfo.nonstd =
> OMAPFB_COLOR_YUY422; -+ -+    fb_pages[0].x = 0; -+    fb_pages[0].y =
> 0; -+    fb_pages[0].buf = fbmem; -+ -+    if (dbl_buffer && minfo.size
> >= sinfo.xres * sinfo.yres * 2) { -+        sinfo.xres_virtual =
> sinfo.xres; -+        sinfo.yres_virtual = sinfo.yres * 2; -+
> fb_pages[1].x = 0; -+        fb_pages[1].y = sinfo.yres; -+
> fb_pages[1].buf = fbmem + sinfo.xres * sinfo.yres * 2; -+
> fb_page_flip = 1; -+    } else { -+        sinfo.xres_virtual =
> sinfo.xres; -+        sinfo.yres_virtual = sinfo.yres; -+
> fb_page_flip = 0; -+    } -+ -+    ioctl(dev_fd, FBIOPUT_VSCREENINFO,
> &sinfo); -+    ioctl(dev_fd, FBIOGET_FSCREENINFO, &finfo); -+ -+    if
> (WinID <= 0) { -+        if (fullscreen_flag) { -+
> omapfb_update(0, 0, sinfo_p0.xres, sinfo_p0.yres, 1); -+        } else { 
> -+            omapfb_update(sinfo_p0.xres / 2 - sinfo.xres / 2,
> sinfo_p0.yres / 2 - sinfo.yres / 2, sinfo.xres, sinfo.yres, 1); -+
> } -+    } -+ -+    color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD; -+
> color_key.background = 0x0; -+    color_key.trans_key =
> TRANSPARENT_COLOR_KEY; -+    if (fb_overlay_only) -+
> color_key.key_type = OMAPFB_COLOR_KEY_DISABLED; -+    else -+
> color_key.key_type = OMAPFB_COLOR_KEY_GFX_DST; -+    ioctl(dev_fd,
> OMAPFB_SET_COLOR_KEY, &color_key); -+ -+    plane_ready = 1; -+    return
> 0; -+} -+ -+static void draw_alpha(int x0, int y0, int w, int h, unsigned
> char *src, unsigned char *srca, int stride) -+{ -+
> vo_draw_alpha_yuy2(w, h, src, srca, stride, fb_pages[page].buf + y0 *
> finfo.line_length + x0 * 2, finfo.line_length); -+} -+ -+static void
> draw_osd(void) -+{ -+    vo_draw_text(sinfo.xres, sinfo.yres,
> draw_alpha); -+} -+ -+static int draw_frame(uint8_t *src[]) -+{ -+
> return 1; -+} -+ -+static int draw_slice(uint8_t *src[], int stride[],
> int w, int h, int x, int y) -+{ -+    if (x!=0) -+        return 0; -+ -+
> if (!plane_ready) -+        return 0; -+ -+    ioctl(dev_fd,
> OMAPFB_SYNC_GFX); -+ -+    yuv420_to_yuv422(fb_pages[page].buf + y *
> finfo.line_length, src[0], src[1], src[2], w & ~15, h, stride[0],
> stride[1], finfo.line_length); -+    return 0; -+} -+ -+static void
> flip_page(void) -+{ -+    if (fb_page_flip) { -+        sinfo.xoffset =
> fb_pages[page].x + xoff; -+        sinfo.yoffset = fb_pages[page].y +
> yoff; -+        ioctl(dev_fd, FBIOPAN_DISPLAY, &sinfo); -+        page ^=
> fb_page_flip; -+    } -+} -+ -+static int query_format(uint32_t format) 
> -+{ -+    // For simplicity pretend that we can only do YV12, support
> for -+    // other formats can be added quite easily if/when needed -+
> if (format != IMGFMT_YV12) -+        return 0; -+ -+    return
> VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD |
> VFCAP_SWSCALE | VFCAP_ACCEPT_STRIDE; -+} -+ -+ -+/** -+ * Uninitialize
> framebuffer -+ */ -+static void uninit() -+{ -+    pinfo.enabled = 0; -+
> ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo); -+ -+    if (!fb_overlay_only)
> { -+        struct omapfb_color_key color_key; -+
> color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD; -+
> color_key.key_type = OMAPFB_COLOR_KEY_DISABLED; -+        ioctl(dev_fd,
> OMAPFB_SET_COLOR_KEY, &color_key); -+    } -+ -+    close(dev_fd); -+ -+
> if (!fb_overlay_only) -+        x11_uninit(); -+} -+ -+ -+static int
> control(uint32_t request, void *data, ...) -+{ -+    switch (request) { 
> -+        case VOCTRL_QUERY_FORMAT: -+            return
> query_format(*((uint32_t*)data)); -+        case VOCTRL_FULLSCREEN: { -+
> if (WinID > 0) return VO_FALSE; -+            if (fullscreen_flag) { -+
> if (!fb_overlay_only) -+                    vo_x11_fullscreen(); -+
> fullscreen_flag = 0; -+                omapfb_update(sinfo_p0.xres / 2 -
> sinfo.xres / 2, sinfo_p0.yres / 2 - sinfo.yres / 2, sinfo.xres,
> sinfo.yres, 1); -+            } else { -+                if
> (!fb_overlay_only) -+                    vo_x11_fullscreen(); -+
> fullscreen_flag = 1; -+                omapfb_update(0, 0, sinfo_p0.xres,
> sinfo_p0.yres, 1); -+            } -+            return VO_TRUE; -+
> } -+        case VOCTRL_UPDATE_SCREENINFO: -+
> update_xinerama_info(); -+            return VO_TRUE; -+    } -+
> return VO_NOTIMPL; -+} -+ -+ -+static void check_events(void) -+{ -+
> if (!fb_overlay_only) -+        x11_check_events(); -+} -diff --git
> a/libvo/yuv.S b/libvo/yuv.S -new file mode 100644 -index
> 0000000..1cd2c1d ---- /dev/null -+++ b/libvo/yuv.S -@@ -0,0 +1,170 @@ 
> -+/* -+    Copyright (C) 2008 Mans Rullgard -+ -+    Permission is hereby
> granted, free of charge, to any person -+    obtaining a copy of this
> software and associated documentation -+    files (the "Software"), to
> deal in the Software without -+    restriction, including without
> limitation the rights to use, copy, -+    modify, merge, publish,
> distribute, sublicense, and/or sell copies -+    of the Software, and to
> permit persons to whom the Software is -+    furnished to do so, subject
> to the following conditions: -+ -+    The above copyright notice and this
> permission notice shall be -+    included in all copies or substantial
> portions of the Software. -+ -+    THE SOFTWARE IS PROVIDED "AS IS",
> WITHOUT WARRANTY OF ANY KIND, -+    EXPRESS OR IMPLIED, INCLUDING BUT NOT
> LIMITED TO THE WARRANTIES OF -+    MERCHANTABILITY, FITNESS FOR A
> PARTICULAR PURPOSE AND -+    NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT -+    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> OTHER LIABILITY, -+    WHETHER IN AN ACTION OF CONTRACT, TORT OR
> OTHERWISE, ARISING FROM, -+    OUT OF OR IN CONNECTION WITH THE SOFTWARE
> OR THE USE OR OTHER -+    DEALINGS IN THE SOFTWARE. -+ */ -+ -+
> .macro mov32    rd, val -+        movw            \rd, #:lower16:\val -+
> movt            \rd, #:upper16:\val -+        .endm -+ -+        .fpu
> neon -+        .text -+ -+@ yuv420_to_yuv422(uint8_t *yuv, uint8_t *y,
> uint8_t *u, uint8_t *v, -+@                  int w, int h, int yw, int
> cw, int dw) -+ -+#define yuv  r0 -+#define y    r1 -+#define u    r2 
> -+#define v    r3 -+#define w    r4 -+#define h    r5 -+#define yw   r6 
> -+#define cw   r7 -+#define dw   r8 -+ -+#define tyuv r9 -+#define ty
> r10 -+#define tu   r11 -+#define tv   r12 -+#define i    lr -+ -+
> .global yuv420_to_yuv422 -+        .func   yuv420_to_yuv422 
> -+yuv420_to_yuv422: -+        push            {r4-r11,lr} -+        add
> r4,  sp,  #36 -+.Ldo_conv: -+        ldm             r4, {r4-r8} -+
> push            {r4} -+1: -+        mov             tu,   u -+        mov
> tv,   v -+        vld1.64         {d2}, [u,:64], cw               @ u0 -+
> vld1.64         {d3}, [v,:64], cw               @ v0 -+        mov
> tyuv, yuv -+        mov             ty,   y -+        vzip.8          d2,
> d3                        @ u0v0 -+        mov             i,    #16 -+2:
>  -+        pld             [y, #64] -+        vld1.64         {d0, d1},
> [y,:128], yw        @ y0 -+        pld             [u, #64] -+
> subs            i,    i,    #4 -+        vld1.64         {d6},
> [u,:64],  cw        @ u2 -+        pld             [y, #64] -+
> vld1.64         {d4, d5},   [y,:128], yw        @ y1 -+        pld
> [v, #64] -+        vld1.64         {d7},       [v,:64],  cw        @ v2 
> -+        pld             [y, #64] -+        vld1.64         {d16,d17},
> [y,:128], yw        @ y2 -+        vzip.8          d6,   d7
> @ u2v2 -+        pld             [u, #64] -+        vld1.64
> {d22},      [u,:64],  cw        @ u4 -+        pld             [v, #64] 
> -+        vld1.64         {d23},      [v,:64],  cw        @ v4 -+
> pld             [y, #64] -+        vld1.64         {d20,d21},  [y,:128],
> yw        @ y3 -+        vmov            q9,   q3
> @ u2v2 -+        vzip.8          d22,  d23                       @ u4v4 
> -+        vrhadd.u8       q3,   q1,   q3                  @ u1v1 -+
> vzip.8          q0,   q1                        @ y0u0y0v0 -+        vmov
> q12,  q11                       @ u4v4 -+        vzip.8          q2,   q3
> @ y1u1y1v1 -+        vrhadd.u8       q11,  q9,   q11                 @
> u3v3 -+        vst1.64         {d0-d3},    [yuv,:128], dw      @
> y0u0y0v0 -+        vzip.8          q8,   q9                        @
> y2u2y2v2 -+        vst1.64         {d4-d7},    [yuv,:128], dw      @
> y1u1y1v1 -+        vzip.8          q10,  q11                       @
> y3u3y3v3 -+        vst1.64         {d16-d19},  [yuv,:128], dw      @
> y2u2y2v2 -+        vmov            q1,   q12 -+        vst1.64
> {d20-d23},  [yuv,:128], dw      @ y3u3y3v3 -+        bgt             2b 
> -+ -+        subs            w,    w,    #16 -+        add
> yuv,  tyuv, #32 -+        add             y,    ty,   #16 -+        add
> u,    tu,   #8 -+        add             v,    tv,   #8 -+        bgt
> 1b -+ -+        ldr             w,    [sp] -+        subs            h,
> h,    #16 -+        add             yuv,  yuv,  dw, lsl #4 -+        sub
> yuv,  yuv,  w,  lsl #1 -+        add             y,    y,    yw, lsl #4 
> -+        sub             y,    y,    w -+        add             u,
> u,    cw, lsl #3 -+        sub             u,    u,    w,  asr #1 -+
> add             v,    v,    cw, lsl #3 -+        sub             v,    v,
> w,  asr #1 -+        bgt             1b -+ -+        pop
> {r3-r11,pc} -+        .endfunc -+ -+        .func   neon_open 
> -+neon_open: -+        push            {r4-r8,lr} -+        ldrd
> r4,  r5,  [r0, #16] -+        ldrd            r6,  r7,  [r0, #24] -+
> lsl             r8,  r4,  #1 -+        mov32           r0,  conv_params 
> -+        stm             r0,  {r4-r8} -+        mov             r0,  #0 
> -+        pop             {r4-r8,pc} -+        .endfunc -+ -+
> .func   neon_convert -+neon_convert: -+        push
> {r4-r11,lr} -+        ldr             r0,  [r0] -+        mov32
> r4,  conv_params -+        ldm             r1,  {r1-r3} -+        b
> .Ldo_conv -+        .endfunc -+ -+        .func   neon_nop -+neon_nop: -+
> bx              lr -+        .endfunc -+ -+        .section .bss 
> -+conv_params: -+        .skip           5*4 -+        .size
> conv_params, . - conv_params -+ -+        .section        .rodata 
> -+.Lname: .asciz          "neon" -+ofb_pixconv_neon: -+        .word
> .Lname -+        .word           0               @ flags -+        .word
> neon_open -+        .word           neon_convert -+        .word
> neon_nop        @ finish -+        .word           neon_nop        @
> close -+        .size           ofb_pixconv_neon, . - ofb_pixconv_neon 
> -+ -+        .section        .ofb_pixconv, "a" -+ofb_pixconv_neon_p: -+
> .word           ofb_pixconv_neon --- -1.7.2.5 - diff --git
> a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
> b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb index
> 10a69a9..c24cc4a 100644 ---
> a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb +++
> b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb @@ -5,7 +5,7 @@
> HOMEPAGE = "http://www.mplayerhq.hu/" DEPENDS = "libvpx live555
> libdvdread libtheora virtual/libsdl ffmpeg xsp zlib libpng jpeg liba52
> freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11
> virtual/kernel libass \ ${@base_conditional('ENTERPRISE_DISTRO', '1', '',
> 'libmad liba52 lame', d)}"
> 
> -#RDEPENDS_${PN} = "mplayer-common" +RDEPENDS_${PN} = "mplayer-common" 
> PROVIDES = "mplayer" RPROVIDES_${PN} = "mplayer" RCONFLICTS_${PN} =
> "mplayer" @@ -17,10 +17,6 @@ SRC_URI =
> "git://repo.or.cz/mplayer.git;protocol=git;branch=master \ 
> file://cross.compile.codec-cfg.patch \ "
> 
> -SRC_URI_append_aarmv7a = " \ -
> file://0001-video-out-for-omapfb-support.patch \ -	  " - SRCREV =
> "e3f5043233336d8b4b0731c6a8b42a8fda5535ac"
> 
> ARM_INSTRUCTION_SET = "ARM" @@ -40,9 +36,6 @@ CONFFILES_${PN} +=
> "/usr/etc/mplayer/input.conf \
> 
> inherit autotools pkgconfig
> 
> -# We want a kernel header for armv7a, but we don't want to make mplayer
> machine specific for that -STAGING_KERNEL_DIR =
> "${STAGING_DIR}/${MACHINE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/kernel" - 
> EXTRA_OECONF = " \ --prefix=/usr \ --mandir=${mandir} \ @@ -135,21 +128,9
> @@ EXTRA_OECONF = " \ --extra-libs=' -lXext -lX11 -lBasicUsageEnvironment
> -lUsageEnvironment -lgroupsock -lliveMedia -lstdc++' \ "
> 
> -EXTRA_OECONF_append_armv6 = " --enable-armv6" 
> -EXTRA_OECONF_append_armv7a = " --enable-armv6 --enable-neon" - 
> FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer
> -frename-registers -O4 -ffast-math" -FULL_OPTIMIZATION_armv7a =
> "-fexpensive-optimizations  -ftree-vectorize -fomit-frame-pointer -O4
> -ffast-math" BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
> 
> -do_configure_prepend_armv7a() { -	cp
> ${STAGING_KERNEL_DIR}/arch/arm/plat-omap/include/mach/omapfb.h
> ${S}/libvo/omapfb.h || true -	cp
> ${STAGING_KERNEL_DIR}/include/asm-arm/arch-omap/omapfb.h
> ${S}/libvo/omapfb.h || true -	cp
> ${STAGING_KERNEL_DIR}/include/linux/omapfb.h ${S}/libvo/omapfb.h || true 
> -	cp ${STAGING_DIR_TARGET}/kernel/include/linux/omapfb.h
> ${S}/libvo/omapfb.h || true -	sed -e 's/__user//g' -i ${S}/libvo/omapfb.h
> || true -} - CFLAGS_append = " -I${S}/libdvdread4 "
> 
> do_configure() {

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (Darwin)
Comment: GPGTools - http://gpgtools.org

iEYEARECAAYFAk7V9jEACgkQMkyGM64RGpGvFgCgmauFl5GYmdtr9KDc69Yu68A4
cAcAn3eIhQeqzypd4tHVsq1d1CJz4FyV
=+jxs
-----END PGP SIGNATURE-----




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed
  2011-11-30  9:24   ` Koen Kooi
@ 2011-11-30  9:32     ` Martin Jansa
  0 siblings, 0 replies; 8+ messages in thread
From: Martin Jansa @ 2011-11-30  9:32 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 33444 bytes --]

On Wed, Nov 30, 2011 at 10:24:04AM +0100, Koen Kooi wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Op 30-11-11 09:06, Martin Jansa schreef:
> > * not everybody has FEED_ARCH in OVERRIDES * and not everybody has
> > PKGARCHCOMPAT_ARMV7A enabled so we would need to duplicate armv7a and
> > armv7a-vfp-neon
> 
> NAK on that. I'm not going to cripple mplayer because some distros lack
> FEED_ARCH in overrides.

Do we also cripple mplayer for people not using PKGARCHCOMPAT_ARMV7A? 
Or do we want all armv7a-vfp-neon duplicated with armv7a?

I've asked you to propose FEED_ARCH in oe-core before, please do..


> > * example of working omapfb patch and optimizations is in meta-smartphone
> > layer 
> > http://git.shr-project.org/git/?p=meta-smartphone.git;a=commit;h=483afbee82869a0b2dacadc4b9580c47dcb59d26
> 
> I
> > 
> do agree that that omapfb patch belongs in a BSP, not in the recipe.

yes and the current version of that patch in meta-oe is broken IIRC..
 
Cheers,

> regards,
> 
> Koen
> 
> > 
> > Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> --- 
> > .../0001-video-out-for-omapfb-support.patch        |  826
> > -------------------- meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb |
> > 21 +- 2 files changed, 1 insertions(+), 846 deletions(-) delete mode
> > 100644
> > meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
> >
> >  diff --git
> > a/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
> > b/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
> >
> > 
> deleted file mode 100644
> > index a362ef6..0000000 ---
> > a/meta-oe/recipes-multimedia/mplayer/mplayer2/0001-video-out-for-omapfb-support.patch
> >
> > 
> +++ /dev/null
> > @@ -1,826 +0,0 @@ -From 2a42cec41a018008d07ea33b2b91dca191d78481 Mon Sep
> > 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Thu,
> > 25 Nov 2010 16:49:53 +0100 -Subject: [PATCH] video out for omapfb
> > support - -Upstream-Status: Pending -Signed-off-by: Martin Jansa
> > <Martin.Jansa@gmail.com> -Signed-off-by: Koen Kooi
> > <koen@dominion.thruhere.net> ---- - Makefile          |    2 +- -
> > libvo/video_out.c |    2 + - libvo/vo_omapfb.c |  591
> > +++++++++++++++++++++++++++++++++++++++++++++++++++++ - libvo/yuv.S
> > |  170 +++++++++++++++ - 4 files changed, 764 insertions(+), 1
> > deletions(-) - create mode 100644 libvo/vo_omapfb.c - create mode 100644
> > libvo/yuv.S - -diff --git a/Makefile b/Makefile -index 83304a2..1e88d40
> > 100644 ---- a/Makefile -+++ b/Makefile -@@ -450,7 +450,7 @@
> > SRCS_MPLAYER-$(DIRECTFB)     += libvo/vo_directfb2.c libvo/vo_dfbmga.c -
> > SRCS_MPLAYER-$(DIRECTX)      += libao2/ao_dsound.c libvo/vo_directx.c -
> > 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-$(FBDEV)        += libvo/vo_fbdev.c
> > libvo/vo_fbdev2.c libvo/vo_omapfb.c libvo/yuv.S - SRCS_MPLAYER-$(FFMPEG)
> > += libvo/vo_png.c - SRCS_MPLAYER-$(GGI)          += libvo/vo_ggi.c -
> > SRCS_MPLAYER-$(GIF)          += libvo/vo_gif89a.c -diff --git
> > a/libvo/video_out.c b/libvo/video_out.c -index e796784..1433834 100644 
> > ---- a/libvo/video_out.c -+++ b/libvo/video_out.c -@@ -95,6 +95,7 @@
> > extern struct vo_driver video_out_null; - extern struct vo_driver
> > video_out_bl; - extern struct vo_driver video_out_fbdev; - extern struct
> > vo_driver video_out_fbdev2; -+extern struct vo_driver video_out_omapfb; -
> > extern struct vo_driver video_out_svga; - extern struct vo_driver
> > video_out_png; - extern struct vo_driver video_out_ggi; -@@ -193,6 +194,7
> > @@ const struct vo_driver *video_out_drivers[] = - #ifdef CONFIG_FBDEV -
> > &video_out_fbdev, -         &video_out_fbdev2, -+
> > &video_out_omapfb, - #endif - #ifdef CONFIG_SVGALIB -
> > &video_out_svga, -diff --git a/libvo/vo_omapfb.c b/libvo/vo_omapfb.c -new
> > file mode 100644 -index 0000000..7bd8927 ---- /dev/null -+++
> > b/libvo/vo_omapfb.c -@@ -0,0 +1,591 @@ -+/* -+ -+Copyright (C) 2008
> > Gregoire Gentil <gregoire@gentil.com> -+Portions Copyright (C) 2009
> > Howard Chu <hyc@symas.com> -+This file adds an optimized vo output to
> > mplayer for the OMAP platform. This is a first pass and an attempt to
> > help to improve -+media playing on the OMAP platform. The usual
> > disclaimer comes here: this code is provided without any warranty. -+Many
> > bugs and issues still exist. Feed-back is welcome. -+ -+This output uses
> > the yuv420_to_yuv422 conversion from Mans Rullgard, and is heavily
> > inspired from the work of Siarhei Siamashka. -+I would like to thank
> > those two persons here, without them this code would certainly not
> > exist. -+ -+Two options of the output are available: -+fb_overlay_only
> > (disabled by default): only the overlay is drawn. X11 stuff is ignored. 
> > -+dbl_buffer (disabled by default): add double buffering. Some tearsync
> > flags are probably missing in the code. -+ -+Syntax is the following: 
> > -+mplayer -ao alsa -vo omapfb /test.avi -+mplayer -nosound -vo
> > omapfb:fb_overlay_only:dbl_buffer /test.avi -+ -+You need to have two
> > planes on your system. On beagleboard, it means something like:
> > video=omapfb:vram:2M,vram:4M -+ -+Known issues: -+1) A green line or some
> > vertical lines (if mplayer decides to draw bands instead of frame) may
> > appear. -+It's an interpolation bug in the color conversion that needs to
> > be fixed -+ -+2) The color conversion accepts only 16-pixel multiple for
> > width and height. -+ -+3) The scaling down is disabled as the scaling
> > down kernel patch for the OMAP3 platform doesn't seem to work yet. -+ -+
> > * This program is free software; you can redistribute it and/or modify -+
> > * it under the terms of the GNU General Public License as published by -+
> > * the Free Software Foundation; either version 2 of the License, or -+ *
> > (at your option) any later version. -+ * -+ * This program 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 General Public License for more
> > details. -+ * -+ * You should have received a copy of the GNU General
> > Public License -+ * along with this program; if not, write to the Free
> > Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
> > 02110-1301 USA -+*/ -+ -+#include <stdio.h> -+#include <stdlib.h> 
> > -+#include <string.h> -+#include <fcntl.h> -+#include <unistd.h> 
> > -+#include <errno.h> -+ -+#include <sys/mman.h> -+#include <sys/ioctl.h> 
> > -+#include <linux/fb.h> -+ -+#include "config.h" -+#include
> > "video_out.h" -+#include "video_out_internal.h" -+#include
> > "fastmemcpy.h" -+#include "sub/sub.h" -+#include "mp_msg.h" -+#include
> > "omapfb.h" -+#include "x11_common.h" -+ -+#include
> > "libswscale/swscale.h" -+#include "libmpcodecs/vf_scale.h" -+#include
> > "libavcodec/avcodec.h" -+ -+#include "aspect.h" -+ -+#include
> > "subopt-helper.h" -+ -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> 
> > -+#include <X11/Xatom.h> -+#include "wskeys.h" -+ -+static vo_info_t info
> > = { -+	"omapfb video driver", -+	"omapfb", -+	"", -+	"" -+}; -+ 
> > -+LIBVO_EXTERN(omapfb) -+ -+static int fb_overlay_only = 0; // if set, we
> > need only framebuffer overlay, but do not need any x11 code -+static int
> > dbl_buffer = 0; -+static int fullscreen_flag = 0; -+static int
> > plane_ready = 0; -+static uint32_t drwX, drwY; -+ -+extern void
> > yuv420_to_yuv422(uint8_t *yuv, uint8_t *y, uint8_t *u, uint8_t *v, int w,
> > int h, int yw, int cw, int dw); -+static struct fb_var_screeninfo
> > sinfo_p0; -+static struct fb_var_screeninfo sinfo; -+static struct
> > fb_var_screeninfo sinfo2; -+static struct fb_fix_screeninfo finfo; 
> > -+static struct omapfb_mem_info minfo; -+static struct omapfb_plane_info
> > pinfo; -+static int xoff, yoff; -+ -+static struct { -+    unsigned x; -+
> > unsigned y; -+    uint8_t *buf; -+} fb_pages[2]; -+static int dev_fd =
> > -1; -+static int fb_page_flip = 0; -+static int page = 0; -+static void
> > omapfb_update(int x, int y, int out_w, int out_h, int show); -+ -+extern
> > void mplayer_put_key( int code ); -+#include "input/keycodes.h" -+ 
> > -+#define TRANSPARENT_COLOR_KEY 0xff0 -+ -+static Display *display =
> > NULL; // pointer to X Display structure. -+static int screen_num; //
> > number of screen to place the window on. -+static Window win = 0; 
> > -+static Window parent = 0; // pointer to the newly created window. -+ 
> > -+/* This is used to intercept window closing requests.  */ -+static Atom
> > wm_delete_window; -+ -+ -+void vo_calc_drwXY(uint32_t *drwX, uint32_t
> > *drwY) -+{ -+    *drwX = *drwY = 0; -+    if (vo_fs) { -+
> > aspect(&vo_dwidth, &vo_dheight, A_ZOOM); -+        vo_dwidth  =
> > FFMIN(vo_dwidth, vo_screenwidth); -+        vo_dheight =
> > FFMIN(vo_dheight, vo_screenheight); -+        *drwX      =
> > (vo_screenwidth - vo_dwidth) / 2; -+        *drwY      = (vo_screenheight
> > - vo_dheight) / 2; -+        mp_msg(MSGT_VO, MSGL_V, "[vo-fs] dx: %d dy:
> > %d dw: %d dh: %d\n", -+               *drwX, *drwY, vo_dwidth,
> > vo_dheight); -+    } else if (WinID == 0) { -+        *drwX = vo_dx; -+
> > *drwY = vo_dy; -+    } -+} -+ -+static void getPrimaryPlaneInfo() -+{ -+
> > int dev_fd = open("/dev/fb0", O_RDWR); -+ -+    if (dev_fd == -1) { -+
> > mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error /dev/fb0\n"); -+
> > return -1; -+    } -+ -+    ioctl(dev_fd, FBIOGET_VSCREENINFO,
> > &sinfo_p0); -+    close(dev_fd); -+} -+ -+/** -+ * Function to get the
> > offset to be used when in windowed mode -+ * or when using -wid option -+
> > */ -+static void x11_get_window_abs_position(Display *display, Window
> > window, -+                                             int *wx, int *wy,
> > int *ww, int *wh) -+{ -+    Window root, parent; -+    Window *child; -+
> > unsigned int n_children; -+    XWindowAttributes attribs; -+ -+    /* Get
> > window attributes */ -+    XGetWindowAttributes(display, window,
> > &attribs); -+ -+    /* Get relative position of given window */ -+    *wx
> > = attribs.x; -+    *wy = attribs.y; -+    if (ww) -+        *ww =
> > attribs.width; -+    if (wh) -+        *wh = attribs.height; -+ -+    /*
> > Query window tree information */ -+    XQueryTree(display, window, &root,
> > &parent, &child, &n_children); -+    if (parent) -+    { -+      int x,
> > y; -+      /* If we have a parent we must go there and discover his
> > position*/ -+      x11_get_window_abs_position(display, parent, &x, &y,
> > NULL, NULL); -+      *wx += x; -+      *wy += y; -+    } -+ -+    /* If
> > we had children, free it */ -+    if(n_children) -+        XFree(child); 
> > -+} -+ -+static void x11_check_events(void) -+{ -+    int e =
> > vo_x11_check_events(mDisplay); -+ -+    if (e & VO_EVENT_RESIZE) -+
> > vo_calc_drwXY(&drwX, &drwY); -+ -+    if (e & VO_EVENT_EXPOSE || e &
> > VO_EVENT_RESIZE) -+    { -+        vo_xv_draw_colorkey(drwX, drwY,
> > vo_dwidth - 1, vo_dheight - 1); -+        omapfb_update(0, 0, 0, 0, 1); 
> > -+    } -+} -+ -+static void x11_uninit() -+{ -+    if (display) { -+
> > XCloseDisplay(display); -+        display = NULL; -+    } -+} -+ -+/** -+
> > * Initialize framebuffer -+ */ -+static int preinit(const char *arg) -+{ 
> > -+    opt_t subopts[] = { -+        {"fb_overlay_only", OPT_ARG_BOOL,
> > &fb_overlay_only, NULL}, -+        {"dbl_buffer", OPT_ARG_BOOL,
> > &dbl_buffer, NULL}, -+        {NULL} -+    }; -+ -+    if
> > (subopt_parse(arg, subopts) != 0) { -+        mp_msg(MSGT_VO, MSGL_FATAL,
> > "[omapfb] unknown suboptions: %s\n", arg); -+        return -1; -+    } 
> > -+ -+    getPrimaryPlaneInfo(); -+    dev_fd = open("/dev/fb1", O_RDWR); 
> > -+ -+    if (dev_fd == -1) { -+        mp_msg(MSGT_VO, MSGL_FATAL,
> > "[omapfb] Error /dev/fb1\n"); -+        return -1; -+    } -+ -+
> > ioctl(dev_fd, FBIOGET_VSCREENINFO, &sinfo); -+    ioctl(dev_fd,
> > OMAPFB_QUERY_PLANE, &pinfo); -+    ioctl(dev_fd, OMAPFB_QUERY_MEM,
> > &minfo); -+ -+    if (!fb_overlay_only && !vo_init()) -+    { -+
> > mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Could not open X, overlay
> > only...\n"); -+        fb_overlay_only = 1; -+    } -+ -+    return 0; 
> > -+} -+ -+static void omapfb_update(int x, int y, int out_w, int out_h,
> > int show) -+{ -+    int xres, yres; -+    if (!fb_overlay_only) -+
> > x11_get_window_abs_position(mDisplay, vo_window, &x, &y, &out_w,
> > &out_h); -+ -+    /* Check for new screen rotation */ -+    ioctl(dev_fd,
> > FBIOGET_VSCREENINFO, &sinfo2); -+    if (sinfo2.rotate !=
> > sinfo_p0.rotate) -+        getPrimaryPlaneInfo(); -+ -+    if ( (!x && !y
> > && !out_w && !out_h) || -+        (out_w < sinfo.xres_virtual / 4) ||
> > (out_h < sinfo.yres_virtual / 4) ||  /* HW can't scale down by more than
> > 4x */ -+        (out_w > sinfo.xres_virtual * 8) || (out_h >
> > sinfo.yres_virtual * 8) ) { /* HW can't scale up by more than 8x */ -+
> > pinfo.enabled = 0; -+        pinfo.pos_x = 0; -+        pinfo.pos_y = 0; 
> > -+        ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo); -+        return; -+
> > } -+ -+    xres = sinfo.xres_virtual; -+    yres = sinfo.yres_virtual; 
> > -+ -+    /* Handle clipping: if the left or top edge of the window goes 
> > -+     * offscreen, clamp the overlay to the left or top edge of the -+
> > * screen, and set the difference into the frame offset. Also -+     *
> > decrease the overlay size by the offset. The offset must -+     * take
> > window scaling into account as well. -+     * -+     * Likewise, if the
> > right or bottom edge of the window goes -+     * offscreen, clamp the
> > overlay to the right or bottom edge of -+     * the screen, and decrease
> > the overlay size accordingly. The -+     * hardware will truncate the
> > output accordingly, so no offset -+     * is needed. Also take window
> > scaling into account.  -- hyc -+     */ -+    if (x < 0) { -+        /*
> > clamp to left edge */ -+        xoff = -x; -+        if (out_w !=
> > sinfo.xres_virtual) { -+            /* account for scaling */ -+
> > xoff *= sinfo.xres_virtual; -+            xoff /= out_w; -+        } -+
> > xres -= xoff; -+        out_w += x; -+        x = 0; -+    } else { -+
> > xoff = 0; -+        if (x + out_w > sinfo_p0.xres) { -+            /*
> > clamp to right edge */ -+            int diff = sinfo_p0.xres - x; -+
> > if (out_w != sinfo.xres_virtual) { -+                /* account for
> > scaling */ -+                xres = diff * sinfo.xres_virtual; -+
> > xres /= out_w; -+            } else { -+                xres = diff; -+
> > } -+            out_w = diff; -+        } -+    } -+ -+    if (y < 0) { 
> > -+        /* clamp to top edge - this seldom occurs since the window -+
> > * titlebar is usually forced to stay visible -+         */ -+        yoff
> > = -y; -+        if (out_h != sinfo.yres_virtual) { -+            /*
> > account for scaling */ -+            yoff *= sinfo.yres_virtual; -+
> > yoff /= out_h; -+        } -+        yres -= yoff; -+        out_h += y; 
> > -+        y = 0; -+    } else { -+        yoff = 0; -+        if (y +
> > out_h > sinfo_p0.yres) { -+            /* clamp to bottom edge */ -+
> > int diff = sinfo_p0.yres - y; -+            if (out_h !=
> > sinfo.yres_virtual) { -+                /* account for scaling */ -+
> > yres = diff * sinfo.yres_virtual; -+                yres /= out_h; -+
> > } else { -+                yres = diff; -+            } -+
> > out_h = diff; -+        } -+    } -+ -+    if (xoff & 1) -+
> > xoff++; -+    if (xres & 1) -+        xres--; -+ -+    pinfo.enabled =
> > show; -+    pinfo.pos_x = x; -+    pinfo.pos_y = y; -+    pinfo.out_width
> > = out_w; -+    pinfo.out_height = out_h; -+ -+    sinfo.xoffset =
> > fb_pages[page].x + xoff; -+    sinfo.yoffset = fb_pages[page].y + yoff; 
> > -+    /* If we had to change the overlay dimensions, update it */ -+
> > if (xres != sinfo2.xres || yres != sinfo2.yres || -+        sinfo.xoffset
> > != sinfo2.xoffset || -+        sinfo.yoffset != sinfo2.yoffset) { -+
> > sinfo.xres = xres; -+        sinfo.yres = yres; -+        sinfo.rotate =
> > sinfo2.rotate; -+        ioctl(dev_fd, FBIOPUT_VSCREENINFO, &sinfo); -+
> > } -+ -+    ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo); -+} -+ -+static int
> > config(uint32_t width, uint32_t height, uint32_t d_width, -+		uint32_t
> > d_height, uint32_t flags, char *title, -+		uint32_t format) -+{ -+
> > uint8_t *fbmem; -+    int i; -+    struct omapfb_color_key color_key; -+ 
> > -+    XVisualInfo vinfo; -+    XSetWindowAttributes xswa; -+
> > XWindowAttributes attribs; -+    unsigned long xswamask; -+    int
> > depth; -+ -+    Window root, parent; -+    Window *child; -+    unsigned
> > int n_children; -+ -+    fullscreen_flag = flags & VOFLAG_FULLSCREEN; -+
> > if (!fb_overlay_only) -+    { -+        if (!title) -+            title =
> > "MPlayer OMAPFB (X11/FB) render"; -+ -+
> > XGetWindowAttributes(mDisplay, mRootWin, &attribs); -+        depth =
> > attribs.depth; -+        if (depth != 15 && depth != 16 && depth != 24 &&
> > depth != 32) -+            depth = 24; -+
> > XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo); -+ -+
> > xswa.border_pixel = 0; -+        xswa.background_pixel = xv_colorkey =
> > TRANSPARENT_COLOR_KEY; -+ -+        xswamask = CWBackPixel |
> > CWBorderPixel; -+        xv_ck_info.method = CK_METHOD_BACKGROUND; -+ -+
> > vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, vo_dwidth, vo_dheight, -+
> > flags, CopyFromParent, "omapfb", title); -+
> > XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); -+ -+
> > /* Need to receive events on the parent window -- so when it is -+
> > moved / resized / etc., we know. */ -+        if(WinID > 0) -+        { 
> > -+            /* Query window tree information */ -+
> > XQueryTree(mDisplay, vo_window, &root, &parent, &child, &n_children); -+
> > if (n_children) -+                XFree(child); -+ -+
> > XUnmapWindow(mDisplay, vo_window); -+            if (parent) -+
> > XSelectInput(mDisplay, parent, StructureNotifyMask); -+
> > XMapWindow(mDisplay, vo_window); -+        } -+ -+
> > vo_calc_drwXY(&drwX, &drwY); -+        vo_xv_draw_colorkey(drwX, drwY,
> > vo_dwidth - 1, vo_dheight - 1); -+    } -+ -+    fbmem = mmap(NULL,
> > minfo.size, PROT_READ|PROT_WRITE, MAP_SHARED, dev_fd, 0); -+    if (fbmem
> > == MAP_FAILED) { -+        mp_msg(MSGT_VO, MSGL_FATAL, "[omapfb] Error
> > mmap\n"); -+        return -1; -+    } -+ -+    for (i = 0; i <
> > minfo.size / 4; i++) -+        ((uint32_t*)fbmem)[i] = 0x80008000; -+ -+
> > sinfo.xres = width & ~15; -+    sinfo.yres = height & ~15; -+
> > sinfo.xoffset = 0; -+    sinfo.yoffset = 0; -+    sinfo.nonstd =
> > OMAPFB_COLOR_YUY422; -+ -+    fb_pages[0].x = 0; -+    fb_pages[0].y =
> > 0; -+    fb_pages[0].buf = fbmem; -+ -+    if (dbl_buffer && minfo.size
> > >= sinfo.xres * sinfo.yres * 2) { -+        sinfo.xres_virtual =
> > sinfo.xres; -+        sinfo.yres_virtual = sinfo.yres * 2; -+
> > fb_pages[1].x = 0; -+        fb_pages[1].y = sinfo.yres; -+
> > fb_pages[1].buf = fbmem + sinfo.xres * sinfo.yres * 2; -+
> > fb_page_flip = 1; -+    } else { -+        sinfo.xres_virtual =
> > sinfo.xres; -+        sinfo.yres_virtual = sinfo.yres; -+
> > fb_page_flip = 0; -+    } -+ -+    ioctl(dev_fd, FBIOPUT_VSCREENINFO,
> > &sinfo); -+    ioctl(dev_fd, FBIOGET_FSCREENINFO, &finfo); -+ -+    if
> > (WinID <= 0) { -+        if (fullscreen_flag) { -+
> > omapfb_update(0, 0, sinfo_p0.xres, sinfo_p0.yres, 1); -+        } else { 
> > -+            omapfb_update(sinfo_p0.xres / 2 - sinfo.xres / 2,
> > sinfo_p0.yres / 2 - sinfo.yres / 2, sinfo.xres, sinfo.yres, 1); -+
> > } -+    } -+ -+    color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD; -+
> > color_key.background = 0x0; -+    color_key.trans_key =
> > TRANSPARENT_COLOR_KEY; -+    if (fb_overlay_only) -+
> > color_key.key_type = OMAPFB_COLOR_KEY_DISABLED; -+    else -+
> > color_key.key_type = OMAPFB_COLOR_KEY_GFX_DST; -+    ioctl(dev_fd,
> > OMAPFB_SET_COLOR_KEY, &color_key); -+ -+    plane_ready = 1; -+    return
> > 0; -+} -+ -+static void draw_alpha(int x0, int y0, int w, int h, unsigned
> > char *src, unsigned char *srca, int stride) -+{ -+
> > vo_draw_alpha_yuy2(w, h, src, srca, stride, fb_pages[page].buf + y0 *
> > finfo.line_length + x0 * 2, finfo.line_length); -+} -+ -+static void
> > draw_osd(void) -+{ -+    vo_draw_text(sinfo.xres, sinfo.yres,
> > draw_alpha); -+} -+ -+static int draw_frame(uint8_t *src[]) -+{ -+
> > return 1; -+} -+ -+static int draw_slice(uint8_t *src[], int stride[],
> > int w, int h, int x, int y) -+{ -+    if (x!=0) -+        return 0; -+ -+
> > if (!plane_ready) -+        return 0; -+ -+    ioctl(dev_fd,
> > OMAPFB_SYNC_GFX); -+ -+    yuv420_to_yuv422(fb_pages[page].buf + y *
> > finfo.line_length, src[0], src[1], src[2], w & ~15, h, stride[0],
> > stride[1], finfo.line_length); -+    return 0; -+} -+ -+static void
> > flip_page(void) -+{ -+    if (fb_page_flip) { -+        sinfo.xoffset =
> > fb_pages[page].x + xoff; -+        sinfo.yoffset = fb_pages[page].y +
> > yoff; -+        ioctl(dev_fd, FBIOPAN_DISPLAY, &sinfo); -+        page ^=
> > fb_page_flip; -+    } -+} -+ -+static int query_format(uint32_t format) 
> > -+{ -+    // For simplicity pretend that we can only do YV12, support
> > for -+    // other formats can be added quite easily if/when needed -+
> > if (format != IMGFMT_YV12) -+        return 0; -+ -+    return
> > VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD |
> > VFCAP_SWSCALE | VFCAP_ACCEPT_STRIDE; -+} -+ -+ -+/** -+ * Uninitialize
> > framebuffer -+ */ -+static void uninit() -+{ -+    pinfo.enabled = 0; -+
> > ioctl(dev_fd, OMAPFB_SETUP_PLANE, &pinfo); -+ -+    if (!fb_overlay_only)
> > { -+        struct omapfb_color_key color_key; -+
> > color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD; -+
> > color_key.key_type = OMAPFB_COLOR_KEY_DISABLED; -+        ioctl(dev_fd,
> > OMAPFB_SET_COLOR_KEY, &color_key); -+    } -+ -+    close(dev_fd); -+ -+
> > if (!fb_overlay_only) -+        x11_uninit(); -+} -+ -+ -+static int
> > control(uint32_t request, void *data, ...) -+{ -+    switch (request) { 
> > -+        case VOCTRL_QUERY_FORMAT: -+            return
> > query_format(*((uint32_t*)data)); -+        case VOCTRL_FULLSCREEN: { -+
> > if (WinID > 0) return VO_FALSE; -+            if (fullscreen_flag) { -+
> > if (!fb_overlay_only) -+                    vo_x11_fullscreen(); -+
> > fullscreen_flag = 0; -+                omapfb_update(sinfo_p0.xres / 2 -
> > sinfo.xres / 2, sinfo_p0.yres / 2 - sinfo.yres / 2, sinfo.xres,
> > sinfo.yres, 1); -+            } else { -+                if
> > (!fb_overlay_only) -+                    vo_x11_fullscreen(); -+
> > fullscreen_flag = 1; -+                omapfb_update(0, 0, sinfo_p0.xres,
> > sinfo_p0.yres, 1); -+            } -+            return VO_TRUE; -+
> > } -+        case VOCTRL_UPDATE_SCREENINFO: -+
> > update_xinerama_info(); -+            return VO_TRUE; -+    } -+
> > return VO_NOTIMPL; -+} -+ -+ -+static void check_events(void) -+{ -+
> > if (!fb_overlay_only) -+        x11_check_events(); -+} -diff --git
> > a/libvo/yuv.S b/libvo/yuv.S -new file mode 100644 -index
> > 0000000..1cd2c1d ---- /dev/null -+++ b/libvo/yuv.S -@@ -0,0 +1,170 @@ 
> > -+/* -+    Copyright (C) 2008 Mans Rullgard -+ -+    Permission is hereby
> > granted, free of charge, to any person -+    obtaining a copy of this
> > software and associated documentation -+    files (the "Software"), to
> > deal in the Software without -+    restriction, including without
> > limitation the rights to use, copy, -+    modify, merge, publish,
> > distribute, sublicense, and/or sell copies -+    of the Software, and to
> > permit persons to whom the Software is -+    furnished to do so, subject
> > to the following conditions: -+ -+    The above copyright notice and this
> > permission notice shall be -+    included in all copies or substantial
> > portions of the Software. -+ -+    THE SOFTWARE IS PROVIDED "AS IS",
> > WITHOUT WARRANTY OF ANY KIND, -+    EXPRESS OR IMPLIED, INCLUDING BUT NOT
> > LIMITED TO THE WARRANTIES OF -+    MERCHANTABILITY, FITNESS FOR A
> > PARTICULAR PURPOSE AND -+    NONINFRINGEMENT. IN NO EVENT SHALL THE
> > AUTHORS OR COPYRIGHT -+    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> > OTHER LIABILITY, -+    WHETHER IN AN ACTION OF CONTRACT, TORT OR
> > OTHERWISE, ARISING FROM, -+    OUT OF OR IN CONNECTION WITH THE SOFTWARE
> > OR THE USE OR OTHER -+    DEALINGS IN THE SOFTWARE. -+ */ -+ -+
> > .macro mov32    rd, val -+        movw            \rd, #:lower16:\val -+
> > movt            \rd, #:upper16:\val -+        .endm -+ -+        .fpu
> > neon -+        .text -+ -+@ yuv420_to_yuv422(uint8_t *yuv, uint8_t *y,
> > uint8_t *u, uint8_t *v, -+@                  int w, int h, int yw, int
> > cw, int dw) -+ -+#define yuv  r0 -+#define y    r1 -+#define u    r2 
> > -+#define v    r3 -+#define w    r4 -+#define h    r5 -+#define yw   r6 
> > -+#define cw   r7 -+#define dw   r8 -+ -+#define tyuv r9 -+#define ty
> > r10 -+#define tu   r11 -+#define tv   r12 -+#define i    lr -+ -+
> > .global yuv420_to_yuv422 -+        .func   yuv420_to_yuv422 
> > -+yuv420_to_yuv422: -+        push            {r4-r11,lr} -+        add
> > r4,  sp,  #36 -+.Ldo_conv: -+        ldm             r4, {r4-r8} -+
> > push            {r4} -+1: -+        mov             tu,   u -+        mov
> > tv,   v -+        vld1.64         {d2}, [u,:64], cw               @ u0 -+
> > vld1.64         {d3}, [v,:64], cw               @ v0 -+        mov
> > tyuv, yuv -+        mov             ty,   y -+        vzip.8          d2,
> > d3                        @ u0v0 -+        mov             i,    #16 -+2:
> >  -+        pld             [y, #64] -+        vld1.64         {d0, d1},
> > [y,:128], yw        @ y0 -+        pld             [u, #64] -+
> > subs            i,    i,    #4 -+        vld1.64         {d6},
> > [u,:64],  cw        @ u2 -+        pld             [y, #64] -+
> > vld1.64         {d4, d5},   [y,:128], yw        @ y1 -+        pld
> > [v, #64] -+        vld1.64         {d7},       [v,:64],  cw        @ v2 
> > -+        pld             [y, #64] -+        vld1.64         {d16,d17},
> > [y,:128], yw        @ y2 -+        vzip.8          d6,   d7
> > @ u2v2 -+        pld             [u, #64] -+        vld1.64
> > {d22},      [u,:64],  cw        @ u4 -+        pld             [v, #64] 
> > -+        vld1.64         {d23},      [v,:64],  cw        @ v4 -+
> > pld             [y, #64] -+        vld1.64         {d20,d21},  [y,:128],
> > yw        @ y3 -+        vmov            q9,   q3
> > @ u2v2 -+        vzip.8          d22,  d23                       @ u4v4 
> > -+        vrhadd.u8       q3,   q1,   q3                  @ u1v1 -+
> > vzip.8          q0,   q1                        @ y0u0y0v0 -+        vmov
> > q12,  q11                       @ u4v4 -+        vzip.8          q2,   q3
> > @ y1u1y1v1 -+        vrhadd.u8       q11,  q9,   q11                 @
> > u3v3 -+        vst1.64         {d0-d3},    [yuv,:128], dw      @
> > y0u0y0v0 -+        vzip.8          q8,   q9                        @
> > y2u2y2v2 -+        vst1.64         {d4-d7},    [yuv,:128], dw      @
> > y1u1y1v1 -+        vzip.8          q10,  q11                       @
> > y3u3y3v3 -+        vst1.64         {d16-d19},  [yuv,:128], dw      @
> > y2u2y2v2 -+        vmov            q1,   q12 -+        vst1.64
> > {d20-d23},  [yuv,:128], dw      @ y3u3y3v3 -+        bgt             2b 
> > -+ -+        subs            w,    w,    #16 -+        add
> > yuv,  tyuv, #32 -+        add             y,    ty,   #16 -+        add
> > u,    tu,   #8 -+        add             v,    tv,   #8 -+        bgt
> > 1b -+ -+        ldr             w,    [sp] -+        subs            h,
> > h,    #16 -+        add             yuv,  yuv,  dw, lsl #4 -+        sub
> > yuv,  yuv,  w,  lsl #1 -+        add             y,    y,    yw, lsl #4 
> > -+        sub             y,    y,    w -+        add             u,
> > u,    cw, lsl #3 -+        sub             u,    u,    w,  asr #1 -+
> > add             v,    v,    cw, lsl #3 -+        sub             v,    v,
> > w,  asr #1 -+        bgt             1b -+ -+        pop
> > {r3-r11,pc} -+        .endfunc -+ -+        .func   neon_open 
> > -+neon_open: -+        push            {r4-r8,lr} -+        ldrd
> > r4,  r5,  [r0, #16] -+        ldrd            r6,  r7,  [r0, #24] -+
> > lsl             r8,  r4,  #1 -+        mov32           r0,  conv_params 
> > -+        stm             r0,  {r4-r8} -+        mov             r0,  #0 
> > -+        pop             {r4-r8,pc} -+        .endfunc -+ -+
> > .func   neon_convert -+neon_convert: -+        push
> > {r4-r11,lr} -+        ldr             r0,  [r0] -+        mov32
> > r4,  conv_params -+        ldm             r1,  {r1-r3} -+        b
> > .Ldo_conv -+        .endfunc -+ -+        .func   neon_nop -+neon_nop: -+
> > bx              lr -+        .endfunc -+ -+        .section .bss 
> > -+conv_params: -+        .skip           5*4 -+        .size
> > conv_params, . - conv_params -+ -+        .section        .rodata 
> > -+.Lname: .asciz          "neon" -+ofb_pixconv_neon: -+        .word
> > .Lname -+        .word           0               @ flags -+        .word
> > neon_open -+        .word           neon_convert -+        .word
> > neon_nop        @ finish -+        .word           neon_nop        @
> > close -+        .size           ofb_pixconv_neon, . - ofb_pixconv_neon 
> > -+ -+        .section        .ofb_pixconv, "a" -+ofb_pixconv_neon_p: -+
> > .word           ofb_pixconv_neon --- -1.7.2.5 - diff --git
> > a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb
> > b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb index
> > 10a69a9..c24cc4a 100644 ---
> > a/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb +++
> > b/meta-oe/recipes-multimedia/mplayer/mplayer2_git.bb @@ -5,7 +5,7 @@
> > HOMEPAGE = "http://www.mplayerhq.hu/" DEPENDS = "libvpx live555
> > libdvdread libtheora virtual/libsdl ffmpeg xsp zlib libpng jpeg liba52
> > freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11
> > virtual/kernel libass \ ${@base_conditional('ENTERPRISE_DISTRO', '1', '',
> > 'libmad liba52 lame', d)}"
> > 
> > -#RDEPENDS_${PN} = "mplayer-common" +RDEPENDS_${PN} = "mplayer-common" 
> > PROVIDES = "mplayer" RPROVIDES_${PN} = "mplayer" RCONFLICTS_${PN} =
> > "mplayer" @@ -17,10 +17,6 @@ SRC_URI =
> > "git://repo.or.cz/mplayer.git;protocol=git;branch=master \ 
> > file://cross.compile.codec-cfg.patch \ "
> > 
> > -SRC_URI_append_aarmv7a = " \ -
> > file://0001-video-out-for-omapfb-support.patch \ -	  " - SRCREV =
> > "e3f5043233336d8b4b0731c6a8b42a8fda5535ac"
> > 
> > ARM_INSTRUCTION_SET = "ARM" @@ -40,9 +36,6 @@ CONFFILES_${PN} +=
> > "/usr/etc/mplayer/input.conf \
> > 
> > inherit autotools pkgconfig
> > 
> > -# We want a kernel header for armv7a, but we don't want to make mplayer
> > machine specific for that -STAGING_KERNEL_DIR =
> > "${STAGING_DIR}/${MACHINE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/kernel" - 
> > EXTRA_OECONF = " \ --prefix=/usr \ --mandir=${mandir} \ @@ -135,21 +128,9
> > @@ EXTRA_OECONF = " \ --extra-libs=' -lXext -lX11 -lBasicUsageEnvironment
> > -lUsageEnvironment -lgroupsock -lliveMedia -lstdc++' \ "
> > 
> > -EXTRA_OECONF_append_armv6 = " --enable-armv6" 
> > -EXTRA_OECONF_append_armv7a = " --enable-armv6 --enable-neon" - 
> > FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer
> > -frename-registers -O4 -ffast-math" -FULL_OPTIMIZATION_armv7a =
> > "-fexpensive-optimizations  -ftree-vectorize -fomit-frame-pointer -O4
> > -ffast-math" BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
> > 
> > -do_configure_prepend_armv7a() { -	cp
> > ${STAGING_KERNEL_DIR}/arch/arm/plat-omap/include/mach/omapfb.h
> > ${S}/libvo/omapfb.h || true -	cp
> > ${STAGING_KERNEL_DIR}/include/asm-arm/arch-omap/omapfb.h
> > ${S}/libvo/omapfb.h || true -	cp
> > ${STAGING_KERNEL_DIR}/include/linux/omapfb.h ${S}/libvo/omapfb.h || true 
> > -	cp ${STAGING_DIR_TARGET}/kernel/include/linux/omapfb.h
> > ${S}/libvo/omapfb.h || true -	sed -e 's/__user//g' -i ${S}/libvo/omapfb.h
> > || true -} - CFLAGS_append = " -I${S}/libdvdread4 "
> > 
> > do_configure() {
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (Darwin)
> Comment: GPGTools - http://gpgtools.org
> 
> iEYEARECAAYFAk7V9jEACgkQMkyGM64RGpGvFgCgmauFl5GYmdtr9KDc69Yu68A4
> cAcAn3eIhQeqzypd4tHVsq1d1CJz4FyV
> =+jxs
> -----END PGP SIGNATURE-----
> 
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-11-30  9:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-30  8:06 [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa
2011-11-30  8:06 ` [meta-oo 1/4] mplayer-common: import from OE-classic Martin Jansa
2011-11-30  8:06 ` [meta-oo 2/4] mplayer2: drop armv7a/omapfb optimizations, those can be applied from bsp layer if needed Martin Jansa
2011-11-30  9:24   ` Koen Kooi
2011-11-30  9:32     ` Martin Jansa
2011-11-30  8:06 ` [meta-oo 3/4] mplayer2: drop OPTIMIZATIONs for now Martin Jansa
2011-11-30  8:06 ` [meta-oo 4/4] gconf-native: drop from meta-gnome, newer version is in oe-core Martin Jansa
2011-11-30  8:09 ` [meta-oo 0/4] mplayer changes and gconf-native drop Martin Jansa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.