diff --git a/meta-digi-arm/recipes-multimedia/gst-plugins/gst-fsl-plugin.inc b/meta-digi-arm/recipes-multimedia/gst-plugins/gst-fsl-plugin.inc new file mode 100644 index 000000000..d0fee6bfa --- /dev/null +++ b/meta-digi-arm/recipes-multimedia/gst-plugins/gst-fsl-plugin.inc @@ -0,0 +1,41 @@ +# Copyright (C) 2011 Freescale Semiconductor +# Copyright (C) 2012 Digi international +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "Gstreamer freescale plugins" +LICENSE = "GPLv2 & LGPLv2 & LGPLv2.1" +SECTION = "multimedia" +DEPENDS = "gstreamer gst-plugins-base fsl-mm-codeclib imx-lib" +RDEPENDS_${PN} = "fsl-mm-codeclib" +INC_PR = "r5" + +LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ + file://COPYING-LGPL-2;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ + file://COPYING-LGPL-2.1;md5=fbc093901857fcd118f065f900982c24" + +SRC_URI = "${DIGI_LOG_MIRROR}/${PN}-${PV}.tar.gz \ + " + +inherit autotools pkgconfig + +# Todo add a mechanism to map posible build targets +INCLUDE_DIR = "-I${STAGING_KERNEL_DIR}/include" +EXTRA_OEMAKE = "INCLUDES=${INCLUDE_DIR}" +EXTRA_OECONF = "PLATFORM=MX51 --disable-valgrind --disable-examples --disable-debug" + +PACKAGES += "${PN}-libmfwsconf ${PN}-libgplaycore \ + ${PN}-libme ${PN}-libgstbufmeta ${PN}-libmfwba \ + ${PN}-libfwvss ${PN}-gplay" + +FILES_${PN} = "${libdir}/gstreamer-0.10/*.so ${datadir}" +FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" +FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la" +FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/*.a" + +FILES_${PN}-gplay = "${bindir}/gplay" +FILES_${PN}-libmfwsconf = "${libdir}/libmfwsconf${SOLIBS}" +FILES_${PN}-libgplaycore = "${libdir}/libgplaycore${SOLIBS}" +FILES_${PN}-libme = "${libdir}/libme${SOLIBS}" +FILES_${PN}-libgstbufmeta = "${libdir}/libgstbufmeta${SOLIBS}" +FILES_${PN}-libmfwba = "${libdir}/libmfwba${SOLIBS}" +FILES_${PN}-libfwvss = "${libdir}/libmfwvss${SOLIBS}" diff --git a/meta-digi-arm/recipes-multimedia/gst-plugins/gst-fsl-plugin_2.0.3.bb b/meta-digi-arm/recipes-multimedia/gst-plugins/gst-fsl-plugin_2.0.3.bb new file mode 100644 index 000000000..27b9b1ce6 --- /dev/null +++ b/meta-digi-arm/recipes-multimedia/gst-plugins/gst-fsl-plugin_2.0.3.bb @@ -0,0 +1,10 @@ +# Copyright (C) 2011 Freescale Semicondutor +# Copyright (C) 2012 Digi International +# Released under the MIT license (see COPYING.MIT for the terms) + +require gst-fsl-plugin.inc + +PR = "${INC_PR}.0" + +SRC_URI[md5sum] = "ab9fcca9d46a61c898862bcf18e3843c" +SRC_URI[sha256sum] = "a05cf407518528d10a2086e6952e5e93da3d311e1be0f8f20a8d765520afdd78" diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0001-ltmain.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0001-ltmain.patch new file mode 100644 index 000000000..6125d9026 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0001-ltmain.patch @@ -0,0 +1,80 @@ +From: Javier Viguera +Date: Mon, 12 Mar 2012 12:47:31 +0100 +Subject: [PATCH] ltmain + +Signed-off-by: Javier Viguera +--- + ltmain.sh | 32 +++++++++++++++++++++++--------- + 1 file changed, 23 insertions(+), 9 deletions(-) + +diff --git a/ltmain.sh b/ltmain.sh +index 0223495..7877159 100755 +--- a/ltmain.sh ++++ b/ltmain.sh +@@ -283,8 +283,9 @@ func_infer_tag () + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" +- $echo "$modename: specify a tag with \`--tag'" 1>&2 +- exit $EXIT_FAILURE ++ $echo "$modename: defaulting to \`CC'" ++ $echo "$modename: if this is not correct, specify a tag with \`--tag'" ++# exit $EXIT_FAILURE + # else + # $echo "$modename: using $tagname tagged configuration" + fi +@@ -2434,8 +2435,14 @@ EOF + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #dir="$libdir" ++ #absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else +@@ -2574,7 +2581,7 @@ EOF + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" +- need_relink=yes ++ need_relink=no + fi + # This is a shared library + +@@ -5641,6 +5648,10 @@ fi\ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +@@ -5962,10 +5973,13 @@ relink_command=\"$relink_command\"" + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- if test "$inst_prefix_dir" = "$destdir"; then +- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 +- exit $EXIT_FAILURE +- fi ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # if test "$inst_prefix_dir" = "$destdir"; then ++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ # exit $EXIT_FAILURE ++ # fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0002-gplay_fullscreen.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0002-gplay_fullscreen.patch new file mode 100644 index 000000000..5ba38f06a --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0002-gplay_fullscreen.patch @@ -0,0 +1,80 @@ +From: Javier Viguera +Date: Mon, 9 Apr 2012 12:44:06 +0200 +Subject: [PATCH] gplay_fullscreen + +* At start play the video with it's own resolution (not full-screened) +* Fix 'resize' command to set full-screen flag depending on the display + size. + +Signed-off-by: Javier Viguera +--- + src/misc/v4l_sink/src/mfw_gst_v4l.c | 4 ++-- + src/misc/v4l_sink/src/mfw_gst_v4lsink.c | 2 +- + tools/gplay/mfw_gplay_core.c | 16 ++++++++++++++++ + 3 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4l.c b/src/misc/v4l_sink/src/mfw_gst_v4l.c +index 8c2ed72..b85879a 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4l.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4l.c +@@ -1355,11 +1355,11 @@ mfw_gst_v4l2_display_init (MFW_GST_V4LSINK_INFO_T * v4l_info, + height = (disp_height >> 3) << 3; + if (width == 0) { + GST_WARNING("Wrong display width information"); +- width = v4l_info->fullscreen_width; ++ width = v4l_info->width; + } + if (height == 0) { + GST_WARNING("Wrong display height information"); +- height = v4l_info->fullscreen_height; ++ height = v4l_info->height; + } + + return ( mfw_gst_v4l2_set_crop(v4l_info, width, height) ); +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +index c6a6b6c..b2c7b3d 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +@@ -976,7 +976,7 @@ mfw_gst_v4lsink_show_frame (GstBaseSink * basesink, GstBuffer * buf) + v4l_info->disp_height); + + if (result != TRUE) { +- g_print ("\nFailed to initalize the display\n"); ++ GST_WARNING ("Failed to initalize the display"); + g_mutex_unlock (v4l_info->flow_lock); + return GST_FLOW_OK; + } +diff --git a/tools/gplay/mfw_gplay_core.c b/tools/gplay/mfw_gplay_core.c +index 4705cac..e5569fc 100755 +--- a/tools/gplay/mfw_gplay_core.c ++++ b/tools/gplay/mfw_gplay_core.c +@@ -1583,6 +1583,9 @@ fsl_player_ret_val fsl_player_resize(fsl_player_handle handle, fsl_player_displa + fsl_player_property* pproperty = (fsl_player_property*)pplayer->property_handle; + GstElement* auto_video_sink = NULL; + GstElement* actual_video_sink = NULL; ++ fsl_player_s32 fullscreen_width = 0; ++ fsl_player_s32 fullscreen_height = 0; ++ fsl_player_s32 fb = 0; + + g_object_get(pproperty->playbin, "video-sink", &auto_video_sink, NULL); + if( NULL == auto_video_sink ) +@@ -1607,6 +1610,19 @@ fsl_player_ret_val fsl_player_resize(fsl_player_handle handle, fsl_player_displa + g_object_set(G_OBJECT(actual_video_sink), "disp-width", pproperty->display_parameter.disp_width, NULL); + g_object_set(G_OBJECT(actual_video_sink), "disp-height", pproperty->display_parameter.disp_height, NULL); + ++ /* Set full-screen flag depending on the new display parameters */ ++ fullscreen_fb0_open(&fb); ++ fullscreen_fb0_get_width_height(fb, &(fullscreen_width), &(fullscreen_height)); ++ fullscreen_fb0_close(&fb); ++ if ((pproperty->display_parameter.offsetx == 0) ++ && (pproperty->display_parameter.offsety == 0) ++ && (pproperty->display_parameter.disp_width == fullscreen_width) ++ && (pproperty->display_parameter.disp_height == fullscreen_height)) { ++ pproperty->bfullscreen = 1; ++ } else { ++ pproperty->bfullscreen = 0; ++ } ++ + update_mfw_v4lsink_parameter(actual_video_sink); + + g_object_unref (actual_video_sink); diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0003-add-fb-dev.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0003-add-fb-dev.patch new file mode 100644 index 000000000..96f0354eb --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0003-add-fb-dev.patch @@ -0,0 +1,185 @@ +From 1767c2d99895b682a79a0b874379811e83f6f147 Mon Sep 17 00:00:00 2001 +From: Alejandro Gonzalez +Date: Tue, 13 Mar 2012 19:20:02 +0100 +Subject: [PATCH] add-fb-dev + +Add framebuffer select functionality to sink + +To support displaying to the second monitor, the mfw_v4lsink sink +element needs to accept a device parameter specifying the framebuffer +device to use as output. + +Signed-off-by: Javier Viguera +--- + src/misc/v4l_sink/src/mfw_gst_fb.c | 15 +++++++++------ + src/misc/v4l_sink/src/mfw_gst_fb.h | 1 - + src/misc/v4l_sink/src/mfw_gst_v4l.c | 4 ++++ + src/misc/v4l_sink/src/mfw_gst_v4lsink.c | 27 +++++++++++++++++++++++++-- + src/misc/v4l_sink/src/mfw_gst_v4lsink.h | 3 ++- + 5 files changed, 40 insertions(+), 10 deletions(-) + +diff --git a/src/misc/v4l_sink/src/mfw_gst_fb.c b/src/misc/v4l_sink/src/mfw_gst_fb.c +index 8c251da..fb13489 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_fb.c ++++ b/src/misc/v4l_sink/src/mfw_gst_fb.c +@@ -199,16 +199,19 @@ POST-CONDITIONS: None + IMPORTANT NOTES: None + =============================================================================*/ + +-gboolean mfw_gst_fb0_open(gint *fb) ++gboolean mfw_gst_fb0_open(MFW_GST_V4LSINK_INFO_T * v4l_info) + { + gboolean retval = TRUE; + gchar fb_device[100] = FB_DEIVCE; + +- if ((*fb = +- open(fb_device, O_RDWR, 0)) < 0) { +- g_print("Unable to open %s %d\n", fb_device, *fb); +- *fb = 0; +- retval = FALSE; ++ if (v4l_info->device != NULL && v4l_info->device[0] != '\0') ++ strcpy(fb_device , v4l_info->device); ++ ++ GST_DEBUG_OBJECT (v4l_info, "opened framebuffer %s", v4l_info->device); ++ if ((v4l_info->fd_fb = open(fb_device, O_RDWR, 0)) < 0) { ++ g_print("Unable to open %s %d\n", fb_device, v4l_info->fd_fb); ++ v4l_info->fd_fb = 0; ++ retval = FALSE; + } + return retval; + +diff --git a/src/misc/v4l_sink/src/mfw_gst_fb.h b/src/misc/v4l_sink/src/mfw_gst_fb.h +index 01321d6..4876b73 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_fb.h ++++ b/src/misc/v4l_sink/src/mfw_gst_fb.h +@@ -50,7 +50,6 @@ + + gboolean mfw_gst_set_gbl_alpha(gint fb, gint alphaVal); + gboolean mfw_gst_fb0_set_colorkey(gint fb,gulong *colorSrc); +-gboolean mfw_gst_fb0_open(gint *fb); + gboolean mfw_gst_fb0_close(gint *fb); + + #if ((defined (_MX37) || defined (_MX51)) && defined (LOC_ALPHA_SUPPORT)) +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4l.c b/src/misc/v4l_sink/src/mfw_gst_v4l.c +index b85879a..d773f6a 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4l.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4l.c +@@ -540,6 +540,10 @@ mfw_gst_v4l2_mx37_mx51_tv_close (MFW_GST_V4LSINK_INFO_T * v4l_info) + + gint out = 3; + ++ if (v4l_info->device && !strcmp(v4l_info->device, "/dev/fb1")) ++ out = 5; ++ g_free(v4l_info->device); ++ + // mfw_gst_v4l2_mx37_mx51_tv_setblank (v4l_info); + + v4l_info->tv_mode = NV_MODE; +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +index b2c7b3d..d7943c1 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +@@ -137,6 +137,7 @@ enum + TV_OUT, + TV_MODE, + #endif ++ DEVICE, + DUMP_LOCATION, + ADDITIONAL_BUFFER_DEPTH, + SETPARA, +@@ -741,6 +742,11 @@ mfw_gst_v4lsink_set_property (GObject * object, guint prop_id, + case DUMP_LOCATION: + dumpfile_set_location (v4l_info, g_value_get_string (value)); + break; ++ ++ case DEVICE: ++ v4l_info->device = g_strdup (g_value_get_string (value)); ++ break; ++ + case SETPARA: + v4l_info->setpara |= g_value_get_int (value); + break; +@@ -848,6 +854,10 @@ mfw_gst_v4lsink_get_property (GObject * object, guint prop_id, + case DUMP_LOCATION: + g_value_set_string (value, v4l_info->dump_location); + break; ++ ++ case DEVICE: ++ g_value_set_string (value, v4l_info->device); ++ break; + case SETPARA: + g_value_set_int (value, v4l_info->setpara); + break; +@@ -1497,6 +1507,12 @@ mfw_gst_v4lsink_finalize (GObject * object) + + } + ++static void mfw_gst_v4lsink_start(GstBaseSink * bsink) ++{ ++ MFW_GST_V4LSINK_INFO_T *v4l_info = MFW_GST_V4LSINK(bsink); ++ mfw_gst_fb0_open(v4l_info); ++} ++ + /*============================================================================= + FUNCTION: mfw_gst_v4lsink_init + +@@ -1541,6 +1557,7 @@ mfw_gst_v4lsink_init (MFW_GST_V4LSINK_INFO_T * v4l_info, + v4l_info->dump_location = NULL; + v4l_info->dumpfile = NULL; + v4l_info->dump_length = 0; ++ v4l_info->device = NULL; + v4l_info->cr_left_bypixel_orig = 0; + v4l_info->cr_right_bypixel_orig = 0; + v4l_info->cr_top_bypixel_orig = 0; +@@ -1573,8 +1590,6 @@ mfw_gst_v4lsink_init (MFW_GST_V4LSINK_INFO_T * v4l_info, + memset (&v4l_info->crop, 0, sizeof (struct v4l2_crop)); + memset (&v4l_info->prevCrop, 0, sizeof (struct v4l2_crop)); + +- mfw_gst_fb0_open (&v4l_info->fd_fb); +- + v4l_info->chipcode = getChipCode(); + v4l_info->v4l_id = -1; + +@@ -1626,6 +1641,7 @@ mfw_gst_v4lsink_class_init (MFW_GST_V4LSINK_INFO_CLASS_T * klass) + + parent_class = g_type_class_peek_parent (klass); + ++ gstvs_class->start = GST_DEBUG_FUNCPTR (mfw_gst_v4lsink_start); + gobject_class->set_property = mfw_gst_v4lsink_set_property; + gobject_class->get_property = mfw_gst_v4lsink_get_property; + gobject_class->finalize = mfw_gst_v4lsink_finalize; +@@ -1730,6 +1746,13 @@ mfw_gst_v4lsink_class_init (MFW_GST_V4LSINK_INFO_CLASS_T * klass) + NULL, + G_PARAM_READWRITE)); + ++ g_object_class_install_property (gobject_class, DEVICE, ++ g_param_spec_string ("device", ++ "Framebuffer device", ++ "Framebuffer device to display output." ++ "/dev/fb0,/dev/fb1", ++ NULL, ++ G_PARAM_READWRITE)); + + g_object_class_install_property (gobject_class, PROP_FORCE_ASPECT_RATIO, + g_param_spec_boolean +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4lsink.h b/src/misc/v4l_sink/src/mfw_gst_v4lsink.h +index 504e06f..4764868 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4lsink.h ++++ b/src/misc/v4l_sink/src/mfw_gst_v4lsink.h +@@ -279,6 +279,7 @@ typedef struct MFW_GST_V4LSINK_INFO_S + FILE *dumpfile; + guint64 dump_length; + ++ gchar *device; + + gint qbuff_count; /* buffer counter, increase when frame queued to v4l device */ + +@@ -367,7 +368,7 @@ typedef struct MFW_GST_V4LSINK_INFO_CLASS_S + =============================================================================*/ + + extern GType mfw_gst_v4lsink_get_type (void); +- ++gboolean mfw_gst_fb0_open(MFW_GST_V4LSINK_INFO_T * v4l_info); + + + diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0004-mfw_v4lsrc_uyvy.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0004-mfw_v4lsrc_uyvy.patch new file mode 100644 index 000000000..372de5333 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0004-mfw_v4lsrc_uyvy.patch @@ -0,0 +1,56 @@ +From: Alex Gonzalez +Date: Tue, 3 Apr 2012 13:51:45 +0200 +Subject: [PATCH] mfw_v4lsrc_uyvy + +Change the default pixelformat used by the plugin to uyvy which is +supported by the mt9v111 driver. + +Signed-off-by: Alex Gonzalez +--- + src/misc/v4l_source/src/mfw_gst_v4lsrc.c | 19 ++++--------------- + 1 file changed, 4 insertions(+), 15 deletions(-) + +diff --git a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +index 8ff9b6f..d1057e3 100755 +--- a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c ++++ b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +@@ -425,11 +425,8 @@ static gint mfw_gst_v4lsrc_capture_setup(MFWGstV4LSrc *v4l_src) + in_height = v4l_src->capture_height; + } + fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +-#ifdef MX51 +- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_NV12; +-#else +- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420; +-#endif ++ ++ fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY; + fmt.fmt.pix.width = in_width; + fmt.fmt.pix.height = in_height; + +@@ -1225,11 +1222,7 @@ static GstCaps *mfw_gst_v4lsrc_get_caps (GstBaseSrc * src) + GstCaps *capslist; + GstPadTemplate *src_template = NULL; + gint i; +-#ifndef MX51 +- guint32 format = GST_MAKE_FOURCC('I', '4', '2', '0'); +-#else +- guint32 format = GST_MAKE_FOURCC('N', 'V', '1', '2'); +-#endif ++ guint32 format = GST_MAKE_FOURCC('U', 'Y', 'V', 'Y'); + + capslist = gst_caps_new_empty(); + +@@ -1273,11 +1266,7 @@ static void mfw_gst_v4lsrc_fixate(GstPad * pad, GstCaps * caps) + GstStructure *structure=NULL; + MFWGstV4LSrc *v4l_src = + MFW_GST_V4LSRC(gst_pad_get_parent (pad)); +-#ifndef MX51 +- guint32 fourcc = GST_MAKE_FOURCC('I', '4', '2', '0'); +-#else +- guint32 fourcc = GST_MAKE_FOURCC('N', 'V', '1', '2'); +-#endif ++ guint32 fourcc = GST_MAKE_FOURCC('U', 'Y', 'V', 'Y'); + + const GValue *v=NULL; + for (i = 0; i < gst_caps_get_size (caps); ++i) { diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0005-mfw_v4lsec_def_sizes.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0005-mfw_v4lsec_def_sizes.patch new file mode 100644 index 000000000..f4b7894f0 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0005-mfw_v4lsec_def_sizes.patch @@ -0,0 +1,95 @@ +From: Alex Gonzalez +Date: Tue, 3 Apr 2012 13:52:50 +0200 +Subject: [PATCH] mfw_v4lsec_def_sizes + +Change the default dimensions to the ones supported by the mt9v111 driver. + +Signed-off-by: Alex Gonzalez +--- + src/misc/v4l_source/src/mfw_gst_v4lsrc.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +index d1057e3..968deb7 100755 +--- a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c ++++ b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +@@ -1304,8 +1304,8 @@ IMPORTANT NOTES: None + =============================================================================*/ + static void mfw_gst_v4lsrc_init(MFWGstV4LSrc * v4l_src, MFWGstV4LSrcClass * klass) + { +- v4l_src->capture_width=176; +- v4l_src->capture_height=144; ++ v4l_src->capture_width=640; ++ v4l_src->capture_height=480; + v4l_src->fps_n=30; + v4l_src->fps_d=1; + v4l_src->fd_v4l=-1; +@@ -1315,12 +1315,12 @@ static void mfw_gst_v4lsrc_init(MFWGstV4LSrc * v4l_src, MFWGstV4LSrcClass * klas + v4l_src->crop_pixel=0; + v4l_src->rotate=0; + v4l_src->preview=FALSE; +- v4l_src->preview_width=160; +- v4l_src->preview_height=128; ++ v4l_src->preview_width=640; ++ v4l_src->preview_height=480; + v4l_src->preview_top=0; + v4l_src->preview_left=0; +- v4l_src->sensor_width=1280; +- v4l_src->sensor_height=1024; ++ v4l_src->sensor_width=640; ++ v4l_src->sensor_height=480; + v4l_src->capture_mode = 0; + v4l_src->bg = FALSE; + #ifdef MX27 +@@ -1372,14 +1372,14 @@ static void mfw_gst_v4lsrc_class_init(MFWGstV4LSrcClass * klass) + g_param_spec_int("capture-width", + "capture_width", + "gets the width of the image to be captured", +- 16, 1768, 176, ++ 16, 1768, 640, + G_PARAM_READWRITE)); + + g_object_class_install_property(gobject_class, MFW_V4L_SRC_HEIGHT, + g_param_spec_int("capture-height", + "capture_height", + "gets the height of the image to be captured", +- 16, 1168, 144, ++ 16, 1168, 480, + G_PARAM_READWRITE)); + + g_object_class_install_property(gobject_class, MFW_V4L_SRC_PREVIEW_WIDTH, +@@ -1387,7 +1387,7 @@ static void mfw_gst_v4lsrc_class_init(MFWGstV4LSrcClass * klass) + "preview_width", + "gets the width of the image to be displayed for preview. \n" + "\t\t\tNote:property is valid only when preview property is enabled", +- 16, 1768, 176, ++ 16, 1768, 640, + G_PARAM_READWRITE)); + + g_object_class_install_property(gobject_class, MFW_V4L_SRC_PREVIEW_HEIGHT, +@@ -1395,7 +1395,7 @@ static void mfw_gst_v4lsrc_class_init(MFWGstV4LSrcClass * klass) + "preview_height", + "gets the height of the image to be displayed for preview. \n" + "\t\t\tNote:property is valid only when preview property is enabled", +- 16, 1168, 144, ++ 16, 1168, 480, + G_PARAM_READWRITE)); + + g_object_class_install_property(gobject_class, MFW_V4L_SRC_PREVIEW_TOP, +@@ -1471,14 +1471,14 @@ static void mfw_gst_v4lsrc_class_init(MFWGstV4LSrcClass * klass) + "sensor_width", + "gets the width of the sensor", + 16, +- G_MAXINT, 1280, ++ G_MAXINT, 640, + G_PARAM_READWRITE)); + g_object_class_install_property(gobject_class, MFW_V4L_SRC_SENSOR_HEIGHT, + g_param_spec_int("sensor-height", + "sensor_height", + "gets the height of the sensor", + 16, +- G_MAXINT, 1024, ++ G_MAXINT, 480, + G_PARAM_READWRITE)); + + g_object_class_install_property(gobject_class, MFW_V4L_SRC_CAPTURE_MODE, diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0006-mfw_v4lsrc_create_segfault.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0006-mfw_v4lsrc_create_segfault.patch new file mode 100644 index 000000000..51ece6006 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0006-mfw_v4lsrc_create_segfault.patch @@ -0,0 +1,25 @@ +From: Alex Gonzalez +Date: Tue, 3 Apr 2012 13:54:50 +0200 +Subject: [PATCH] mfw_v4lsrc_create_segfault + +Fix a segfault that happend when the create function returns GST_FLOW_OK +but the returned buffer is NULL. + +Signed-off-by: Alex Gonzalez +--- + src/misc/v4l_source/src/mfw_gst_v4lsrc.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +index 968deb7..9388edd 100755 +--- a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c ++++ b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +@@ -1195,6 +1195,8 @@ static GstFlowReturn mfw_gst_v4lsrc_create (GstPushSrc * src, GstBuffer ** buf) + { + MFWGstV4LSrc *v4l_src = MFW_GST_V4LSRC(src); + *buf = mfw_gst_v4lsrc_buffer_new (v4l_src); ++ if(*buf == NULL) ++ return GST_FLOW_ERROR; + return GST_FLOW_OK; + + } diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0007-gplay_rotate.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0007-gplay_rotate.patch new file mode 100644 index 000000000..4fb860342 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0007-gplay_rotate.patch @@ -0,0 +1,67 @@ +From: Javier Viguera +Date: Tue, 13 Mar 2012 19:05:39 +0100 +Subject: [PATCH] gplay_rotate + +* Fix 'rotate' gplay command + +Signed-off-by: Javier Viguera +--- + src/misc/v4l_sink/src/mfw_gst_v4l.c | 5 ++++- + src/misc/v4l_sink/src/mfw_gst_v4lsink.c | 1 + + src/misc/v4l_sink/src/mfw_gst_v4lsink.h | 1 + + 3 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4l.c b/src/misc/v4l_sink/src/mfw_gst_v4l.c +index d773f6a..cb999d2 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4l.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4l.c +@@ -845,6 +845,7 @@ mfw_gst_v4l2_set_rotation (MFW_GST_V4LSINK_INFO_T * v4l_info) + /* Set the rotation */ + ctrl.id = V4L2_CID_PRIVATE_BASE; + ctrl.value = v4l_info->rotate; ++ v4l_info->changedRotate = (v4l_info->prevRotate != v4l_info->rotate) ? TRUE : FALSE; + v4l_info->prevRotate = v4l_info->rotate; + if (ioctl (v4l_info->v4l_id, VIDIOC_S_CTRL, &ctrl) < 0) { + GST_ERROR ("set ctrl failed"); +@@ -1288,7 +1289,7 @@ mfw_gst_v4l2_set_crop (MFW_GST_V4LSINK_INFO_T * v4l_info, + crop->c.left, crop->c.top, crop->c.width, crop->c.height); + + if ((!memcmp (crop, prevCrop, sizeof (struct v4l2_crop))) +- && (v4l_info->rotate == v4l_info->prevRotate)) { ++ && !v4l_info->changedRotate) { + // mfw_gst_v4l2_streamoff(v4l_info); + return FALSE; + +@@ -1303,6 +1304,8 @@ mfw_gst_v4l2_set_crop (MFW_GST_V4LSINK_INFO_T * v4l_info, + + } + ++ /* Reset changedRotate flag */ ++ v4l_info->changedRotate = FALSE; + + if (ioctl (v4l_info->v4l_id, VIDIOC_S_CROP, crop) < 0) { + GST_ERROR ("set crop failed"); +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +index d7943c1..e4f6aa0 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +@@ -1540,6 +1540,7 @@ mfw_gst_v4lsink_init (MFW_GST_V4LSINK_INFO_T * v4l_info, + v4l_info->axis_left = 0; + v4l_info->rotate = 0; + v4l_info->prevRotate = 0; ++ v4l_info->changedRotate = FALSE; + v4l_info->crop_left = 0; + v4l_info->crop_top = 0; + +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4lsink.h b/src/misc/v4l_sink/src/mfw_gst_v4lsink.h +index 28cd6b7..159d3e7 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4lsink.h ++++ b/src/misc/v4l_sink/src/mfw_gst_v4lsink.h +@@ -255,6 +255,7 @@ typedef struct MFW_GST_V4LSINK_INFO_S + gint axis_left; /* diplay left co-ordinate */ + gint rotate; /* display rotate angle */ + gint prevRotate; /* Previous display rotate angle */ ++ gboolean changedRotate; /* There was a rotation change */ + gint v4l_id; /* device ID */ + gint cr_left_bypixel; /* crop left offset set by decoder in caps */ + gint cr_right_bypixel; /* crop right offset set by decoder in caps */ diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0008-mfw_isink-set-defaults-if-no-vssconfig-found.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0008-mfw_isink-set-defaults-if-no-vssconfig-found.patch new file mode 100644 index 000000000..e8f96aa3c --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0008-mfw_isink-set-defaults-if-no-vssconfig-found.patch @@ -0,0 +1,37 @@ +From: Alex Gonzalez +Date: Mon, 9 Apr 2012 18:20:01 +0200 +Subject: [PATCH] mfw_isink: Set defaults if no vssconfig found. + +Signed-off-by: Alex Gonzalez +--- + libs/vss/vss_common.c | 16 ++++++++++++++++ + 1 files changed, 16 insertions(+), 0 deletions(-) + +diff --git a/libs/vss/vss_common.c b/libs/vss/vss_common.c +index 757c2fc..c6ac428 100755 +--- a/libs/vss/vss_common.c ++++ b/libs/vss/vss_common.c +@@ -390,6 +390,22 @@ next: + cs = cs->next; + } + ++ if( cs == NULL ){ ++ for (i=0;idevices[i]; ++ vd->fbidx = i; ++ vd->main_fbidx = i; ++ vd->fmt = fmt_from_str("RGBP"); ++ sprintf(vd->name, "DISP%d", i); ++ vd->vsmax = 4; ++ vd->mode_num = 0; ++ _getVideoDeviceInfo(vd); ++ } ++ } ++ + sconf_free_cs(css); + + } + diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0009-mfw_isink-clear-framebuffer-of-spurious-content.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0009-mfw_isink-clear-framebuffer-of-spurious-content.patch new file mode 100644 index 000000000..3eda6183e --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0009-mfw_isink-clear-framebuffer-of-spurious-content.patch @@ -0,0 +1,29 @@ +From: Alex Gonzalez +Date: Tue, 10 Apr 2012 12:21:29 +0200 +Subject: [PATCH] gst-fsl-plugin: Clear framebuffer of spurious content. + +When starting a video right after boot, there is some content in the +framebuffer which remains. The blank/unblank operation gets rid of it. + +Signed-off-by: Alex Gonzalez +--- + libs/vss/vss_common.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/libs/vss/vss_common.c b/libs/vss/vss_common.c +index c6ac428..fb80f42 100755 +--- a/libs/vss/vss_common.c ++++ b/libs/vss/vss_common.c +@@ -486,6 +486,11 @@ int _initVideoDevice(VideoDevice * vd, int mode_idx) + + vd->fbvar = fb_var; + ++ // Clear framebuffer from spurious content ++ VS_MESSAGE("Blanking device /dev/fb%d.\n",vd->fbidx); ++ VS_IOCTL(fd, FBIOBLANK, error, FB_BLANK_POWERDOWN); ++ VS_IOCTL(fd, FBIOBLANK, error, FB_BLANK_UNBLANK); ++ + if ((vd->resX==0) || (vd->resY==0)) + goto error; + + diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0010-mfw_v4lsink-Do-not-ignore-cropping-dimensions.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0010-mfw_v4lsink-Do-not-ignore-cropping-dimensions.patch new file mode 100644 index 000000000..9510e5ac9 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0010-mfw_v4lsink-Do-not-ignore-cropping-dimensions.patch @@ -0,0 +1,57 @@ +From: Alex Gonzalez +Date: Wed, 2 May 2012 10:53:19 +0200 +Subject: [PATCH] mfw_v4lsink: Do not ignore cropping dimensions. + +When the sink issues a S_CROP followed by a S_OUTPUT, the later resets the +crop dimensions to full screen. In order to keep the cropping dimensions, +a new S_CROP needs to be issued after the S_OUTPUT. + +This change reuses an init call that was only called in the case of X11 +which reissues the crop. It also needs to make sure that the previous +crop information is erased, otherwise the cropping function will decide +that it won't perform a crop if the dimensions have not changed. + +Signed-off-by: Alex Gonzalez +--- + src/misc/v4l_sink/src/mfw_gst_v4lsink.c | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +index e4f6aa0..b30f390 100755 +--- a/src/misc/v4l_sink/src/mfw_gst_v4lsink.c ++++ b/src/misc/v4l_sink/src/mfw_gst_v4lsink.c +@@ -1852,6 +1852,7 @@ mfw_gst_v4lsink_buffer_alloc (GstBaseSink * bsink, guint64 offset, + gint frame_buffer_size; + gint max_frames; + gint hwbuffernumforcodec; ++ struct v4l2_crop *prevCrop = &v4l_info->prevCrop; + + gboolean result = FALSE; + +@@ -1990,7 +1991,6 @@ mfw_gst_v4lsink_buffer_alloc (GstBaseSink * bsink, guint64 offset, + return GST_FLOW_ERROR; + } + +-#ifdef USE_X11 + /* Two cases: + * 1. VPU will request buffer first, when pipeline enter running state, + * every parameter is ready. +@@ -1999,13 +1999,15 @@ mfw_gst_v4lsink_buffer_alloc (GstBaseSink * bsink, guint64 offset, + */ + + if (element->current_state == GST_STATE_PLAYING) { ++#ifdef USE_X11 + GST_INFO("element state already switch to PLAYING, create event thread"); + mfw_gst_v4lsink_create_event_thread(v4l_info); + ++#endif ++ // Digi: Force the crop to take effect by losing the previous crop info ++ memset(prevCrop,0,sizeof(struct v4l2_crop)); + mfw_gst_v4l2_display_init(v4l_info, v4l_info->disp_width, v4l_info->disp_height); +- + } +-#endif + + /* + * The software H264 decoder need check the "num-buffers-required" + diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0011-gplay_next_file.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0011-gplay_next_file.patch new file mode 100644 index 000000000..a51399904 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0011-gplay_next_file.patch @@ -0,0 +1,28 @@ +From: Javier Viguera +Date: Thu, 10 May 2012 19:54:52 +0200 +Subject: [PATCH] gplay_next_file + +Add 'send_message_exit' to avoid blocking forever. + +This fixes 'gplay' not exiting when you run 'play next file [>]' command +on the last file of the playlist. + +CCORE_MX53_EXTENSIONS-142 + +Signed-off-by: Javier Viguera +--- + tools/gplay/mfw_gplay.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/gplay/mfw_gplay.c b/tools/gplay/mfw_gplay.c +index ee65100..de11e68 100755 +--- a/tools/gplay/mfw_gplay.c ++++ b/tools/gplay/mfw_gplay.c +@@ -876,6 +876,7 @@ int main(int argc,char *argv[]) + case '>': // Play next file + printf("next\n"); + if (playlist_next(pplayer, opt)==NULL){ ++ pplayer->klass->send_message_exit(pplayer); + player_exit(pplayer); + } + break; diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0012-gplay_repeat.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0012-gplay_repeat.patch new file mode 100644 index 000000000..943ce6781 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0012-gplay_repeat.patch @@ -0,0 +1,47 @@ +From: Javier Viguera +Date: Fri, 11 May 2012 13:15:07 +0200 +Subject: [PATCH] gplay_repeat + +Fix some issues related with 'repeat' command in gplay. + +1. repeat_current not working if the item was the last one of the + playlist. + +2. Running 'play previous [<]' does not honour 'repeat_current' mode and + jumps to previous item in the playlist anyway. + +CCORE_MX53_EXTENSIONS-140 + +Signed-off-by: Javier Viguera +--- + tools/gplay/mfw_gplay.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tools/gplay/mfw_gplay.c b/tools/gplay/mfw_gplay.c +index de11e68..5e5a6f1 100755 +--- a/tools/gplay/mfw_gplay.c ++++ b/tools/gplay/mfw_gplay.c +@@ -151,6 +151,7 @@ PlayItem * playlist_next(fsl_player_handle handle, options* opt) + } + case FSL_PLAYER_REPEAT_CURRENT: + { ++ next = opt->current; + pplayer->klass->stop(pplayer); + //pplayer->klass->set_media_location(pplayer, opt->current->name, &drm_format); + pplayer->klass->play(pplayer); +@@ -172,6 +173,7 @@ fsl_player_ret_val playlist_previous(fsl_player_handle handle, options* opt) + PlayItem * current = opt->current; + PlayItem * next = getPrevItem(current); + ++#if 0 + if(next) + { + opt->current = next; +@@ -180,6 +182,7 @@ fsl_player_ret_val playlist_previous(fsl_player_handle handle, options* opt) + pplayer->klass->set_media_location(pplayer, opt->current->name, &drm_format); + pplayer->klass->play(pplayer); + } ++#endif + switch( opt->repeat ) + { + case FSL_PLAYER_REPEAT_NONE: diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0013-Only-call-MXCFB_SET_OVERLAY_POS-with-overlay-framebuffer.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0013-Only-call-MXCFB_SET_OVERLAY_POS-with-overlay-framebuffer.patch new file mode 100644 index 000000000..f5c23a226 --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0013-Only-call-MXCFB_SET_OVERLAY_POS-with-overlay-framebuffer.patch @@ -0,0 +1,52 @@ +From: Alex Gonzalez +Date: Thu, 17 May 2012 10:46:39 +0200 +Subject: [PATCH] gst-fsl-plugin: Only call MXCFB_SET_OVERLAY_POS with overlay framebuffer. + +This is just to avoid the ioctl to return an error. + +Signed-off-by: Alex Gonzalez +--- + libs/vss/vss_common.c | 22 ++++++++++++++-------- + 1 files changed, 14 insertions(+), 8 deletions(-) + +diff --git a/libs/vss/vss_common.c b/libs/vss/vss_common.c +index fb80f42..114b45b 100755 +--- a/libs/vss/vss_common.c ++++ b/libs/vss/vss_common.c +@@ -686,10 +686,14 @@ _setDeviceConfig(VideoDevice * vd) + + int fd = _getDevicefd(vd); + +- /* Workaround for ipu hardware, it need set to 0,0 before change another offset */ +- pos.x = 0; +- pos.y = 0; +- VS_IOCTL(fd, MXCFB_SET_OVERLAY_POS, here1, &pos); ++ ++ VS_IOCTL(fd, FBIOGET_FSCREENINFO, done, &fb_fix); ++ if( !strcmp(fb_fix.id,"DISP3 FG") ){ ++ /* Workaround for ipu hardware, it need set to 0,0 before change another offset */ ++ pos.x = 0; ++ pos.y = 0; ++ VS_IOCTL(fd, MXCFB_SET_OVERLAY_POS, here1, &pos); ++ } + here1: + VS_IOCTL(fd, FBIOBLANK, done, FB_BLANK_POWERDOWN); + +@@ -711,10 +715,12 @@ here1: + + VS_IOCTL(fd, FBIOGET_VSCREENINFO, done, &fb_var); + VS_IOCTL(fd, FBIOGET_FSCREENINFO, done, &fb_fix); +- +- pos.x = vd->disp.left; +- pos.y = vd->disp.top; +- VS_IOCTL(fd, MXCFB_SET_OVERLAY_POS, here2, &pos); ++ ++ if( !strcmp(fb_fix.id,"DISP3 FG") ){ ++ pos.x = vd->disp.left; ++ pos.y = vd->disp.top; ++ VS_IOCTL(fd, MXCFB_SET_OVERLAY_POS, here2, &pos); ++ } + here2: + + VS_IOCTL(fd, FBIOBLANK, done, FB_BLANK_UNBLANK); + diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0014-Do-not-blank-the-display-on-device-close.patch b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0014-Do-not-blank-the-display-on-device-close.patch new file mode 100644 index 000000000..d3cc51e6d --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/files/gst-fsl-plugin-2.0.3-0014-Do-not-blank-the-display-on-device-close.patch @@ -0,0 +1,25 @@ +From: Alex Gonzalez +Date: Mon, 21 May 2012 16:17:01 +0200 +Subject: [PATCH] gst-fsl-plugin: Do not blank the display on device close. + +CCORE_MX53_EXTENSIONS-156 + +Signed-off-by: Alex Gonzalez +--- + libs/vss/vss_common.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/libs/vss/vss_common.c b/libs/vss/vss_common.c +index 114b45b..8731da9 100755 +--- a/libs/vss/vss_common.c ++++ b/libs/vss/vss_common.c +@@ -744,7 +744,7 @@ _closeDevice(VideoDevice * vd) + //if (vd->mode_num){ + VS_IOCTL(fd, FBIOPUT_VSCREENINFO, done, &vd->fbvar); + //} +- VS_IOCTL(fd, FBIOBLANK, done, FB_BLANK_POWERDOWN); ++// VS_IOCTL(fd, FBIOBLANK, done, FB_BLANK_POWERDOWN); + close(fd); + gFBDescs[vd->fbidx].fb_fd = 0; + + diff --git a/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/gst-fsl-plugin_2.0.3.bbappend b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/gst-fsl-plugin_2.0.3.bbappend new file mode 100644 index 000000000..9c94f43ba --- /dev/null +++ b/meta-digi-del/recipes-multimedia/gst-fsl-plugin_2.0.3/gst-fsl-plugin_2.0.3.bbappend @@ -0,0 +1,16 @@ +FILESEXTRAPATHS_prepend_del := "${THISDIR}/files" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0001-ltmain.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0002-gplay_fullscreen.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0003-add-fb-dev.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0004-mfw_v4lsrc_uyvy.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0005-mfw_v4lsec_def_sizes.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0006-mfw_v4lsrc_create_segfault.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0007-gplay_rotate.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0008-mfw_isink-set-defaults-if-no-vssconfig-found.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0009-mfw_isink-clear-framebuffer-of-spurious-content.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0010-mfw_v4lsink-Do-not-ignore-cropping-dimensions.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0011-gplay_next_file.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0012-gplay_repeat.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0013-Only-call-MXCFB_SET_OVERLAY_POS-with-overlay-framebuffer.patch" +SRC_URI_append_del += "file://gst-fsl-plugin-2.0.3-0014-Do-not-blank-the-display-on-device-close.patch" +PR_append_del = "+${DISTRO}.0"