From 455900e8cbb7a88d3ec05cba5393f4ca0bf22adc Mon Sep 17 00:00:00 2001
From: Brijesh Singh <bksingh@ti.com>
Date: Sun, 9 May 2010 05:21:19 -0500
Subject: [PATCH] gstreamer ti tracker 1055

---
 Makefile.external                |   49 +++++++---
 src/Makefile.am                  |    4 +-
 src/gstticodecplugin_dm355.cfg   |  143 ++++++++++++-----------------
 src/gstticodecplugin_dm365.cfg   |  185 ++++++++++++++++++--------------------
 src/gstticodecplugin_dm6467t.cfg |   34 +++++++
 src/gstticodecs_dm355.c          |   11 +--
 src/gstticodecs_dm365.c          |   23 ++++--
 src/gstticodecs_dm6467.c         |    2 +-
 src/gstticodecs_dm6467t.c        |   69 ++++++++++++++
 src/gsttidmaivideosink.c         |   25 ++++-
 src/gsttividdec2.c               |   73 ++++++++-------
 src/gsttividenc1.c               |   10 ++-
 src/gsttividresize.c             |    4 +
 13 files changed, 380 insertions(+), 252 deletions(-)
 create mode 100644 src/gstticodecplugin_dm6467t.cfg
 create mode 100644 src/gstticodecs_dm6467t.c

diff --git a/Makefile.external b/Makefile.external
index ca14b49..1f67783 100644
--- a/Makefile.external
+++ b/Makefile.external
@@ -3,8 +3,7 @@
 #
 # The only customization required below is defining the DVSDK_PATH
 # and, if your DVSDK doesn't include DMAI, the set DMAI_INSTALL_DIR variable
-# appropriately.  If your DVSDK does include DMAI, then delete the line
-# setting the DMAI_INSTALL_DIR variable below.
+# appropriately.
 #
 # Copyright (C) 2009 Ridgerun 
 #
@@ -17,15 +16,16 @@ DMAI_INSTALL_DIR=undefined
 ifeq ($(DVSDK_PATH),undefined)
 $(error You need to define the environment variable DVSDK_PATH)
 endif
+include $(DVSDK_PATH)/Rules.make
+
 ifeq ($(DMAI_INSTALL_DIR),undefined)
 $(error You need to define the environment variable DMAI_INSTALL_DIR)
 endif
 
 default:
-	@echo "Please specify the target: dm6446, omap3530, dm355, dm6467, dm365"
+	@echo "Please specify the target: dm6446, omap3530, dm355, dm6467, dm6467t, dm365"
 
-include $(DVSDK_PATH)/Rules.make
-export PLATFORM=$(MAKECMDGOALS)
+export GST_TI_PLATFORM=$(MAKECMDGOALS)
 export BIOS_INSTALL_DIR
 export CE_INSTALL_DIR
 export CMEM_INSTALL_DIR
@@ -33,6 +33,7 @@ export CODEC_INSTALL_DIR
 export DMAI_INSTALL_DIR
 export FC_INSTALL_DIR
 export LINK_INSTALL_DIR
+export LINK_XDC_ROOT = $(LINK_INSTALL_DIR)/packages
 export LINUXKERNEL_INSTALL_DIR
 export LPM_INSTALL_DIR
 export MVTOOL_DIR
@@ -41,34 +42,49 @@ export XDAIS_INSTALL_DIR
 export XDC_INSTALL_DIR
 export EDMA3_LLD_INSTALL_DIR
 
-ifeq ($(PLATFORM), dm355)
-    export XDC_TARGET   = gnu.targets.MVArm9
-    export XDC_PLATFORM = ti.platforms.evmDM355
+ifeq ($(GST_TI_PLATFORM), dm355)
+    export XDC_TARGET    = gnu.targets.arm.GCArmv5T
+    export XDC_PLATFORM  = ti.platforms.evmDM355
+    export MVTOOL_PREFIX = $(CSTOOL_PREFIX)
+    export MVTOOL_DIR    = $(CSTOOL_DIR)
+    export PLATFORM_XDC  = ${XDC_PLATFORM}
 endif
 
-ifeq ($(PLATFORM), dm6446)
+ifeq ($(GST_TI_PLATFORM), dm6446)
     export XDC_TARGET   = gnu.targets.MVArm9
     export XDC_PLATFORM = ti.platforms.evmDM6446
 endif
 
-ifeq ($(PLATFORM), dm6467)
+ifeq ($(GST_TI_PLATFORM), dm6467)
     export XDC_TARGET   = gnu.targets.MVArm9
     export XDC_PLATFORM = ti.platforms.evmDM6467
 endif
 
-ifeq ($(PLATFORM), dm365)
-    export XDC_TARGET   = gnu.targets.MVArm9
-    export XDC_PLATFORM = ti.platforms.evmDM365
+ifeq ($(GST_TI_PLATFORM), dm6467t)
+    export XDC_TARGET    = gnu.targets.arm.GCArmv5T
+    export XDC_PLATFORM  = ti.platforms.evmDM6467
+    export LINK_XDC_ROOT = $(LINK_INSTALL_DIR)
+    export MVTOOL_PREFIX = $(CSTOOL_PREFIX)
+    export MVTOOL_DIR    = $(CSTOOL_DIR)
+    export PLATFORM_XDC  = ${XDC_PLATFORM}
 endif
 
-ifeq ($(PLATFORM), omap3530)
+ifeq ($(GST_TI_PLATFORM), dm365)
+    export XDC_TARGET    = gnu.targets.arm.GCArmv5T
+    export XDC_PLATFORM  = ti.platforms.evmDM365
+    export MVTOOL_PREFIX = $(CSTOOL_PREFIX)
+    export MVTOOL_DIR    = $(CSTOOL_DIR)
+    export PLATFORM_XDC  = ${XDC_PLATFORM}
+endif
+
+ifeq ($(GST_TI_PLATFORM), omap3530)
     export XDC_TARGET    = gnu.targets.arm.GCArmv5T
     export XDC_PLATFORM  = ti.platforms.evm3530
     export MVTOOL_PREFIX = $(CSTOOL_PREFIX)
     export MVTOOL_DIR    = $(CSTOOL_DIR)
 endif
 
-CPPFLAGS=-DPlatform_$(PLATFORM) 
+CPPFLAGS=-DPlatform_$(GST_TI_PLATFORM) 
 HOST=arm-none-linux-gnueabi
 
 configure:
@@ -86,6 +102,9 @@ dm6446: Makefile
 dm6467: Makefile
 	$(MAKE) -f Makefile
 
+dm6467t: Makefile
+	$(MAKE) -f Makefile
+
 dm355: Makefile
 	$(MAKE) -f Makefile
 
diff --git a/src/Makefile.am b/src/Makefile.am
index 231beb0..95973a8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,6 @@
 # plugindir is set in configure
 
-XDC_CONFIG_BASENAME = gstticodecplugin_$(PLATFORM)
+XDC_CONFIG_BASENAME = gstticodecplugin_$(GST_TI_PLATFORM)
 plugin_LTLIBRARIES  = libgstticodecplugin.la
 
 # sources used to compile this plug-in
@@ -21,7 +21,7 @@ BUILT_SOURCES = $(XDC_CONFIG_BASENAME)/compiler.opt $(XDC_CONFIG_BASENAME)/linke
 XDC_PATH      = .;$(XDC_INSTALL_DIR)/packages;$(LINK_XDC_ROOT);$(FC_INSTALL_DIR)/packages;$(CE_INSTALL_DIR)/packages;$(XDAIS_INSTALL_DIR)/packages;$(CODEC_INSTALL_DIR)/packages;$(CMEM_INSTALL_DIR)/packages;$(DMAI_INSTALL_DIR)/packages;$(LPM_INSTALL_DIR)/packages;$(XDC_USER_PATH);$(EDMA3_LLD_INSTALL_DIR)/packages;
 
 gstticodecs_platform.c :
-	ln -s $(srcdir)/gstticodecs_$(PLATFORM).c gstticodecs_platform.c
+	ln -s $(srcdir)/gstticodecs_$(GST_TI_PLATFORM).c gstticodecs_platform.c
 
 %/compiler.opt %/linker.cmd : %.cfg
 	XDCPATH="$(XDC_PATH)" $(CONFIGURO) -c $(MVTOOL_DIR) -o  $(XDC_CONFIG_BASENAME) -t $(XDC_TARGET) -p $(XDC_PLATFORM) -b $(DMAI_INSTALL_DIR)/packages/config.bld $<
diff --git a/src/gstticodecplugin_dm355.cfg b/src/gstticodecplugin_dm355.cfg
index 7ceae4f..bf533f0 100644
--- a/src/gstticodecplugin_dm355.cfg
+++ b/src/gstticodecplugin_dm355.cfg
@@ -1,84 +1,59 @@
-/*
- * Copyright (C) $year 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.
- *
- */
-
-prog.build.platform = "ti.platforms.evmDM355";
-
-/* Load support for the Codec Engine OSAL */
-var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
-
-/* Configure CE to use it's DSP Link Linux version */
-osalGlobal.runtimeEnv = osalGlobal.LINUX;
-
-/*
- *  ======== Engine Configuration ========
- */
-var viddec   = xdc.module('ti.sdo.ce.video2.IVIDDEC2');
-var imgenc   = xdc.module('ti.sdo.ce.image1.IIMGENC1');
-var MPEG4DEC = xdc.useModule('ti.sdo.codecs.mpeg4dec.dm355.ce.MPEG4DEC');
-var MPEG4ENC = xdc.useModule('ti.sdo.codecs.mpeg4enc.dm355.ce.MPEG4ENC');
-var JPEGENC = xdc.useModule('ti.sdo.codecs.jpegenc.dm355.ce.JPEGENC');
-var JPEGDEC = xdc.useModule('ti.sdo.codecs.jpegdec.dm355.ce.JPEGDEC');
-
-var Engine   = xdc.useModule('ti.sdo.ce.Engine');
-var decodeEngine = Engine.create("decode", [
-    {name: "mpeg4dec", mod: MPEG4DEC, local: true, groupId: 1},
-    {name: "jpegdec", mod: JPEGDEC, local: true, groupId: 1},
-]);
-
-var encodeEngine = Engine.create("encode", [
-    {name: "mpeg4enc", mod: MPEG4ENC, local: true, groupId: 1},
-    {name: "jpegenc", mod: JPEGENC, local: true, groupId: 1},
-]);
-
-/* Load support for the 'Davinci Multimedia Application Interface' modules */
-var DMAI = xdc.loadPackage('ti.sdo.dmai');
-
-/*
- *  ======== DMAN3 Configuration ========
- */
-
-var DMAN3 = xdc.useModule('ti.sdo.fc.dman3.DMAN3');
-
-/* give DMAN3 all TCCs except those hard-coded by The JPEG & MPEG Enc & Decs */
-
-/*
- *   For the 32-63 range, configure tccAllocationMaskH to exclude used channels
- *   JPEG Dec: {33-47, 52-57}
- *   JPEG Enc: {34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}
- *   MPEG Dec: {32-63}
- *   MPEG Enc: {12, 13, 34, 35, 40,41,42,43,44,45,46,47,48,49,50,52,53,
- *              54,55,56,57,63}
- */
-DMAN3.tccAllocationMaskH = 0x0; /* everthing 32-63 hardcoded and unavailable */
-
-/* Give DMAN3 all lower TCCs except what's taken by Linux kernel and a Codec:
- * Based on the info from montavista: {2, 3, 8, 9, 26, 27, 30, 31}
- * and MPEG Enc taking up:            {12, 13}
- */
-DMAN3.tccAllocationMaskL = 0x33ffccf3;
-
-/* Following assignments will give DMAN3 control of PaRAMs above 78: */
-DMAN3.paRamBaseIndex     = 64;
-DMAN3.numPaRamEntries    = 48;
-DMAN3.nullPaRamIndex     = 127;
-
-/* Configure Scratch Group's DMAN3 resources */
-DMAN3.numTccGroup[1]     = 0;
-DMAN3.numPaRamGroup[1]   = 32;
-
-DMAN3.qdmaChannels       = [0, 1, 2, 3, 4, 5, 6, 7];
-DMAN3.maxQdmaChannels    = 8;
-DMAN3.numQdmaChannels    = 8;
-DMAN3.maxTCs             = 2;
-
+/*  ===========================================================================
+ *   Copyright (c)  Texas Instruments Incorporated 2009
+ *
+ *   Use of this software is controlled by the terms and conditions found in
+ *   the license agreement under which this software has been supplied or
+ *   provided.
+ *  ===========================================================================
+ */
+
+/* Load support for the Codec Engine OSAL */
+var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
+
+/* Configure CE to use it's DSP Link Linux version */
+osalGlobal.runtimeEnv = osalGlobal.LINUX;
+
+/* Configure RMAN */ 
+var RMAN                = xdc.useModule('ti.sdo.fc.rman.RMAN');
+RMAN.useDSKT2           = false;
+RMAN.persistentAllocFxn = "__ALG_allocMemory";
+RMAN.persistentFreeFxn  = "__ALG_freeMemory";
+RMAN.semCreateFxn       = "Sem_create";
+RMAN.semDeleteFxn       = "Sem_delete";
+RMAN.semPendFxn         = "Sem_pend";
+RMAN.semPostFxn         = "Sem_post";
+RMAN.tableSize          = 10;
+
+var EDMA3     = xdc.useModule('ti.sdo.fc.edma3.Settings');
+var EDMA3CHAN = xdc.useModule('ti.sdo.fc.ires.edma3chan.EDMA3CHAN');
+var EDMA      = xdc.useModule('ti.sdo.linuxutils.edma.EDMA');
+var VICPLU    = xdc.useModule('ti.sdo.linuxutils.vicp.VICP');
+var VICP      = xdc.useModule('ti.sdo.fc.ires.vicp.VICP2');
+var VICPSYNC  = xdc.useModule('ti.sdo.fc.vicpsync.VICPSYNC');
+var ADDRSPACE = xdc.useModule('ti.sdo.fc.ires.addrspace.ADDRSPACE');
+var CMEM      = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM');
+
+/*
+ *  ======== Engine Configuration ========
+ */
+var viddec   = xdc.module('ti.sdo.ce.video2.IVIDDEC2');
+var auddec   = xdc.module('ti.sdo.ce.audio.IAUDDEC');
+var videnc   = xdc.module('ti.sdo.ce.video1.IVIDENC1');
+var audenc   = xdc.module('ti.sdo.ce.audio.IAUDENC');
+
+var MPEG4DEC = xdc.useModule('ti.sdo.codecs.mpeg4dec.ce.MPEG4DEC');
+var JPEGDEC  = xdc.useModule('ti.sdo.codecs.jpegdec.ce.JPEGDEC');
+var MPEG4ENC = xdc.useModule('ti.sdo.codecs.mpeg4enc.ce.MPEG4ENC');
+var JPEGENC  = xdc.useModule('ti.sdo.codecs.jpegenc.ce.JPEGENC');
+
+var Engine = xdc.useModule('ti.sdo.ce.Engine');
+var myEngine = Engine.create("codecServer", [
+    {name: "mpeg4dec", mod: MPEG4DEC, local: true, groupId: 1},
+    {name: "jpegdec", mod: JPEGDEC, local: true, groupId: 1},
+    {name: "mpeg4enc", mod: MPEG4ENC, local: true, groupId: 1},
+    {name: "jpegenc", mod: JPEGENC, local: true, groupId: 1}
+]);
+
+/* Load support for the 'Davinci Multimedia Application Interface' modules */
+var DMAI = xdc.loadPackage('ti.sdo.dmai');
+
diff --git a/src/gstticodecplugin_dm365.cfg b/src/gstticodecplugin_dm365.cfg
index 6442dce..0e94a35 100644
--- a/src/gstticodecplugin_dm365.cfg
+++ b/src/gstticodecplugin_dm365.cfg
@@ -1,99 +1,86 @@
-/*
- * Copyright (C) $year 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.
- *
- */
-
-prog.build.platform = "ti.platforms.evmDM365";
-
-/* Load support for the Codec Engine OSAL */
-var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
-
-/* Configure CE to use it's DSP Link Linux version */
-osalGlobal.runtimeEnv = osalGlobal.LINUX;
-
-/*
- *  ======== Engine Configuration ========
- */
-var videnc   = xdc.module('ti.sdo.ce.video1.IVIDENC1');
-var viddec   = xdc.module('ti.sdo.ce.video2.IVIDDEC2');
-
-var MPEG4ENC = xdc.useModule('ti.sdo.codecs.mpeg4enc.ce.MPEG4ENC');
-var H264ENC  = xdc.useModule('ti.sdo.codecs.h264enc.ce.H264ENC');
-var MPEG4DEC = xdc.useModule('ti.sdo.codecs.mpeg4dec.ce.MPEG4DEC');
-var H264DEC  = xdc.useModule('ti.sdo.codecs.h264dec.ce.H264DEC');
-var JPEGENC = xdc.useModule('ti.sdo.codecs.jpegenc.ce.JPEGENC');
-var JPEGDEC = xdc.useModule('ti.sdo.codecs.jpegdec.ce.JPEGDEC');
-
-var Engine = xdc.useModule('ti.sdo.ce.Engine');
-var encodeEngine = Engine.create("encode", [
-    {name: "mpeg4enc", mod: MPEG4ENC, local: true, groupId: 1},
-    {name: "h264enc", mod: H264ENC, local: true, groupId: 1},
-    {name: "jpegenc", mod: JPEGENC, local: true, groupId: 1},
-]);
-var decodeEngine = Engine.create("decode", [
-    {name: "mpeg4dec", mod: MPEG4DEC, local: true, groupId: 1},
-    {name: "h264dec", mod: H264DEC, local: true, groupId: 1},
-    {name: "jpegdec", mod: JPEGDEC, local: true, groupId: 1},
-]);
-
-/* Load support for the 'Davinci Multimedia Application Interface' modules */
-var DMAI = xdc.loadPackage('ti.sdo.dmai');
-
-/* Load support for SimpleWidget */
-/*var SW = xdc.loadPackage('ti.sdo.simplewidget');*/
-
-
-/* Configure RMAN */ 
-var RMAN = xdc.useModule('ti.sdo.fc.rman.RMAN');
-RMAN.useDSKT2 = false;
-RMAN.persistentAllocFxn = "__ALG_allocMemory";
-RMAN.persistentFreeFxn = "__ALG_freeMemory";
-RMAN.semCreateFxn = "Sem_create";
-RMAN.semDeleteFxn = "Sem_delete";
-RMAN.semPendFxn = "Sem_pend";
-RMAN.semPostFxn = "Sem_post";
-RMAN.tableSize = 10;
-
-/* Configure VICPSYNC */
-var VICPSYNC = xdc.useModule('ti.sdo.fc.vicpsync.VICPSYNC');
-
-/* Configure HDVICPSYNC */
-var HDVICPSYNC = xdc.useModule('ti.sdo.fc.hdvicpsync.HDVICPSYNC');
-
-/* Configure MEMUTILS */
-var MEMUTILS = xdc.useModule('ti.sdo.fc.memutils.MEMUTILS');
-
-var EDMA3 = xdc.useModule('ti.sdo.fc.edma3.Settings');
-
-var HDVICP = xdc.useModule('ti.sdo.fc.ires.hdvicp.HDVICP');
-
-var VICP = xdc.useModule('ti.sdo.fc.ires.vicp.VICP2');
-
-var ADDRSPACE = xdc.useModule('ti.sdo.fc.ires.addrspace.ADDRSPACE');
-
-var EDMA3CHAN = xdc.useModule('ti.sdo.fc.ires.edma3chan.EDMA3CHAN');
-
-var LSP = xdc.useModule('ti.sdo.linuxutils.edma.EDMA');
-
-var CMEM = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM');
-
-
-/* Uncomment these lines if you wish to debug FC and enable FC trace */
- 
-/*
-xdc.loadPackage('ti.sdo.fc.ires.vicp').profile = "debug_trace";
-xdc.loadPackage('ti.sdo.fc.ires.edma3chan').profile = "debug_trace";
-xdc.loadPackage('ti.sdo.fc.rman').profile = "debug_trace";
-xdc.loadPackage('ti.sdo.fc.edma3').profile = "debug_trace";
-EDMA3CHAN.trace = true;
-EDMA3CHAN.debug = true;
-*/
+/*  ============================================================================
+ *   Copyright (c)  Texas Instruments Incorporated 2009
+ *
+ *   Use of this software is controlled by the terms and conditions found in the
+ *   license agreement under which this software has been supplied or provided.
+ *  ============================================================================
+ */
+
+/* Load support for the Codec Engine OSAL */
+var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
+
+/* Configure CE to use it's DSP Link Linux version */
+osalGlobal.runtimeEnv = osalGlobal.LINUX;
+
+/*
+ *  ======== Engine Configuration ========
+ */
+var viddec   = xdc.module('ti.sdo.ce.video2.IVIDDEC2');
+var auddec   = xdc.module('ti.sdo.ce.audio.IAUDDEC');
+
+var MPEG4DEC = xdc.useModule('ti.sdo.codecs.mpeg4dec_hdvicp.ce.MPEG4DEC_HDVICP');
+var MPEG2DEC = xdc.useModule('ti.sdo.codecs.mpeg2dec.ce.MPEG2DEC');
+var H264DEC  = xdc.useModule('ti.sdo.codecs.h264dec.ce.H264DEC');
+var MPEG4ENC = xdc.useModule('ti.sdo.codecs.mpeg4enc_hdvicp.ce.MPEG4ENC_HDVICP');
+var MPEG2ENC = xdc.useModule('ti.sdo.codecs.mpeg2enc.ce.MPEG2ENC');
+var H264ENC  = xdc.useModule('ti.sdo.codecs.h264enc.ce.H264ENC');
+
+var Engine = xdc.useModule('ti.sdo.ce.Engine');
+var myEngine = Engine.create("codecServer", [
+    {name: "mpeg4dec", mod: MPEG4DEC, local: true, groupId: 1},
+    {name: "mpeg2dec", mod: MPEG2DEC, local: true, groupId: 1},
+    {name: "h264dec", mod: H264DEC, local: true, groupId: 1},
+    {name: "mpeg4enc", mod: MPEG4ENC, local: true, groupId: 1},
+    {name: "mpeg2enc", mod: MPEG2ENC, local: true, groupId: 1},
+    {name: "h264enc", mod: H264ENC, local: true, groupId: 1},
+]);
+
+
+
+/* Load support for the 'Davinci Multimedia Application Interface' modules */
+var DMAI = xdc.loadPackage('ti.sdo.dmai');
+
+/* Configure RMAN */ 
+var RMAN = xdc.useModule('ti.sdo.fc.rman.RMAN');
+RMAN.useDSKT2 = false;
+RMAN.persistentAllocFxn = "__ALG_allocMemory";
+RMAN.persistentFreeFxn = "__ALG_freeMemory";
+RMAN.semCreateFxn = "Sem_create";
+RMAN.semDeleteFxn = "Sem_delete";
+RMAN.semPendFxn = "Sem_pend";
+RMAN.semPostFxn = "Sem_post";
+RMAN.tableSize = 10;
+
+/* Configure VICPSYNC */
+var VICPSYNC = xdc.useModule('ti.sdo.fc.vicpsync.VICPSYNC');
+
+/* Configure HDVICPSYNC */
+var HDVICPSYNC = xdc.useModule('ti.sdo.fc.hdvicpsync.HDVICPSYNC');
+
+/* Configure MEMUTILS */
+var MEMUTILS = xdc.useModule('ti.sdo.fc.memutils.MEMUTILS');
+
+var EDMA3 = xdc.useModule('ti.sdo.fc.edma3.Settings');
+
+var HDVICP = xdc.useModule('ti.sdo.fc.ires.hdvicp.HDVICP');
+
+var VICP = xdc.useModule('ti.sdo.fc.ires.vicp.VICP2');
+
+var EDMA3CHAN = xdc.useModule('ti.sdo.fc.ires.edma3chan.EDMA3CHAN');
+
+var EDMA = xdc.useModule('ti.sdo.linuxutils.edma.EDMA');
+
+var ADDRSPACE = xdc.useModule('ti.sdo.fc.ires.addrspace.ADDRSPACE');
+
+var CMEM = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM');
+
+/* Uncomment these lines if you wish to debug FC and enable FC trace */
+/* 
+/*
+xdc.loadPackage('ti.sdo.fc.ires.vicp').profile = "debug_trace";
+xdc.loadPackage('ti.sdo.fc.ires.edma3chan').profile = "debug_trace";
+xdc.loadPackage('ti.sdo.fc.rman').profile = "debug_trace";
+xdc.loadPackage('ti.sdo.fc.edma3').profile = "debug_trace";
+EDMA3CHAN.trace = true;
+EDMA3CHAN.debug = true;
+*/
diff --git a/src/gstticodecplugin_dm6467t.cfg b/src/gstticodecplugin_dm6467t.cfg
new file mode 100644
index 0000000..686cfeb
--- /dev/null
+++ b/src/gstticodecplugin_dm6467t.cfg
@@ -0,0 +1,34 @@
+/*  ============================================================================
+ *   Copyright (c)  Texas Instruments Incorporated 2009
+ *
+ *   Use of this software is controlled by the terms and conditions found in the
+ *   license agreement under which this software has been supplied or provided.
+ *  ============================================================================
+ */
+
+/* Load support for the Codec Engine OSAL */
+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 'Davinci Multimedia Application Interface' modules */
+var DMAI = xdc.loadPackage('ti.sdo.dmai');
diff --git a/src/gstticodecs_dm355.c b/src/gstticodecs_dm355.c
index a372b06..9d4325b 100644
--- a/src/gstticodecs_dm355.c
+++ b/src/gstticodecs_dm355.c
@@ -22,8 +22,7 @@
 #include "gstticodecs.h"
 
 /* Declaration of the production engine and decoders shipped with the DVSDK */
-static Char decodeEngine[] = "decode";
-static Char encodeEngine[] = "encode";
+static Char codecServer[] = "codecServer";
 
 /* NULL terminated list of speech decoders in the engine to use in the demo */
 GstTICodec gst_ticodec_codecs[] = {
@@ -32,25 +31,25 @@ GstTICodec gst_ticodec_codecs[] = {
     {
         "MPEG4 Video Decoder",   /* String name of codec used by plugin      */
         "mpeg4dec",              /* String name of codec used by CE          */
-        decodeEngine             /* Engine that contains this codec          */
+        codecServer              /* Engine that contains this codec          */
     },
 
     {
         "MPEG4 Video Encoder",   /* String name of codec used by plugin      */
         "mpeg4enc",              /* String name of codec used by CE          */
-        encodeEngine             /* Engine that contains this codec          */
+        codecServer              /* Engine that contains this codec          */
     },
 
     /* Imaging Codecs */
     {
         "JPEG Image Encoder",
         "jpegenc",
-        encodeEngine
+        codecServer 
     },
     {
         "JPEG Image Decoder",
         "jpegdec",
-        decodeEngine
+        codecServer 
     },
 
     { NULL }
diff --git a/src/gstticodecs_dm365.c b/src/gstticodecs_dm365.c
index 9572403..cf81e6f 100644
--- a/src/gstticodecs_dm365.c
+++ b/src/gstticodecs_dm365.c
@@ -22,8 +22,7 @@
 #include "gstticodecs.h"
 
 /* Declaration of the production engine and decoders shipped with the DVSDK */
-static Char decodeEngine[] = "decode";
-static Char encodeEngine[] = "encode";
+static Char codecServer[] = "codecServer";
 
 /* NULL terminated list of speech decoders in the engine to use in the demo */
 GstTICodec gst_ticodec_codecs[] = {
@@ -32,25 +31,37 @@ GstTICodec gst_ticodec_codecs[] = {
     {
         "MPEG4 Video Decoder",   /* String name of codec used by plugin      */
         "mpeg4dec",              /* String name of codec used by CE          */
-        decodeEngine             /* Engine that contains this codec          */
+        codecServer              /* Engine that contains this codec          */
+    },
+
+    {
+        "MPEG2 Video Decoder",   /* String name of codec used by plugin      */
+        "mpeg2dec",              /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
     },
 
     {
         "MPEG4 Video Encoder",   /* String name of codec used by plugin      */
         "mpeg4enc",              /* String name of codec used by CE          */
-        encodeEngine             /* Engine that contains this codec          */
+        codecServer             /* Engine that contains this codec          */
+    },
+
+    {
+        "MPEG2 Video Encoder",   /* String name of codec used by plugin      */
+        "mpeg2enc",              /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
     },
 
     {
         "H.264 Video Decoder",   /* String name of codec used by plugin      */
         "h264dec",               /* String name of codec used by CE          */
-        decodeEngine             /* Engine that contains this codec          */
+        codecServer             /* Engine that contains this codec          */
     },
 
     {
         "H.264 Video Encoder",   /* String name of codec used by plugin      */
         "h264enc",               /* String name of codec used by CE          */
-        encodeEngine             /* Engine that contains this codec          */
+        codecServer             /* Engine that contains this codec          */
     },
 
     { NULL }
diff --git a/src/gstticodecs_dm6467.c b/src/gstticodecs_dm6467.c
index b9b0499..cbb6520 100644
--- a/src/gstticodecs_dm6467.c
+++ b/src/gstticodecs_dm6467.c
@@ -1,5 +1,5 @@
 /*
- * gstticodecs_dm6446.c
+ * gstticodecs_dm6467.c
  *
  * This file provides information for available codecs on the DM6446 platform.
  *
diff --git a/src/gstticodecs_dm6467t.c b/src/gstticodecs_dm6467t.c
new file mode 100644
index 0000000..fe597d5
--- /dev/null
+++ b/src/gstticodecs_dm6467t.c
@@ -0,0 +1,69 @@
+/*
+ * gstticodecs_dm6467t.c
+ *
+ * This file provides information for available codecs on the DM6446 platform.
+ *
+ * Original Author:
+ *     Don Darling, Texas Instruments, Inc.
+ *
+ * Copyright (C) $year 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.
+ *
+ */
+
+#include "gstticodecs.h"
+
+/* Declaration of the production engine and decoders shipped with the DVSDK */
+static Char codecServer[] = "codecServer";
+
+/* NULL terminated list of speech decoders in the engine to use in the demo */
+GstTICodec gst_ticodec_codecs[] = {
+
+    /* Speech Codecs */
+    {
+        "G.711 Speech Decoder",  /* String name of codec used by plugin      */
+        "g711dec",               /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
+    }, {
+        "G.711 Speech Encoder",  /* String name of codec used by plugin      */
+        "g711enc",               /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
+    },
+
+    /* Audio Codecs */
+    {
+        "AAC Audio Decoder",     /* String name of codec used by plugin      */
+        "aachedec",              /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
+    },
+
+    /* Video Codecs */
+    {
+        "H.264 Video Decoder",   /* String name of codec used by plugin      */
+        "h264dec",               /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
+    }, {
+        "H.264 BP/HP Decoder",   /* Name of codec used by plugin             */
+        "h2641080p60vdec",       /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
+    }, {
+        "H.264 Video Encoder",  /* String name of codec used by plugin       */
+        "h264enc",              /* String name of codec used by CE           */
+        codecServer             /* Engine that contains this codec           */
+    }, {
+        "MPEG2 Video Decoder",   /* String name of codec used by plugin      */
+        "mpeg2dec",              /* String name of codec used by CE          */
+        codecServer              /* Engine that contains this codec          */
+    },
+
+    { NULL }
+};
+
diff --git a/src/gsttidmaivideosink.c b/src/gsttidmaivideosink.c
index 5f6a5b3..81bdac7 100644
--- a/src/gsttidmaivideosink.c
+++ b/src/gsttidmaivideosink.c
@@ -32,11 +32,12 @@
 /* Define sink (input) pad capabilities.
  *
  * UYVY - YUV 422 interleaved corresponding to V4L2_PIX_FMT_UYVY in v4l2
- * Y8C8 - YUV 422 semi planar. The dm6467 VDCE outputs this format after a
+ * NV16 - YUV 422 semi planar. The dm6467 VDCE outputs this format after a
  *        color conversion.The format consists of two planes: one with the
  *        Y component and one with the CbCr components interleaved (hence semi)  *
  *        See the LSP VDCE documentation for a thorough description of this
  *        format.
+ * Y8C8 - Same as NV16.  Y8C8 was used in MVL-based LSPs.
  * NV12 - YUV 420 semi planar corresponding to V4L2_PIX_FMT_NV12 in v4l2.
  *        The format consists of two planes: one with the
  *        Y component and one with the CbCr components interleaved with 
@@ -62,6 +63,11 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE (
          "width=(int)[ 1, MAX ], "
          "height=(int)[ 1, MAX ];"
     "video/x-raw-yuv, "
+         "format=(fourcc)NV16, "
+         "framerate=(fraction)[ 0, MAX ], "
+         "width=(int)[ 1, MAX ], "
+         "height=(int)[ 1, MAX ];"
+    "video/x-raw-yuv, "
          "format=(fourcc)NV12, "
          "framerate=(fraction)[ 0, MAX ], "
          "width=(int)[ 1, MAX ], "
@@ -219,7 +225,7 @@ static void gst_tidmaivideosink_class_init(GstTIDmaiVideoSinkClass * klass)
             "Video Standard used\n"
             "\tAUTO (if supported), CIF, SIF_NTSC, SIF_PAL, VGA, D1_NTSC\n"
             "\tD1_PAL, 480P, 576P, 720P_60, 720P_50, 1080I_30, 1080I_25\n"
-            "\t1080P_30, 1080P_25, 1080P_24\n",
+            "\t1080P_30, 1080P_60, 1080P_25, 1080P_24\n",
             NULL, G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, PROP_VIDEOOUTPUT,
@@ -661,6 +667,9 @@ static int gst_tidmaivideosink_videostd_get_attrs(VideoStd_Type videoStd,
             break;
         case VideoStd_480P:
         case VideoStd_720P_60:
+        #if defined(Platform_dm6467t)
+        case VideoStd_1080P_60:
+        #endif
             vattrs->framerate = 60;
             break;
 
@@ -715,6 +724,9 @@ static int gst_tidmaivideosink_videostd_get_refresh_latency(
 
         case VideoStd_480P:
         case VideoStd_720P_60:
+        #if defined(Platform_dm6467t)
+        case VideoStd_1080P_60:
+        #endif
             return 16667;
 
         #if defined(Platform_omap3530)
@@ -949,6 +961,10 @@ static int gst_tidmaivideosink_convert_attrs(int attr,
                 return VideoStd_1080P_25;
             else if (!strcmp(sink->videoStd, "1080P_24"))
                 return VideoStd_1080P_24;
+            #if defined(Platform_dm6467t)
+            else if (!strcmp(sink->videoStd, "1080P_60"))
+                return VideoStd_1080P_60;
+            #endif
             #if defined(Platform_omap3530)
             else if (!strcmp(sink->videoStd, "VGA"))
                 return VideoStd_VGA;
@@ -958,7 +974,7 @@ static int gst_tidmaivideosink_convert_attrs(int attr,
                 "Please choose from:\n"
                 "\tAUTO (if supported), CIF, SIF_NTSC, SIF_PAL, VGA, D1_NTSC\n"
                 "\tD1_PAL, 480P, 576P, 720P_60, 720P_50, 1080I_30, 1080I_25\n"
-                "\t1080P_30, 1080P_25, 1080P_24\n", sink->videoStd);
+                "\t1080P_30, 1080P_60, 1080P_25, 1080P_24\n", sink->videoStd);
                 return -1;
             }
             break;
@@ -1307,14 +1323,13 @@ static gboolean gst_tidmaivideosink_process_caps(GstBaseSink * bsink,
         case GST_MAKE_FOURCC('U', 'Y', 'V', 'Y'):
             inBufColorSpace = ColorSpace_UYVY;
             break;
+        case GST_MAKE_FOURCC('N', 'V', '1', '6'):
         case GST_MAKE_FOURCC('Y', '8', 'C', '8'):
             inBufColorSpace = ColorSpace_YUV422PSEMI;
             break;
-        #if defined(Platform_dm365)
         case GST_MAKE_FOURCC('N', 'V', '1', '2'):
             inBufColorSpace = ColorSpace_YUV420PSEMI;
             break;
-        #endif
         default:
             GST_ERROR("unsupported fourcc\n");
             return FALSE;
diff --git a/src/gsttividdec2.c b/src/gsttividdec2.c
index 0804065..79b28a5 100644
--- a/src/gsttividdec2.c
+++ b/src/gsttividdec2.c
@@ -674,16 +674,8 @@ static gboolean gst_tividdec2_set_source_caps(
        given buffer */
     BufferGfx_getDimensions(hBuf, &dim);
 
-#if !defined(Platform_dm365)
-    caps =
-        gst_caps_new_simple("video/x-raw-yuv",
-            "format",    GST_TYPE_FOURCC,   GST_MAKE_FOURCC('U','Y','V','Y'),
-            "framerate", GST_TYPE_FRACTION, viddec2->framerateNum,
-                                            viddec2->framerateDen,
-            "width",     G_TYPE_INT,        dim.width,
-            "height",    G_TYPE_INT,        dim.height,
-            NULL);
-#else
+#if defined(Platform_dm365)   || defined(Platform_dm6467) || \
+    defined(Platform_dm6467t)
     caps =
         gst_caps_new_simple("video/x-raw-yuv",
             "format",   GST_TYPE_FOURCC,  GST_MAKE_FOURCC('N','V','1','2'),
@@ -692,6 +684,15 @@ static gboolean gst_tividdec2_set_source_caps(
             "width",    G_TYPE_INT,       dim.width,
             "height",   G_TYPE_INT,       dim.height,
             NULL);
+#else
+    caps =
+        gst_caps_new_simple("video/x-raw-yuv",
+            "format",    GST_TYPE_FOURCC,   GST_MAKE_FOURCC('U','Y','V','Y'),
+            "framerate", GST_TYPE_FRACTION, viddec2->framerateNum,
+                                            viddec2->framerateDen,
+            "width",     G_TYPE_INT,        dim.width,
+            "height",    G_TYPE_INT,        dim.height,
+            NULL);
 #endif
 
     /* Set the source pad caps */
@@ -1227,29 +1228,35 @@ static gboolean gst_tividdec2_codec_start (GstTIViddec2  *viddec2)
 
     /* Set up codec parameters depending on device */
     switch(device) {
-    case Cpu_Device_DM6467:
-        params.forceChromaFormat = XDM_YUV_420P;
-        params.maxWidth          = VideoStd_1080I_WIDTH;
-        params.maxHeight         = VideoStd_1080I_HEIGHT + 8;
-        colorSpace               = ColorSpace_YUV420PSEMI;
-        defaultNumBufs           = 5;
-        break;
-#if defined(Platform_dm365)
-    case Cpu_Device_DM365:
-        params.forceChromaFormat = XDM_YUV_420SP;
-        params.maxWidth          = VideoStd_720P_WIDTH;
-        params.maxHeight         = VideoStd_720P_HEIGHT;
-        colorSpace               = ColorSpace_YUV420PSEMI;
-        defaultNumBufs           = 5;
-        break;
-#endif
-    default:
-        params.forceChromaFormat = XDM_YUV_422ILE;
-        params.maxWidth          = VideoStd_D1_WIDTH;
-        params.maxHeight         = VideoStd_D1_PAL_HEIGHT;
-        colorSpace               = ColorSpace_UYVY;
-        defaultNumBufs           = 3;
-        break;
+        case Cpu_Device_DM6467:
+            #if defined(Platform_dm6467t)
+            params.forceChromaFormat = XDM_YUV_420SP;
+            params.maxFrameRate      = 60000;
+            params.maxBitRate        = 30000000;
+            #else
+            params.forceChromaFormat = XDM_YUV_420P;
+            #endif
+            params.maxWidth          = VideoStd_1080I_WIDTH;
+            params.maxHeight         = VideoStd_1080I_HEIGHT + 8;
+            colorSpace               = ColorSpace_YUV420PSEMI;
+            defaultNumBufs           = 5;
+            break;
+        #if defined(Platform_dm365)
+        case Cpu_Device_DM365:
+            params.forceChromaFormat = XDM_YUV_420SP;
+            params.maxWidth          = VideoStd_720P_WIDTH;
+            params.maxHeight         = VideoStd_720P_HEIGHT;
+            colorSpace               = ColorSpace_YUV420PSEMI;
+            defaultNumBufs           = 4;
+            break;
+        #endif
+        default:
+            params.forceChromaFormat = XDM_YUV_422ILE;
+            params.maxWidth          = VideoStd_D1_WIDTH;
+            params.maxHeight         = VideoStd_D1_PAL_HEIGHT;
+            colorSpace               = ColorSpace_UYVY;
+            defaultNumBufs           = 3;
+            break;
     }
 
     GST_LOG("opening video decoder \"%s\"\n", viddec2->codecName);
diff --git a/src/gsttividenc1.c b/src/gsttividenc1.c
index f9c6f1a..2e1fb31 100644
--- a/src/gsttividenc1.c
+++ b/src/gsttividenc1.c
@@ -133,6 +133,11 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE(
          "framerate=(fraction)[ 0, MAX ], "
          "width=(int)[ 1, MAX ], "
          "height=(int)[ 1, MAX ];"
+    "video/x-raw-yuv, "                         /* NV16 - YUV422 semi planar */
+         "format=(fourcc)NV16, "
+         "framerate=(fraction)[ 0, MAX ], "
+         "width=(int)[ 1, MAX ], "
+         "height=(int)[ 1, MAX ];"
      "video/x-raw-yuv, "                        /* NV12 - YUV420 semi planar */
          "format=(fourcc)NV12, "               
          "framerate=(fraction)[ 0, MAX ], "
@@ -290,7 +295,7 @@ static void gst_tividenc1_class_init(GstTIVidenc1Class *klass)
 
     g_object_class_install_property(gobject_class, PROP_IN_COLORSPACE,
         g_param_spec_string("iColorSpace", "Input colorspace",
-            "Input color space (UYVY, Y8C8 or NV12)",
+            "Input color space (UYVY, Y8C8, NV16 or NV12)",
             "unspecified", G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, PROP_BITRATE,
@@ -456,6 +461,8 @@ static ColorSpace_Type gst_tividenc1_find_colorSpace (const gchar *colorSpace)
 {
     if (!strcmp(colorSpace, "UYVY"))
         return ColorSpace_UYVY;
+    else if (!strcmp(colorSpace, "NV16")) 
+        return ColorSpace_YUV422PSEMI;
     else if (!strcmp(colorSpace, "Y8C8")) 
         return ColorSpace_YUV422PSEMI;
     else if (!strcmp(colorSpace, "NV12")) 
@@ -665,6 +672,7 @@ static gboolean gst_tividenc1_set_sink_caps(GstPad *pad, GstCaps *caps)
                     videnc1->colorSpace = ColorSpace_UYVY;
                     break;
 
+                case GST_MAKE_FOURCC('N', 'V', '1', '6'):
                 case GST_MAKE_FOURCC('Y', '8', 'C', '8'):
                     videnc1->colorSpace = ColorSpace_YUV422PSEMI;
                     break;
diff --git a/src/gsttividresize.c b/src/gsttividresize.c
index 5757705..c200787 100644
--- a/src/gsttividresize.c
+++ b/src/gsttividresize.c
@@ -90,6 +90,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE(
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS
     ( GST_VIDEO_CAPS_YUV("UYVY")";"
+      GST_VIDEO_CAPS_YUV("NV16")";"
       GST_VIDEO_CAPS_YUV("Y8C8")";"
       GST_VIDEO_CAPS_YUV("NV12")
     )
@@ -101,6 +102,7 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE(
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS
     ( GST_VIDEO_CAPS_YUV("UYVY")";"
+      GST_VIDEO_CAPS_YUV("NV16")";"
       GST_VIDEO_CAPS_YUV("Y8C8")";"
       GST_VIDEO_CAPS_YUV("NV12")
     )
@@ -583,6 +585,7 @@ static GstCaps * gst_tividresize_transform_caps (GstBaseTransform *trans,
     int                 i;
     static const guint32 supported_fmt[] = {
                                             GST_MAKE_FOURCC('U','Y','V','Y'),
+                                            GST_MAKE_FOURCC('N','V','1','6'),
                                             GST_MAKE_FOURCC('Y','8','C','8'),
                                             GST_MAKE_FOURCC('N','V','1','2'),
                                            };
@@ -649,6 +652,7 @@ ColorSpace_Type gst_tividresize_get_colorSpace (guint32 fourcc)
     switch (fourcc) {
         case GST_MAKE_FOURCC('U', 'Y', 'V', 'Y'):            
             return ColorSpace_UYVY;
+        case GST_MAKE_FOURCC('N', 'V', '1', '6'):
         case GST_MAKE_FOURCC('Y', '8', 'C', '8'):
             return ColorSpace_YUV422PSEMI;
         case GST_MAKE_FOURCC('N', 'V', '1', '2'):
-- 
1.5.4.3