Send commitlog mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:

   1. r2304 - in trunk/src/host/qemu-neo1973: . hw openmoko
      ([EMAIL PROTECTED])
   2. r2305 - in trunk/oe/packages/python: . python-pygtk2
      ([EMAIL PROTECTED])
   3. r2306 - in trunk/oe/packages: confuse dfu-util fbgrab gpsd
      gsm       gtkterm libatomic-ops libxosd pulseaudio vte
      ([EMAIL PROTECTED])
   4. r2307 - in trunk/oe/packages: . flite flite/flite
      ([EMAIL PROTECTED])
--- Begin Message ---
Author: andrew
Date: 2007-06-19 15:57:24 +0200 (Tue, 19 Jun 2007)
New Revision: 2304

Modified:
   trunk/src/host/qemu-neo1973/hw/usb-hid.c
   trunk/src/host/qemu-neo1973/openmoko/flash.sh
   trunk/src/host/qemu-neo1973/qemu-doc.texi
Log:
* fix right-arrow keycode and HID descriptor version
* only grab input on USB reset (after attaching)
* add qemu-docs snippet about the keyboard
* mention the keyboard in flash.sh


Modified: trunk/src/host/qemu-neo1973/hw/usb-hid.c
===================================================================
--- trunk/src/host/qemu-neo1973/hw/usb-hid.c    2007-06-19 13:16:05 UTC (rev 
2303)
+++ trunk/src/host/qemu-neo1973/hw/usb-hid.c    2007-06-19 13:57:24 UTC (rev 
2304)
@@ -232,7 +232,7 @@
         /* HID descriptor */
         0x09,        /*  u8  bLength; */
         0x21,        /*  u8  bDescriptorType; */
-        0x01, 0x11,  /*  u16 HID_class */
+        0x11, 0x01,  /*  u16 HID_class */
         0x00,        /*  u8  country_code */
         0x01,        /*  u8  num_descriptors */
         0x22,        /*  u8  type; Report */
@@ -365,7 +365,7 @@
     0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x46,
     0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x4a,
-    0x52, 0x4b, 0x00, 0x50, 0x4f, 0x00, 0x00, 0x4d,
+    0x52, 0x4b, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x4d,
     0x51, 0x4e, 0x49, 0x4c, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -570,6 +570,7 @@
 {
     USBHIDState *s = (USBHIDState *)dev;
 
+    qemu_add_kbd_event_handler(usb_keyboard_event, &s->kbd);   /* XXX: once */
     s->protocol = 1;
 }
 
@@ -839,7 +840,5 @@
 
     pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Keyboard");
 
-    qemu_add_kbd_event_handler(usb_keyboard_event, &s->kbd);
-
     return (USBDevice *) s;
 }

Modified: trunk/src/host/qemu-neo1973/openmoko/flash.sh
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/flash.sh       2007-06-19 13:16:05 UTC 
(rev 2303)
+++ trunk/src/host/qemu-neo1973/openmoko/flash.sh       2007-06-19 13:57:24 UTC 
(rev 2304)
@@ -140,5 +140,6 @@
 echo
 echo "    "Append \'-snapshot\' to make the flash image read-only so that every
 echo "    "time emulation starts in the original unmodified state.
-echo "    "[Enter] for AUX button, [Space] for POWER.
+echo "    "Use [Enter] for AUX button, [Space] for POWER.
+echo "    "Append \'-usbdevice keyboard\' to attach a standard keyboard.
 echo

Modified: trunk/src/host/qemu-neo1973/qemu-doc.texi
===================================================================
--- trunk/src/host/qemu-neo1973/qemu-doc.texi   2007-06-19 13:16:05 UTC (rev 
2303)
+++ trunk/src/host/qemu-neo1973/qemu-doc.texi   2007-06-19 13:57:24 UTC (rev 
2304)
@@ -1362,6 +1362,9 @@
 Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
 above but it can be used with the tslib library because in addition to touch
 coordinates it reports touch pressure.
[EMAIL PROTECTED] @code{keyboard}
+Standard USB keyboard.  Will override the PS/2 keyboard emulation (if
+present).
 @end table
 
 @node host_usb_devices




--- End Message ---
--- Begin Message ---
Author: mickey
Date: 2007-06-20 05:05:12 +0200 (Wed, 20 Jun 2007)
New Revision: 2305

Added:
   trunk/oe/packages/python/oe-sync
   trunk/oe/packages/python/python-pygtk2/
   trunk/oe/packages/python/python-pygtk2/acinclude.m4
   trunk/oe/packages/python/python-pygtk2/fix-gtkunixprint.patch
   trunk/oe/packages/python/python-pygtk2_2.6.3.bb
Log:
oe: add python-pygtk2, 2.6.3, for usage with gtk+ 2.6.x


Added: trunk/oe/packages/python/oe-sync
===================================================================

Added: trunk/oe/packages/python/python-pygtk2/acinclude.m4
===================================================================
--- trunk/oe/packages/python/python-pygtk2/acinclude.m4 2007-06-19 13:57:24 UTC 
(rev 2304)
+++ trunk/oe/packages/python/python-pygtk2/acinclude.m4 2007-06-20 03:05:12 UTC 
(rev 2305)
@@ -0,0 +1,84 @@
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN(AM_CHECK_PYMOD,
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+        import $1
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  AC_MSG_RESULT(yes)
+  ifelse([$3], [],, [$3
+])dnl
+else
+  AC_MSG_RESULT(no)
+  ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+  PYTHON_INCLUDES="$PYTHON_INCLUDES 
-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
+
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS.  If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\ \ @:>@$1@<:@\   \ @:>@*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $1"
+  AC_MSG_CHECKING([whether [$]CC understands $1])
+  AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+  AC_MSG_RESULT($jh_has_option)
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac])

Added: trunk/oe/packages/python/python-pygtk2/fix-gtkunixprint.patch
===================================================================
--- trunk/oe/packages/python/python-pygtk2/fix-gtkunixprint.patch       
2007-06-19 13:57:24 UTC (rev 2304)
+++ trunk/oe/packages/python/python-pygtk2/fix-gtkunixprint.patch       
2007-06-20 03:05:12 UTC (rev 2305)
@@ -0,0 +1,16 @@
+Index: pygtk-2.10.0/gtk/gtkunixprint.override
+===================================================================
+--- pygtk-2.10.0.orig/gtk/gtkunixprint.override
++++ pygtk-2.10.0/gtk/gtkunixprint.override
+@@ -105,11 +105,7 @@ _wrap_gtk_print_job_get_surface(PyGObjec
+     if (pyg_error_check(&error))
+         return NULL;
+ 
+-#if PYCAIRO_VERSION_HEX >= 0x1010600
+     return PycairoSurface_FromSurface(surface, NULL);
+-#else
+-    return PycairoSurface_FromSurface(surface, NULL, NULL);
+-#endif
+ }
+ %%
+ override gtk_print_job_send kwargs

Added: trunk/oe/packages/python/python-pygtk2_2.6.3.bb
===================================================================
--- trunk/oe/packages/python/python-pygtk2_2.6.3.bb     2007-06-19 13:57:24 UTC 
(rev 2304)
+++ trunk/oe/packages/python/python-pygtk2_2.6.3.bb     2007-06-20 03:05:12 UTC 
(rev 2305)
@@ -0,0 +1,22 @@
+DESCRIPTION = "Python GTK+ Bindings"
+SECTION = "devel/python"
+DEPENDS = "gtk+-2.6.10 libglade"
+RDEPENDS = "python-shell"
+SRCNAME = "pygtk"
+LICENSE = "LGPL"
+PR = "ml0"
+
+SRC_URI = 
"ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.6/${SRCNAME}-${PV}.tar.bz2 \
+           file://acinclude.m4"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit autotools pkgconfig distutils-base
+
+do_configure_prepend() {
+       install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_stage() {
+       autotools_stage_includes
+       install -m 0755 codegen/pygtk-codegen-2.0 ${STAGING_BINDIR_NATIVE}/
+}




--- End Message ---
--- Begin Message ---
Author: mickey
Date: 2007-06-20 05:56:36 +0200 (Wed, 20 Jun 2007)
New Revision: 2306

Added:
   trunk/oe/packages/confuse/oe-sync
   trunk/oe/packages/dfu-util/oe-sync
   trunk/oe/packages/fbgrab/oe-sync
   trunk/oe/packages/gpsd/oe-sync
   trunk/oe/packages/gsm/oe-sync
   trunk/oe/packages/gtkterm/oe-sync
   trunk/oe/packages/libatomic-ops/oe-sync
   trunk/oe/packages/libxosd/oe-sync
   trunk/oe/packages/pulseaudio/oe-sync
   trunk/oe/packages/vte/oe-sync
Log:
mark as sync'ed w/ org.openembedded.dev

Added: trunk/oe/packages/confuse/oe-sync
===================================================================

Added: trunk/oe/packages/dfu-util/oe-sync
===================================================================

Added: trunk/oe/packages/fbgrab/oe-sync
===================================================================

Added: trunk/oe/packages/gpsd/oe-sync
===================================================================

Added: trunk/oe/packages/gsm/oe-sync
===================================================================

Added: trunk/oe/packages/gtkterm/oe-sync
===================================================================

Added: trunk/oe/packages/libatomic-ops/oe-sync
===================================================================

Added: trunk/oe/packages/libxosd/oe-sync
===================================================================

Added: trunk/oe/packages/pulseaudio/oe-sync
===================================================================

Added: trunk/oe/packages/vte/oe-sync
===================================================================




--- End Message ---
--- Begin Message ---
Author: mickey
Date: 2007-06-20 09:57:02 +0200 (Wed, 20 Jun 2007)
New Revision: 2307

Added:
   trunk/oe/packages/flite/
   trunk/oe/packages/flite/flite.inc
   trunk/oe/packages/flite/flite/
   trunk/oe/packages/flite/flite/configure-with-audio.patch
   trunk/oe/packages/flite/flite/fix-read-only-assignments.patch
   trunk/oe/packages/flite/flite/flite-1.2-alsa_support-1.2.diff
   trunk/oe/packages/flite/flite_1.2.bb
   trunk/oe/packages/flite/flite_1.3.bb
Log:
oe: add flite speech synthesizer


Added: trunk/oe/packages/flite/flite/configure-with-audio.patch
===================================================================
--- trunk/oe/packages/flite/flite/configure-with-audio.patch    2007-06-20 
03:56:36 UTC (rev 2306)
+++ trunk/oe/packages/flite/flite/configure-with-audio.patch    2007-06-20 
07:57:02 UTC (rev 2307)
@@ -0,0 +1,20 @@
+*** flite-1.2-release/configure.in~    Tue Feb 18 01:45:45 2003
+--- flite-1.2-release/configure.in     Mon Jul 18 22:01:25 2005
+***************
+*** 144,150 ****
+  dnl
+  AC_ARG_WITH( audio,
+       [  --with-audio          with specific audio support (none linux 
freebsd etc) ],
+!         AUDIODRIVER=$with_audio )
+  
+  if test "x$AUDIODEFS" = x; then
+      case "$AUDIODRIVER" in
+--- 144,151 ----
+  dnl
+  AC_ARG_WITH( audio,
+       [  --with-audio          with specific audio support (none linux 
freebsd etc) ],
+!         [AUDIODRIVER=$with_audio
+!          AUDIODEFS=])
+  
+  if test "x$AUDIODEFS" = x; then
+      case "$AUDIODRIVER" in

Added: trunk/oe/packages/flite/flite/fix-read-only-assignments.patch
===================================================================
--- trunk/oe/packages/flite/flite/fix-read-only-assignments.patch       
2007-06-20 03:56:36 UTC (rev 2306)
+++ trunk/oe/packages/flite/flite/fix-read-only-assignments.patch       
2007-06-20 07:57:02 UTC (rev 2307)
@@ -0,0 +1,16 @@
+diff -urN flite-1.2-release.orig/include/cst_sts.h 
flite-1.2-release/include/cst_sts.h
+--- flite-1.2-release.orig/include/cst_sts.h   2002-12-23 16:55:05.000000000 
+0100
++++ flite-1.2-release/include/cst_sts.h        2004-10-04 21:10:22.000000000 
+0200
+@@ -47,9 +47,9 @@
+ /* else where, this information plus the indexes in the Unit relation */
+ /* allow reconstruction of the signal itself                          */
+ struct cst_sts_struct {
+-    const unsigned short *frame;  
+-    const int size;      /* in samples */
+-    const unsigned char *residual;
++    unsigned short *frame;  
++    int size;      /* in samples */
++    unsigned char *residual;
+ };
+ typedef struct cst_sts_struct cst_sts;
+ 

Added: trunk/oe/packages/flite/flite/flite-1.2-alsa_support-1.2.diff
===================================================================
--- trunk/oe/packages/flite/flite/flite-1.2-alsa_support-1.2.diff       
2007-06-20 03:56:36 UTC (rev 2306)
+++ trunk/oe/packages/flite/flite/flite-1.2-alsa_support-1.2.diff       
2007-06-20 07:57:02 UTC (rev 2307)
@@ -0,0 +1,512 @@
+Index: configure
+===================================================================
+--- configure  (.../flite-1.2-orig)    (revision 10)
++++ configure  (.../release-v1.2)      (revision 10)
+@@ -1415,16 +1415,16 @@
+   echo "$ac_t""no" 1>&6
+ fi
+ 
+-ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'`
+-echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6
+-echo "configure:1421: checking for sys/asoundlib.h" >&5
++ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
++echo "configure:1421: checking for alsa/asoundlib.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+ #line 1426 "configure"
+ #include "confdefs.h"
+-#include <sys/asoundlib.h>
++#include <alsa/asoundlib.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ { (eval echo configure:1431: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+@@ -1445,23 +1445,24 @@
+   echo "$ac_t""yes" 1>&6
+   AUDIODRIVER="alsa"
+              AUDIODEFS=-DCST_AUDIO_ALSA
++                 AUDIOLIBS=`pkg-config --libs alsa`
+ else
+   echo "$ac_t""no" 1>&6
+ fi
+ 
+ ac_safe=`echo "mmsystem.h" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for mmsystem.h""... $ac_c" 1>&6
+-echo "configure:1455: checking for mmsystem.h" >&5
++echo "configure:1456: checking for mmsystem.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+   cat > conftest.$ac_ext <<EOF
+-#line 1460 "configure"
++#line 1461 "configure"
+ #include "confdefs.h"
+ #include <mmsystem.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+   rm -rf conftest*
+Index: include/cst_sts.h
+===================================================================
+--- include/cst_sts.h  (.../flite-1.2-orig)    (revision 10)
++++ include/cst_sts.h  (.../release-v1.2)      (revision 10)
+@@ -47,9 +47,9 @@
+ /* else where, this information plus the indexes in the Unit relation */
+ /* allow reconstruction of the signal itself                          */
+ struct cst_sts_struct {
+-    const unsigned short *frame;  
+-    const int size;      /* in samples */
+-    const unsigned char *residual;
++    unsigned short *frame;  
++    int size;      /* in samples */
++    unsigned char *residual;
+ };
+ typedef struct cst_sts_struct cst_sts;
+ 
+Index: configure.in
+===================================================================
+--- configure.in       (.../flite-1.2-orig)    (revision 10)
++++ configure.in       (.../release-v1.2)      (revision 10)
+@@ -131,9 +131,10 @@
+ AC_CHECK_HEADER(sys/audioio.h,
+               [AUDIODRIVER="sun"
+                AUDIODEFS=-DCST_AUDIO_SUNOS])
+-AC_CHECK_HEADER(sys/asoundlib.h,
++AC_CHECK_HEADER(alsa/asoundlib.h,
+               [AUDIODRIVER="alsa"
+-             AUDIODEFS=-DCST_AUDIO_ALSA])
++             AUDIODEFS=-DCST_AUDIO_ALSA
++                 AUDIOLIBS=`pkg-config --libs alsa`])
+ AC_CHECK_HEADER(mmsystem.h,
+             [AUDIODRIVER="wince"
+              AUDIODEFS=-DCST_AUDIO_WINCE
+Index: src/audio/au_alsa.c
+===================================================================
+--- src/audio/au_alsa.c        (.../flite-1.2-orig)    (revision 10)
++++ src/audio/au_alsa.c        (.../release-v1.2)      (revision 10)
+@@ -2,7 +2,7 @@
+ /*                                                                       */
+ /*                  Language Technologies Institute                      */
+ /*                     Carnegie Mellon University                        */
+-/*                        Copyright (c) 2001                             */
++/*                        Copyright (c) 2000                             */
+ /*                        All Rights Reserved.                           */
+ /*                                                                       */
+ /*  Permission is hereby granted, free of charge, to use and distribute  */
+@@ -29,158 +29,283 @@
+ /*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       */
+ /*  THIS SOFTWARE.                                                       */
+ /*                                                                       */
++/*********************************************************************** */
++/*             Author:  Lukas Loehrer (                                  */
++/*               Date:  January 2005                                     */
+ /*************************************************************************/
+-/*             Author:  Geoff Harrison ([EMAIL PROTECTED])           */
+-/*               Date:  Sepetember 2001                                  */
+-/*************************************************************************/
+ /*                                                                       */
+-/*  Access to ALSA audio devices                                          */
+-/*                                                                       */
++/*  Native access to alsa audio devices on Linux                         */
++/*  Tested with libasound version 1.0.10                                 */
+ /*************************************************************************/
+ 
+-#include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/types.h>
++#include <assert.h>
++#include <errno.h>
++
+ #include "cst_string.h"
+ #include "cst_wave.h"
+ #include "cst_audio.h"
+ 
+-#include <sys/asoundlib.h>
++#include <alsa/asoundlib.h>
+ 
+-#include <sys/stat.h>
+-#include <fcntl.h>
+ 
+-static int alsa_card = 0, alsa_device = 0;
++/*static char *pcm_dev_name = "hw:0,0"; */
++static char *pcm_dev_name ="default";
+ 
++static inline void print_pcm_state(snd_pcm_t *handle, char *msg)
++{
++  fprintf(stderr, "PCM state at %s = %s\n", msg,
++                snd_pcm_state_name(snd_pcm_state(handle)));
++}
++
+ cst_audiodev *audio_open_alsa(int sps, int channels, cst_audiofmt fmt)
+ {
+-    snd_pcm_channel_info_t pinfo;
+-    snd_pcm_channel_params_t params;
+-    snd_pcm_channel_setup_t setup;
+-    snd_pcm_t *pcm;
+-    cst_audiodev *ad;
+-    int err;
++  cst_audiodev *ad;
++  unsigned    int real_rate;
++  int err;
+ 
+-#ifdef __QNXNTO__
+-    if 
(snd_pcm_open_preferred(&pcm,&alsa_card,&alsa_device,SND_PCM_OPEN_PLAYBACK) < 0)
+-    {
+-      cst_errmsg("alsa_audio: failed to open audio device\n");
+-      cst_error();
+-    }
+-    if (snd_pcm_plugin_set_disable(pcm,PLUGIN_DISABLE_MMAP) < 0)
+-    {
+-      cst_errmsg("alsa_audio: failed to disable mmap\n");
+-      snd_pcm_close(pcm);
+-      cst_error();
+-    }
+-#else
+-    if (snd_pcm_open(&pcm,alsa_card,alsa_device,SND_PCM_OPEN_PLAYBACK) < 0)
+-    {
+-      cst_errmsg("alsa_audio: failed to open audio device\n");
+-      cst_error();
+-    }
+-#endif
++  /* alsa specific stuff */
++  snd_pcm_t *pcm_handle;          
++  snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
++  snd_pcm_hw_params_t *hwparams;
++  snd_pcm_format_t format;
++  snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED;
+ 
++  /* Allocate the snd_pcm_hw_params_t structure on the stack. */
++  snd_pcm_hw_params_alloca(&hwparams);
+ 
+-    memset(&pinfo, 0, sizeof(pinfo));
+-    memset(&params, 0, sizeof(params));
+-    memset(&setup, 0, sizeof(setup));
++  /* Open pcm device */
++  err = snd_pcm_open(&pcm_handle, pcm_dev_name, stream, 0);
++  if (err < 0) 
++  {
++      cst_errmsg("audio_open_alsa: failed to open audio device %s. %s\n",
++                         pcm_dev_name, snd_strerror(err));
++      return NULL;
++  }
+ 
+-    pinfo.channel = SND_PCM_CHANNEL_PLAYBACK;
+-    snd_pcm_plugin_info(pcm,&pinfo);
++  /* Init hwparams with full configuration space */
++  err = snd_pcm_hw_params_any(pcm_handle, hwparams);
++  if (err < 0) 
++  {
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to get hardware parameters from 
audio device. %s\n", snd_strerror(err));
++      return NULL;
++  }
+ 
+-    params.mode = SND_PCM_MODE_BLOCK;
+-    params.channel = SND_PCM_CHANNEL_PLAYBACK;
+-    params.start_mode = SND_PCM_START_DATA;
+-    params.stop_mode = SND_PCM_STOP_STOP;
++  /* Set access mode */
++  err = snd_pcm_hw_params_set_access(pcm_handle, hwparams, access);
++  if (err < 0) 
++  {
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to set access mode. %s.\n", 
snd_strerror(err));
++      return NULL;
++  }
+ 
+-    params.buf.block.frag_size = pinfo.max_fragment_size;
+-    params.buf.block.frags_max = 1;
+-    params.buf.block.frags_min = 1;
+-    
+-    params.format.interleave = 1;
+-    params.format.rate = sps;
+-    params.format.voices = channels;
+-
+-    switch (fmt)
+-    {
+-    case CST_AUDIO_LINEAR16:
++  /* Determine matching alsa sample format */
++  /* This could be implemented in a more */
++  /* flexible way (byte order conversion). */
++  switch (fmt)
++  {
++  case CST_AUDIO_LINEAR16:
+       if (CST_LITTLE_ENDIAN)
+-          params.format.format = SND_PCM_SFMT_S16_LE;
++        format = SND_PCM_FORMAT_S16_LE;
+       else
+-          params.format.format = SND_PCM_SFMT_S16_BE;
++        format = SND_PCM_FORMAT_S16_BE;
+       break;
+-    case CST_AUDIO_LINEAR8:
+-      params.format.format = SND_PCM_SFMT_U8;
++  case CST_AUDIO_LINEAR8:
++      format = SND_PCM_FORMAT_U8;
+       break;
+-    case CST_AUDIO_MULAW:
+-      params.format.format = SND_PCM_SFMT_MU_LAW;
++  case CST_AUDIO_MULAW:
++      format = SND_PCM_FORMAT_MU_LAW;
+       break;
+-    }
++  default:
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to find suitable format.\n");
++      return NULL;
++      break;
++  }
+ 
+-    if((err = snd_pcm_plugin_params(pcm,&params)) < 0)
+-    {
+-      cst_errmsg("alsa_audio params setting failed: %s\n",snd_strerror(err));
+-      snd_pcm_close(pcm);     
+-      cst_error();
+-    }
+-    if((err = snd_pcm_plugin_setup(pcm,SND_PCM_CHANNEL_PLAYBACK)) > 0) {
+-      cst_errmsg("alsa_audio sound prepare setting failed: 
%s\n",snd_strerror(err));
+-      snd_pcm_close(pcm);
+-      cst_error();
+-    }
+-    if((err = snd_pcm_plugin_prepare(pcm,SND_PCM_CHANNEL_PLAYBACK)) > 0) {
+-      cst_errmsg("alsa_audio sound prepare setting failed: 
%s\n",snd_strerror(err));
+-      snd_pcm_close(pcm);
+-      cst_error();
+-    }
++  /* Set samble format */
++  err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format);
++  if (err <0) 
++  {
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to set format. %s.\n", 
snd_strerror(err));
++      return NULL;
++  }
+ 
+-    pinfo.channel = SND_PCM_CHANNEL_PLAYBACK;
+-    snd_pcm_plugin_info(pcm,&pinfo);
++  /* Set sample rate near the disired rate */
++  real_rate = sps;
++  err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &real_rate, 0);
++  if (err < 0)   
++  {
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to set sample rate near %d. %s.\n", 
sps, snd_strerror(err));
++      return NULL;
++  }
++  /*FIXME:  This is probably too strict */
++  assert(sps == real_rate);
+ 
+-    ad = cst_alloc(cst_audiodev, 1);
+-    ad->platform_data = pcm;
+-    ad->sps = ad->real_sps = sps;
+-    ad->channels = ad->real_channels = channels;
+-    ad->fmt = ad->real_fmt = fmt;
++  /* Set number of channels */
++  assert(channels >0);
++  err = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, channels);
++  if (err < 0) 
++  {
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to set number of channels to %d. 
%s.\n", channels, snd_strerror(err));
++      return NULL;
++  }
+ 
+-    return ad;
++  /* Commit hardware parameters */
++  err = snd_pcm_hw_params(pcm_handle, hwparams);
++  if (err < 0) 
++  {
++      snd_pcm_close(pcm_handle);
++      cst_errmsg("audio_open_alsa: failed to set hw parameters. %s.\n", 
snd_strerror(err));
++      return NULL;
++  }
++
++  /* Make sure the device is ready to accept data */
++  assert(snd_pcm_state(pcm_handle) == SND_PCM_STATE_PREPARED);
++
++  /* Write hardware parameters to flite audio device data structure */
++  ad = cst_alloc(cst_audiodev, 1);
++  assert(ad != NULL);
++  ad->real_sps = ad->sps = sps;
++  ad->real_channels = ad->channels = channels;
++  ad->real_fmt = ad->fmt = fmt;
++  ad->platform_data = (void *) pcm_handle;
++
++  return ad;
+ }
+ 
+ int audio_close_alsa(cst_audiodev *ad)
+ {
+-    snd_pcm_t *pcm;
++  int result;
++  snd_pcm_t *pcm_handle;
+ 
+-    if (ad == NULL)
+-          return 0;
++  if (ad == NULL)
++      return 0;
+ 
+-    pcm = ad->platform_data;
+-    snd_pcm_plugin_flush(pcm,0);
+-    snd_pcm_close(pcm);
+-    cst_free(ad);
++  pcm_handle = (snd_pcm_t *) ad->platform_data;
++  result = snd_pcm_close(pcm_handle);
++  if (result < 0)
++  {
++      cst_errmsg("audio_close_alsa: Error: %s.\n", snd_strerror(result));
++  }
++  cst_free(ad);
++  return result;
++}
+ 
+-    return 0;
++/* Returns zero if recovery was successful. */
++static int recover_from_error(snd_pcm_t *pcm_handle, ssize_t res)
++{
++  if (res == -EPIPE) /* xrun */
++  {
++      res = snd_pcm_prepare(pcm_handle);
++      if (res < 0) 
++      {
++        /* Failed to recover from xrun */
++        cst_errmsg("recover_from_write_error: failed to recover from xrun. 
%s\n.", snd_strerror(res));
++        return res;
++      }
++  } 
++  else if (res == -ESTRPIPE) /* Suspend */
++  {
++      while ((res = snd_pcm_resume(pcm_handle)) == -EAGAIN) 
++      {
++        snd_pcm_wait(pcm_handle, 1000);
++      }
++      if (res < 0) 
++      {
++        res = snd_pcm_prepare(pcm_handle);
++        if (res <0) 
++        {
++              /* Resume failed */
++              cst_errmsg("audio_recover_from_write_error: failed to resume 
after suspend. %s\n.", snd_strerror(res));
++              return res;
++        }
++      }
++  } 
++  else if (res < 0) 
++  {
++      /* Unknown failure */
++      cst_errmsg("audio_recover_from_write_error: %s.\n", snd_strerror(res));
++      return res;
++  }
++  return 0;
+ }
+ 
+ int audio_write_alsa(cst_audiodev *ad, void *samples, int num_bytes)
+ {
+-    snd_pcm_t *pcm = ad->platform_data;
++  size_t frame_size;
++  ssize_t num_frames, res;
++  snd_pcm_t *pcm_handle;
++  char *buf = (char *) samples;
+ 
+-    return snd_pcm_plugin_write(pcm,samples,num_bytes);
++  /* Determine frame size in bytes */
++  frame_size  = audio_bps(ad->real_fmt) * ad->real_channels;
++  /* Require that only complete frames are handed in */
++  assert((num_bytes % frame_size) == 0);
++  num_frames = num_bytes / frame_size;
++  pcm_handle = (snd_pcm_t *) ad->platform_data;
++
++  while (num_frames > 0) 
++  {
++      res = snd_pcm_writei(pcm_handle, buf, num_frames);
++      if (res != num_frames) 
++      {
++        if (res == -EAGAIN || (res > 0 && res < num_frames)) 
++        {
++              snd_pcm_wait(pcm_handle, 100);
++        }
++        else if (recover_from_error(pcm_handle, res) < 0) 
++        {
++              return -1;
++        }
++      }
++
++      if (res >0) 
++      {
++        num_frames -= res;
++        buf += res * frame_size;
++      }
++  }
++  return num_bytes;
+ }
+ 
+ int audio_flush_alsa(cst_audiodev *ad)
+ {
+-    snd_pcm_t *pcm = ad->platform_data;
+-
+-    return snd_pcm_plugin_flush(pcm,0);
++  int result;
++  result = snd_pcm_drain((snd_pcm_t *) ad->platform_data);
++  if (result < 0)
++  {
++      cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++  }
++      /* Prepare device for more data */
++  result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++  {
++      cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
++  }
++  return result;
+ }
+ 
+ int audio_drain_alsa(cst_audiodev *ad)
+ {
+-    snd_pcm_t *pcm = ad->platform_data;
+-
+-    return snd_pcm_plugin_playback_drain(pcm);
++  int result;
++  result = snd_pcm_drop((snd_pcm_t *) ad->platform_data);
++  if (result < 0)
++  {
++      cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++  }
++/* Prepare device for more data */
++  result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
++if (result < 0)
++  {
++      cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
++  }
++  return result;
+ }
+-
+Index: doc/Makefile
+===================================================================
+--- doc/Makefile       (.../flite-1.2-orig)    (revision 10)
++++ doc/Makefile       (.../release-v1.2)      (revision 10)
+@@ -53,6 +53,7 @@
+       @ if [ ! -d html ] ; \
+           then mkdir -p html ; fi
+       (cd html; texi2html -number -split_chapter ../flite.texi)
++      mv html/flite/*.html html/ && rmdir html/flite
+       @ for i in html/*.html ; \
+         do \
+           sed 's/<BODY>/<BODY bgcolor="#ffffff">/' $$i >ttt.html; \
+Index: config/common_make_rules
+===================================================================
+--- config/common_make_rules   (.../flite-1.2-orig)    (revision 10)
++++ config/common_make_rules   (.../release-v1.2)      (revision 10)
+@@ -88,7 +88,7 @@
+       @ rm -rf shared_os && mkdir shared_os
+       @ rm -f $@ $(LIBDIR)/[EMAIL PROTECTED] $(LIBDIR)/[EMAIL PROTECTED] 
+       @ (cd shared_os && ar x ../$<)
+-      @ (cd shared_os && $(CC) -shared -Wl,-soname,[EMAIL PROTECTED] -o 
../[EMAIL PROTECTED] *.os)
++      @ (cd shared_os && $(CC) -shared -Wl,-soname,[EMAIL PROTECTED] -o 
../[EMAIL PROTECTED] *.os $(AUDIOLIBS))
+       @ ln -s $(LIBDIR)/[EMAIL PROTECTED] $(LIBDIR)/[EMAIL PROTECTED]
+       @ ln -s $(LIBDIR)/[EMAIL PROTECTED] $(LIBDIR)/$@
+       @ rm -rf shared_os

Added: trunk/oe/packages/flite/flite.inc
===================================================================
--- trunk/oe/packages/flite/flite.inc   2007-06-20 03:56:36 UTC (rev 2306)
+++ trunk/oe/packages/flite/flite.inc   2007-06-20 07:57:02 UTC (rev 2307)
@@ -0,0 +1,40 @@
+DESCRIPTION = "flite - the festival light speech synthesizer"
+PRIORITY = "optional"
+HOMEPAGE = "http://fife.speech.cs.cmu.edu/flite/";
+SECTION = "console/utils"
+LICENSE = "flite"
+
+PARALLEL_MAKE = ""
+
+SRC_URI = 
"http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.gz
 \
+           file://configure-with-audio.patch;patch=1"
+S = "${WORKDIR}/flite-${PV}-release"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-audio=oss --enable-shared"
+
+do_stage () {
+    install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/
+    oe_libinstall -C lib -a -so libflite ${STAGING_LIBDIR}
+    oe_libinstall -C lib -a -so libflite_cmu_time_awb ${STAGING_LIBDIR}
+    oe_libinstall -C lib -a -so libflite_cmulex ${STAGING_LIBDIR}
+    oe_libinstall -C lib -a -so libflite_usenglish ${STAGING_LIBDIR}
+    oe_libinstall -C lib -a -so libflite_cmu_us_kal ${STAGING_LIBDIR}
+    oe_libinstall -C lib -a -so libflite_cmu_us_kal16 ${STAGING_LIBDIR}
+}
+
+do_install() {
+    oe_runmake INSTALLBINDIR="${D}${bindir}" INSTALLLIBDIR="${D}${libdir}" 
INSTALLINCDIR="${D}${includedir}" install
+}
+
+PACKAGES += "${PN}-bin ${PN}-vox8 ${PN}-vox16"
+FILES_${PN}-bin = "${bindir}"
+FILES_${PN} ="${libdir}/libflite.so.* \
+              ${libdir}/libflite_cmu_time_awb.so.* \
+              ${libdir}/libflite_cmulex.so.* \
+              ${libdir}/libflite_usenglish.so.*"
+FILES_${PN}-vox8 = "${libdir}/libflite_cmu_us_kal.so.*"
+FILES_${PN}-vox16 = "${libdir}/libflite_cmu_us_kal16.so.*"
+LEAD_SONAME = "libflite.so"
+

Added: trunk/oe/packages/flite/flite_1.2.bb
===================================================================
--- trunk/oe/packages/flite/flite_1.2.bb        2007-06-20 03:56:36 UTC (rev 
2306)
+++ trunk/oe/packages/flite/flite_1.2.bb        2007-06-20 07:57:02 UTC (rev 
2307)
@@ -0,0 +1,5 @@
+require flite.inc
+SRC_URI += "file://flite-1.2-alsa_support-1.2.diff;patch=1;pnum=0"
+
+PR = "r4"
+

Added: trunk/oe/packages/flite/flite_1.3.bb
===================================================================
--- trunk/oe/packages/flite/flite_1.3.bb        2007-06-20 03:56:36 UTC (rev 
2306)
+++ trunk/oe/packages/flite/flite_1.3.bb        2007-06-20 07:57:02 UTC (rev 
2307)
@@ -0,0 +1,7 @@
+require flite.inc
+
+SRC_URI += 
"http://homepage.hispeed.ch/loehrer/downloads/flite-1.3-alsa_support-1.2.diff.bz2;patch=1;pnum=0";
+
+PR� = "r1"
+
+# FIXME: The flite application is still being statically linked against 
libflite




--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog

Reply via email to