diff options
author | Brijesh Singh <bksingh@ti.com> | 2010-05-09 13:34:33 -0500 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2010-06-12 11:03:52 +0200 |
commit | 1070e3c5b2d7a4b9d1105a640f2b4265082b5ec1 (patch) | |
tree | 25476117165fe7d9f677803eed53995d32da926f /recipes | |
parent | 65d27d25590b41b106f982827a80afe56a9515fa (diff) |
ti-dvsdk-demos_3.10.00.14: add newer version
Signed-off-by: Brijesh Singh <bksingh@ti.com>
Signed-off-by: Koen Kooi <k-kooi@ti.com>
Diffstat (limited to 'recipes')
7 files changed, 246 insertions, 5 deletions
diff --git a/recipes/ti/ti-dvsdk-demos.inc b/recipes/ti/ti-dvsdk-demos.inc index af1ecd8b97..0cb894e703 100644 --- a/recipes/ti/ti-dvsdk-demos.inc +++ b/recipes/ti/ti-dvsdk-demos.inc @@ -2,16 +2,17 @@ DESCRIPTION = "DVSDK Demo applications for TI ARM/DSP processors" SECTION = "multimedia" LICENSE = "TI" -INC_PR = "r1" - +INC_PR = "r5" + DEPENDS += "ti-dmai" DEPENDS += "alsa-lib libpng freetype jpeg" -SRC_URI = "${BASE_SRC_URI}/dvsdk_demos_${PV}.tar.gz;name=dvsdkdemostarball" +SRC_URI = "http://gt_tspa_dev.gt.design.ti.com/dev/DVSDK/310_DVSDK/3_10_00/dvsdk_demos_${PV}.tar.gz;name=dvsdkdemostarball" S = "${WORKDIR}/dvsdk_demos_${PV}" require ti-paths.inc +require ti-staging.inc DEMOSPLATFORM_dm355 = "dm355" DEMOSPLATFORM_dm365 = "dm365" @@ -49,6 +50,9 @@ do_compile () { } do_install () { + install -d ${D}${DVSDK_DEMOS_INSTALL_DIR_RECIPE} + cp -pPrf ${S}/* ${D}${DVSDK_DEMOS_INSTALL_DIR_RECIPE} + cd ${S} make -e EXEC_DIR=${D}/${installdir}/dvsdk-demos \ PLATFORM=${DEMOSPLATFORM} \ @@ -57,8 +61,8 @@ do_install () { PACKAGE_ARCH = "${MACHINE_ARCH}" -RDEPENDS_ti-dvsdk-demos_dm355 += "ti-dm355mm-module ti-cmem-module alsa-lib libpng freetype jpeg" -RDEPENDS_ti-dvsdk-demos_dm365 += "ti-dm365mm-module ti-cmem-module alsa-lib libpng freetype jpeg" +RDEPENDS_ti-dvsdk-demos_dm355 += "ti-dm355mm-module ti-cmem-module alsa-lib libpng freetype jpeg libpng12" +RDEPENDS_ti-dvsdk-demos_dm365 += "ti-dm365mm-module ti-cmem-module alsa-lib libpng freetype jpeg ti-codecs-dm365 ti-edma-module ti-irq-module libpng12" FILES_${PN} = "${installdir}/dvsdk-demos/*" diff --git a/recipes/ti/ti-dvsdk-demos/changed_insmod_to_modprobe_in_loadmodules.patch b/recipes/ti/ti-dvsdk-demos/changed_insmod_to_modprobe_in_loadmodules.patch new file mode 100644 index 0000000000..f0348a56f9 --- /dev/null +++ b/recipes/ti/ti-dvsdk-demos/changed_insmod_to_modprobe_in_loadmodules.patch @@ -0,0 +1,99 @@ +diff -uNr dvsdk_demos_3_10_00_13_orig/dm355/loadmodules.sh dvsdk_demos_3_10_00_13/dm355/loadmodules.sh +--- dvsdk_demos_3_10_00_13_orig/dm355/loadmodules.sh 2010-04-13 18:30:14.000000000 -0500 ++++ dvsdk_demos_3_10_00_13/dm355/loadmodules.sh 2010-04-13 18:50:42.000000000 -0500 +@@ -8,13 +8,18 @@ + rmmod edmak 2>/dev/null + rmmod dm350mmap 2>/dev/null + +-insmod cmemk.ko phys_start=0x86000000 phys_end=0x88000000 pools=10x829440,1x1529856,1x276,1x4320,1x560,2x344,1x144,1x81920,2x512,1x14000,1x12960,1x11360,1x4,2x296,1x8192,59x56,4x24,1x1505280,9x1658880,1x2258880 ++depmod -a cmemk ++depmod -a irqk ++depmod -a dm350mmap ++depmod -a edmak ++ ++modprobe cmemk phys_start=0x86000000 phys_end=0x88000000 pools=10x829440,1x1529856,1x276,1x4320,1x560,2x344,1x144,1x81920,2x512,1x14000,1x12960,1x11360,1x4,2x296,1x8192,59x56,4x24,1x1505280,9x1658880,1x2258880 + + ./mapdmaq + +-insmod irqk.ko +-insmod edmak.ko +-insmod dm350mmap.ko ++modprobe irqk ++modprobe edmak ++modprobe dm350mmap + + rm -f /dev/dm350mmap + mknod /dev/dm350mmap c `awk "\\$2==\"dm350mmap\" {print \\$1}" /proc/devices` 0 +diff -uNr dvsdk_demos_3_10_00_13_orig/dm365/loadmodules_hd.sh dvsdk_demos_3_10_00_13/dm365/loadmodules_hd.sh +--- dvsdk_demos_3_10_00_13_orig/dm365/loadmodules_hd.sh 2010-04-13 18:30:15.000000000 -0500 ++++ dvsdk_demos_3_10_00_13/dm365/loadmodules_hd.sh 2010-04-13 18:27:14.000000000 -0500 +@@ -10,15 +10,20 @@ + rmmod edmak 2>/dev/null + rmmod dm365mmap 2>/dev/null + ++depmod -a cmemk ++depmod -a irqk ++depmod -a dm365mmap ++depmod -a edmak ++ + # Pools configuration +-insmod cmemk.ko phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,2x5984,2x3133440,1x16384,1x48952,1x20480,1x60288,1x74,1x28,1x2048,1x6785280,1x146,1x896,1x65536,1x98,1x296,29x56,2x24,1x624,4x62,1x1456,1x18321120,1x65792,5x3523584,1x4194304,1x8355840 ++modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,2x5984,2x3133440,1x16384,1x48952,1x20480,1x60288,1x74,1x28,1x2048,1x6785280,1x146,1x896,1x65536,1x98,1x296,29x56,2x24,1x624,4x62,1x1456,1x18321120,1x65792,5x3523584,1x4194304,1x8355840 + + #VC1 decode pool configuration +-# insmod cmemk.ko phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,1x112665,3x7680,1x319264,2x1024,5x7208960,1x80,1x116,1x29184,1x2688,1x30720,1x551680,2x128,1x74,1x28,1x10240,1x47232,1x448,2x1152,1x8192,2x272896,18x56,2x24,1x86,4x62,2x7808,1x2097152 ++# modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,1x112665,3x7680,1x319264,2x1024,5x7208960,1x80,1x116,1x29184,1x2688,1x30720,1x551680,2x128,1x74,1x28,1x10240,1x47232,1x448,2x1152,1x8192,2x272896,18x56,2x24,1x86,4x62,2x7808,1x2097152 + +-insmod irqk.ko +-insmod edmak.ko +-insmod dm365mmap.ko ++modprobe irqk ++modprobe edmak ++modprobe dm365mmap + + rm -f /dev/dm365mmap + mknod /dev/dm365mmap c `awk "\\$2==\"dm365mmap\" {print \\$1}" /proc/devices` 0 +diff -uNr dvsdk_demos_3_10_00_13_orig/dm365/loadmodules.sh dvsdk_demos_3_10_00_13/dm365/loadmodules.sh +--- dvsdk_demos_3_10_00_13_orig/dm365/loadmodules.sh 2010-04-13 18:30:14.000000000 -0500 ++++ dvsdk_demos_3_10_00_13/dm365/loadmodules.sh 2010-04-13 18:27:18.000000000 -0500 +@@ -8,12 +8,17 @@ + rmmod edmak 2>/dev/null + rmmod dm365mmap 2>/dev/null + ++depmod -a cmemk ++depmod -a irqk ++depmod -a dm365mmap ++depmod -a edmak ++ + # Pools configuration +-insmod cmemk.ko phys_start=0x83C00000 phys_end=0x88000000 pools=2x384,1x16384,1x2688,1x20480,3x74,1x60288,2x28,1x147048,1x10240,1x896,1x65536,1x663552,1x9175376,4x24,1x282624,2x5984,1x58144,1x1024,1x48952,1x464,2x16768,1x1251264,1x30720,1x65792,8x774144,1x173712,1x146,1x98,2x296,50x56,2x86,1x624,1x3328,1x518912,4x62,1x242,4x663552,1x1637824,14x1645056,1x16538976,4x1382400 ++modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=2x384,1x16384,1x2688,1x20480,3x74,1x60288,2x28,1x147048,1x10240,1x896,1x65536,1x663552,1x9175376,4x24,1x282624,2x5984,1x58144,1x1024,1x48952,1x464,2x16768,1x1251264,1x30720,1x65792,8x774144,1x173712,1x146,1x98,2x296,50x56,2x86,1x624,1x3328,1x518912,4x62,1x242,4x663552,1x1637824,14x1645056,1x16538976,4x1382400 + +-insmod irqk.ko +-insmod edmak.ko +-insmod dm365mmap.ko ++modprobe irqk ++modprobe edmak ++modprobe dm365mmap + + rm -f /dev/dm365mmap + mknod /dev/dm365mmap c `awk "\\$2==\"dm365mmap\" {print \\$1}" /proc/devices` 0 +diff -uNr dvsdk_demos_3_10_00_13_orig/dm6467/loadmodules.sh dvsdk_demos_3_10_00_13/dm6467/loadmodules.sh +--- dvsdk_demos_3_10_00_13_orig/dm6467/loadmodules.sh 2010-04-13 18:30:14.000000000 -0500 ++++ dvsdk_demos_3_10_00_13/dm6467/loadmodules.sh 2010-04-13 18:52:08.000000000 -0500 +@@ -6,10 +6,13 @@ + rmmod cmemk.ko 2>/dev/null + rmmod dsplinkk.ko 2>/dev/null + +-insmod cmemk.ko phys_start=0x84C00000 phys_end=0x8ba00000 pools=2x921600,1x460800,1x1048576,1x345600,2x86400,11x564528,5x677376,14x5396480,3x4147200,4x1451520,4x1843200 ++depmod -a cmemk ++depmod -a dsplinkk ++ ++modprobe cmemk phys_start=0x84C00000 phys_end=0x8ba00000 pools=2x921600,1x460800,1x1048576,1x345600,2x86400,11x564528,5x677376,14x5396480,3x4147200,4x1451520,4x1843200 + + # insert dsplinkk, tell it that DSP's DDR is at physical 250MB-254MB +-insmod dsplinkk.ko ++modprobe dsplinkk + + # alter dma queue mapping for better visual performance + if [ -f mapdmaq-hd ] diff --git a/recipes/ti/ti-dvsdk-demos/changed_insmod_to_modprobe_in_loadmodules_3.10.00.14.patch b/recipes/ti/ti-dvsdk-demos/changed_insmod_to_modprobe_in_loadmodules_3.10.00.14.patch new file mode 100644 index 0000000000..c8ba6a961d --- /dev/null +++ b/recipes/ti/ti-dvsdk-demos/changed_insmod_to_modprobe_in_loadmodules_3.10.00.14.patch @@ -0,0 +1,98 @@ +diff -uNr dvsdk_demos_3_10_00_14_orig/dm355/loadmodules.sh dvsdk_demos_3_10_00_14/dm355/loadmodules.sh +--- dvsdk_demos_3_10_00_14_orig/dm355/loadmodules.sh 2010-04-07 11:49:46.000000000 -0500 ++++ dvsdk_demos_3_10_00_14/dm355/loadmodules.sh 2010-04-19 16:02:06.000000000 -0500 +@@ -15,13 +15,18 @@ + rmmod edmak 2>/dev/null + rmmod dm350mmap 2>/dev/null + +-insmod cmemk.ko phys_start=0x86000000 phys_end=0x88000000 pools=10x829440,1x1529856,1x276,1x4320,1x560,2x344,1x144,1x81920,2x512,1x14000,1x12960,1x11360,1x4,2x296,1x8192,59x56,4x24,1x1505280,9x1658880,1x2258880 ++depmod -a cmemk ++depmod -a irqk ++depmod -a dm350mmap ++depmod -a edmak ++ ++modprobe cmemk phys_start=0x86000000 phys_end=0x88000000 pools=10x829440,1x1529856,1x276,1x4320,1x560,2x344,1x144,1x81920,2x512,1x14000,1x12960,1x11360,1x4,2x296,1x8192,59x56,4x24,1x1505280,9x1658880,1x2258880 + + ./mapdmaq + +-insmod irqk.ko +-insmod edmak.ko +-insmod dm350mmap.ko ++modprobe irqk ++modprobe edmak ++modprobe dm350mmap + + rm -f /dev/dm350mmap + mknod /dev/dm350mmap c `awk "\\$2==\"dm350mmap\" {print \\$1}" /proc/devices` 0 +diff -uNr dvsdk_demos_3_10_00_14_orig/dm365/loadmodules_hd.sh dvsdk_demos_3_10_00_14/dm365/loadmodules_hd.sh +--- dvsdk_demos_3_10_00_14_orig/dm365/loadmodules_hd.sh 2010-04-07 11:50:27.000000000 -0500 ++++ dvsdk_demos_3_10_00_14/dm365/loadmodules_hd.sh 2010-04-19 16:00:31.000000000 -0500 +@@ -17,15 +17,20 @@ + rmmod edmak 2>/dev/null + rmmod dm365mmap 2>/dev/null + ++depmod -a cmemk ++depmod -a irqk ++depmod -a dm365mmap ++depmod -a edmak ++ + # Pools configuration +-insmod cmemk.ko phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,2x5984,2x3133440,1x16384,1x48952,1x20480,1x60288,1x74,1x28,1x2048,1x6785280,1x146,1x896,1x65536,1x98,1x296,29x56,2x24,1x624,4x62,1x1456,1x18321120,1x65792,5x3523584,1x4194304,1x8355840 ++modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,2x5984,2x3133440,1x16384,1x48952,1x20480,1x60288,1x74,1x28,1x2048,1x6785280,1x146,1x896,1x65536,1x98,1x296,29x56,2x24,1x624,4x62,1x1456,1x18321120,1x65792,5x3523584,1x4194304,1x8355840 + + #VC1 decode pool configuration +-# insmod cmemk.ko phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,1x112665,3x7680,1x319264,2x1024,5x7208960,1x80,1x116,1x29184,1x2688,1x30720,1x551680,2x128,1x74,1x28,1x10240,1x47232,1x448,2x1152,1x8192,2x272896,18x56,2x24,1x86,4x62,2x7808,1x2097152 ++# modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=1x384,1x112665,3x7680,1x319264,2x1024,5x7208960,1x80,1x116,1x29184,1x2688,1x30720,1x551680,2x128,1x74,1x28,1x10240,1x47232,1x448,2x1152,1x8192,2x272896,18x56,2x24,1x86,4x62,2x7808,1x2097152 + +-insmod irqk.ko +-insmod edmak.ko +-insmod dm365mmap.ko ++modprobe irqk ++modprobe edmak ++modprobe dm365mmap + + rm -f /dev/dm365mmap + mknod /dev/dm365mmap c `awk "\\$2==\"dm365mmap\" {print \\$1}" /proc/devices` 0 +diff -uNr dvsdk_demos_3_10_00_14_orig/dm365/loadmodules.sh dvsdk_demos_3_10_00_14/dm365/loadmodules.sh +--- dvsdk_demos_3_10_00_14_orig/dm365/loadmodules.sh 2010-04-07 11:50:17.000000000 -0500 ++++ dvsdk_demos_3_10_00_14/dm365/loadmodules.sh 2010-04-19 15:59:00.000000000 -0500 +@@ -15,12 +15,17 @@ + rmmod edmak 2>/dev/null + rmmod dm365mmap 2>/dev/null + ++depmod -a cmemk ++depmod -a irqk ++depmod -a dm365mmap ++depmod -a edmak ++ + # Pools configuration +-insmod cmemk.ko phys_start=0x83C00000 phys_end=0x88000000 pools=2x384,1x16384,1x2688,1x20480,3x74,1x60288,2x28,1x147048,1x10240,1x896,1x65536,1x663552,1x9175376,4x24,1x282624,2x5984,1x58144,1x1024,1x48952,1x464,2x16768,1x1251264,1x30720,1x65792,8x774144,1x173712,1x146,1x98,2x296,50x56,2x86,1x624,1x3328,1x518912,4x62,1x242,4x663552,1x1637824,14x1645056,1x16538976,4x1382400 ++modprobe cmemk phys_start=0x83C00000 phys_end=0x88000000 pools=2x384,1x16384,1x2688,1x20480,3x74,1x60288,2x28,1x147048,1x10240,1x896,1x65536,1x663552,1x9175376,4x24,1x282624,2x5984,1x58144,1x1024,1x48952,1x464,2x16768,1x1251264,1x30720,1x65792,8x774144,1x173712,1x146,1x98,2x296,50x56,2x86,1x624,1x3328,1x518912,4x62,1x242,4x663552,1x1637824,14x1645056,1x16538976,4x1382400 + +-insmod irqk.ko +-insmod edmak.ko +-insmod dm365mmap.ko ++modprobe irqk ++modprobe edmak ++modprobe dm365mmap + + rm -f /dev/dm365mmap + mknod /dev/dm365mmap c `awk "\\$2==\"dm365mmap\" {print \\$1}" /proc/devices` 0 +diff -uNr dvsdk_demos_3_10_00_14_orig/dm6467/loadmodules.sh dvsdk_demos_3_10_00_14/dm6467/loadmodules.sh +--- dvsdk_demos_3_10_00_14_orig/dm6467/loadmodules.sh 2010-04-07 15:13:22.000000000 -0500 ++++ dvsdk_demos_3_10_00_14/dm6467/loadmodules.sh 2010-04-19 15:56:35.000000000 -0500 +@@ -14,9 +14,12 @@ + rmmod cmemk.ko 2>/dev/null + rmmod dsplinkk.ko 2>/dev/null + +-insmod cmemk.ko phys_start=0x84C00000 phys_end=0x8ba00000 pools=2x921600,1x460800,1x1048576,1x345600,2x86400,11x564528,5x677376,14x5396480,3x4147200,4x1451520,4x1843200 ++depmod -a cmemk ++depmod -a dsplinkk + +-insmod dsplinkk.ko ++modprobe cmemk phys_start=0x84C00000 phys_end=0x8ba00000 pools=2x921600,1x460800,1x1048576,1x345600,2x86400,11x564528,5x677376,14x5396480,3x4147200,4x1451520,4x1843200 ++ ++modprobe dsplinkk + + # alter dma queue mapping for better visual performance + if [ -f mapdmaq-hd ] diff --git a/recipes/ti/ti-dvsdk-demos/dm365-demos-with-new-data-paths.patch b/recipes/ti/ti-dvsdk-demos/dm365-demos-with-new-data-paths.patch new file mode 100644 index 0000000000..08811445bb --- /dev/null +++ b/recipes/ti/ti-dvsdk-demos/dm365-demos-with-new-data-paths.patch @@ -0,0 +1,17 @@ +diff -uNr dvsdk_demos_3_10_00_13_orig/dm365/interface/dec.c dvsdk_demos_3_10_00_13/dm365/interface/dec.c +--- dvsdk_demos_3_10_00_13_orig/dm365/interface/dec.c 2010-04-09 11:54:20.000000000 -0500 ++++ dvsdk_demos_3_10_00_13/dm365/interface/dec.c 2010-04-08 17:35:27.000000000 -0500 +@@ -49,10 +49,10 @@ +
+ #define NUM_FILE_COMBOS 4
+
+-#define DAVINCIEFFECT_MPEG4 "data/videos/davincieffect.mpeg4"
+-#define DAVINCIEFFECT_H264 "data/videos/davincieffect.264"
++#define DAVINCIEFFECT_MPEG4 "/usr/share/ti/data/videos/davincieffect.mpeg4"
++#define DAVINCIEFFECT_H264 "/usr/share/ti/data/videos/davincieffect.264"
+
+-#define DAVINCIEFFECT_G711 "data/sounds/davincieffect.g711"
++#define DAVINCIEFFECT_G711 "/usr/share/ti/data/sounds/davincieffect.g711"
+
+ #define USERMADE_H264 "demo.264"
+ #define USERMADE_MPEG4 "demo.mpeg4"
diff --git a/recipes/ti/ti-dvsdk-demos/remove-loadmodules_hd.sh-from-make-install_3.10.00.14.patch b/recipes/ti/ti-dvsdk-demos/remove-loadmodules_hd.sh-from-make-install_3.10.00.14.patch new file mode 100644 index 0000000000..adacecbfb2 --- /dev/null +++ b/recipes/ti/ti-dvsdk-demos/remove-loadmodules_hd.sh-from-make-install_3.10.00.14.patch @@ -0,0 +1,11 @@ +diff -uNr dvsdk_demos_3_10_00_14_orig/dm365/Makefile dvsdk_demos_3_10_00_14/dm365/Makefile +--- dvsdk_demos_3_10_00_14_orig/dm365/Makefile 2010-04-27 19:26:55.000000000 -0500 ++++ dvsdk_demos_3_10_00_14/dm365/Makefile 2010-04-27 19:31:31.000000000 -0500 +@@ -48,7 +48,6 @@ + @make -C ../data install + @install -d $(EXEC_DIR)/thirdpartydemos + @install loadmodules.sh $(EXEC_DIR) +- @install loadmodules_hd.sh $(EXEC_DIR) + + $(INSTALLSUBDIRS): + @echo diff --git a/recipes/ti/ti-dvsdk-demos_3.10.00.14.bb b/recipes/ti/ti-dvsdk-demos_3.10.00.14.bb new file mode 100644 index 0000000000..b9f1affdd4 --- /dev/null +++ b/recipes/ti/ti-dvsdk-demos_3.10.00.14.bb @@ -0,0 +1,11 @@ +require ti-dvsdk-demos.inc + +PV = "3_10_00_14" +PR = "${INC_PR}.1" + +SRC_URI_append_dm365 = " file://dm365-demos-with-new-data-paths.patch;patch=1 \ + file://changed_insmod_to_modprobe_in_loadmodules_3.10.00.14.patch;patch=1 \ + file://remove-loadmodules_hd.sh-from-make-install_3.10.00.14.patch;patch=1" + +SRC_URI[dvsdkdemostarball.md5sum] = "36cd08c21a95a60ca6916f029f875bea" +SRC_URI[dvsdkdemostarball.sha256sum] = "a39bbb08e85fd0131dc725cd9c01586e14b58bc361401dfd122f23c5f5d8db71" diff --git a/recipes/ti/ti-paths.inc b/recipes/ti/ti-paths.inc index d3d1b980f9..15cd51966f 100644 --- a/recipes/ti/ti-paths.inc +++ b/recipes/ti/ti-paths.inc @@ -17,6 +17,7 @@ export LPM_INSTALL_DIR_RECIPE = "${installdir}/ti-local-power-manager-tre export DMAI_INSTALL_DIR_RECIPE = "${installdir}/ti-dmai-tree" export CODEC_INSTALL_DIR_RECIPE = "${installdir}/ti-codecs-tree" export DSPLIB_INSTALL_DIR_RECIPE = "${installdir}/ti-dsplib-tree" +export DVSDK_DEMOS_INSTALL_DIR_RECIPE = "${installdir}/ti-dvsdk-demos-tree" # This is where the tools will end up in staging provided PACKAGE_ARCH = ${MACHINE_ARCH} is set export CODEGEN_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}${CODEGEN_INSTALL_DIR_RECIPE}" |