summaryrefslogtreecommitdiff
path: root/recipes/dvsdk/gstreamer-ti/gst-buffsize.diff
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/dvsdk/gstreamer-ti/gst-buffsize.diff')
-rw-r--r--recipes/dvsdk/gstreamer-ti/gst-buffsize.diff113
1 files changed, 113 insertions, 0 deletions
diff --git a/recipes/dvsdk/gstreamer-ti/gst-buffsize.diff b/recipes/dvsdk/gstreamer-ti/gst-buffsize.diff
new file mode 100644
index 0000000000..2d71286498
--- /dev/null
+++ b/recipes/dvsdk/gstreamer-ti/gst-buffsize.diff
@@ -0,0 +1,113 @@
+ ChangeLog | 10 ++++++++++
+ src/gsttividdec2.c | 25 +++++++++++++++++++++----
+ src/gsttividdec2.h | 2 ++
+ 3 files changed, 33 insertions(+), 4 deletions(-)
+
+diff -Nurd --exclude .svn trunk/gstreamer_ti/ti_build/ticodecplugin/ChangeLog branches/BRANCH_DDOMPE_BUFFERSIZES/gstreamer_ti/ti_build/ticodecplugin/ChangeLog
+--- ticodecplugin/ChangeLog 2009-03-03 08:57:50.000000000 +0100
++++ ticodecplugin/ChangeLog 2009-03-03 08:59:20.000000000 +0100
+@@ -1,3 +1,13 @@
++2009-03-01 Diego Dompe, RidgeRun
++ * src/gsttividdec2.{c.h}:
++ Create the output buffer tab using the recently added height and width
++ attributes passed by the capabilities. This solves integration problems
++ with other elements like ffmpegcolorspace and xvimagesink, where they
++ will fail because the second buffer pushed over the src pad of the
++ decoder has a size different from the first one. Using the input caps
++ for the creation of the buffer tab we have a more educated guess on the
++ output buffer size, and the resizing won't be required.
++
+ 2009-02-25 Brijesh Singh, Texas Instruments, Inc.
+ * src/{gsttividenc1.{c,h},gsttividenc.{c,h},gsttividdec1.{c,h},gsttividdec.
+ {c,h},gsttiauddec1.{c,h},gsttiauddec.{c,h},gsttiimgdec1.{c,h},gsttiimgenc1.
+diff -Nurd --exclude .svn trunk/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c branches/BRANCH_DDOMPE_BUFFERSIZES/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c
+--- ticodecplugin/src/gsttividdec2.c 2009-03-03 08:57:50.000000000 +0100
++++ ticodecplugin/src/gsttividdec2.c 2009-03-03 08:59:20.000000000 +0100
+@@ -21,7 +21,11 @@
+ * Original Author:
+ * Don Darling, Texas Instruments, Inc.
+ *
++ * Contributors:
++ * Diego Dompe, RidgeRun
++ *
+ * Copyright (C) $year Texas Instruments Incorporated - http://www.ti.com/
++ * Copyright (C) $year RidgeRun
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+@@ -350,6 +354,8 @@
+
+ viddec2->framerateNum = 0;
+ viddec2->framerateDen = 0;
++ viddec2->height = 0;
++ viddec2->width = 0;
+
+ viddec2->numOutputBufs = 0UL;
+ viddec2->hOutBufTab = NULL;
+@@ -484,6 +490,14 @@
+ viddec2->framerateNum = framerateNum;
+ viddec2->framerateDen = framerateDen;
+ }
++
++ if (!gst_structure_get_int(capStruct, "height", &viddec2->height)) {
++ viddec2->height = 0;
++ }
++
++ if (!gst_structure_get_int(capStruct, "width", &viddec2->width)) {
++ viddec2->width = 0;
++ }
+ }
+
+ /* MPEG Decode */
+@@ -1048,6 +1062,7 @@
+ Cpu_Device device;
+ ColorSpace_Type colorSpace;
+ Int defaultNumBufs;
++ Int outBufSize;
+
+ /* Open the codec engine */
+ GST_LOG("opening codec engine \"%s\"\n", viddec2->engineName);
+@@ -1116,8 +1131,8 @@
+ /* 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.width = viddec2->width;
++ gfxAttrs.dim.height = viddec2->height;
+ gfxAttrs.dim.lineLength = BufferGfx_calcLineLength(
+ gfxAttrs.dim.width, gfxAttrs.colorSpace);
+
+@@ -1125,8 +1140,10 @@
+ gfxAttrs.bAttrs.useMask = gst_tidmaibuffertransport_GST_FREE |
+ gst_tividdec2_CODEC_FREE;
+
++ outBufSize = gfxAttrs.dim.lineLength * viddec2->height;
++
+ viddec2->hOutBufTab =
+- BufTab_create(viddec2->numOutputBufs, Vdec2_getOutBufSize(viddec2->hVd),
++ BufTab_create(viddec2->numOutputBufs, outBufSize,
+ BufferGfx_getBufferAttrs(&gfxAttrs));
+
+ if (viddec2->hOutBufTab == NULL) {
+@@ -1295,7 +1312,7 @@
+ */
+ outBuf = gst_tidmaibuffertransport_new(hDstBuf);
+ gst_buffer_set_data(outBuf, GST_BUFFER_DATA(outBuf),
+- Buffer_getNumBytesUsed(hDstBuf));
++ Vdec2_getOutBufSize(viddec2->hVd));
+ gst_buffer_set_caps(outBuf, GST_PAD_CAPS(viddec2->srcpad));
+
+ /* If we have a valid time stamp, set it on the buffer */
+diff -Nurd --exclude .svn trunk/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h branches/BRANCH_DDOMPE_BUFFERSIZES/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h
+--- ticodecplugin/src/gsttividdec2.h 2009-03-03 08:57:50.000000000 +0100
++++ ticodecplugin/src/gsttividdec2.h 2009-03-03 08:59:20.000000000 +0100
+@@ -96,6 +96,8 @@
+ /* Framerate (Num/Den) */
+ gint framerateNum;
+ gint framerateDen;
++ gint height;
++ gint width;
+
+ /* Buffer management */
+ UInt32 numOutputBufs;