[meta-ti] [PATCH 1/2] gstreamer-ti: remove outdated component

Denys Dmytriyenko denys at ti.com
Fri Jun 23 11:14:16 PDT 2017


gstreamer-ti hasn't been updated in years. All the modern gstreamer plugins
and bindings for TI platforms now reside in meta-arago-extras layer.

Signed-off-by: Denys Dmytriyenko <denys at ti.com>
---
 recipes-ti/gstreamer-ti/gstreamer-ti.inc           |  165 ---
 .../gstreamer-ti/0001-add-omapdmaifbsink.patch     | 1336 --------------------
 ...ting-the-display-framerate-directly-when-.patch |   86 --
 ...04-Cosmetic-cleanup-clarify-some-comments.patch |   73 --
 ...e-setting-the-framerate-directly-on-DM365.patch |   33 -
 ...06-Remove-the-repeat_with_refresh-feature.patch |  132 --
 ...-for-pad-allocated-buffers-in-TIDmaiVideo.patch |  313 -----
 ...rt-for-pad-allocated-buffers-in-TIViddec2.patch |  302 -----
 .../0009-dmaisink-compilation-fix.patch            |   26 -
 ...te-dm365-cfg-to-work-with-platinum-codecs.patch |   26 -
 ...p3530_dv400-platform-support-with-omap353.patch |  119 --
 .../gstreamer-ti/gstreamer-ti/dm355-evm/gst-ti.sh  |   12 -
 .../gstreamer-ti/dm365-evm/loadmodules.sh          |   37 -
 .../gstreamer-ti/gstreamer-ti/gstreamer-ti-rc.sh   |   28 -
 .../gstreamer-ti/gstreamer-ti/gstti-init.service   |   10 -
 .../gstreamer-ti/gstreamer-ti/omap3/loadmodules.sh |   22 -
 .../gstreamer-ti/omapl137/loadmodules.sh           |   12 -
 .../omapl138/da850-omapl138-evm/loadmodules.sh     |   16 -
 .../gstreamer-ti/omapl138/loadmodules.sh           |   15 -
 .../gstreamer-ti/r962-remove-include-videodev.diff |   22 -
 recipes-ti/gstreamer-ti/gstreamer-ti_svn.bb        |   26 -
 21 files changed, 2811 deletions(-)
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti.inc
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0001-add-omapdmaifbsink.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0003-Support-setting-the-display-framerate-directly-when-.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0004-Cosmetic-cleanup-clarify-some-comments.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0005-Enable-setting-the-framerate-directly-on-DM365.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0006-Remove-the-repeat_with_refresh-feature.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0007-Add-support-for-pad-allocated-buffers-in-TIDmaiVideo.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0008-Add-support-for-pad-allocated-buffers-in-TIViddec2.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0009-dmaisink-compilation-fix.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0009-update-dm365-cfg-to-work-with-platinum-codecs.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/0010-replace-omap3530_dv400-platform-support-with-omap353.patch
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/dm355-evm/gst-ti.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/dm365-evm/loadmodules.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/gstreamer-ti-rc.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/gstti-init.service
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/omap3/loadmodules.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/omapl137/loadmodules.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/da850-omapl138-evm/loadmodules.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/loadmodules.sh
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti/r962-remove-include-videodev.diff
 delete mode 100644 recipes-ti/gstreamer-ti/gstreamer-ti_svn.bb

diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti.inc b/recipes-ti/gstreamer-ti/gstreamer-ti.inc
deleted file mode 100644
index e0e65a7..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti.inc
+++ /dev/null
@@ -1,165 +0,0 @@
-DESCRIPTION = "GSTREAMER Plugin (gstreamer-ti) for TI ARM/DSP processors"
-HOMEPAGE = "https://gforge.ti.com/gf/project/gstreamer_ti/"
-SECTION = "multimedia"
-LICENSE = "LGPL"
-
-# TODO :: Replace omapl137 with official support in GST (currently linking to omapl138)
-# TODO :: Codec Server Environment Variables shouldn't be required
-# TODO :: Add (and check) rc scripts for all targets (just copied for now) (365,6467,omapl137)
-# TODO :: Check if CPPFLAGS_append is still required
-# TODO :: Remove ENCODE/DECODE combo exports - these are not used anymore (check?)
-
-inherit autotools-brokensep
-inherit update-rc.d
-require recipes-ti/includes/ti-paths.inc
-require recipes-ti/includes/ti-staging.inc
-
-# Rebuild on kernel change since it links statically to ti-dmai, ti-codec-engine, etc
-PR = "r85+${MACHINE_KERNEL_PR}"
-
-DEPENDS = "ti-dmai gstreamer gst-plugins-base"
-
-# enable c6accel elements on omapl138 and omap3
-#DEPENDS_append_omapl138 = " ti-c6accel "
-#EXTRA_OECONF_omapl138 = "--enable-c6accel"
-#DEPENDS_append_omap3 = " ti-c6accel "
-#EXTRA_OECONF_omap3 = "--enable-c6accel"
-export C6ACCEL_INSTALL_DIR
-
-# gstreamer_ti picks up some config variables from the environment
-# - variables are used in the gstreamer makefile
-#   - PLATFORM, XDC_PLATFORM, XDC_TARGET, MVTOOL_DIR  
-# - others used by config.bld (which it gets from the dmai config.bld)
-#   - CROSS_COMPILE, PLATFORM_XDC
-
-PLATFORM_dm6446        = "dm6446"
-PLATFORM_dm6467        = "dm6467"
-PLATFORM_dm6467t       = "dm6467t"
-PLATFORM_omap3         = "omap3530"
-PLATFORM_dm355         = "dm355"
-PLATFORM_dm365         = "dm365"
-PLATFORM_omapl137      = "omapl137"
-PLATFORM_omapl138      = "omapl138"
-PLATFORM              ?= "UNDEFINED_PLATFORM"
-GST_TI_PLATFORM = "${PLATFORM}"
-
-XDC_PLATFORM_dm6446    = "ti.platforms.evmDM6446"
-XDC_PLATFORM_dm6467    = "ti.platforms.evmDM6467"
-XDC_PLATFORM_omap3     = "ti.platforms.evm3530"
-XDC_PLATFORM_dm355     = "ti.platforms.evmDM355"
-XDC_PLATFORM_dm365     = "ti.platforms.evmDM365"
-XDC_PLATFORM_omapl137  = "ti.platforms.evmOMAPL137"
-XDC_PLATFORM_omapl138  = "ti.platforms.evmOMAPL138"
-XDC_PLATFORM          ?= "UNDEFINED_XDC_PLATFORM"
-
-MEMARGS_omap3         = "99M at 0x80000000"
-MEMARGS              ?= "UNDEFINED_MEM_ARGS"
-
-export MEMARGS
-export PLATFORM
-export GST_TI_PLATFORM
-export XDC_PLATFORM
-export XDC_TARGET      = "gnu.targets.arm.GCArmv5T"
-export PLATFORM_XDC    = "${XDC_PLATFORM}"
-export CSTOOL_DIR      = "${TOOLCHAIN_PATH}"
-export MVTOOL_DIR      = "${TOOLCHAIN_PATH}"
-export MVTOOL_PREFIX   = "${TARGET_PREFIX}"
-export CROSS_COMPILE   = "${TOOLCHAIN_PATH}/${TARGET_PREFIX}"
-export LINK_XDC_ROOT   = "${LINK_INSTALL_DIR}"
-
-# export codec combo (or server) locations
-# Why do we need to do this?? - These will get picked up from CODEC_INSTALL_DIR?
-# Sould only need this if we change from default server
-
-export CODEC_SERVER  = "${installdir}/ti-codecs-server/cs.x64P"
-CPPFLAGS_append = " -DPlatform_${PLATFORM}"
-
-# We are still using encode/decode combo for DM6446
-export ENCODE_COMBO    = "${installdir}/ti-codecs-server/encodeCombo.x64P"
-export DECODE_COMBO    = "${installdir}/ti-codecs-server/decodeCombo.x64P"
-# Makefile also expects to be able to find the kernel headers from the envirionment
-export LINUXKERNEL_INSTALL_DIR = "${STAGING_KERNEL_DIR}"
-
-do_configure_prepend() {
-	# PSP kernel is based on older DSS. we need to replace linux/omapfb.h with mach/omapfb.h
-	if ! [ -e ${STAGING_KERNEL_DIR}/include/linux/omapfb.h ] ; then
-		sed -i -e s:linux/omapfb:mach/omapfb:g ${S}/src/omapfb.h || true
-	fi
-
-	# Angstrom 2008 breaks with -Wl,-T, while angstrom 2010 needs it
-	if [ $(${TARGET_PREFIX}gcc -dumpversion | awk -F. '{print $2}') -gt 3 ] ; then
-		# Fix up linkerscripts, recent toolchains need -T to prepend the default script to the custom one 
-		for makefile in $(find ${S} -name "Makefile.am") ; do
-			sed -i -e 's:-Wl,$(XDC_CONFIG_BASENAME)/linker.cmd:-Wl,-T,$(XDC_CONFIG_BASENAME)/linker.cmd:g' $makefile
-		done
-	fi
-}
-
-do_compile() {
-	# Recent kernel headers warn against inclusion from userspace
-	for makefile in $(find ${S} -name "Makefile") ; do
-		sed -i -e s:-Werror::g $makefile
-	done
-
-    oe_runmake
-}
-
-do_install_prepend () {
-
-    install -d ${D}/${installdir}/gst/${PLATFORM}
-
-    # copy gstreamer demo scripts
-    cp -R ${WORKDIR}/gstreamer_ti/gstreamer_demo/shared ${D}/${installdir}/gst
-
-    # If we have loadmodules.sh in WORKDIR then give preference to this over
-    # the default gst-ti loadmdules.sh
-    if [ -f ${WORKDIR}/loadmodules.sh ]; then
-       cp ${WORKDIR}/loadmodules.sh ${D}/${installdir}/gst/${PLATFORM}
-    else
-       cp -R ${WORKDIR}/gstreamer_ti/gstreamer_demo/${PLATFORM} ${D}/${installdir}/gst
-    fi   
-
-    # delete .svn files
-    find ${D}/${installdir}/gst -name .svn -type d | xargs rm -rf
-    chmod 0755 ${D}/${installdir}/gst -R
-
-    install -d ${D}${sysconfdir}/init.d/
-    install -m 0755  ${WORKDIR}/gstreamer-ti-rc.sh ${D}${sysconfdir}/init.d/gstti-init
-    sed -i -e 's|<platform>|${PLATFORM}|g' ${D}${sysconfdir}/init.d/gstti-init
-
-	install -d ${D}${base_libdir}/systemd/system
-	install -m 0644 ${WORKDIR}/gstti-init.service ${D}${base_libdir}/systemd/system/
-	sed -i -e 's|<platform>|${PLATFORM}|g' -e 's|MEMARGS|${MEMARGS}|' ${D}${base_libdir}/systemd/system/gstti-init.service
-}
-
-RRECOMMENDS_${PN}_append_dm6446    += "ti-codecs-dm6446-server   ti-cmem-module ti-dsplink-module"
-RRECOMMENDS_${PN}_append_dm6467    += "ti-codecs-dm6467          ti-cmem-module ti-dsplink-module"
-RRECOMMENDS_${PN}_append_omap3     += "ti-codecs-omap3530-server ti-cmem-module ti-dsplink-module ti-lpm-module ti-sdma-module"
-RRECOMMENDS_${PN}_append_dm355     += "ti-codecs-dm355           ti-cmem-module ti-dm355mm-module"
-RRECOMMENDS_${PN}_append_dm365     += "ti-codecs-dm365           ti-cmem-module ti-dm365mm-module ti-edma-module ti-irq-module"
-RRECOMMENDS_${PN}_append_omapl137  += "ti-codecs-omapl137-server ti-cmem-module ti-dsplink-module"
-RRECOMMENDS_${PN}_append_omapl138  += "ti-codecs-omapl138-server ti-cmem-module ti-dsplink-module"
-
-FILES_${PN}     += "${libdir}/gstreamer-0.10/*.so ${sysconfdir} ${installdir} ${base_libdir}/systemd"
-FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/*.a"
-FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
-
-pkg_postinst_${PN} () {
-if test "x$D" != "x"; then
-	echo "Can't run gstreamer-ti postinst offline"
-    exit 1
-fi
-	if [ -e ${base_bindir}/systemctl ] ; then
-		systemctl enable gstti-init.service
-	fi
-
-	if [ -d ${installdir}/ti-codecs-server/ ]; then
-        ln -sf ${installdir}/ti-codecs-server/* ${installdir}/gst/${PLATFORM}/
-	fi
-}
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-INITSCRIPT_NAME = "gstti-init"
-INITSCRIPT_PARAMS = "start 30 5 2 . stop 40 0 1 6 ."
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0001-add-omapdmaifbsink.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0001-add-omapdmaifbsink.patch
deleted file mode 100644
index bcf0d90..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0001-add-omapdmaifbsink.patch
+++ /dev/null
@@ -1,1336 +0,0 @@
-diff -uNr ticodecplugin/configure.ac ticodecplugin.new/configure.ac
---- ticodecplugin/configure.ac	2010-08-24 15:08:58.609410984 -0500
-+++ ticodecplugin.new/configure.ac	2010-09-03 13:54:11.909410298 -0500
-@@ -25,6 +25,7 @@
- AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
- 
- AM_CONFIG_HEADER(config.h)
-+AM_PROG_AS
- 
- dnl check for tools
- AC_PROG_CC
-diff -uNr ticodecplugin/src/gstticodecplugin.c ticodecplugin.new/src/gstticodecplugin.c
---- ticodecplugin/src/gstticodecplugin.c	2010-08-24 15:08:58.609410984 -0500
-+++ ticodecplugin.new/src/gstticodecplugin.c	2010-09-03 13:54:11.929409696 -0500
-@@ -42,6 +42,7 @@
- #include "gsttiaudenc1.h"
- #include "gsttividresize.h"
- #include "gsttidmaiperf.h"
-+#include "omapfb.h"
- 
- #ifdef HAVE_C6ACCEL
-     #include "gsttic6xcolorspace.h"
-@@ -134,6 +135,13 @@
-         return FALSE;
- #endif
- 
-+    env_value = getenv("GST_omapdmaifbsink_DISABLE");
-+
-+    if ((!env_value || strcmp(env_value,"1")) && !gst_element_register(
-+        TICodecPlugin, "omapdmaifbsink", GST_RANK_PRIMARY,
-+        GST_OMAPFB_SINK_TYPE))
-+        return FALSE;
-+
-     return TRUE;
- }
- 
-diff -uNr ticodecplugin/src/Makefile.am ticodecplugin.new/src/Makefile.am
---- ticodecplugin/src/Makefile.am	2010-08-24 22:01:30.989165985 -0500
-+++ ticodecplugin.new/src/Makefile.am	2010-09-03 13:53:41.037663172 -0500
-@@ -12,16 +12,16 @@
- 
- 
- # sources used to compile this plug-in
--libgstticodecplugin_la_SOURCES = gstticodecplugin.c gsttiauddec1.c gsttividdec2.c gsttiimgenc1.c gsttiimgdec1.c gsttidmaibuffertransport.c gsttidmaibuftab.c gstticircbuffer.c gsttidmaivideosink.c gstticodecs.c gstticodecs_platform.c  gsttiquicktime_aac.c gsttiquicktime_h264.c gsttividenc1.c gsttiaudenc1.c gstticommonutils.c gsttividresize.c gsttidmaiperf.c gsttiquicktime_mpeg4.c $(C6ACCEL_SRC)
-+libgstticodecplugin_la_SOURCES = gstticodecplugin.c gsttiauddec1.c gsttividdec2.c gsttiimgenc1.c gsttiimgdec1.c gsttidmaibuffertransport.c gsttidmaibuftab.c gstticircbuffer.c gsttidmaivideosink.c gstticodecs.c gstticodecs_platform.c  gsttiquicktime_aac.c gsttiquicktime_h264.c gsttividenc1.c gsttiaudenc1.c gstticommonutils.c gsttividresize.c gsttidmaiperf.c gsttiquicktime_mpeg4.c $(C6ACCEL_SRC) omapfb.c yuv.S
- 
- # flags used to compile this plugin
- # add other _CFLAGS and _LIBS as needed
--libgstticodecplugin_la_CFLAGS  = $(GST_CFLAGS) $(shell cat $(XDC_CONFIG_BASENAME)/compiler.opt)
--libgstticodecplugin_la_LIBADD  = $(GST_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) -lgstvideo-0.10 -lgstaudio-0.10 -lm
-+libgstticodecplugin_la_CFLAGS  = $(GST_CFLAGS) $(shell cat $(XDC_CONFIG_BASENAME)/compiler.opt) -I$(LINUXKERNEL_INSTALL_DIR)/include
-+libgstticodecplugin_la_LIBADD  = $(GST_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) -lgstvideo-0.10 -lgstaudio-0.10 -lm  -lX11
- libgstticodecplugin_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -Wl,$(XDC_CONFIG_BASENAME)/linker.cmd -Wl,$(C6ACCEL_LIB)
- 
- # headers we need but don't want installed
--noinst_HEADERS = gsttiauddec1.h gsttividdec2.h gsttiimgenc1.h gsttiimgdec1.h gsttidmaibuffertransport.h gsttidmaibuftab.h gstticircbuffer.h gsttidmaivideosink.h gsttithreadprops.h gstticodecs.h gsttiquicktime_aac.h gsttiquicktime_h264.h gsttividenc1.h gsttiaudenc1.h gstticommonutils.h gsttividresize.h gsttiquicktime_mpeg4.h $(C6ACCEL_HEAD)
-+noinst_HEADERS = gsttiauddec1.h gsttividdec2.h gsttiimgenc1.h gsttiimgdec1.h gsttidmaibuffertransport.h gsttidmaibuftab.h gstticircbuffer.h gsttidmaivideosink.h gsttithreadprops.h gstticodecs.h gsttiquicktime_aac.h gsttiquicktime_h264.h gsttividenc1.h gsttiaudenc1.h gstticommonutils.h gsttividresize.h gsttiquicktime_mpeg4.h $(C6ACCEL_HEAD) omapfb.h
- 
- # XDC Configuration
- CONFIGURO     = $(XDC_INSTALL_DIR)/xs xdc.tools.configuro
-diff -uNr ticodecplugin/src/omapfb.c ticodecplugin.new/src/omapfb.c
---- ticodecplugin/src/omapfb.c	1969-12-31 18:00:00.000000000 -0600
-+++ ticodecplugin.new/src/omapfb.c	2010-09-03 13:54:11.929409696 -0500
-@@ -0,0 +1,1005 @@
-+/*
-+ * Copyright (C) 2008 Felipe Contreras <felipe.contreras at gmail.com>
-+ * Copyright (C) 2009 Tim Yamin <plasm at roo.me.uk>
-+ * Copyright (C) 2009 Brijesh Singh <brijesh.ksingh at gmail.com>
-+ *  
-+ * X code largely copied from ximagesink by Julien Moutte and
-+ * vo_omapfb.c by Gregoire Gentil.
-+ *
-+ * Use DMAI hw framecopy module to copy the dmai transport buffers.
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation
-+ * version 2.1 of the License.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
-+ */
-+
-+#include <fcntl.h>
-+#include <sys/ioctl.h>
-+#include <sys/mman.h>
-+#include <unistd.h>
-+#include <string.h>
-+#include <sys/types.h>
-+#include <malloc.h>
-+#include <stdlib.h>
-+
-+#include "omapfb.h"
-+#include <gst/interfaces/xoverlay.h>
-+
-+static GstVideoSinkClass *parent_class = NULL;
-+
-+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 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 them */
-+    if(n_children)
-+        XFree(child);
-+}
-+
-+static GstXWindow *
-+gst_omapfbsink_xwindow_new (GstOmapFbSink * omapfbsink, gint width, gint height)
-+{
-+    GstXWindow *xwindow = NULL;
-+    XGCValues values;
-+
-+    if(!omapfbsink->xcontext)
-+        return NULL;
-+
-+    xwindow = g_new0 (GstXWindow, 1);
-+    xwindow->width = width;
-+    xwindow->height = height;
-+    xwindow->internal = TRUE;
-+
-+    g_mutex_lock (omapfbsink->x_lock);
-+    xwindow->win = XCreateSimpleWindow (omapfbsink->xcontext->disp,
-+                    omapfbsink->xcontext->root,
-+                    0, 0, xwindow->width, xwindow->height,
-+                    0, 0, omapfbsink->colorKey);
-+
-+    /* We have to do that to prevent X from redrawing the background on
-+       ConfigureNotify. This takes away flickering of video when resizing. */
-+    XSetWindowBackgroundPixmap (omapfbsink->xcontext->disp, xwindow->win, None);
-+
-+    if (omapfbsink->handle_events) {
-+        Atom wm_delete;
-+
-+    XSelectInput (omapfbsink->xcontext->disp, xwindow->win, ExposureMask |
-+              StructureNotifyMask | PointerMotionMask | KeyPressMask |
-+              KeyReleaseMask | ButtonPressMask | ButtonReleaseMask);
-+
-+    /* Tell the window manager we'd like delete client messages instead of
-+     * being killed */
-+    wm_delete = XInternAtom (omapfbsink->xcontext->disp,
-+                 "WM_DELETE_WINDOW", False);
-+    (void) XSetWMProtocols (omapfbsink->xcontext->disp, xwindow->win,
-+                &wm_delete, 1);
-+    }
-+
-+    xwindow->gc = XCreateGC (omapfbsink->xcontext->disp, xwindow->win,
-+                 0, &values);
-+
-+    XMapRaised (omapfbsink->xcontext->disp, xwindow->win);
-+    XSync (omapfbsink->xcontext->disp, FALSE);
-+
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    gst_x_overlay_got_xwindow_id (GST_X_OVERLAY (omapfbsink), xwindow->win);
-+
-+    return xwindow;
-+}
-+
-+static gboolean gst_omapfbsink_update_plane (GstOmapFbSink *omapfbsink)
-+{
-+    int wx, wy, ww, wh;
-+    if (!omapfbsink->xcontext)
-+    {
-+        if (ioctl (omapfbsink->overlay_fd, OMAPFB_SETUP_PLANE, &omapfbsink->plane_info))
-+            return FALSE;
-+        return TRUE;
-+    }
-+
-+    if (omapfbsink->plane_info.enabled != 1)
-+        return FALSE;
-+
-+    x11_get_window_abs_position(omapfbsink->xcontext->disp,
-+                omapfbsink->xwindow->win, &wx, &wy, &ww, &wh);
-+
-+    if (wx != omapfbsink->xwindow->wx || wy != omapfbsink->xwindow->wy ||
-+    wh != omapfbsink->xwindow->height || ww != omapfbsink->xwindow->width) {
-+        omapfbsink->plane_info.out_width = omapfbsink->xwindow->width = ww;
-+    omapfbsink->plane_info.out_height = omapfbsink->xwindow->height = wh;
-+        omapfbsink->plane_info.pos_x = omapfbsink->xwindow->wx = wx;
-+        omapfbsink->plane_info.pos_y = omapfbsink->xwindow->wy = wy;
-+
-+        GST_DEBUG_OBJECT(omapfbsink, "updating geometry to: (%d,%d) %dx%d", wx, wy, ww, wh);
-+
-+        XSetForeground (omapfbsink->xcontext->disp, omapfbsink->xwindow->gc, omapfbsink->colorKey);
-+        XFillRectangle (omapfbsink->xcontext->disp, omapfbsink->xwindow->win, omapfbsink->xwindow->gc, 0, 0, ww, wh);
-+
-+        if (ioctl (omapfbsink->overlay_fd, OMAPFB_SETUP_PLANE, &omapfbsink->plane_info))
-+      return FALSE;
-+    }
-+
-+    return TRUE;
-+}
-+
-+static void
-+gst_omapfbsink_expose (GstXOverlay * overlay)
-+{
-+    gst_omapfbsink_update_plane(GST_OMAPFB_SINK (overlay));
-+}
-+
-+static void
-+gst_omapfbsink_xwindow_destroy (GstOmapFbSink * omapfbsink,
-+    GstXWindow * xwindow)
-+{
-+    g_return_if_fail (xwindow != NULL);
-+    g_mutex_lock (omapfbsink->x_lock);
-+
-+    /* If we did not create that window we just free the GC and let it live */
-+    if (xwindow->internal)
-+        XDestroyWindow (omapfbsink->xcontext->disp, xwindow->win);
-+    else
-+        XSelectInput (omapfbsink->xcontext->disp, xwindow->win, 0);
-+
-+    XFreeGC (omapfbsink->xcontext->disp, xwindow->gc);
-+    XSync (omapfbsink->xcontext->disp, FALSE);
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    g_free (xwindow);
-+}
-+
-+/* This function handles XEvents that might be in the queue. It generates
-+   GstEvent that will be sent upstream in the pipeline to handle interactivity
-+   and navigation.*/
-+static void
-+gst_omapfbsink_handle_xevents (GstOmapFbSink * omapfbsink)
-+{
-+    XEvent e;
-+    g_mutex_lock (omapfbsink->flow_lock);
-+    g_mutex_lock (omapfbsink->x_lock);
-+
-+    while (XCheckWindowEvent (omapfbsink->xcontext->disp,
-+           omapfbsink->xwindow->win, ExposureMask | StructureNotifyMask, &e)) {
-+        switch (e.type) {
-+            case Expose:
-+            case ConfigureNotify:
-+                gst_omapfbsink_update_plane (omapfbsink);
-+                break;
-+            default:
-+                break;
-+        }
-+    }
-+
-+    /* Handle Display events */
-+    while (XPending (omapfbsink->xcontext->disp)) {
-+        XNextEvent (omapfbsink->xcontext->disp, &e);
-+
-+        switch (e.type) {
-+            case ClientMessage:{
-+                Atom wm_delete;
-+
-+                wm_delete = XInternAtom (omapfbsink->xcontext->disp,
-+                        "WM_DELETE_WINDOW", False);
-+                if (wm_delete == (Atom) e.xclient.data.l[0]) {
-+                    /* Handle window deletion by posting an error on the bus */
-+                    GST_ELEMENT_ERROR (omapfbsink, RESOURCE, NOT_FOUND,
-+                            ("Output window was closed"), (NULL));
-+
-+                    g_mutex_unlock (omapfbsink->x_lock);
-+                    gst_omapfbsink_xwindow_destroy (omapfbsink, omapfbsink->xwindow);
-+                    omapfbsink->xwindow = NULL;
-+                    g_mutex_lock (omapfbsink->x_lock);
-+                }
-+                break;
-+            }
-+            default:
-+                break;
-+        }
-+    }
-+
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    g_mutex_unlock (omapfbsink->flow_lock);
-+}
-+
-+static gpointer
-+gst_omapfbsink_event_thread (GstOmapFbSink * omapfbsink)
-+{
-+    GST_OBJECT_LOCK (omapfbsink);
-+    while (omapfbsink->running) {
-+        GST_OBJECT_UNLOCK (omapfbsink);
-+
-+    if (omapfbsink->xwindow)
-+      gst_omapfbsink_handle_xevents (omapfbsink);
-+    g_usleep (100000);
-+
-+    GST_OBJECT_LOCK (omapfbsink);
-+    }
-+    GST_OBJECT_UNLOCK (omapfbsink);
-+
-+    return NULL;
-+}
-+
-+/* This function gets the X Display and global info about it. Everything is
-+   stored in our object and will be cleaned when the object is disposed. */
-+static GstXContext *
-+gst_omapfbsink_xcontext_get (GstOmapFbSink * omapfbsink)
-+{
-+    GstXContext *xcontext = g_new0 (GstXContext, 1);
-+    g_mutex_lock (omapfbsink->x_lock);
-+
-+    xcontext->disp = XOpenDisplay (omapfbsink->display_name);
-+
-+    if (!xcontext->disp) {
-+        g_mutex_unlock (omapfbsink->x_lock);
-+    g_free (xcontext);
-+    GST_ELEMENT_WARNING (omapfbsink, RESOURCE, WRITE,
-+                 ("Could not initialise X output"),
-+                 ("Could not open display"));
-+    return NULL;
-+    }
-+
-+    xcontext->screen = DefaultScreenOfDisplay (xcontext->disp);
-+    xcontext->screen_num = DefaultScreen (xcontext->disp);
-+    xcontext->visual = DefaultVisual (xcontext->disp, xcontext->screen_num);
-+    xcontext->root = DefaultRootWindow (xcontext->disp);
-+
-+    xcontext->width = DisplayWidth (xcontext->disp, xcontext->screen_num);
-+    xcontext->height = DisplayHeight (xcontext->disp, xcontext->screen_num);
-+
-+    g_mutex_unlock (omapfbsink->x_lock);
-+
-+    /* Setup our event listening thread */
-+    GST_OBJECT_LOCK (omapfbsink);
-+    omapfbsink->running = TRUE;
-+    omapfbsink->event_thread = g_thread_create (
-+      (GThreadFunc) gst_omapfbsink_event_thread, omapfbsink, TRUE, NULL);
-+    GST_OBJECT_UNLOCK (omapfbsink);
-+
-+    return xcontext;
-+}
-+
-+static void
-+gst_omapfbsink_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
-+{
-+    GstOmapFbSink *omapfbsink = GST_OMAPFB_SINK (overlay);
-+    GstXWindow *xwindow = NULL;
-+    XWindowAttributes attr;
-+
-+    /* If we already use that window, return */
-+    if (omapfbsink->xwindow && (xwindow_id == omapfbsink->xwindow->win))
-+        return;
-+
-+    /* If the element has not initialized the X11 context try to do so */
-+    if (!omapfbsink->xcontext &&
-+    !(omapfbsink->xcontext = gst_omapfbsink_xcontext_get (omapfbsink))) {
-+      g_mutex_unlock (omapfbsink->flow_lock);
-+      return;
-+    }
-+
-+    /* If a window is there already we destroy it */
-+    if (omapfbsink->xwindow) {
-+      gst_omapfbsink_xwindow_destroy (omapfbsink, omapfbsink->xwindow);
-+      omapfbsink->xwindow = NULL;
-+    }
-+
-+    /* If the xid is 0 we go back to an internal window */
-+    if (xwindow_id == 0) {
-+      /* If no width/height caps nego did not happen window will be created
-+     during caps nego then */
-+      if (GST_VIDEO_SINK_WIDTH (omapfbsink) && GST_VIDEO_SINK_HEIGHT (omapfbsink)) {
-+    xwindow = gst_omapfbsink_xwindow_new (omapfbsink,
-+          GST_VIDEO_SINK_WIDTH (omapfbsink),
-+          GST_VIDEO_SINK_HEIGHT (omapfbsink));
-+      }
-+    } else {
-+        xwindow = g_new0 (GstXWindow, 1);
-+    xwindow->wx = xwindow->wy = -1;
-+    xwindow->win = xwindow_id;
-+
-+    /* We get window geometry, set the event we want to receive,
-+       and create a GC */
-+    g_mutex_lock (omapfbsink->x_lock);
-+    XGetWindowAttributes (omapfbsink->xcontext->disp, xwindow->win, &attr);
-+    xwindow->width = attr.width;
-+    xwindow->height = attr.height;
-+    xwindow->internal = FALSE;
-+    if (omapfbsink->handle_events) {
-+        XSelectInput (omapfbsink->xcontext->disp, xwindow->win, ExposureMask |
-+              StructureNotifyMask | PointerMotionMask | KeyPressMask |
-+              KeyReleaseMask);
-+    }
-+
-+        xwindow->gc = XCreateGC (omapfbsink->xcontext->disp, xwindow->win, 0, NULL);
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    }
-+
-+    if (xwindow) {
-+        omapfbsink->xwindow = xwindow;
-+
-+    g_mutex_lock (omapfbsink->x_lock);
-+    gst_omapfbsink_update_plane(omapfbsink);
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    }
-+}
-+
-+static void
-+gst_omapfbsink_xwindow_clear (GstOmapFbSink * omapfbsink,
-+                  GstXWindow * xwindow)
-+{
-+    g_return_if_fail (xwindow != NULL);
-+    g_mutex_lock (omapfbsink->x_lock);
-+
-+    XSetForeground (omapfbsink->xcontext->disp, xwindow->gc,
-+            XBlackPixel (omapfbsink->xcontext->disp,
-+                 omapfbsink->xcontext->screen_num));
-+
-+    XFillRectangle (omapfbsink->xcontext->disp, xwindow->win, xwindow->gc,
-+            0, 0, xwindow->width, xwindow->height);
-+
-+    XSync (omapfbsink->xcontext->disp, FALSE);
-+    g_mutex_unlock (omapfbsink->x_lock);
-+}
-+
-+static void
-+gst_omapfbsink_set_event_handling (GstXOverlay * overlay,
-+    gboolean handle_events)
-+{
-+    GstOmapFbSink *omapfbsink = GST_OMAPFB_SINK (overlay);
-+    omapfbsink->handle_events = handle_events;
-+
-+    g_mutex_lock (omapfbsink->flow_lock);
-+
-+    if (G_UNLIKELY (!omapfbsink->xwindow)) {
-+        g_mutex_unlock (omapfbsink->flow_lock);
-+    return;
-+    }
-+
-+    g_mutex_lock (omapfbsink->x_lock);
-+
-+    if (handle_events) {
-+        if (omapfbsink->xwindow->internal) {
-+      XSelectInput (omapfbsink->xcontext->disp, omapfbsink->xwindow->win,
-+            ExposureMask | StructureNotifyMask | PointerMotionMask |
-+            KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask);
-+    } else {
-+      XSelectInput (omapfbsink->xcontext->disp, omapfbsink->xwindow->win,
-+            ExposureMask | StructureNotifyMask | PointerMotionMask |
-+            KeyPressMask | KeyReleaseMask);
-+    }
-+    } else {
-+        XSelectInput (omapfbsink->xcontext->disp, omapfbsink->xwindow->win, 0);
-+    }
-+
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    g_mutex_unlock (omapfbsink->flow_lock);
-+}
-+
-+static void
-+gst_omapfbsink_xoverlay_init (GstXOverlayClass * iface)
-+{
-+    iface->set_xwindow_id = gst_omapfbsink_set_xwindow_id;
-+    iface->expose = gst_omapfbsink_expose;
-+    iface->handle_events = gst_omapfbsink_set_event_handling;
-+}
-+
-+static GstCaps *
-+generate_sink_template (void)
-+{
-+    GstCaps *caps;
-+    GstStructure *struc;
-+
-+    caps = gst_caps_new_empty ();
-+
-+    struc = gst_structure_new ("video/x-raw-yuv",
-+                               "width", GST_TYPE_INT_RANGE, 16, 4096,
-+                               "height", GST_TYPE_INT_RANGE, 16, 4096,
-+                               "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 30, 1,
-+                               NULL);
-+
-+    {
-+        GValue list;
-+        GValue val;
-+
-+        list.g_type = val.g_type = 0;
-+
-+        g_value_init (&list, GST_TYPE_LIST);
-+        g_value_init (&val, GST_TYPE_FOURCC);
-+
-+#if 0
-+        gst_value_set_fourcc (&val, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'));
-+        gst_value_list_append_value (&list, &val);
-+#else
-+    gst_value_set_fourcc (&val, GST_MAKE_FOURCC ('I', '4', '2', '0'));
-+    gst_value_list_append_value (&list, &val);
-+
-+        gst_value_set_fourcc (&val, GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'));
-+        gst_value_list_append_value (&list, &val);
-+#endif
-+
-+        gst_structure_set_value (struc, "format", &list);
-+
-+        g_value_unset (&val);
-+        g_value_unset (&list);
-+    }
-+
-+    gst_caps_append_structure (caps, struc);
-+
-+    return caps;
-+}
-+
-+static GstFlowReturn
-+buffer_alloc (GstBaseSink *bsink,
-+              guint64 offset,
-+              guint size,
-+              GstCaps *caps,
-+              GstBuffer **buf)
-+{
-+    GstOmapFbSink *self;
-+    GstBuffer *buffer = NULL;
-+    GstFlowReturn ret = GST_FLOW_OK;
-+    self = GST_OMAPFB_SINK (bsink);
-+
-+    if(self->row_skip) {
-+        buffer = gst_buffer_new ();
-+        GST_BUFFER_DATA (buffer) = self->buffer = self->framebuffer;
-+        GST_BUFFER_SIZE (buffer) = self->buffer_size = size;
-+        gst_buffer_set_caps (buffer, caps);
-+    } else {
-+        if(self->buffer && size == self->buffer_size) {
-+            buffer = gst_buffer_new ();
-+            GST_BUFFER_DATA (buffer) = self->buffer;
-+            GST_BUFFER_SIZE (buffer) = size;
-+            gst_buffer_set_caps (buffer, caps);
-+        } else {
-+            if(self->buffer)
-+                free(self->buffer);
-+            if(posix_memalign(&self->buffer, 16, (size_t) size) == 0) {
-+                buffer = gst_buffer_new ();
-+                GST_BUFFER_DATA (buffer) = self->buffer;
-+                GST_BUFFER_SIZE (buffer) = self->buffer_size = size;
-+                gst_buffer_set_caps (buffer, caps);
-+            } else {
-+                GST_ELEMENT_ERROR (self, RESOURCE, WRITE, ("Could not allocate aligned buf!"),
-+                                  ("Could not alloc aligned buf!"));
-+            }
-+        }
-+    }
-+
-+    *buf = buffer;
-+    return ret;
-+}
-+
-+static void
-+x_memcpy (GstOmapFbSink *omapfbsink, __uint8_t *outBuf, __uint8_t *inBuf)
-+{
-+    BufferGfx_Attrs gfxAttrs = BufferGfx_Attrs_DEFAULT;
-+    Buffer_Handle hInBuf = NULL, hOutBuf = NULL;
-+    Framecopy_Attrs fcAttrs = Framecopy_Attrs_DEFAULT;
-+    int size;
-+
-+    if (omapfbsink->hFc == NULL) {
-+        fcAttrs.accel = TRUE;
-+        omapfbsink->hFc = Framecopy_create(&fcAttrs);
-+        if (omapfbsink->hFc == NULL) {
-+            GST_ELEMENT_ERROR(omapfbsink, RESOURCE, WRITE, ("failed to create dmai framecopy handle"), ("failed to create dmai framecopy handle"));
-+            goto cleanup;
-+        }
-+    }
-+
-+    gfxAttrs.bAttrs.reference   = TRUE;
-+    gfxAttrs.dim.width          = GST_VIDEO_SINK_WIDTH (omapfbsink);
-+    gfxAttrs.dim.height         = GST_VIDEO_SINK_HEIGHT (omapfbsink);
-+    gfxAttrs.colorSpace         = ColorSpace_UYVY;
-+    gfxAttrs.dim.lineLength     = omapfbsink->fixinfo.line_length;
-+    size = gfxAttrs.dim.height * gfxAttrs.dim.width * 2;
-+
-+    hInBuf = Buffer_create(size, BufferGfx_getBufferAttrs(&gfxAttrs));
-+    if (hInBuf == NULL) {
-+        GST_ELEMENT_ERROR(omapfbsink, RESOURCE, WRITE, ("Could not allocate refer dmai buffer"), ("Could not allocate refer dmai buffer"));
-+        goto cleanup;
-+    }
-+    Buffer_setUserPtr(hInBuf, (Int8*) inBuf);
-+    Buffer_setNumBytesUsed(hInBuf,Buffer_getSize(hInBuf));
-+
-+    hOutBuf = Buffer_create(size, BufferGfx_getBufferAttrs(&gfxAttrs));
-+    if (hOutBuf == NULL) {
-+        GST_ELEMENT_ERROR(omapfbsink, RESOURCE, WRITE, ("Could not allocate refer dmai buffer"), ("Could not allocate refer dmai buffer"));
-+        goto cleanup;
-+    }
-+    Buffer_setUserPtr(hOutBuf, (Int8*) outBuf);
-+    Buffer_setNumBytesUsed(hOutBuf,Buffer_getSize(hOutBuf));
-+
-+
-+    if (Framecopy_config(omapfbsink->hFc, hInBuf, hOutBuf) < 0) {
-+        GST_ELEMENT_ERROR(omapfbsink, RESOURCE, WRITE, ("failed to configure dmai framecopy handle"), ("failed to configure dmai framecopy handle"));
-+        goto cleanup;
-+    }
-+
-+    if (Framecopy_execute(omapfbsink->hFc, hInBuf, hOutBuf) < 0) {
-+        GST_ELEMENT_ERROR(omapfbsink, RESOURCE, WRITE, ("failed to execute dmai framecopy handle"), ("failed to configure dmai framecopy handle"));
-+        goto cleanup;
-+    }
-+    cleanup:
-+
-+    if (hInBuf)
-+        Buffer_delete(hInBuf);
-+    if (hOutBuf)
-+        Buffer_delete(hOutBuf);
-+}
-+
-+static GstFlowReturn
-+render (GstBaseSink * bsink, GstBuffer * buf)
-+{
-+    int i, w, h;
-+    GstOmapFbSink *omapfbsink = GST_OMAPFB_SINK(bsink);
-+    __uint8_t *fb = omapfbsink->framebuffer, *data = GST_BUFFER_DATA(buf);
-+    gboolean useXcopy = FALSE;
-+
-+    if (GST_IS_TIDMAIBUFFERTRANSPORT(buf)) {
-+        GST_LOG("found dmai transport buffer, enabling hw framecopy.\n");
-+        useXcopy = TRUE;
-+    }
-+
-+    if(omapfbsink->plane_info.enabled == 2)
-+    {
-+        omapfbsink->plane_info.enabled = 1;
-+
-+        g_mutex_lock (omapfbsink->x_lock);
-+        gst_omapfbsink_update_plane(omapfbsink);
-+        g_mutex_unlock (omapfbsink->x_lock);
-+    }
-+
-+    /* If a buffer which wasn't supplied by us is given to us to render with,
-+       we need to copy to our buffer first so that memory alignment constraints
-+       are met. */
-+    if((data != omapfbsink->buffer && GST_BUFFER_SIZE(buf) <= omapfbsink->buffer_size) && !useXcopy)
-+    {
-+        memcpy(omapfbsink->buffer, data, GST_BUFFER_SIZE(buf));
-+        data = omapfbsink->buffer;
-+    }
-+
-+    /* buffer_alloc gave a direct buffer, so we have nothing to
-+       do here... */
-+    if(omapfbsink->row_skip)
-+        return GST_FLOW_OK;
-+
-+    switch(omapfbsink->image_format) {
-+        case GST_MAKE_FOURCC('I', '4', '2', '0'):
-+            /* Convert to YUV422 and send to FB */
-+
-+            h = GST_VIDEO_SINK_HEIGHT (omapfbsink);
-+            w = GST_VIDEO_SINK_WIDTH (omapfbsink);
-+
-+            __uint8_t *y, *u, *v;
-+            y = data;
-+            u = y + w * h;
-+            v = u + w / 2 * h / 2;
-+            yuv420_to_yuv422(fb, y, u, v, w & ~15, h, w, w / 2, omapfbsink->fixinfo.line_length);
-+            break;
-+
-+        case GST_MAKE_FOURCC('U', 'Y', 'V', 'Y'):
-+            /* Send to FB, taking into account line_length */
-+            if (useXcopy) {
-+                x_memcpy(omapfbsink, fb, data);
-+            }
-+            else {
-+
-+            w = 2 * GST_VIDEO_SINK_WIDTH (omapfbsink);
-+            for(i = 0; i < GST_VIDEO_SINK_HEIGHT (omapfbsink); i++)
-+            {
-+                memcpy(fb, data, w);
-+
-+                fb += omapfbsink->fixinfo.line_length;
-+                data += w;
-+            }
-+            }
-+            break;
-+    }
-+
-+    return GST_FLOW_OK;
-+}
-+
-+static gboolean
-+setcaps (GstBaseSink *bsink,
-+         GstCaps *vscapslist)
-+{
-+    GstOmapFbSink *self;
-+    GstStructure *structure;
-+
-+    gint width, height;
-+    struct omapfb_color_key color_key;
-+
-+    self = GST_OMAPFB_SINK (bsink);
-+
-+    structure = gst_caps_get_structure (vscapslist, 0);
-+
-+    gst_structure_get_int (structure, "width", &width);
-+    gst_structure_get_int (structure, "height", &height);
-+
-+    self->overlay_info.xres = MIN (self->varinfo.xres, width) & ~15;
-+    self->overlay_info.yres = MIN (self->varinfo.yres, height) & ~15;
-+    self->overlay_info.xres_virtual = self->overlay_info.xres;
-+    self->overlay_info.yres_virtual = self->overlay_info.yres;
-+
-+    self->overlay_info.xoffset = 0;
-+    self->overlay_info.yoffset = 0;
-+
-+    gst_structure_get_fourcc (structure, "format", &self->image_format);
-+    switch(self->image_format) {
-+        case GST_MAKE_FOURCC('I', '4', '2', '0'):
-+            self->row_skip = FALSE; /* Colorspace conversion required */
-+            self->overlay_info.nonstd = OMAPFB_COLOR_YUY422;
-+            break;
-+        case GST_MAKE_FOURCC('U', 'Y', 'V', 'Y'):
-+            /* Can data be pushed straight to the FB or do we need to interleave? */
-+            if (self->fixinfo.line_length != 2 * width)
-+                self->row_skip = FALSE;
-+            else
-+                self->row_skip = TRUE;
-+            self->overlay_info.nonstd = OMAPFB_COLOR_YUV422;
-+            break;
-+    }
-+
-+    if (ioctl (self->overlay_fd, FBIOPUT_VSCREENINFO, &self->overlay_info))
-+        return FALSE;
-+
-+    GST_VIDEO_SINK_WIDTH (self) = width;
-+    GST_VIDEO_SINK_HEIGHT (self) = height;
-+    if (!self->xwindow) {
-+        self->xwindow = gst_omapfbsink_xwindow_new (self,
-+            GST_VIDEO_SINK_WIDTH (self), GST_VIDEO_SINK_HEIGHT (self));
-+    }
-+
-+    color_key.channel_out = OMAPFB_CHANNEL_OUT_LCD;
-+    color_key.background = 0x0;
-+    color_key.trans_key = self->colorKey;
-+    if (self->xwindow)
-+        color_key.key_type = OMAPFB_COLOR_KEY_GFX_DST;
-+    else
-+        color_key.key_type = OMAPFB_COLOR_KEY_DISABLED;
-+
-+    if (ioctl (self->overlay_fd, OMAPFB_SET_COLOR_KEY, &color_key))
-+        return FALSE;
-+
-+    self->plane_info.pos_x = 0;
-+    self->plane_info.pos_y = 0;
-+    self->plane_info.out_width = self->overlay_info.xres;
-+    self->plane_info.out_height = self->overlay_info.yres;
-+    self->plane_info.enabled = 2;
-+
-+    if (ioctl (self->overlay_fd, FBIOGET_FSCREENINFO, &self->fixinfo))
-+        return FALSE;
-+
-+    self->enabled = TRUE;
-+    return TRUE;
-+}
-+
-+static gboolean
-+start (GstBaseSink *bsink)
-+{
-+    GstOmapFbSink *self;
-+    int fd;
-+
-+    self = GST_OMAPFB_SINK (bsink);
-+
-+    fd = open ("/dev/fb0", O_RDWR);
-+
-+    if (fd == -1)
-+        return FALSE;
-+
-+    if (ioctl (fd, FBIOGET_VSCREENINFO, &self->varinfo))
-+    {
-+        close (fd);
-+        return FALSE;
-+    }
-+
-+    if (close (fd))
-+        return FALSE;
-+
-+    self->overlay_fd = open ("/dev/fb1", O_RDWR);
-+
-+    if (self->overlay_fd == -1)
-+        return FALSE;
-+
-+    if (ioctl (self->overlay_fd, FBIOGET_VSCREENINFO, &self->overlay_info))
-+        return FALSE;
-+
-+    if (ioctl (self->overlay_fd, OMAPFB_QUERY_PLANE, &self->plane_info))
-+        return FALSE;
-+
-+    if (ioctl (self->overlay_fd, OMAPFB_QUERY_MEM, &self->mem_info))
-+        return FALSE;
-+
-+    self->framebuffer = mmap (NULL, self->mem_info.size, PROT_WRITE, MAP_SHARED, self->overlay_fd, 0);
-+    if (self->framebuffer == MAP_FAILED)
-+        return FALSE;
-+
-+    return TRUE;
-+}
-+
-+static gboolean
-+stop (GstBaseSink *bsink)
-+{
-+    GstOmapFbSink *self;
-+
-+    self = GST_OMAPFB_SINK (bsink);
-+
-+    if (self->enabled)
-+    {
-+        self->plane_info.enabled = 0;
-+
-+        if (ioctl (self->overlay_fd, OMAPFB_SETUP_PLANE, &self->plane_info))
-+            return FALSE;
-+    }
-+
-+    if (munmap (self->framebuffer, self->mem_info.size))
-+        return FALSE;
-+
-+    if (close (self->overlay_fd))
-+        return FALSE;
-+
-+    if (self->hFc) 
-+        Framecopy_delete(self->hFc);
-+
-+    return TRUE;
-+}
-+
-+/* This function cleans the X context. Closing the Display and unrefing the
-+   caps for supported formats. */
-+static void
-+gst_omapfbsink_xcontext_clear (GstOmapFbSink * omapfbsink)
-+{
-+    GstXContext *xcontext;
-+    GST_OBJECT_LOCK (omapfbsink);
-+    if (omapfbsink->xcontext == NULL) {
-+      GST_OBJECT_UNLOCK (omapfbsink);
-+      return;
-+    }
-+
-+    xcontext = omapfbsink->xcontext;
-+    omapfbsink->xcontext = NULL;
-+
-+    GST_OBJECT_UNLOCK (omapfbsink);
-+    g_mutex_lock (omapfbsink->x_lock);
-+
-+    XCloseDisplay (xcontext->disp);
-+    g_mutex_unlock (omapfbsink->x_lock);
-+    g_free (xcontext);
-+}
-+
-+static void
-+gst_omapfbsink_reset (GstOmapFbSink *omapfbsink)
-+{
-+    GThread *thread;
-+
-+    GST_OBJECT_LOCK (omapfbsink);
-+    omapfbsink->running = FALSE;
-+    /* grab thread and mark it as NULL */
-+    thread = omapfbsink->event_thread;
-+    omapfbsink->event_thread = NULL;
-+    GST_OBJECT_UNLOCK (omapfbsink);
-+
-+    /* Wait for our event thread to finish before we clean up our stuff. */
-+    if (thread)
-+      g_thread_join (thread);
-+
-+    g_mutex_lock (omapfbsink->flow_lock);
-+    if (omapfbsink->xwindow) {
-+        gst_omapfbsink_xwindow_clear (omapfbsink, omapfbsink->xwindow);
-+        gst_omapfbsink_xwindow_destroy (omapfbsink, omapfbsink->xwindow);
-+        omapfbsink->xwindow = NULL;
-+    }
-+    g_mutex_unlock (omapfbsink->flow_lock);
-+    gst_omapfbsink_xcontext_clear (omapfbsink);
-+}
-+
-+static GstStateChangeReturn
-+gst_omapfbsink_change_state (GstElement * element, GstStateChange transition)
-+{
-+    GstOmapFbSink *omapfbsink;
-+    GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-+    GstXContext *xcontext = NULL;
-+
-+    omapfbsink = GST_OMAPFB_SINK (element);
-+
-+    switch (transition) {
-+    case GST_STATE_CHANGE_NULL_TO_READY:
-+
-+        /* Initializing the XContext */
-+        if (omapfbsink->xcontext == NULL) {
-+            xcontext = gst_omapfbsink_xcontext_get (omapfbsink);
-+
-+            GST_OBJECT_LOCK (omapfbsink);
-+            omapfbsink->xcontext = xcontext;
-+            GST_OBJECT_UNLOCK (omapfbsink);
-+        }
-+        break;
-+    case GST_STATE_CHANGE_READY_TO_PAUSED:
-+        g_mutex_lock (omapfbsink->flow_lock);
-+        if (omapfbsink->xwindow)
-+            gst_omapfbsink_xwindow_clear (omapfbsink, omapfbsink->xwindow);
-+        g_mutex_unlock (omapfbsink->flow_lock);
-+        break;
-+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
-+        break;
-+    default:
-+        break;
-+    }
-+
-+    ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-+
-+    switch (transition) {
-+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
-+        break;
-+    case GST_STATE_CHANGE_PAUSED_TO_READY:
-+        GST_VIDEO_SINK_WIDTH (omapfbsink) = 0;
-+        GST_VIDEO_SINK_HEIGHT (omapfbsink) = 0;
-+        break;
-+    case GST_STATE_CHANGE_READY_TO_NULL:
-+        gst_omapfbsink_reset (omapfbsink);
-+        break;
-+    default:
-+        break;
-+    }
-+
-+    return ret;
-+}
-+
-+static void
-+type_class_init (gpointer g_class,
-+                 gpointer class_data)
-+{
-+    GstElementClass *element_class;
-+    GstBaseSinkClass *base_sink_class;
-+
-+    element_class = (GstElementClass *) g_class;
-+    base_sink_class = (GstBaseSinkClass *) g_class;
-+
-+    parent_class = g_type_class_peek_parent (g_class);
-+
-+    base_sink_class->set_caps = GST_DEBUG_FUNCPTR (setcaps);
-+    base_sink_class->buffer_alloc = GST_DEBUG_FUNCPTR (buffer_alloc);
-+    base_sink_class->render = GST_DEBUG_FUNCPTR (render);
-+    base_sink_class->start = GST_DEBUG_FUNCPTR (start);
-+    base_sink_class->stop = GST_DEBUG_FUNCPTR (stop);
-+
-+    element_class->change_state = gst_omapfbsink_change_state;
-+}
-+
-+static void
-+type_base_init (gpointer g_class)
-+{
-+    GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-+
-+    {
-+        GstElementDetails details;
-+
-+        details.longname = "Linux OMAP framebuffer sink";
-+        details.klass = "Sink/Video";
-+        details.description = "Renders video with omapfb";
-+        details.author = "Felipe Contreras";
-+
-+        gst_element_class_set_details (element_class, &details);
-+    }
-+
-+    {
-+        GstPadTemplate *template;
-+
-+        template = gst_pad_template_new ("sink", GST_PAD_SINK,
-+                                         GST_PAD_ALWAYS,
-+                                         generate_sink_template ());
-+
-+        gst_element_class_add_pad_template (element_class, template);
-+    }
-+}
-+
-+static gboolean
-+gst_omapfbsink_interface_supported (GstImplementsInterface * iface, GType type)
-+{
-+    g_assert (type == GST_TYPE_X_OVERLAY);
-+    return TRUE;
-+}
-+
-+static void
-+gst_omapfbsink_interface_init (GstImplementsInterfaceClass * klass)
-+{
-+    klass->supported = gst_omapfbsink_interface_supported;
-+}
-+
-+static void
-+gst_omapfbsink_init (GstOmapFbSink * omapfbsink)
-+{
-+    omapfbsink->display_name = NULL;
-+    omapfbsink->xcontext = NULL;
-+    omapfbsink->xwindow = NULL;
-+
-+    omapfbsink->event_thread = NULL;
-+    omapfbsink->running = FALSE;
-+
-+    omapfbsink->x_lock = g_mutex_new ();
-+    omapfbsink->flow_lock = g_mutex_new ();
-+
-+    omapfbsink->handle_events = TRUE;
-+    omapfbsink->colorKey = 0xff0;
-+
-+    omapfbsink->plane_info.enabled = 0;
-+    omapfbsink->row_skip = FALSE;
-+
-+    omapfbsink->buffer = NULL;
-+    omapfbsink->buffer_size = 0;
-+    omapfbsink->hFc = NULL;
-+}
-+
-+GType
-+gst_omapfbsink_get_type (void)
-+{
-+    static GType type = 0;
-+
-+    if (G_UNLIKELY (type == 0))
-+    {  
-+        GTypeInfo *type_info;
-+        static const GInterfaceInfo iface_info = {
-+            (GInterfaceInitFunc) gst_omapfbsink_interface_init,
-+            NULL,
-+            NULL,
-+        };
-+        static const GInterfaceInfo overlay_info = {
-+            (GInterfaceInitFunc) gst_omapfbsink_xoverlay_init,
-+            NULL,
-+            NULL,
-+        };
-+        type_info = g_new0 (GTypeInfo, 1);
-+        type_info->class_size = sizeof (GstOmapFbSinkClass);
-+        type_info->base_init = type_base_init;
-+        type_info->class_init = type_class_init;
-+        type_info->instance_size = sizeof (GstOmapFbSink);
-+        type_info->instance_init = (GInstanceInitFunc) gst_omapfbsink_init;
-+
-+        type = g_type_register_static (GST_TYPE_BASE_SINK, "GstOmapFbSink", type_info, 0);
-+        g_type_add_interface_static (type, GST_TYPE_IMPLEMENTS_INTERFACE, &iface_info);
-+        g_type_add_interface_static (type, GST_TYPE_X_OVERLAY, &overlay_info);
-+
-+        g_free (type_info);
-+    }
-+
-+    return type;
-+}
-diff -uNr ticodecplugin/src/omapfb.h ticodecplugin.new/src/omapfb.h
---- ticodecplugin/src/omapfb.h	1969-12-31 18:00:00.000000000 -0600
-+++ ticodecplugin.new/src/omapfb.h	2010-09-03 13:54:11.929409696 -0500
-@@ -0,0 +1,142 @@
-+/*
-+ * Copyright (C) 2008 Felipe Contreras <felipe.contreras at gmail.com>
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation
-+ * version 2.1 of the License.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
-+ */
-+
-+#ifndef GST_OMAPFB_H
-+#define GST_OMAPFB_H
-+
-+#include <ti/sdo/dmai/BufferGfx.h>
-+#include <ti/sdo/dmai/Framecopy.h>
-+
-+#include "gsttidmaibuffertransport.h"
-+#include <gst/gst.h>
-+#include <gst/video/gstvideosink.h>
-+#include <gst/video/video.h>
-+
-+#include <X11/Xlib.h>
-+#include <X11/Xutil.h>
-+
-+#include <linux/fb.h>
-+#include <linux/omapfb.h>
-+
-+
-+G_BEGIN_DECLS
-+
-+#define GST_OMAPFB_SINK_TYPE (gst_omapfbsink_get_type ())
-+#define GST_OMAPFB_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_OMAPFB_SINK_TYPE, GstOmapFbSink))
-+
-+typedef struct GstXContext GstXContext;
-+typedef struct GstXWindow GstXWindow;
-+typedef struct GstOmapFbSink GstOmapFbSink;
-+typedef struct GstOmapFbSinkClass GstOmapFbSinkClass;
-+
-+/**
-+ * GstXWindow:
-+ * @win: the Window ID of this X11 window
-+ * @width: the width in pixels of Window @win
-+ * @height: the height in pixels of Window @win
-+ * @internal: used to remember if Window @win was created internally or passed
-+ * through the #GstXOverlay interface
-+ * @gc: the Graphical Context of Window @win
-+ *
-+ * Structure used to store informations about a Window.
-+ */
-+struct GstXWindow {
-+    Window win;
-+    gint width, height;
-+    gboolean internal;
-+    GC gc;
-+
-+    gint wx, wy;
-+};
-+
-+/**
-+ * GstXContext:
-+ * @disp: the X11 Display of this context
-+ * @screen: the default Screen of Display @disp
-+ * @screen_num: the Screen number of @screen
-+ * @visual: the default Visual of Screen @screen
-+ * @root: the root Window of Display @disp
-+ * @white: the value of a white pixel on Screen @screen
-+ * @black: the value of a black pixel on Screen @screen
-+ * @depth: the color depth of Display @disp
-+ * @bpp: the number of bits per pixel on Display @disp
-+ * @endianness: the endianness of image bytes on Display @disp
-+ * @width: the width in pixels of Display @disp
-+ * @height: the height in pixels of Display @disp
-+ *
-+ * Structure used to store various informations collected/calculated for a
-+ * Display.
-+ */
-+struct GstXContext {
-+    Display *disp;
-+    Screen *screen;
-+    gint screen_num;
-+
-+    Visual *visual;
-+    Window root;
-+
-+    gint depth;
-+    gint bpp;
-+
-+    gint width, height;
-+};
-+
-+struct GstOmapFbSink
-+{
-+    GstVideoSink videosink;
-+
-+    struct fb_fix_screeninfo fixinfo;
-+    struct fb_var_screeninfo varinfo;
-+    struct fb_var_screeninfo overlay_info;
-+    struct omapfb_mem_info mem_info;
-+    struct omapfb_plane_info plane_info;
-+
-+    int overlay_fd;
-+    unsigned char *framebuffer;
-+    gboolean enabled;
-+
-+    GMutex *x_lock;
-+    GMutex *flow_lock;
-+
-+    GstXContext *xcontext;
-+    GstXWindow *xwindow;
-+
-+    gulong colorKey;
-+    char *display_name;
-+    GThread *event_thread;
-+
-+    void *buffer;
-+    guint buffer_size;
-+    guint image_format;
-+
-+    gboolean row_skip;
-+    gboolean handle_events;
-+    gboolean running;
-+    Framecopy_Handle hFc;
-+};
-+
-+struct GstOmapFbSinkClass
-+{
-+    GstBaseSinkClass parent_class;
-+};
-+
-+GType gst_omapfbsink_get_type (void);
-+
-+G_END_DECLS
-+
-+#endif /* GST_OMAPFB_H */
-diff -uNr ticodecplugin/src/yuv.S ticodecplugin.new/src/yuv.S
---- ticodecplugin/src/yuv.S	1969-12-31 18:00:00.000000000 -0600
-+++ ticodecplugin.new/src/yuv.S	2010-09-03 13:54:11.929409696 -0500
-@@ -0,0 +1,117 @@
-+/*
-+    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.
-+*/
-+
-+        .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
-+        ldm             r4, {r4-r8}
-+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, #36]
-+        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             {r4-r11,pc}
-+        .endfunc
-+
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0003-Support-setting-the-display-framerate-directly-when-.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0003-Support-setting-the-display-framerate-directly-when-.patch
deleted file mode 100644
index eb7181b..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0003-Support-setting-the-display-framerate-directly-when-.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From fb4dabcac144fcf1a7e9b1eba0114b2eed594d05 Mon Sep 17 00:00:00 2001
-From: Don Darling <don.osc2 at gmail.com>
-Date: Thu, 26 Aug 2010 11:12:39 -0500
-Subject: [PATCH 3/8] Support setting the display framerate directly when possible.
-
-If can_set_display_framerate is set to true, TIDmaiVideoSink will attempt to
-set the display framerate directly in DMAI, instead of trying to simulate the
-desired framerate by occasionally repeating frames.
-
-Platforms that support this will need to enable it explicitly.
----
- .../ticodecplugin/src/gsttidmaivideosink.c         |   24 ++++++++++++++++++++
- .../ticodecplugin/src/gsttidmaivideosink.h         |    1 +
- 2 files changed, 25 insertions(+), 0 deletions(-)
-
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-index c87b89c..4e327ae 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-@@ -442,6 +442,7 @@ static void gst_tidmaivideosink_init(GstTIDmaiVideoSink * dmaisink,
-     dmaisink->numBufs             = -1;
-     dmaisink->framerepeat         = 0;
-     dmaisink->repeat_with_refresh = FALSE;
-+    dmaisink->can_set_display_framerate = FALSE;
-     dmaisink->rotation            = -1;
-     dmaisink->tempDmaiBuf         = NULL;
-     dmaisink->accelFrameCopy      = TRUE;
-@@ -952,6 +953,9 @@ static void gst_tidmaivideosink_check_set_framerate(GstTIDmaiVideoSink * sink)
-  *    then 1 is returned to indicate that there will be no frame
-  *    repeating.
-  *
-+ *    If the driver supports explicit configuration of the framerate, we
-+ *    don't ever need to repeat frames, and 1 is returned.
-+ *
-  ******************************************************************************/
- static int gst_tidmaivideosink_get_framerepeat(GstTIDmaiVideoSink * sink)
- {
-@@ -959,6 +963,13 @@ static int gst_tidmaivideosink_get_framerepeat(GstTIDmaiVideoSink * sink)
- 
-     GST_DEBUG("Begin\n");
- 
-+    /* If the display allows you to configure the frame rate, we never need
-+     * to repeat a frame.
-+     */
-+    if (sink->can_set_display_framerate) {
-+        return 1;
-+    }
-+
-     /* Divide the native framerate by the desired framerate.  If the result
-      * is a whole number, return it.  Otherwise return 1 -- we don't support
-      * fractional repeat rates. */
-@@ -1151,6 +1162,19 @@ static gboolean gst_tidmaivideosink_set_display_attrs(GstTIDmaiVideoSink *sink,
-     sink->dAttrs.displayDevice = sink->displayDevice == NULL ?
-         sink->dAttrs.displayDevice : sink->displayDevice;
- 
-+    /* Specify framerate if supported by DMAI and the display driver */
-+    if (sink->can_set_display_framerate) {
-+        #if defined (Platform_dm365)
-+        sink->dAttrs.forceFrameRateNum =
-+            gst_value_get_fraction_numerator(&sink->iattrs.framerate);
-+        sink->dAttrs.forceFrameRateDen =
-+            gst_value_get_fraction_denominator(&sink->iattrs.framerate);
-+        #else
-+        GST_ERROR("setting driver framerate is not supported\n");
-+        return FALSE;
-+        #endif
-+    }
-+
-     /* Set rotation on OMAP35xx */
-     if (sink->cpu_dev == Cpu_Device_OMAP3530) {
-         sink->dAttrs.rotation = sink->rotation == -1 ?
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h
-index 5d13e08..4800fcd 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h
-@@ -124,6 +124,7 @@ struct _GstTIDmaiVideoSink {
-    */
-   int           framerepeat;
-   gboolean      repeat_with_refresh;
-+  gboolean      can_set_display_framerate;
-   gboolean      signal_handoffs;
- 
-   /* Hardware accelerated copy */
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0004-Cosmetic-cleanup-clarify-some-comments.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0004-Cosmetic-cleanup-clarify-some-comments.patch
deleted file mode 100644
index 229c452..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0004-Cosmetic-cleanup-clarify-some-comments.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 03ab3ad3f790dde2dbddfeb62001e8610dbb919a Mon Sep 17 00:00:00 2001
-From: Don Darling <don.osc2 at gmail.com>
-Date: Thu, 26 Aug 2010 18:25:56 -0500
-Subject: [PATCH 4/8] Cosmetic cleanup / clarify some comments.
-
----
- .../ticodecplugin/src/gsttidmaivideosink.c         |   42 ++++++++-----------
- 1 files changed, 18 insertions(+), 24 deletions(-)
-
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-index 4e327ae..1d04e1c 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-@@ -434,23 +434,23 @@ static void gst_tidmaivideosink_init(GstTIDmaiVideoSink * dmaisink,
-      * Anything that has a NULL value will be initialized with DMAI defaults 
-      * in the gst_tidmaivideosink_init_display function.
-      */
--    dmaisink->displayStd          = NULL;
--    dmaisink->displayDevice       = NULL;
--    dmaisink->dGfxAttrs           = defaultGfxAttrs;
--    dmaisink->videoStd            = NULL;
--    dmaisink->videoOutput         = NULL;
--    dmaisink->numBufs             = -1;
--    dmaisink->framerepeat         = 0;
--    dmaisink->repeat_with_refresh = FALSE;
-+    dmaisink->displayStd                = NULL;
-+    dmaisink->displayDevice             = NULL;
-+    dmaisink->dGfxAttrs                 = defaultGfxAttrs;
-+    dmaisink->videoStd                  = NULL;
-+    dmaisink->videoOutput               = NULL;
-+    dmaisink->numBufs                   = -1;
-+    dmaisink->framerepeat               = 0;
-+    dmaisink->repeat_with_refresh       = FALSE;
-     dmaisink->can_set_display_framerate = FALSE;
--    dmaisink->rotation            = -1;
--    dmaisink->tempDmaiBuf         = NULL;
--    dmaisink->accelFrameCopy      = TRUE;
--    dmaisink->autoselect          = FALSE;
--    dmaisink->prevVideoStd        = 0;
--    dmaisink->useUserptrBufs      = FALSE;
--    dmaisink->hideOSD             = FALSE;
--    dmaisink->hDispBufTab         = NULL;
-+    dmaisink->rotation                  = -1;
-+    dmaisink->tempDmaiBuf               = NULL;
-+    dmaisink->accelFrameCopy            = TRUE;
-+    dmaisink->autoselect                = FALSE;
-+    dmaisink->prevVideoStd              = 0;
-+    dmaisink->useUserptrBufs            = FALSE;
-+    dmaisink->hideOSD                   = FALSE;
-+    dmaisink->hDispBufTab               = NULL;
- 
-     dmaisink->signal_handoffs = DEFAULT_SIGNAL_HANDOFFS;
- 
-@@ -947,14 +947,8 @@ static void gst_tidmaivideosink_check_set_framerate(GstTIDmaiVideoSink * sink)
- /******************************************************************************
-  * gst_tidmaivideosink_get_framerepeat
-  *
-- *    This function will look at the output display frame rate and the
-- *    input frame rate and determine how many times a frame should be
-- *    repeated.  If the output is not an integer multiple of the input
-- *    then 1 is returned to indicate that there will be no frame
-- *    repeating.
-- *
-- *    If the driver supports explicit configuration of the framerate, we
-- *    don't ever need to repeat frames, and 1 is returned.
-+ *    Return how many times a frame should be repeated to support a 
-+ *    framerate lower than the display's native speed.
-  *
-  ******************************************************************************/
- static int gst_tidmaivideosink_get_framerepeat(GstTIDmaiVideoSink * sink)
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0005-Enable-setting-the-framerate-directly-on-DM365.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0005-Enable-setting-the-framerate-directly-on-DM365.patch
deleted file mode 100644
index e405957..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0005-Enable-setting-the-framerate-directly-on-DM365.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 1cffa12c9ceb07558d2e4b35cc674070c7a3b8ee Mon Sep 17 00:00:00 2001
-From: Don Darling <don.osc2 at gmail.com>
-Date: Thu, 26 Aug 2010 18:27:50 -0500
-Subject: [PATCH 5/8] Enable setting the framerate directly on DM365.
-
-This is supported by recent changes to the display driver.  DM365 will no
-longer use the "repeat_with_refresh" method to display frames more than once.
----
- .../ticodecplugin/src/gsttidmaivideosink.c         |    7 ++-----
- 1 files changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-index 1d04e1c..3615bfd 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-@@ -475,12 +475,9 @@ static void gst_tidmaivideosink_init(GstTIDmaiVideoSink * dmaisink,
-     g_assert(GST_VALUE_HOLDS_FRACTION(&dmaisink->oattrs.framerate));
-     gst_value_set_fraction(&dmaisink->oattrs.framerate, 0, 1);
- 
--    /* On DM365, we don't have the bandwidth to copy a frame multiple times to
--     * display them more than once.  We must put a frame to the display once
--     * and let it be refreshed multiple times.
--     */
-+    /* DM365 supports setting the display framerate */
-     #if defined(Platform_dm365)
--    dmaisink->repeat_with_refresh = TRUE;
-+    dmaisink->can_set_display_framerate = TRUE;
-     #endif
- 
-     gst_tidmaivideosink_init_env(dmaisink);
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0006-Remove-the-repeat_with_refresh-feature.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0006-Remove-the-repeat_with_refresh-feature.patch
deleted file mode 100644
index 4055d0b..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0006-Remove-the-repeat_with_refresh-feature.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From c1205a792fd519cdebc32c00a5f604ccd78d3eac Mon Sep 17 00:00:00 2001
-From: Don Darling <don.osc2 at gmail.com>
-Date: Thu, 26 Aug 2010 18:30:13 -0500
-Subject: [PATCH 6/8] Remove the "repeat_with_refresh" feature.
-
-No platforms are using it any longer.
----
- .../ticodecplugin/src/gsttidmaivideosink.c         |   67 +-------------------
- .../ticodecplugin/src/gsttidmaivideosink.h         |    1 -
- 2 files changed, 1 insertions(+), 67 deletions(-)
-
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-index 3615bfd..0125ed2 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-@@ -170,8 +170,6 @@ static gboolean
-  gst_tidmaivideosink_event(GstBaseSink * bsink, GstEvent * event);
- static void 
-     gst_tidmaivideosink_init_env(GstTIDmaiVideoSink *sink);
--static int
--    gst_tidmaivideosink_videostd_get_refresh_latency(VideoStd_Type videoStd);
- static gboolean
-     gst_tidmaivideosink_alloc_display_buffers(GstTIDmaiVideoSink * sink,
-         Int32 bufSize);
-@@ -441,7 +439,6 @@ static void gst_tidmaivideosink_init(GstTIDmaiVideoSink * dmaisink,
-     dmaisink->videoOutput               = NULL;
-     dmaisink->numBufs                   = -1;
-     dmaisink->framerepeat               = 0;
--    dmaisink->repeat_with_refresh       = FALSE;
-     dmaisink->can_set_display_framerate = FALSE;
-     dmaisink->rotation                  = -1;
-     dmaisink->tempDmaiBuf               = NULL;
-@@ -755,55 +752,6 @@ static int gst_tidmaivideosink_videostd_get_attrs(VideoStd_Type videoStd,
- 
- 
- /*******************************************************************************
-- * gst_tidmaivideosink_videostd_get_refresh_latency
-- *
-- *    Return the refresh latency in us for the given display standard.
--*******************************************************************************/
--static int gst_tidmaivideosink_videostd_get_refresh_latency(
--               VideoStd_Type videoStd)
--{
--    switch (videoStd) {
--        case VideoStd_1080P_24:
--            return 41667;
--
--        case VideoStd_SIF_PAL:
--        case VideoStd_D1_PAL:
--        case VideoStd_1080P_25:
--        case VideoStd_1080I_25:
--            return 40000;
--
--        case VideoStd_CIF:
--        case VideoStd_SIF_NTSC:
--        case VideoStd_D1_NTSC:
--            return 33367;
--            
--        case VideoStd_1080I_30:
--        case VideoStd_1080P_30:
--            return 33333;
--
--        case VideoStd_576P:
--        case VideoStd_720P_50:
--            return 20000;
--
--        case VideoStd_480P:
--        case VideoStd_720P_60:
--        #if defined(Platform_dm6467t)
--        case VideoStd_1080P_60:
--        #endif
--            return 16667;
--
--        case VideoStd_VGA:
--            return 16667;
--
--        default:
--            break;
--    }
--    GST_ERROR("Unknown videoStd entered (VideoStd = %d)\n", videoStd);
--    return 0;
--}
--
--
--/*******************************************************************************
-  * gst_tidmaivideosink_find_videostd
-  *
-  *    This function will take in a VideoStd_Attrs structure and find the
-@@ -1580,10 +1528,7 @@ static GstFlowReturn gst_tidmaivideosink_render(GstBaseSink * bsink,
- 
-     /* Display the frame as many times as specified by framerepeat.  By
-      * default, the input buffer is copied to a display buffer for each time
--     * it is to be repeated.  However, if repeat_with_refresh is TRUE, then
--     * the platform doesn't have the bandwidth for multiple copies.  In this
--     * case we copy and display the input buffer only once, but let it refresh
--     * multiple times.
-+     * it is to be repeated.  
-      */
-     for (i = 0; i < sink->framerepeat; i++) {
- 
-@@ -1594,16 +1539,6 @@ static GstFlowReturn gst_tidmaivideosink_render(GstBaseSink * bsink,
-             goto cleanup;
-         }
- 
--        /* If repeat_with_refresh was specified, wait for the display to
--         * refresh framerepeat-1 times to make sure it has finished displaying
--         * this buffer before we write new data into it.
--         */
--        while (sink->repeat_with_refresh && i < (sink->framerepeat-1)) {
--            usleep(gst_tidmaivideosink_videostd_get_refresh_latency(
--                sink->dAttrs.videoStd) + 1);
--            i++;
--        }
--
-         /* Retrieve the dimensions of the display buffer */
-         BufferGfx_getDimensions(hDispBuf, &dim);
-         GST_LOG("Display size %dx%d pitch %d\n",
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h
-index 4800fcd..2a28e4f 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.h
-@@ -123,7 +123,6 @@ struct _GstTIDmaiVideoSink {
-    * should be repeated to match the display output frame rate.
-    */
-   int           framerepeat;
--  gboolean      repeat_with_refresh;
-   gboolean      can_set_display_framerate;
-   gboolean      signal_handoffs;
- 
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0007-Add-support-for-pad-allocated-buffers-in-TIDmaiVideo.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0007-Add-support-for-pad-allocated-buffers-in-TIDmaiVideo.patch
deleted file mode 100644
index 863bd34..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0007-Add-support-for-pad-allocated-buffers-in-TIDmaiVideo.patch
+++ /dev/null
@@ -1,313 +0,0 @@
-From 108fa0bb550f9b7355bfd5ae5340220fd1a4c9b5 Mon Sep 17 00:00:00 2001
-From: Don Darling <don.osc2 at gmail.com>
-Date: Thu, 5 Aug 2010 15:09:54 -0500
-Subject: [PATCH 7/8] Add support for pad-allocated buffers in TIDmaiVideoSink.
-
-This feature is currently only tested and enabled for DM365.
----
- .../ticodecplugin/src/gsttidmaibuffertransport.c   |    4 +-
- .../ticodecplugin/src/gsttidmaibuffertransport.h   |    6 +-
- .../ticodecplugin/src/gsttidmaivideosink.c         |  197 ++++++++++++++++++--
- 3 files changed, 191 insertions(+), 16 deletions(-)
-
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.c
-index 5fad371..9c69285 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.c
-@@ -136,8 +136,8 @@ static void gst_tidmaibuffertransport_finalize(GstBuffer *gstbuffer)
-      */
-     if (Buffer_getBufTab(self->dmaiBuffer) != NULL) {
-         GST_LOG("clearing GStreamer useMask bit\n");
--        Buffer_freeUseMask(self->dmaiBuffer,
--        gst_tidmaibuffer_GST_FREE);
-+        Buffer_freeUseMask(self->dmaiBuffer, gst_tidmaibuffer_GST_FREE);
-+        Buffer_freeUseMask(self->dmaiBuffer, gst_tidmaibuffer_VIDEOSINK_FREE);
-     } else {
-         GST_LOG("calling Buffer_delete()\n");
-         Buffer_delete(self->dmaiBuffer);
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.h b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.h
-index 0265e70..20945f3 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.h
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaibuffertransport.h
-@@ -52,8 +52,10 @@ G_BEGIN_DECLS
-     GstTIDmaiBufferTransportClass))
- 
- /* Use mask flags that keep track of where buffer is in use */
--#define gst_tidmaibuffer_GST_FREE    0x1
--#define gst_tidmaibuffer_CODEC_FREE  0x2
-+#define gst_tidmaibuffer_GST_FREE        0x1
-+#define gst_tidmaibuffer_CODEC_FREE      0x2
-+#define gst_tidmaibuffer_VIDEOSINK_FREE  0x4
-+#define gst_tidmaibuffer_DISPLAY_FREE    0x8
- 
- typedef struct _GstTIDmaiBufferTransport      GstTIDmaiBufferTransport;
- typedef struct _GstTIDmaiBufferTransportClass GstTIDmaiBufferTransportClass;
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-index 0125ed2..7b84a8e 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttidmaivideosink.c
-@@ -151,6 +151,9 @@ static GstStateChangeReturn
-  gst_tidmaivideosink_change_state(GstElement * element,
-      GstStateChange transition);
- static GstFlowReturn
-+ gst_tidmaivideosink_buffer_alloc(GstBaseSink * bsink, guint64 offset,
-+     guint size, GstCaps * caps, GstBuffer ** buf);
-+static GstFlowReturn
-  gst_tidmaivideosink_preroll(GstBaseSink * bsink, GstBuffer * buffer);
- static int
-  gst_tidmaivideosink_videostd_get_attrs(VideoStd_Type videoStd,
-@@ -353,6 +356,13 @@ static void gst_tidmaivideosink_class_init(GstTIDmaiVideoSinkClass * klass)
-         GST_DEBUG_FUNCPTR(gst_tidmaivideosink_preroll);
-     gstbase_sink_class->render   =
-         GST_DEBUG_FUNCPTR(gst_tidmaivideosink_render);
-+    gstbase_sink_class->buffer_alloc =
-+        GST_DEBUG_FUNCPTR(gst_tidmaivideosink_buffer_alloc);
-+
-+    /* Pad-buffer allocation is currently only supported for DM365 */
-+    #if !defined(Platform_dm365)
-+    gstbase_sink_class->buffer_alloc = NULL;
-+    #endif
- }
- 
- 
-@@ -663,6 +673,132 @@ static gboolean gst_tidmaivideosink_event(GstBaseSink * bsink,
- 
- 
- /******************************************************************************
-+ * gst_tidmaivideosink_buffer_alloc
-+ ******************************************************************************/
-+static GstFlowReturn gst_tidmaivideosink_buffer_alloc(GstBaseSink * bsink,
-+                         guint64 offset, guint size, GstCaps * caps,
-+                         GstBuffer ** buf)
-+{
-+    GstTIDmaiVideoSink *dmaisink    = GST_TIDMAIVIDEOSINK(bsink);
-+    BufferGfx_Attrs     gfxAttrs    = BufferGfx_Attrs_DEFAULT;
-+    gboolean            alloc_unref = FALSE;
-+    Buffer_Handle       hDispBuf    = NULL;
-+    GstCaps            *alloc_caps;
-+
-+    *buf = NULL;
-+
-+    GST_LOG_OBJECT(dmaisink,
-+        "a buffer of %d bytes was requested with caps %" GST_PTR_FORMAT
-+        " and offset %" G_GUINT64_FORMAT, size, caps, offset);
-+
-+    /* assume we're going to alloc what was requested, keep track of wheter we
-+     * need to unref or not. When we suggest a new format upstream we will
-+     * create a new caps that we need to unref. */
-+    alloc_caps = caps;
-+
-+    /* Process the buffer caps */
-+    if (!gst_tidmaivideosink_process_caps(bsink, alloc_caps)) {
-+        return GST_FLOW_UNEXPECTED;
-+    }
-+
-+    /* Pad buffer allocation requires that we use user-allocated display
-+     * buffers.
-+     */
-+    if (!dmaisink->useUserptrBufs && dmaisink->hDisplay) {
-+        GST_ELEMENT_ERROR(dmaisink, RESOURCE, FAILED,
-+            ("Cannot use pad buffer allocation after mmap buffers already "
-+             "in use\n"), (NULL));
-+        return GST_FLOW_UNEXPECTED;
-+    }
-+    else {
-+        dmaisink->useUserptrBufs = TRUE;
-+    }
-+
-+    /* Allocate the display buffers */
-+    if (!dmaisink->hDispBufTab && dmaisink->useUserptrBufs) {
-+
-+        /* Set the display attributes now so we can allocate display buffers */
-+        if (!gst_tidmaivideosink_set_display_attrs(dmaisink,
-+            dmaisink->dGfxAttrs.colorSpace)) {
-+            GST_ERROR("Error while trying to set the display attributes\n");
-+            return GST_FLOW_UNEXPECTED;
-+        }
-+
-+        if (!gst_tidmaivideosink_alloc_display_buffers(dmaisink, size)) {
-+            GST_ERROR("Failed to allocate display buffers");
-+            return GST_FLOW_UNEXPECTED;
-+        }
-+    }
-+
-+    /* Get a buffer from the BufTab or display driver */
-+    if (!(hDispBuf = gst_tidmaibuftab_get_buf(dmaisink->hDispBufTab))) {
-+        if (dmaisink->hDisplay &&
-+            Display_get(dmaisink->hDisplay, &hDispBuf) < 0) {
-+            GST_ELEMENT_ERROR(dmaisink, RESOURCE, FAILED,
-+                ("Failed to get display buffer\n"), (NULL));
-+            return GST_FLOW_UNEXPECTED;
-+        }
-+    }
-+
-+    /* If the geometry doesn't match, generate a new caps for it */
-+    Buffer_getAttrs(hDispBuf, BufferGfx_getBufferAttrs(&gfxAttrs));
-+
-+    if (gfxAttrs.dim.width  != dmaisink->dGfxAttrs.dim.width  ||
-+        gfxAttrs.dim.height != dmaisink->dGfxAttrs.dim.height ||
-+        gfxAttrs.colorSpace != dmaisink->dGfxAttrs.colorSpace) {
-+
-+        GstCaps *desired_caps;
-+        GstStructure *desired_struct;
-+
-+        /* make a copy of the incomming caps to create the new suggestion. We
-+         * can't use make_writable because we might then destroy the original
-+         * caps which we still need when the peer does not accept the
-+         * suggestion.
-+         */
-+        desired_caps = gst_caps_copy (caps);
-+        desired_struct = gst_caps_get_structure (desired_caps, 0);
-+
-+        GST_DEBUG ("we prefer to receive a %ldx%ld video; %ldx%ld was requested",
-+            gfxAttrs.dim.width, gfxAttrs.dim.height,
-+            dmaisink->dGfxAttrs.dim.width, dmaisink->dGfxAttrs.dim.height);
-+        gst_structure_set (desired_struct, "width", G_TYPE_INT,
-+            gfxAttrs.dim.width, NULL);
-+        gst_structure_set (desired_struct, "height", G_TYPE_INT,
-+            gfxAttrs.dim.height, NULL);
-+
-+        if (gst_pad_peer_accept_caps (GST_VIDEO_SINK_PAD (dmaisink),
-+                desired_caps)) {
-+            alloc_caps  = desired_caps;
-+            alloc_unref = TRUE;
-+
-+            if (!gst_tidmaivideosink_process_caps(bsink, alloc_caps)) {
-+                return GST_FLOW_UNEXPECTED;
-+            }
-+            GST_DEBUG ("peer pad accepts our desired caps %" GST_PTR_FORMAT,
-+                desired_caps);
-+        }
-+        else {
-+            GST_DEBUG ("peer pad does not accept our desired caps %" 
-+                GST_PTR_FORMAT, desired_caps);
-+        }
-+    }
-+
-+    /* Return the display buffer */
-+    BufferGfx_resetDimensions(hDispBuf);
-+    Buffer_freeUseMask(hDispBuf, gst_tidmaibuffer_DISPLAY_FREE);
-+    *buf = gst_tidmaibuffertransport_new(hDispBuf, NULL);
-+    gst_buffer_set_caps(*buf, alloc_caps);
-+
-+    /* If we allocated new caps, unref them now */
-+    if (alloc_unref) {
-+        gst_caps_unref (alloc_caps);
-+    }
-+
-+    return GST_FLOW_OK;
-+}
-+
-+
-+/******************************************************************************
-  * gst_tidmaivideosink_preroll
-  ******************************************************************************/
- static GstFlowReturn gst_tidmaivideosink_preroll(GstBaseSink * bsink,
-@@ -1282,6 +1418,18 @@ static gboolean gst_tidmaivideosink_init_display(GstTIDmaiVideoSink * sink)
-             return FALSE;
-         }
- 
-+        /* If we own the display buffers, tell DMAI to delay starting the
-+         * display until we call Display_put for the first time.
-+         */
-+        if (sink->hDispBufTab) {
-+            #if defined(Platform_dm365)
-+            sink->dAttrs.delayStreamon = TRUE;
-+            #else
-+            GST_ERROR("delayed V4L2 streamon not supported\n");
-+            return FALSE;
-+            #endif
-+        }
-+
-         /* Allocate user-allocated display buffers, if requested */
-         if (!sink->hDispBufTab && sink->useUserptrBufs) {
-             if (!gst_tidmaivideosink_alloc_display_buffers(sink, 0)) {
-@@ -1416,9 +1564,6 @@ static gboolean gst_tidmaivideosink_process_caps(GstBaseSink * bsink,
-     gst_structure_get_fraction(structure, "framerate", &framerateNum,
-         &framerateDen);
- 
--    /* Error check new values against existing ones */
--    /* TBD */
--
-     /* Populate the display graphics attributes */
-     dmaisink->dGfxAttrs.bAttrs.reference = dmaisink->contiguousInputFrame;
-     dmaisink->dGfxAttrs.dim.width        = width;
-@@ -1445,9 +1590,10 @@ static gboolean gst_tidmaivideosink_process_caps(GstBaseSink * bsink,
- static GstFlowReturn gst_tidmaivideosink_render(GstBaseSink * bsink,
-                          GstBuffer * buf)
- {
--    Buffer_Handle         hDispBuf  = NULL;
--    Buffer_Handle         inBuf     = NULL;
--    GstTIDmaiVideoSink   *sink      = GST_TIDMAIVIDEOSINK(bsink);
-+    Buffer_Handle         hDispBuf     = NULL;
-+    Buffer_Handle         inBuf        = NULL;
-+    gboolean              inBufIsOurs  = FALSE;
-+    GstTIDmaiVideoSink   *sink         = GST_TIDMAIVIDEOSINK(bsink);
-     BufferGfx_Dimensions  dim;
-     gchar                 dur_str[64];
-     gchar                 ts_str[64];
-@@ -1470,7 +1616,10 @@ static GstFlowReturn gst_tidmaivideosink_render(GstBaseSink * bsink,
-      *  generated via videotestsrc plugin.
-      */
-     if (GST_IS_TIDMAIBUFFERTRANSPORT(buf)) {
--        inBuf = GST_TIDMAIBUFFERTRANSPORT_DMAIBUF(buf);
-+        inBuf       = GST_TIDMAIBUFFERTRANSPORT_DMAIBUF(buf);
-+        inBufIsOurs = (sink->hDispBufTab &&
-+                          GST_TIDMAIBUFTAB_BUFTAB(sink->hDispBufTab) ==
-+                              Buffer_getBufTab(inBuf));
-     } else {
-         /* allocate DMAI buffer */
-         if (sink->tempDmaiBuf == NULL) {
-@@ -1532,11 +1681,33 @@ static GstFlowReturn gst_tidmaivideosink_render(GstBaseSink * bsink,
-      */
-     for (i = 0; i < sink->framerepeat; i++) {
- 
--        /* Get a buffer from the display driver */
--        if (Display_get(sink->hDisplay, &hDispBuf) < 0) {
--            GST_ELEMENT_ERROR(sink, RESOURCE, FAILED,
--            ("Failed to get display buffer\n"), (NULL));
--            goto cleanup;
-+        /* If the input buffer originated from this element via pad allocation,
-+         * simply give it back to the display and continue.
-+         */
-+        if (inBufIsOurs) {
-+
-+            /* Mark buffer as in-use by the display so it can't be re-used
-+             * until it comes back from Display_get */
-+            Buffer_setUseMask(inBuf, Buffer_getUseMask(inBuf) |
-+                gst_tidmaibuffer_DISPLAY_FREE);
-+
-+            if (Display_put(sink->hDisplay, inBuf) < 0) {
-+                GST_ELEMENT_ERROR(sink, RESOURCE, FAILED,
-+                ("Failed to put display buffer\n"), (NULL));
-+                goto cleanup;
-+            }
-+            continue;
-+        }
-+
-+        /* Otherwise, our input buffer originated from up-stream.  Retrieve a
-+         * display buffer to copy the contents into.
-+         */
-+        else {
-+            if (Display_get(sink->hDisplay, &hDispBuf) < 0) {
-+                GST_ELEMENT_ERROR(sink, RESOURCE, FAILED,
-+                ("Failed to get display buffer\n"), (NULL));
-+                goto cleanup;
-+            }
-         }
- 
-         /* Retrieve the dimensions of the display buffer */
-@@ -1844,8 +2015,10 @@ static gboolean gst_tidmaivideosink_alloc_display_buffers(
-             gfxAttrs.dim.height, gfxAttrs.dim.lineLength, gfxAttrs.colorSpace);
-     }
- 
-+    gfxAttrs.bAttrs.useMask = gst_tidmaibuffer_VIDEOSINK_FREE;
-     sink->hDispBufTab = gst_tidmaibuftab_new(sink->dAttrs.numBufs, bufSize,
-         BufferGfx_getBufferAttrs(&gfxAttrs));
-+    gst_tidmaibuftab_set_blocking(sink->hDispBufTab, FALSE);
- 
-     return TRUE;
- }
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0008-Add-support-for-pad-allocated-buffers-in-TIViddec2.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0008-Add-support-for-pad-allocated-buffers-in-TIViddec2.patch
deleted file mode 100644
index 9ceb30f..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0008-Add-support-for-pad-allocated-buffers-in-TIViddec2.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-From e5a264465c1c77d5fc18eeb51b99c79fc3f28a3e Mon Sep 17 00:00:00 2001
-From: Don Darling <don.osc2 at gmail.com>
-Date: Tue, 8 Jun 2010 13:48:51 -0500
-Subject: [PATCH 8/8] Add support for pad-allocated buffers in TIViddec2.
-
-When padAllocOutbufs=TRUE is specified to the TIViddec2 element, it will
-attempt to allocate buffers from downstream instead of allocating its own.
-
-Downstream buffers will only be used if it can be determined that they are
-all members of a DMAI BufTab, which means they are CMEM-based, and will work
-with the codecs.  Currently, the only known downstream element that can provide
-these buffers is TIDmaiVideoSink, and it is only supported for DM365.
-
-There is currently no support for centering small clips in the middle of the
-display screen -- this would require additional support in the display driver.
-As a result, pad-allocation can currently only be used with clips that are at
-least as large as the display, and this feature not enabled by default because
-of these strict clip-size requirements.
-
-On DM365, there are known issues with the MPEG-2 decoder's output buffer size
-calculation that cause it not to work with D1 resolutions unless you hard-code
-the size.  H.264 and MPEG-4 decoders work as expected, and MPEG-2 works as
-expected for 720p.
----
- .../ti_build/ticodecplugin/src/gsttividdec2.c      |  159 ++++++++++++++++----
- .../ti_build/ticodecplugin/src/gsttividdec2.h      |    1 +
- 2 files changed, 127 insertions(+), 33 deletions(-)
-
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c b/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c
-index c39208f..ec3cb05 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c
-@@ -73,7 +73,8 @@ enum
-   PROP_FRAMERATE,       /* framerate      (GstFraction) */
-   PROP_DISPLAY_BUFFER,  /* displayBuffer  (boolean) */
-   PROP_GEN_TIMESTAMPS,  /* genTimeStamps  (boolean) */
--  PROP_RTCODECTHREAD    /* rtCodecThread (boolean) */
-+  PROP_RTCODECTHREAD,   /* rtCodecThread (boolean) */
-+  PROP_PAD_ALLOC_OUTBUFS /* padAllocOutbufs (boolean) */
- };
- 
- /* Define sink (input) pad capabilities.  Currently, MPEG and H264 are 
-@@ -170,8 +171,8 @@ static GstClockTime
-  gst_tividdec2_frame_duration(GstTIViddec2 *viddec2);
- static gboolean
-  gst_tividdec2_resizeBufTab(GstTIViddec2 *viddec2);
--static gboolean 
--    gst_tividdec2_codec_start (GstTIViddec2  *viddec2);
-+static gboolean
-+    gst_tividdec2_codec_start (GstTIViddec2  *viddec2, GstBuffer **padBuffer);
- static gboolean 
-     gst_tividdec2_codec_stop (GstTIViddec2  *viddec2);
- static void 
-@@ -324,6 +325,11 @@ static void gst_tividdec2_class_init(GstTIViddec2Class *klass)
-         g_param_spec_boolean("genTimeStamps", "Generate Time Stamps",
-             "Set timestamps on output buffers",
-             TRUE, G_PARAM_WRITABLE));
-+
-+    g_object_class_install_property(gobject_class, PROP_PAD_ALLOC_OUTBUFS,
-+        g_param_spec_boolean("padAllocOutbufs", "Use pad allocation",
-+            "Try to allocate buffers with pad allocation",
-+            FALSE, G_PARAM_WRITABLE));
- }
- 
- /******************************************************************************
-@@ -448,6 +454,7 @@ static void gst_tividdec2_init(GstTIViddec2 *viddec2, GstTIViddec2Class *gclass)
- 
-     viddec2->numOutputBufs      = 0UL;
-     viddec2->hOutBufTab         = NULL;
-+    viddec2->padAllocOutbufs    = FALSE;
-     viddec2->circBuf            = NULL;
- 
-     viddec2->sps_pps_data       = NULL;
-@@ -548,6 +555,10 @@ static void gst_tividdec2_set_property(GObject *object, guint prop_id,
-             viddec2->rtCodecThread = g_value_get_boolean(value);
-             GST_LOG("setting \"RTCodecThread\" to \"%s\"\n",
-                 viddec2->rtCodecThread ? "TRUE" : "FALSE");
-+        case PROP_PAD_ALLOC_OUTBUFS:
-+            viddec2->padAllocOutbufs = g_value_get_boolean(value);
-+            GST_LOG("setting \"padAllocOutbufs\" to \"%s\"\n",
-+                viddec2->padAllocOutbufs ? "TRUE" : "FALSE");
-             break;
-         default:
-             G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
-@@ -1079,9 +1090,9 @@ static gboolean gst_tividdec2_init_video(GstTIViddec2 *viddec2)
-      */
-     Rendezvous_meet(viddec2->waitOnDecodeThread);
- 
--    if (viddec2->circBuf == NULL || viddec2->hOutBufTab == NULL) {
-+    if (viddec2->circBuf == NULL) {
-         GST_ELEMENT_ERROR(viddec2, RESOURCE, FAILED,
--        ("decode thread failed to create circbuf or display buffer handles\n"),
-+        ("decode thread failed to create circbuf handles\n"),
-         (NULL));
-         return FALSE;
-     }
-@@ -1260,11 +1271,13 @@ static gboolean gst_tividdec2_codec_stop (GstTIViddec2  *viddec2)
-  * gst_tividdec2_codec_start
-  *     Initialize codec engine
-  *****************************************************************************/
--static gboolean gst_tividdec2_codec_start (GstTIViddec2  *viddec2)
-+static gboolean gst_tividdec2_codec_start (GstTIViddec2  *viddec2,
-+           GstBuffer **padBuffer)
- {
--    VIDDEC2_Params         params    = Vdec2_Params_DEFAULT;
--    VIDDEC2_DynamicParams  dynParams = Vdec2_DynamicParams_DEFAULT;
--    BufferGfx_Attrs        gfxAttrs  = BufferGfx_Attrs_DEFAULT;
-+    VIDDEC2_Params         params      = Vdec2_Params_DEFAULT;
-+    VIDDEC2_DynamicParams  dynParams   = Vdec2_DynamicParams_DEFAULT;
-+    BufferGfx_Attrs        gfxAttrs    = BufferGfx_Attrs_DEFAULT;
-+    BufTab_Handle          codecBufTab = NULL;
-     Cpu_Device             device;
-     ColorSpace_Type        colorSpace;
-     Int                    defaultNumBufs;
-@@ -1364,30 +1377,77 @@ static gboolean gst_tividdec2_codec_start (GstTIViddec2  *viddec2)
-         viddec2->numOutputBufs = defaultNumBufs;
-     }
- 
--    /* Create codec output buffers */
--    GST_LOG("creating output buffer table\n");
--    gfxAttrs.colorSpace     = colorSpace;
--    gfxAttrs.dim.width      = params.maxWidth;
--    gfxAttrs.dim.height     = params.maxHeight;
--    gfxAttrs.dim.lineLength = BufferGfx_calcLineLength(
--                                  gfxAttrs.dim.width, gfxAttrs.colorSpace);
-+    /* Try to allocate a buffer from downstream.  To do this, we must first
-+     * set the framerate to a reasonable default if one hasn't been specified,
-+     * and we need to set the source pad caps with the stream information we
-+     * have so far.
-+     */
-+    gst_tividdec2_frame_duration(viddec2);
-+    gst_tividdec2_set_source_caps_base(viddec2, params.maxWidth,
-+        params.maxHeight, colorSpace);
-+
-+    *padBuffer = NULL;
-+    if (viddec2->padAllocOutbufs) {
-+        if (gst_pad_alloc_buffer(viddec2->srcpad, 0,
-+            Vdec2_getOutBufSize(viddec2->hVd), GST_PAD_CAPS(viddec2->srcpad),
-+            padBuffer) != GST_FLOW_OK) {
-+            GST_LOG("failed to allocate a downstream buffer\n");
-+            *padBuffer = NULL;
-+        }
-+
-+        if (*padBuffer && !GST_IS_TIDMAIBUFFERTRANSPORT(*padBuffer)) {
-+            GST_LOG("downstream buffer is not a DMAI buffer; disabling use of "
-+                "pad-allocated buffers\n");
-+            gst_buffer_unref(*padBuffer);
-+            *padBuffer = NULL;
-+        }
-+
-+        if (*padBuffer) {
-+            codecBufTab = Buffer_getBufTab(
-+                GST_TIDMAIBUFFERTRANSPORT_DMAIBUF(*padBuffer));
-+
-+            if (!codecBufTab) {
-+                GST_LOG("downstream buffer is not a BufTab member; disabling "
-+                    "use of pad-allocated buffers\n");
-+                gst_buffer_unref(*padBuffer);
-+                *padBuffer = NULL;
-+            }
-+        }
-+    }
-+
-+    /* If we can't use pad-allocated buffers, allocate our own BufTab for
-+     * output buffers to push downstream.
-+     */
-+    if (!(*padBuffer)) {
-+
-+        GST_LOG("creating output buffer table\n");
-+        gfxAttrs.colorSpace     = colorSpace;
-+        gfxAttrs.dim.width      = params.maxWidth;
-+        gfxAttrs.dim.height     = params.maxHeight;
-+        gfxAttrs.dim.lineLength = BufferGfx_calcLineLength(
-+                                      gfxAttrs.dim.width, gfxAttrs.colorSpace);
- 
--    /* By default, new buffers are marked as in-use by the codec */
--    gfxAttrs.bAttrs.useMask = gst_tidmaibuffer_CODEC_FREE;
-+        /* By default, new buffers are marked as in-use by the codec */
-+        gfxAttrs.bAttrs.useMask = gst_tidmaibuffer_CODEC_FREE;
- 
--    viddec2->hOutBufTab = gst_tidmaibuftab_new(
--        viddec2->numOutputBufs, Vdec2_getOutBufSize(viddec2->hVd),
--        BufferGfx_getBufferAttrs(&gfxAttrs));
-+        viddec2->hOutBufTab = gst_tidmaibuftab_new(
-+            viddec2->numOutputBufs, Vdec2_getOutBufSize(viddec2->hVd),
-+            BufferGfx_getBufferAttrs(&gfxAttrs));
-+
-+        codecBufTab = GST_TIDMAIBUFTAB_BUFTAB(viddec2->hOutBufTab);
-+    }
- 
--    if (viddec2->hOutBufTab == NULL) {
-+    /* The value of codecBufTab should now either point to a downstream
-+     * BufTab or our own BufTab.
-+     */
-+    if (codecBufTab == NULL) {
-         GST_ELEMENT_ERROR(viddec2, RESOURCE, NO_SPACE_LEFT,
--        ("failed to create output buffers\n"), (NULL));
-+            ("no BufTab available for codec output\n"), (NULL));
-         return FALSE;
-     }
- 
--    /* Tell the Vdec module that hOutBufTab will be used for display buffers */
--    Vdec2_setBufTab(viddec2->hVd,
--        GST_TIDMAIBUFTAB_BUFTAB(viddec2->hOutBufTab));
-+    /* Tell the Vdec module what BufTab it will be using for its output */
-+    Vdec2_setBufTab(viddec2->hVd, codecBufTab);
- 
-     return TRUE;
- }
-@@ -1403,8 +1463,10 @@ static void* gst_tividdec2_decode_thread(void *arg)
- {
-     GstTIViddec2  *viddec2        = GST_TIVIDDEC2(gst_object_ref(arg));
-     GstBuffer     *encDataWindow  = NULL;
-+    GstBuffer     *padBuffer      = NULL;
-     Buffer_Attrs   bAttrs         = Buffer_Attrs_DEFAULT;
-     gboolean       codecFlushed   = FALSE;
-+    gboolean       usePadBufs     = FALSE;
-     void          *threadRet      = GstTIThreadSuccess;
-     Buffer_Handle  hDummyInputBuf = NULL;
-     Buffer_Handle  hDstBuf;
-@@ -1420,7 +1482,8 @@ static void* gst_tividdec2_decode_thread(void *arg)
-     GST_LOG("init video decode_thread \n");
- 
-     /* Initialize codec engine */
--    ret = gst_tividdec2_codec_start(viddec2);
-+    ret = gst_tividdec2_codec_start(viddec2, &padBuffer);
-+    usePadBufs = (padBuffer != NULL);
- 
-     /* Notify main thread that is ok to continue initialization */
-     Rendezvous_meet(viddec2->waitOnDecodeThread);
-@@ -1476,7 +1539,34 @@ static void* gst_tividdec2_decode_thread(void *arg)
-         }
- 
-         /* Obtain a free output buffer for the decoded data */
--        if (!(hDstBuf = gst_tidmaibuftab_get_buf(viddec2->hOutBufTab))) {
-+        if (usePadBufs) {
-+
-+            /* First time through this loop, padBuffer will already be set
-+             * to the buffer we got in codec_start.  It will be NULL for every
-+             * frame after that.
-+             */
-+            if (G_LIKELY(!padBuffer)) {
-+                if (gst_pad_alloc_buffer(viddec2->srcpad, 0, 0,
-+                        GST_PAD_CAPS(viddec2->srcpad), &padBuffer)
-+                        != GST_FLOW_OK) {
-+                    GST_ELEMENT_ERROR(viddec2, RESOURCE, READ,
-+                        ("failed to allocate a downstream buffer\n"), (NULL));
-+                    padBuffer = NULL;
-+                    goto thread_exit;
-+                }
-+            }
-+            hDstBuf = GST_TIDMAIBUFFERTRANSPORT_DMAIBUF(padBuffer);
-+            gst_buffer_unref(padBuffer);
-+            padBuffer = NULL;
-+
-+            /* Set the CODEC_FREE flag -- this isn't done automatically when
-+             * allocating buffers from downstream.
-+             */
-+            Buffer_setUseMask(hDstBuf, Buffer_getUseMask(hDstBuf) |
-+                gst_tidmaibuffer_CODEC_FREE);
-+
-+        }
-+        else if (!(hDstBuf = gst_tidmaibuftab_get_buf(viddec2->hOutBufTab))) {
-             GST_ELEMENT_ERROR(viddec2, RESOURCE, READ,
-                 ("failed to get a free contiguous buffer from BufTab\n"), 
-                 (NULL));
-@@ -1623,12 +1713,15 @@ thread_failure:
- thread_exit:
- 
-     /* Re-claim any buffers owned by the codec */
--    bufIdx = BufTab_getNumBufs(GST_TIDMAIBUFTAB_BUFTAB(viddec2->hOutBufTab));
-+    if (viddec2->hOutBufTab) {
-+        bufIdx =
-+            BufTab_getNumBufs(GST_TIDMAIBUFTAB_BUFTAB(viddec2->hOutBufTab));
- 
--    while (bufIdx-- > 0) {
--        Buffer_Handle hBuf = BufTab_getBuf(
--            GST_TIDMAIBUFTAB_BUFTAB(viddec2->hOutBufTab), bufIdx);
--        Buffer_freeUseMask(hBuf, gst_tidmaibuffer_CODEC_FREE);
-+        while (bufIdx-- > 0) {
-+            Buffer_Handle hBuf = BufTab_getBuf(
-+                GST_TIDMAIBUFTAB_BUFTAB(viddec2->hOutBufTab), bufIdx);
-+            Buffer_freeUseMask(hBuf, gst_tidmaibuffer_CODEC_FREE);
-+        }
-     }
- 
-     /* Release the last buffer we retrieved from the circular buffer */
-diff --git a/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h b/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h
-index b16e9c5..6b09d2a 100644
---- a/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h
-+++ b/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h
-@@ -91,6 +91,7 @@ struct _GstTIViddec2
-   UInt32           numOutputBufs;
-   GstTIDmaiBufTab *hOutBufTab;
-   GstTICircBuffer *circBuf;
-+  gboolean         padAllocOutbufs;
- 
-   /* Quicktime h264 header  */
-   GstBuffer       *sps_pps_data;
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0009-dmaisink-compilation-fix.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0009-dmaisink-compilation-fix.patch
deleted file mode 100644
index b8525b7..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0009-dmaisink-compilation-fix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 721970f80e6bff0f231625f00301fa37473a2bb3 Mon Sep 17 00:00:00 2001
-From: Brijesh Singh <bksingh at ti.com>
-Date: Wed, 7 Jul 2010 19:21:01 -0500
-Subject: [PATCH 9/9] dmaisink compilation fix
-
-temporary fix - should go in svn trunk
----
- src/gsttidmaivideosink.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/gsttidmaivideosink.c b/src/gsttidmaivideosink.c
-index 99ca25d..2fb5aad 100644
---- a/src/gsttidmaivideosink.c
-+++ b/src/gsttidmaivideosink.c
-@@ -1817,7 +1817,7 @@ static gboolean gst_tidmaivideosink_alloc_display_buffers(
-         return FALSE;
-     }
- 
--    GST_INFO("Allocating %ld display buffers", sink->dAttrs.numBufs);
-+    GST_INFO("Allocating %d display buffers", sink->dAttrs.numBufs);
- 
-     /* Set the dimensions for the display */
-     if (VideoStd_getResolution(sink->dAttrs.videoStd, &gfxAttrs.dim.width,
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0009-update-dm365-cfg-to-work-with-platinum-codecs.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0009-update-dm365-cfg-to-work-with-platinum-codecs.patch
deleted file mode 100644
index 0d36bf1..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0009-update-dm365-cfg-to-work-with-platinum-codecs.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From d5601a8beec6144fb39ebdc93778c081028a7fdd Mon Sep 17 00:00:00 2001
-From: Brijesh Singh <bksingh at ti.com>
-Date: Tue, 28 Sep 2010 19:35:14 -0500
-Subject: [PATCH] update dm365 cfg to work with platinum codecs
-
----
- src/gstticodecplugin_dm365.cfg |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/src/gstticodecplugin_dm365.cfg b/src/gstticodecplugin_dm365.cfg
-index d682643..43174b1 100644
---- a/src/gstticodecplugin_dm365.cfg
-+++ b/src/gstticodecplugin_dm365.cfg
-@@ -86,6 +86,9 @@ var ADDRSPACE = xdc.useModule('ti.sdo.fc.ires.addrspace.ADDRSPACE');
- 
- var CMEM = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM');
- 
-+var MEMTCM = xdc.useModule('ti.sdo.fc.ires.memtcm.MEMTCM');
-+MEMTCM.cmemBlockId = 1; //Since we use _1 in our insmod command.
-+
- /* Uncomment these lines if you wish to debug FC and enable FC trace */
- /* 
- /*
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/0010-replace-omap3530_dv400-platform-support-with-omap353.patch b/recipes-ti/gstreamer-ti/gstreamer-ti/0010-replace-omap3530_dv400-platform-support-with-omap353.patch
deleted file mode 100644
index 85550e6..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/0010-replace-omap3530_dv400-platform-support-with-omap353.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 0f2ef84ad320ec141a7ba6727cf18817ac42e413 Mon Sep 17 00:00:00 2001
-From: Brijesh Singh <bksingh at ti.com>
-Date: Mon, 4 Oct 2010 14:11:39 -0500
-Subject: [PATCH] replace omap3530_dv400 platform support with omap3530
-
----
- Makefile.external                       |   19 +++----------
- src/gstticodecplugin_omap3530_dv400.cfg |   44 -------------------------------
- 2 files changed, 5 insertions(+), 58 deletions(-)
- delete mode 100644 src/gstticodecplugin_omap3530_dv400.cfg
-
-diff --git a/Makefile.external b/Makefile.external
-index 6d118d8..2a85108 100644
---- a/Makefile.external
-+++ b/Makefile.external
-@@ -8,7 +8,7 @@
- # Copyright (C) 2009 Ridgerun 
- #
- 
--.PHONY: default configure dm6446 omap3530 dm355 dm6467 dm365 omapl138 omap3530_dv400
-+.PHONY: default configure dm6446 omap3530 dm355 dm6467 dm365 omapl138
- 
- DVSDK_PATH=undefined
- DMAI_INSTALL_DIR=undefined
-@@ -23,7 +23,7 @@ $(error You need to define the environment variable DMAI_INSTALL_DIR)
- endif
- 
- default:
--	@echo "Please specify the target: dm6446, omap3530, dm355, dm6467, dm6467t, dm365 omapl138 omap3530_dv400"
-+	@echo "Please specify the target: dm6446, omap3530, dm355, dm6467, dm6467t, dm365 omapl138"
- 
- export GST_TI_PLATFORM=$(MAKECMDGOALS)
- export BIOS_INSTALL_DIR
-@@ -87,6 +87,9 @@ ifeq ($(GST_TI_PLATFORM), omap3530)
-     export MVTOOL_DIR    = $(CSTOOL_DIR)
-     export PLATFORM_XDC  = ${XDC_PLATFORM}
-     export CROSS_COMPILE = ${CSTOOL_PREFIX}
-+    export LINK_XDC_ROOT = $(LINK_INSTALL_DIR)
-+    export C6ACCEL_INSTALL_DIR
-+    export ENABLE_C6ACCEL ="--enable-c6accel"
- endif
- 
- ifeq ($(GST_TI_PLATFORM), omapl138)
-@@ -101,16 +104,6 @@ ifeq ($(GST_TI_PLATFORM), omapl138)
-     export ENABLE_C6ACCEL ="--enable-c6accel"
- endif
- 
--ifeq ($(GST_TI_PLATFORM), omap3530_dv400)
--    export XDC_TARGET    = gnu.targets.arm.GCArmv5T
--    export XDC_PLATFORM  = ti.platforms.evm3530
--    export MVTOOL_PREFIX = $(CSTOOL_PREFIX)
--    export MVTOOL_DIR    = $(CSTOOL_DIR)
--    export PLATFORM_XDC  = ${XDC_PLATFORM}
--    export CROSS_COMPILE = ${CSTOOL_PREFIX}
--    export LINK_XDC_ROOT = $(LINK_INSTALL_DIR)
--endif
--
- CPPFLAGS=-DPlatform_$(GST_TI_PLATFORM) 
- HOST=arm-none-linux-gnueabi
- 
-@@ -141,5 +134,3 @@ dm365: Makefile
- omapl138: Makefile
- 	$(MAKE) -f Makefile
- 
--omap3530_dv400: Makefile
--	$(MAKE) -f Makefile
-diff --git a/src/gstticodecplugin_omap3530_dv400.cfg b/src/gstticodecplugin_omap3530_dv400.cfg
-deleted file mode 100644
-index 90f4edf..0000000
---- a/src/gstticodecplugin_omap3530_dv400.cfg
-+++ /dev/null
-@@ -1,44 +0,0 @@
--/*
-- * Copyright (C) 2008-2010 Texas Instruments Incorporated - http://www.ti.com/
-- *
-- * This program is free software; you can redistribute it and/or modify 
-- * it under the terms of the GNU Lesser General Public License as
-- * published by the Free Software Foundation version 2.1 of the License.
-- *
-- * This program is distributed #as is# WITHOUT ANY WARRANTY of any kind,
-- * whether express or implied; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-- * Lesser General Public License for more details.
-- *
-- */
--
--/* Load the Codec Engine 'Operating System Abstraction Layer' */
--var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
--
--var os = xdc.useModule('ti.sdo.ce.osal.linux.Settings');
--osalGlobal.os = os;
--
--/* Configure CE to use it's DSP Link Linux version */
--var ipc = xdc.useModule('ti.sdo.ce.ipc.Settings');
--ipc.commType = ipc.COMM_DSPLINK;
--
--/*
-- *  ======== Engine Configuration ========
-- */
--var Engine = xdc.useModule('ti.sdo.ce.Engine');
--var demoEngine = Engine.createFromServer(
--    "codecServer",
--    "./bin/cs.x64P",
--    "ti.sdo.server.cs"
--    );
--
--var combopath = "" + java.lang.System.getenv("CODEC_SERVER");
--if (combopath != "" && combopath != "null") {
--	demoEngine.server = java.lang.System.getenv("CODEC_SERVER");
--}
--
--/* Load support for the DMAI module */
--var DMAI = xdc.loadPackage('ti.sdo.dmai');
--
--var SCPY = xdc.useModule('ti.sdo.fc.scpy.SCPY');
--var SDMA = xdc.useModule('ti.sdo.linuxutils.sdma.SDMA');
--- 
-1.7.0.4
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/dm355-evm/gst-ti.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/dm355-evm/gst-ti.sh
deleted file mode 100644
index 5467a67..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/dm355-evm/gst-ti.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Disable XDM 0.9 elements
-export GST_TI_TIViddec_DISABLE=1
-export GST_TI_TIAuddec_DISABLE=1
-export GST_TI_TIVidenc_DISABLE=1
-export GST_TI_TIImgdec_DISABLE=1
-export GST_TI_TIImgenc_DISABLE=1
-
-# Disable XDM 1.x audio decoder
-export GST_TI_TIAuddec1_DISABLE=1
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/dm365-evm/loadmodules.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/dm365-evm/loadmodules.sh
deleted file mode 100644
index c70bee1..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/dm365-evm/loadmodules.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-# 
-# Default DM365 Memory Map 128 MB
-#
-# Start Addr    Size    Description
-# ----------------------------------------------------------------
-# 0x00001000    32K     ARM926 TCM memory used by platinum codec
-# 0x80000000    48 MB   Linux
-# 0x83000000    12 MB   Video driver memory (Linux)
-# 0x83C00000    68 MB   CMEM
-# 0x88000000    BOTTOM  ADDRESS
-#
-
-rmmod cmemk 2>/dev/null
-
-# Pools configuration
-modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=1x16539648,1x4841472,4x1843200,14x1646592,1x282624,1x176128,1x147456,1x69632,1x61440,1x32768,2x20480,1x16384,1x12288,4x8192,69x4096 allowOverlap=1 phys_start_1=0x00001000 phys_end_1=0x00008000 pools_1=1x28672 
-
-# Decode + Display
-#modprobe cmemk phys_start=0x83c00000 phys_end=0x88000000 pools=1x16539648,1x4841472,14x1646592,1x282624,1x176128,1x147456,1x69632,1x61440,1x32768,2x20480,1x12288,1x8192,64x4096
-
-# Capture + Encode
-#modprobe cmemk phys_start=0x83c00000 phys_end=0x88000000 pools=1x3112960,1x2764800,3x1536000,1x65536,1x61440,1x49152,1x20480,1x16384,2x8192,87x4096
-
-# Resizer
-#modprobe cmemk phys_start=0x83c00000 phys_end=0x88000000 pools=3x1843200
-
-# Non-accel display
-#modprobe cmemk phys_start=0x83c00000 phys_end=0x88000000 pools=1x1843200
-
-modprobe irqk
-modprobe edmak
-modprobe dm365mmap
-
-rm -f /dev/dm365mmap
-mknod /dev/dm365mmap c `awk "\\$2==\"dm365mmap\" {print \\$1}" /proc/devices` 0
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/gstreamer-ti-rc.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/gstreamer-ti-rc.sh
deleted file mode 100644
index 35bf781..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/gstreamer-ti-rc.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-#
-# configure kernel modules to run gst-ti plugins elements
-#
-
-load_module() {
-    echo 
-    echo -n "Running /usr/share/ti/gst/<platform>/loadmodules.sh"
-    /usr/share/ti/gst/<platform>/loadmodules.sh
-}
-
-case "$1" in
-      start) 
-             echo -n "Loading kernel modules for gstreamer-ti... "
-             load_module
-             echo "  done"
-             ;;
-       stop) 
-             echo "Nothing to do"
-             ;;
-        restart) 
-             echo "Nothing to do"
-             ;;
-        *)
-             echo "$0 <start/stop/restart>"
-             ;;
-esac
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/gstti-init.service b/recipes-ti/gstreamer-ti/gstreamer-ti/gstti-init.service
deleted file mode 100644
index cccf534..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/gstti-init.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=TI Gstreamer plugins init
-ConditionKernelCommandLine=mem=MEMARGS
-
-[Service]
-ExecStart=/usr/share/ti/gst/<platform>/loadmodules.sh
-RemainAfterExit=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/omap3/loadmodules.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/omap3/loadmodules.sh
deleted file mode 100644
index eb75883..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/omap3/loadmodules.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-#
-# CMEM Allocation
-#    1x5250000            Circular buffer
-#    6x829440,1x691200    Video buffers (max D1 PAL)
-#    1x345600             Underlying software components (codecs, etc.)
-#    1x1                  Dummy buffer used during final flush
-
-rmmod cmemk 2>/dev/null
-
-modprobe cmemk allowOverlap=1 phys_start=0x86300000 phys_end=0x87300000 \
-        pools=1x5250000,6x829440,1x345600,1x691200,1x1
-
-# insert DSP/BIOS Link driver
-modprobe dsplinkk
-
-# insert Local Power Manager driver
-modprobe lpm_omap3530
-
-# insert SDMA driver
-modprobe sdmak 
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/omapl137/loadmodules.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/omapl137/loadmodules.sh
deleted file mode 100644
index d031188..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/omapl137/loadmodules.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-#
-# configure kernel modules for TI DSP based gstreamer plugin
-#
-
-# insert cmemk, tell it to occupy physical 34MB-64MB.
-#
-modprobe cmemk phys_start=0xC2200000 phys_end=0xC3200000 \
-    pools=1x5250000,3x1048576,3x829440,1x256000,4x131072
-
-modprobe dsplinkk
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/da850-omapl138-evm/loadmodules.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/da850-omapl138-evm/loadmodules.sh
deleted file mode 100644
index f401725..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/da850-omapl138-evm/loadmodules.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-#
-# configure kernel modules for TI DSP based gstreamer plugin
-#
-rmmod cmemk 2>/dev/null
-rmmod dsplink 2>/dev/null
-
-modprobe cmemk phys_start=0xC2200000 phys_end=0xC3200000 \
-    pools=1x5250000,3x1048576,3x829440,1x256000,4x131072 \
-    allowOverlap=1
-
-modprobe dsplinkk
-
-rm -f /dev/dsplink
-mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/loadmodules.sh b/recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/loadmodules.sh
deleted file mode 100644
index 95cfc3d..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/omapl138/loadmodules.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-#
-# configure kernel modules for TI DSP based gstreamer plugin
-#
-
-rmmod cmemk 2>/dev/null
-
-modprobe cmemk phys_start=0xC2200000 phys_end=0xC3200000 \
-    pools=1x5250000,3x1048576,3x829440,1x256000,4x131072
-
-modprobe dsplinkk
-
-rm -f /dev/dsplink
-mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
-
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti/r962-remove-include-videodev.diff b/recipes-ti/gstreamer-ti/gstreamer-ti/r962-remove-include-videodev.diff
deleted file mode 100644
index cb106fc..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti/r962-remove-include-videodev.diff
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -ur ticodecplugin_orig/src/gstticapturesrc.c ticodecplugin/src/gstticapturesrc.c
---- ticodecplugin_orig/src/gstticapturesrc.c	2011-08-09 17:03:39.201308305 +0200
-+++ ticodecplugin/src/gstticapturesrc.c	2011-08-09 17:02:35.177308274 +0200
-@@ -25,7 +25,6 @@
- #include <gst/gst.h>
- #include <string.h>
- #include <gst/gstmarshal.h>
--#include <linux/videodev.h>
- #include <linux/videodev2.h>
- #include <sys/ioctl.h>
- 
-diff -ur ticodecplugin_orig/src/gsttidisplaysink2.c ticodecplugin/src/gsttidisplaysink2.c
---- ticodecplugin_orig/src/gsttidisplaysink2.c	2011-08-09 17:03:53.329308312 +0200
-+++ ticodecplugin/src/gsttidisplaysink2.c	2011-08-09 17:03:11.337308292 +0200
-@@ -28,7 +28,6 @@
- #include <gst/video/video.h>
- #include <string.h>
- #include <gst/gstmarshal.h>
--#include <linux/videodev.h>
- #include <linux/videodev2.h>
- #include <sys/ioctl.h>
- 
diff --git a/recipes-ti/gstreamer-ti/gstreamer-ti_svn.bb b/recipes-ti/gstreamer-ti/gstreamer-ti_svn.bb
deleted file mode 100644
index f314a35..0000000
--- a/recipes-ti/gstreamer-ti/gstreamer-ti_svn.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-require gstreamer-ti.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=c8a292be1d17ba07ecbf7b49049cbf22"
-
-PV = "svnr${SRCREV}"
-
-S = "${WORKDIR}/gstreamer_ti/ti_build/ticodecplugin"
-
-SRCREV = "962"
-
-# apply patches from tracker 1208 to get zero copy support.
-# https://gstreamer.ti.com/gf/project/gstreamer_ti/tracker/?action=TrackerItemEdit&tracker_item_id=1208&start=175
-
-SRC_URI = "svn://gforge.ti.com/svn/gstreamer_ti/trunk;module=gstreamer_ti;protocol=https;user=anonymous;pswd='' \
-           file://gstreamer-ti-rc.sh \
-           file://r962-remove-include-videodev.diff \
-           file://gstti-init.service \
-"
-
-# use local loadmodules.sh for these platform
-# TODO: must be removed onces these loadmodules goes in gstreamer.ti.com
-SRC_URI_append_dm365 = " file://loadmodules.sh"
-SRC_URI_append_omapl137 = " file://loadmodules.sh"
-SRC_URI_append_omapl138 = " file://loadmodules.sh "
-SRC_URI_append_omap3 = " file://loadmodules.sh "
-
-- 
2.7.4



More information about the meta-ti mailing list