Openembedded Core Discussions
 help / color / mirror / Atom feed
* Re: [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue
  2015-07-28 17:58 ` [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue Yuqing Zhu
@ 2015-07-28 13:09   ` Carlos Rafael Giani
  2015-07-28 13:20     ` Otavio Salvador
  0 siblings, 1 reply; 12+ messages in thread
From: Carlos Rafael Giani @ 2015-07-28 13:09 UTC (permalink / raw)
  To: Yuqing Zhu, openembedded-core

Change Upstream-Status to Accepted, since it is marked as fixed in bugzilla.

On 07/28/2015 07:58 PM, Yuqing Zhu wrote:
> Use g_utf16_to_utf8() instead of g_convert to fix the issue that
> id3 tags utf16 charaters cannot be extreacted in id3demux when try
> to get the id3v2 tag such as TIT2, TALB etc.
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
> ---
>   .../fix-id3demux-utf16-to-utf8-issue.patch         | 54 ++++++++++++++++++++++
>   .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
>   2 files changed, 55 insertions(+)
>   create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
>
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
> new file mode 100755
> index 0000000..a74c197
> --- /dev/null
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
> @@ -0,0 +1,54 @@
> +Author: Lyon Wang <b12696@freescale.com>
> +Date:   Thu Oct 9 17:37:43 2014 +0800
> +
> +[id3v2frames] Bug fix for id3demux issue
> +
> +Fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux
> +when I tried to get the id3v2 tag such as TIT2, TALB etc. it will return extrac
> +failed.
> +
> +Checked in id3v2frame.c,  When parse the UTF-16 streams, it used g_convert() to
> +convert the buffer from UTF-16 to UTF-8, however it will return err that this
> +conversion is not supported which cause the extraction failed with these UTF-16
> +characters.
> +
> +In the patch, use g_utf16_to_utf8() instead of g_convert, which can convert the
> +character format successfully.
> +
> +https://bugzilla.gnome.org/show_bug.cgi?id=741144
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Lyon Wang <b12696@freescale.com>
> +
> +diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c
> +old mode 100644
> +new mode 100755
> +index 3785c2a..7b9d8ac
> +--- a/gst-libs/gst/tag/id3v2frames.c
> ++++ b/gst-libs/gst/tag/id3v2frames.c
> +@@ -1057,14 +1057,17 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size,
> +         data_size -= 2;
> +       }
> +
> +-      field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
> +-
> +-      if (field == NULL || g_utf8_validate (field, -1, NULL) == FALSE) {
> +-        /* As a fallback, try interpreting UTF-16 in the other endianness */
> +-        if (in_encode == utf16beenc)
> +-          field = g_convert (data, data_size, "UTF-8", utf16leenc,
> +-              NULL, NULL, NULL);
> ++      if (in_encode == utf16beenc) {
> ++           gunichar2 *data_utf16;
> ++           guint i;
> ++           data_utf16 =  (gunichar2 *) data;
> ++          for (i=0; i<(data_size>>1); i++) {
> ++            data_utf16[i] = GUINT16_TO_LE (data_utf16[i]);
> ++          }
> +       }
> ++      //field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
> ++       field = g_utf16_to_utf8((gunichar2 *)data, (glong)(data_size>>1), NULL, NULL, NULL);
> ++
> +     }
> +
> +       break;
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> index 11cf8b4..aaa1ecb 100644
> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> @@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
>   SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
>               file://get-caps-from-src-pad-when-query-caps.patch \
>               file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
> +            file://fix-id3demux-utf16-to-utf8-issue.patch \
>   "
>   
>   SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error
  2015-07-28 17:58 ` [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error Yuqing Zhu
@ 2015-07-28 13:11   ` Carlos Rafael Giani
  2015-07-28 13:21     ` Otavio Salvador
  0 siblings, 1 reply; 12+ messages in thread
From: Carlos Rafael Giani @ 2015-07-28 13:11 UTC (permalink / raw)
  To: Yuqing Zhu, openembedded-core

Shouldn't the upstream status be "Submitted" instead of "Pending"? It is 
already in bugzilla.

On 07/28/2015 07:58 PM, Yuqing Zhu wrote:
> If there is input data and no output data to the end of the stream, it will
> send GST_ELEMENT_ERROR and quit from playing.
> The patch comments the GST_ELEMENT_ERROR() and add GST_ERROR_OBJECT()
> information instead.
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
> ---
>   .../handle-audio-video-decoder-error.patch         | 66 ++++++++++++++++++++++
>   .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
>   2 files changed, 67 insertions(+)
>   create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
>
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
> new file mode 100755
> index 0000000..eb15588
> --- /dev/null
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
> @@ -0,0 +1,66 @@
> +From bcb2b8b6f49e7c66124a4f5e07dea829d5ebfe59 Mon Sep 17 00:00:00 2001
> +From: Lyon Wang <lyon.wang@freescale.com>
> +Date: Mon, 15 Dec 2014 16:52:07 +0800
> +Subject: [PATCH] handle audio/video decoder error
> +
> +When there is input data and no output data to the end of the stream, it will
> +send GST_ELEMENT_ERROR, So the clips playing will quit.
> +However, if only one of the tracks is corrupt, there is no need to quit other
> +tracks playing.
> +
> +The patch comments the GST_ELEMENT_ERROR() and just add GST_ERROR_OBJECT()
> +information instead.
> +
> +https://bugzilla.gnome.org/show_bug.cgi?id=741542
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Lyon Wang <lyon.wang@freescale.com>
> +---
> + gst-libs/gst/audio/gstaudiodecoder.c |    5 +++--
> + gst-libs/gst/video/gstvideodecoder.c |    5 +++--
> + 2 files changed, 6 insertions(+), 4 deletions(-)
> + mode change 100644 => 100755 gst-libs/gst/audio/gstaudiodecoder.c
> + mode change 100644 => 100755 gst-libs/gst/video/gstvideodecoder.c
> +
> +diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c
> +old mode 100644
> +new mode 100755
> +index c2e7a28..891df0a
> +--- a/gst-libs/gst/audio/gstaudiodecoder.c
> ++++ b/gst-libs/gst/audio/gstaudiodecoder.c
> +@@ -2123,9 +2123,10 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event)
> +       GST_AUDIO_DECODER_STREAM_UNLOCK (dec);
> +
> +       if (dec->priv->ctx.had_input_data && !dec->priv->ctx.had_output_data) {
> +-        GST_ELEMENT_ERROR (dec, STREAM, DECODE,
> ++        /* GST_ELEMENT_ERROR (dec, STREAM, DECODE,
> +             ("No valid frames decoded before end of stream"),
> +-            ("no valid frames found"));
> ++            ("no valid frames found")); */
> ++        GST_ERROR_OBJECT(dec, "No valid frames decoded before end of stream");
> +       }
> +
> +       /* send taglist if no valid frame is decoded util EOS */
> +diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
> +old mode 100644
> +new mode 100755
> +index ac581e1..4278bcd
> +--- a/gst-libs/gst/video/gstvideodecoder.c
> ++++ b/gst-libs/gst/video/gstvideodecoder.c
> +@@ -1068,9 +1068,10 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder,
> +
> +       /* Error out even if EOS was ok when we had input, but no output */
> +       if (ret && priv->had_input_data && !priv->had_output_data) {
> +-        GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
> ++        /* GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
> +             ("No valid frames decoded before end of stream"),
> +-            ("no valid frames found"));
> ++            ("no valid frames found")); */
> ++        GST_ERROR_OBJECT(decoder, "No valid frames decoded before end of stream");
> +       }
> +
> +       /* Forward EOS immediately. This is required because no
> +--
> +1.7.9.5
> +
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> index aaa1ecb..aa90179 100644
> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> @@ -9,6 +9,7 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
>               file://get-caps-from-src-pad-when-query-caps.patch \
>               file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
>               file://fix-id3demux-utf16-to-utf8-issue.patch \
> +            file://handle-audio-video-decoder-error.patch \
>   "
>   
>   SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [poky v3][PATCH 3/6] gstreamer1.0-plugins-base: update video alignment after video alignment
  2015-07-28 17:58 ` [poky v3][PATCH 3/6] gstreamer1.0-plugins-base: update video alignment after video alignment Yuqing Zhu
@ 2015-07-28 13:12   ` Carlos Rafael Giani
  0 siblings, 0 replies; 12+ messages in thread
From: Carlos Rafael Giani @ 2015-07-28 13:12 UTC (permalink / raw)
  To: Yuqing Zhu, openembedded-core

"Backport [1.4.1]" is probably wrong. Admittedly, the bugzilla entry is 
somewhat confusing, but I think it should be using the version 1.5.1 
instead.

On 07/28/2015 07:58 PM, Yuqing Zhu wrote:
> Video buffer pool will update video alignment to respect stride alignment
> requirement. But haven't update it to video alignment in configure.
> Which will cause user get wrong video alignment.
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
> ---
>   .../videobuffer_updata_alignment_update.patch      | 53 ++++++++++++++++++++++
>   .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
>   2 files changed, 54 insertions(+)
>   create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
>
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
> new file mode 100755
> index 0000000..ae37685
> --- /dev/null
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
> @@ -0,0 +1,53 @@
> +commit 88d253ea23b06289df40401160b606323f16c910
> +Author: Song Bing <b06498@freescale.com>
> +Date:   Mon Dec 15 09:34:35 2014 +0800
> +
> +videopool: update video alignment after video alignment
> +
> +Video buffer pool will update video alignment to respect stride alignment
> +requirement. But haven't update it to video alignment in configure.
> +Which will cause user get wrong video alignment.
> +
> +https://bugzilla.gnome.org/show_bug.cgi?id=741501
> +
> +Upstream-Status: Backport [1.4.1]
> +
> +Signed-off-by: Song Bing <b06498@freescale.com>
> +diff --git a/gst-libs/gst/video/gstvideopool.c b/gst-libs/gst/video/gstvideopool.c
> +index 4475f45..acef594 100644
> +--- a/gst-libs/gst/video/gstvideopool.c
> ++++ b/gst-libs/gst/video/gstvideopool.c
> +@@ -167,6 +167,7 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
> +     /* get an apply the alignment to the info */
> +     gst_buffer_pool_config_get_video_alignment (config, &priv->video_align);
> +     gst_video_info_align (&info, &priv->video_align);
> ++    gst_buffer_pool_config_set_video_alignment (config, &priv->video_align);
> +   }
> +   priv->info = info;
> +
> +diff --git a/sys/ximage/ximagepool.c b/sys/ximage/ximagepool.c
> +index 6cc2cfa..6a1cbc9 100644
> +--- a/sys/ximage/ximagepool.c
> ++++ b/sys/ximage/ximagepool.c
> +@@ -597,6 +597,8 @@ ximage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
> +     /* do padding and alignment */
> +     gst_video_info_align (&info, &priv->align);
> +
> ++    gst_buffer_pool_config_set_video_alignment (config, &priv->align);
> ++
> +     /* we need the video metadata too now */
> +     priv->add_metavideo = TRUE;
> +   } else {
> +diff --git a/sys/xvimage/xvimagepool.c b/sys/xvimage/xvimagepool.c
> +index 244a51a..34b1ab2 100644
> +--- a/sys/xvimage/xvimagepool.c
> ++++ b/sys/xvimage/xvimagepool.c
> +@@ -124,6 +124,8 @@ xvimage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
> +     /* do padding and alignment */
> +     gst_video_info_align (&info, &priv->align);
> +
> ++    gst_buffer_pool_config_set_video_alignment (config, &priv->align);
> ++
> +     /* we need the video metadata too now */
> +     priv->add_metavideo = TRUE;
> +   } else {
> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> index aa90179..88c3254 100644
> --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
> @@ -10,6 +10,7 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
>               file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
>               file://fix-id3demux-utf16-to-utf8-issue.patch \
>               file://handle-audio-video-decoder-error.patch \
> +            file://videobuffer_updata_alignment_update.patch \
>   "
>   
>   SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue
  2015-07-28 13:09   ` Carlos Rafael Giani
@ 2015-07-28 13:20     ` Otavio Salvador
  0 siblings, 0 replies; 12+ messages in thread
From: Otavio Salvador @ 2015-07-28 13:20 UTC (permalink / raw)
  To: Carlos Rafael Giani; +Cc: Patches and discussions about the oe-core layer

On Tue, Jul 28, 2015 at 10:09 AM, Carlos Rafael Giani
<dv@pseudoterminal.org> wrote:
> Change Upstream-Status to Accepted, since it is marked as fixed in bugzilla.

Backport and please add the version it has been included to ease upgrade.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error
  2015-07-28 13:11   ` Carlos Rafael Giani
@ 2015-07-28 13:21     ` Otavio Salvador
  0 siblings, 0 replies; 12+ messages in thread
From: Otavio Salvador @ 2015-07-28 13:21 UTC (permalink / raw)
  To: Carlos Rafael Giani; +Cc: Patches and discussions about the oe-core layer

On Tue, Jul 28, 2015 at 10:11 AM, Carlos Rafael Giani
<dv@pseudoterminal.org> wrote:
> Shouldn't the upstream status be "Submitted" instead of "Pending"? It is
> already in bugzilla.

Agreed. Submitted [https://...]

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base
@ 2015-07-28 17:58 Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue Yuqing Zhu
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

Fix id3demux issue

Handle audio/video decoder error

Update video alignment after video alignment

Add GST_VIDEO_FRAME_MAP_FLAG_NO_REF, keeping buffer writable

Gstvideofilter use new GST_VIDEO_FRAME_MAP_FLAG_NO_REF

Don't ref buffers twice when mapping

Keep sticky events around when doing a soft reset

Yuqing Zhu (6):
  gstreamer1.0-plugins-base: Bug fix for id3demux issue
  gstreamer1.0-plugins-base: handle audio/video decoder error
  gstreamer1.0-plugins-base: update video alignment after video
    alignment
  gstreamer1.0-plugins-base: Add video-frame related patch
  gstreamer1.0-plugins-base: Add videofilter related patch
  gstreamer1.0-plugins-base: Add videoencoder related patch

 ...rame-Don-t-ref-buffers-twice-when-mapping.patch | 26 +++++++
 ...frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch | 87 ++++++++++++++++++++++
 ...r-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch | 69 +++++++++++++++++
 .../fix-id3demux-utf16-to-utf8-issue.patch         | 54 ++++++++++++++
 .../handle-audio-video-decoder-error.patch         | 66 ++++++++++++++++
 .../videobuffer_updata_alignment_update.patch      | 53 +++++++++++++
 ...p-sticky-events-around-when-doing-a-soft-.patch | 46 ++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  7 ++
 8 files changed, 408 insertions(+)
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
 create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
 create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
 create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch

-- 
1.9.1



^ permalink raw reply	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue
  2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
@ 2015-07-28 17:58 ` Yuqing Zhu
  2015-07-28 13:09   ` Carlos Rafael Giani
  2015-07-28 17:58 ` [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error Yuqing Zhu
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

Use g_utf16_to_utf8() instead of g_convert to fix the issue that
id3 tags utf16 charaters cannot be extreacted in id3demux when try
to get the id3v2 tag such as TIT2, TALB etc.

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
 .../fix-id3demux-utf16-to-utf8-issue.patch         | 54 ++++++++++++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
 2 files changed, 55 insertions(+)
 create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
new file mode 100755
index 0000000..a74c197
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
@@ -0,0 +1,54 @@
+Author: Lyon Wang <b12696@freescale.com>
+Date:   Thu Oct 9 17:37:43 2014 +0800
+
+[id3v2frames] Bug fix for id3demux issue
+
+Fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux
+when I tried to get the id3v2 tag such as TIT2, TALB etc. it will return extrac
+failed.
+
+Checked in id3v2frame.c,  When parse the UTF-16 streams, it used g_convert() to
+convert the buffer from UTF-16 to UTF-8, however it will return err that this
+conversion is not supported which cause the extraction failed with these UTF-16
+characters.
+
+In the patch, use g_utf16_to_utf8() instead of g_convert, which can convert the
+character format successfully.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=741144
+
+Upstream-Status: Pending
+
+Signed-off-by: Lyon Wang <b12696@freescale.com>
+
+diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c
+old mode 100644
+new mode 100755
+index 3785c2a..7b9d8ac
+--- a/gst-libs/gst/tag/id3v2frames.c
++++ b/gst-libs/gst/tag/id3v2frames.c
+@@ -1057,14 +1057,17 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size,
+         data_size -= 2;
+       }
+ 
+-      field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
+-
+-      if (field == NULL || g_utf8_validate (field, -1, NULL) == FALSE) {
+-        /* As a fallback, try interpreting UTF-16 in the other endianness */
+-        if (in_encode == utf16beenc)
+-          field = g_convert (data, data_size, "UTF-8", utf16leenc,
+-              NULL, NULL, NULL);
++      if (in_encode == utf16beenc) {
++           gunichar2 *data_utf16;
++           guint i;
++           data_utf16 =  (gunichar2 *) data;
++          for (i=0; i<(data_size>>1); i++) {
++            data_utf16[i] = GUINT16_TO_LE (data_utf16[i]);
++          }
+       }
++      //field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
++       field = g_utf16_to_utf8((gunichar2 *)data, (glong)(data_size>>1), NULL, NULL, NULL);
++
+     }
+ 
+       break;
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
index 11cf8b4..aaa1ecb 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
@@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
 SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://get-caps-from-src-pad-when-query-caps.patch \
             file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
+            file://fix-id3demux-utf16-to-utf8-issue.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error
  2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue Yuqing Zhu
@ 2015-07-28 17:58 ` Yuqing Zhu
  2015-07-28 13:11   ` Carlos Rafael Giani
  2015-07-28 17:58 ` [poky v3][PATCH 3/6] gstreamer1.0-plugins-base: update video alignment after video alignment Yuqing Zhu
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

If there is input data and no output data to the end of the stream, it will
send GST_ELEMENT_ERROR and quit from playing.
The patch comments the GST_ELEMENT_ERROR() and add GST_ERROR_OBJECT()
information instead.

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
 .../handle-audio-video-decoder-error.patch         | 66 ++++++++++++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
 2 files changed, 67 insertions(+)
 create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
new file mode 100755
index 0000000..eb15588
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
@@ -0,0 +1,66 @@
+From bcb2b8b6f49e7c66124a4f5e07dea829d5ebfe59 Mon Sep 17 00:00:00 2001
+From: Lyon Wang <lyon.wang@freescale.com>
+Date: Mon, 15 Dec 2014 16:52:07 +0800
+Subject: [PATCH] handle audio/video decoder error
+
+When there is input data and no output data to the end of the stream, it will
+send GST_ELEMENT_ERROR, So the clips playing will quit.
+However, if only one of the tracks is corrupt, there is no need to quit other
+tracks playing.
+
+The patch comments the GST_ELEMENT_ERROR() and just add GST_ERROR_OBJECT()
+information instead.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=741542
+
+Upstream-Status: Pending
+
+Signed-off-by: Lyon Wang <lyon.wang@freescale.com>
+---
+ gst-libs/gst/audio/gstaudiodecoder.c |    5 +++--
+ gst-libs/gst/video/gstvideodecoder.c |    5 +++--
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+ mode change 100644 => 100755 gst-libs/gst/audio/gstaudiodecoder.c
+ mode change 100644 => 100755 gst-libs/gst/video/gstvideodecoder.c
+
+diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c
+old mode 100644
+new mode 100755
+index c2e7a28..891df0a
+--- a/gst-libs/gst/audio/gstaudiodecoder.c
++++ b/gst-libs/gst/audio/gstaudiodecoder.c
+@@ -2123,9 +2123,10 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event)
+       GST_AUDIO_DECODER_STREAM_UNLOCK (dec);
+ 
+       if (dec->priv->ctx.had_input_data && !dec->priv->ctx.had_output_data) {
+-        GST_ELEMENT_ERROR (dec, STREAM, DECODE,
++        /* GST_ELEMENT_ERROR (dec, STREAM, DECODE,
+             ("No valid frames decoded before end of stream"),
+-            ("no valid frames found"));
++            ("no valid frames found")); */
++        GST_ERROR_OBJECT(dec, "No valid frames decoded before end of stream");
+       }
+ 
+       /* send taglist if no valid frame is decoded util EOS */
+diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
+old mode 100644
+new mode 100755
+index ac581e1..4278bcd
+--- a/gst-libs/gst/video/gstvideodecoder.c
++++ b/gst-libs/gst/video/gstvideodecoder.c
+@@ -1068,9 +1068,10 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder,
+ 
+       /* Error out even if EOS was ok when we had input, but no output */
+       if (ret && priv->had_input_data && !priv->had_output_data) {
+-        GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
++        /* GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
+             ("No valid frames decoded before end of stream"),
+-            ("no valid frames found"));
++            ("no valid frames found")); */
++        GST_ERROR_OBJECT(decoder, "No valid frames decoded before end of stream");
+       }
+ 
+       /* Forward EOS immediately. This is required because no
+-- 
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
index aaa1ecb..aa90179 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
@@ -9,6 +9,7 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://get-caps-from-src-pad-when-query-caps.patch \
             file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
             file://fix-id3demux-utf16-to-utf8-issue.patch \
+            file://handle-audio-video-decoder-error.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 3/6] gstreamer1.0-plugins-base: update video alignment after video alignment
  2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error Yuqing Zhu
@ 2015-07-28 17:58 ` Yuqing Zhu
  2015-07-28 13:12   ` Carlos Rafael Giani
  2015-07-28 17:58 ` [poky v3][PATCH 4/6] gstreamer1.0-plugins-base: Add video-frame related patch Yuqing Zhu
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

Video buffer pool will update video alignment to respect stride alignment
requirement. But haven't update it to video alignment in configure.
Which will cause user get wrong video alignment.

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
 .../videobuffer_updata_alignment_update.patch      | 53 ++++++++++++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
 2 files changed, 54 insertions(+)
 create mode 100755 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
new file mode 100755
index 0000000..ae37685
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
@@ -0,0 +1,53 @@
+commit 88d253ea23b06289df40401160b606323f16c910
+Author: Song Bing <b06498@freescale.com>
+Date:   Mon Dec 15 09:34:35 2014 +0800
+
+videopool: update video alignment after video alignment
+
+Video buffer pool will update video alignment to respect stride alignment
+requirement. But haven't update it to video alignment in configure.
+Which will cause user get wrong video alignment.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=741501
+
+Upstream-Status: Backport [1.4.1]
+
+Signed-off-by: Song Bing <b06498@freescale.com>
+diff --git a/gst-libs/gst/video/gstvideopool.c b/gst-libs/gst/video/gstvideopool.c
+index 4475f45..acef594 100644
+--- a/gst-libs/gst/video/gstvideopool.c
++++ b/gst-libs/gst/video/gstvideopool.c
+@@ -167,6 +167,7 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
+     /* get an apply the alignment to the info */
+     gst_buffer_pool_config_get_video_alignment (config, &priv->video_align);
+     gst_video_info_align (&info, &priv->video_align);
++    gst_buffer_pool_config_set_video_alignment (config, &priv->video_align);
+   }
+   priv->info = info;
+
+diff --git a/sys/ximage/ximagepool.c b/sys/ximage/ximagepool.c
+index 6cc2cfa..6a1cbc9 100644
+--- a/sys/ximage/ximagepool.c
++++ b/sys/ximage/ximagepool.c
+@@ -597,6 +597,8 @@ ximage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
+     /* do padding and alignment */
+     gst_video_info_align (&info, &priv->align);
+
++    gst_buffer_pool_config_set_video_alignment (config, &priv->align);
++
+     /* we need the video metadata too now */
+     priv->add_metavideo = TRUE;
+   } else {
+diff --git a/sys/xvimage/xvimagepool.c b/sys/xvimage/xvimagepool.c
+index 244a51a..34b1ab2 100644
+--- a/sys/xvimage/xvimagepool.c
++++ b/sys/xvimage/xvimagepool.c
+@@ -124,6 +124,8 @@ xvimage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
+     /* do padding and alignment */
+     gst_video_info_align (&info, &priv->align);
+
++    gst_buffer_pool_config_set_video_alignment (config, &priv->align);
++
+     /* we need the video metadata too now */
+     priv->add_metavideo = TRUE;
+   } else {
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
index aa90179..88c3254 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
@@ -10,6 +10,7 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
             file://fix-id3demux-utf16-to-utf8-issue.patch \
             file://handle-audio-video-decoder-error.patch \
+            file://videobuffer_updata_alignment_update.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 4/6] gstreamer1.0-plugins-base: Add video-frame related patch
  2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
                   ` (2 preceding siblings ...)
  2015-07-28 17:58 ` [poky v3][PATCH 3/6] gstreamer1.0-plugins-base: update video alignment after video alignment Yuqing Zhu
@ 2015-07-28 17:58 ` Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 5/6] gstreamer1.0-plugins-base: Add videofilter " Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 6/6] gstreamer1.0-plugins-base: Add videoencoder " Yuqing Zhu
  5 siblings, 0 replies; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

-Add GST_VIDEO_FRAME_MAP_FLAG_NO_REF
 This makes sure that the buffer is not reffed another time when
 storing it in the GstVideoFrame, keeping it writable if it was writable.

-Don't ref buffers twice when mapping

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
 ...rame-Don-t-ref-buffers-twice-when-mapping.patch | 26 +++++++
 ...frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch | 87 ++++++++++++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  2 +
 3 files changed, 115 insertions(+)
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch
new file mode 100644
index 0000000..3db4724
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch
@@ -0,0 +1,26 @@
+From 269f642c45d85cfd630ed490478e6bd6b71a767f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Tue, 16 Sep 2014 01:07:18 +0300
+Subject: [PATCH] video-frame: Don't ref buffers twice when mapping
+
+Upstream-Status: Backport [1.5.1]
+---
+ gst-libs/gst/video/video-frame.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c
+index 01f23c0..8a9ae96 100644
+--- a/gst-libs/gst/video/video-frame.c
++++ b/gst-libs/gst/video/video-frame.c
+@@ -105,7 +105,7 @@ gst_video_frame_map_id (GstVideoFrame * frame, GstVideoInfo * info,
+       frame->data[i] = frame->map[0].data + info->offset[i];
+     }
+   }
+-  frame->buffer = gst_buffer_ref (buffer);
++  frame->buffer = buffer;
+   if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0)
+     gst_buffer_ref (frame->buffer);
+ 
+-- 
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
new file mode 100644
index 0000000..f24b33f
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
@@ -0,0 +1,87 @@
+From 40a293d44d1aeccf5eb8e86f23a0b13666111c5c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Fri, 12 Sep 2014 14:39:16 +0300
+Subject: [PATCH 2/3] video-frame: Add GST_VIDEO_FRAME_MAP_FLAG_NO_REF
+
+This makes sure that the buffer is not reffed another time when
+storing it in the GstVideoFrame, keeping it writable if it was
+writable.
+
+Upstream-Status: Accepted
+https://bugzilla.gnome.org/show_bug.cgi?id=736118
+---
+ gst-libs/gst/video/video-frame.c |    9 ++++++++-
+ gst-libs/gst/video/video-frame.h |   18 ++++++++++++++++++
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+
+diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c
+index 537cf70..01f23c0 100644
+--- a/gst-libs/gst/video/video-frame.c
++++ b/gst-libs/gst/video/video-frame.c
+@@ -106,6 +106,9 @@ gst_video_frame_map_id (GstVideoFrame * frame, GstVideoInfo * info,
+     }
+   }
+   frame->buffer = gst_buffer_ref (buffer);
++  if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0)
++    gst_buffer_ref (frame->buffer);
++
+   frame->meta = meta;
+ 
+   /* buffer flags enhance the frame flags */
+@@ -189,11 +192,13 @@ gst_video_frame_unmap (GstVideoFrame * frame)
+   GstBuffer *buffer;
+   GstVideoMeta *meta;
+   gint i;
++  GstMapFlags flags;
+ 
+   g_return_if_fail (frame != NULL);
+ 
+   buffer = frame->buffer;
+   meta = frame->meta;
++  flags = frame->map[0].flags;
+ 
+   if (meta) {
+     for (i = 0; i < frame->info.finfo->n_planes; i++) {
+@@ -202,7 +207,9 @@ gst_video_frame_unmap (GstVideoFrame * frame)
+   } else {
+     gst_buffer_unmap (buffer, &frame->map[0]);
+   }
+-  gst_buffer_unref (buffer);
++
++  if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0)
++    gst_buffer_unref (frame->buffer);
+ }
+ 
+ /**
+diff --git a/gst-libs/gst/video/video-frame.h b/gst-libs/gst/video/video-frame.h
+index 627fab0..f8e6304 100644
+--- a/gst-libs/gst/video/video-frame.h
++++ b/gst-libs/gst/video/video-frame.h
+@@ -149,6 +149,24 @@ typedef enum {
+   GST_VIDEO_BUFFER_FLAG_LAST        = (GST_BUFFER_FLAG_LAST << 8)
+ } GstVideoBufferFlags;
+ 
++/**
++ * GstVideoBufferFlags:
++ * @GST_VIDEO_FRAME_MAP_FLAG_NO_REF:  Don't take another reference of the buffer and store it in
++ *                                    the GstVideoFrame. This makes sure that the buffer stays
++ *                                    writable while the frame is mapped, but requires that the
++ *                                    buffer reference stays valid until the frame is unmapped again.
++ * @GST_VIDEO_FRAME_MAP_FLAG_LAST:    Offset to define more flags
++ *
++ * Additional mapping flags for gst_video_frame_map().
++ *
++ * Since: 1.6
++ */
++typedef enum {
++  GST_VIDEO_FRAME_MAP_FLAG_NO_REF   = (GST_MAP_FLAG_LAST << 0),
++  GST_VIDEO_FRAME_MAP_FLAG_LAST     = (GST_MAP_FLAG_LAST << 8)
++  /* 8 more flags possible afterwards */
++} GstVideoFrameMapFlags;
++
+ G_END_DECLS
+ 
+ #endif /* __GST_VIDEO_FRAME_H__ */
+-- 
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
index 88c3254..491bf0d 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
@@ -11,6 +11,8 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://fix-id3demux-utf16-to-utf8-issue.patch \
             file://handle-audio-video-decoder-error.patch \
             file://videobuffer_updata_alignment_update.patch \
+            file://0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \
+            file://0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 5/6] gstreamer1.0-plugins-base: Add videofilter related patch
  2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
                   ` (3 preceding siblings ...)
  2015-07-28 17:58 ` [poky v3][PATCH 4/6] gstreamer1.0-plugins-base: Add video-frame related patch Yuqing Zhu
@ 2015-07-28 17:58 ` Yuqing Zhu
  2015-07-28 17:58 ` [poky v3][PATCH 6/6] gstreamer1.0-plugins-base: Add videoencoder " Yuqing Zhu
  5 siblings, 0 replies; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

Use new GST_VIDEO_FRAME_MAP_FLAG_NO_REF

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
 ...r-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch | 69 ++++++++++++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
 2 files changed, 70 insertions(+)
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
new file mode 100644
index 0000000..afe9131
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
@@ -0,0 +1,69 @@
+From 3a7cdcdfc9c5b0d20394fe51b3b8cda23931ca6d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Fri, 12 Sep 2014 14:41:01 +0300
+Subject: [PATCH 3/3] videofilter: Use new GST_VIDEO_FRAME_MAP_FLAG_NO_REF
+
+Upstream-Status: Accepted
+https://bugzilla.gnome.org/show_bug.cgi?id=736118
+---
+ gst-libs/gst/video/gstvideofilter.c |   23 ++++-------------------
+ 1 file changed, 4 insertions(+), 19 deletions(-)
+
+diff --git a/gst-libs/gst/video/gstvideofilter.c b/gst-libs/gst/video/gstvideofilter.c
+index e1fa2c1..874b2e8 100644
+--- a/gst-libs/gst/video/gstvideofilter.c
++++ b/gst-libs/gst/video/gstvideofilter.c
+@@ -260,23 +260,15 @@ gst_video_filter_transform (GstBaseTransform * trans, GstBuffer * inbuf,
+   if (fclass->transform_frame) {
+     GstVideoFrame in_frame, out_frame;
+ 
+-    if (!gst_video_frame_map (&in_frame, &filter->in_info, inbuf, GST_MAP_READ))
++    if (!gst_video_frame_map (&in_frame, &filter->in_info, inbuf,
++            GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF))
+       goto invalid_buffer;
+ 
+     if (!gst_video_frame_map (&out_frame, &filter->out_info, outbuf,
+-            GST_MAP_WRITE))
++            GST_MAP_WRITE | GST_VIDEO_FRAME_MAP_FLAG_NO_REF))
+       goto invalid_buffer;
+ 
+-    /* GstVideoFrame has another reference, so the buffer looks unwriteable,
+-     * meaning that we can't attach any metas or anything to it. Other
+-     * map() functions like gst_buffer_map() don't get another reference
+-     * of the buffer and expect the buffer reference to be kept until
+-     * the buffer is unmapped again. */
+-    gst_buffer_unref (inbuf);
+-    gst_buffer_unref (outbuf);
+     res = fclass->transform_frame (filter, &in_frame, &out_frame);
+-    gst_buffer_ref (inbuf);
+-    gst_buffer_ref (outbuf);
+ 
+     gst_video_frame_unmap (&out_frame);
+     gst_video_frame_unmap (&in_frame);
+@@ -317,7 +309,7 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
+     GstVideoFrame frame;
+     GstMapFlags flags;
+ 
+-    flags = GST_MAP_READ;
++    flags = GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF;
+ 
+     if (!gst_base_transform_is_passthrough (trans))
+       flags |= GST_MAP_WRITE;
+@@ -325,14 +317,7 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
+     if (!gst_video_frame_map (&frame, &filter->in_info, buf, flags))
+       goto invalid_buffer;
+ 
+-    /* GstVideoFrame has another reference, so the buffer looks unwriteable,
+-     * meaning that we can't attach any metas or anything to it. Other
+-     * map() functions like gst_buffer_map() don't get another reference
+-     * of the buffer and expect the buffer reference to be kept until
+-     * the buffer is unmapped again. */
+-    gst_buffer_unref (buf);
+     res = fclass->transform_frame_ip (filter, &frame);
+-    gst_buffer_ref (buf);
+ 
+     gst_video_frame_unmap (&frame);
+   } else {
+-- 
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
index 491bf0d..9c31391 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
@@ -13,6 +13,7 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://videobuffer_updata_alignment_update.patch \
             file://0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \
             file://0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch \
+            file://0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [poky v3][PATCH 6/6] gstreamer1.0-plugins-base: Add videoencoder related patch
  2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
                   ` (4 preceding siblings ...)
  2015-07-28 17:58 ` [poky v3][PATCH 5/6] gstreamer1.0-plugins-base: Add videofilter " Yuqing Zhu
@ 2015-07-28 17:58 ` Yuqing Zhu
  5 siblings, 0 replies; 12+ messages in thread
From: Yuqing Zhu @ 2015-07-28 17:58 UTC (permalink / raw)
  To: openembedded-core

Keep sticky events around when doing a soft reset.
The current code will first discard all frames, and then tries to copy
all sticky events from the (now discarded) frames. So change the order.

Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
 ...p-sticky-events-around-when-doing-a-soft-.patch | 46 ++++++++++++++++++++++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |  1 +
 2 files changed, 47 insertions(+)
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch
new file mode 100644
index 0000000..b476969
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch
@@ -0,0 +1,46 @@
+From c3f7d36b992a3cbcee3386dea85720f3cb04e1ff Mon Sep 17 00:00:00 2001
+From: Song Bing <b06498@freescale.com>
+Date: Fri, 27 Mar 2015 13:39:43 +0800
+Subject: [PATCH] videoencoder: Keep sticky events around when doing a soft
+ reset
+
+The current code will first discard all frames, and then tries to copy
+all sticky events from the (now discarded) frames. Let's change the order.
+
+Upstream-Status: Accepted 
+https://bugzilla.gnome.org/show_bug.cgi?id=746865
+---
+ gst-libs/gst/video/gstvideoencoder.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c
+index 614ba2d..4c5b111 100644
+--- a/gst-libs/gst/video/gstvideoencoder.c
++++ b/gst-libs/gst/video/gstvideoencoder.c
+@@ -340,10 +340,6 @@ gst_video_encoder_reset (GstVideoEncoder * encoder, gboolean hard)
+ 
+   priv->drained = TRUE;
+ 
+-  g_list_foreach (priv->frames, (GFunc) gst_video_codec_frame_unref, NULL);
+-  g_list_free (priv->frames);
+-  priv->frames = NULL;
+-
+   priv->bytes = 0;
+   priv->time = 0;
+ 
+@@ -392,6 +388,10 @@ gst_video_encoder_reset (GstVideoEncoder * encoder, gboolean hard)
+         encoder->priv->current_frame_events);
+   }
+ 
++  g_list_foreach (priv->frames, (GFunc) gst_video_codec_frame_unref, NULL);
++  g_list_free (priv->frames);
++  priv->frames = NULL;
++
+   GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
+ 
+   return ret;
+-- 
+1.7.9.5
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
index 9c31391..8daf5af 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb
@@ -14,6 +14,7 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \
             file://0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch \
             file://0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \
+            file://videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-07-28 13:21 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-28 17:58 [poky v3][PATCH 0/6] gstreamer1.0-plugins-base: Add patches for Gstreamer 1.4.5 base Yuqing Zhu
2015-07-28 17:58 ` [poky v3][PATCH 1/6] gstreamer1.0-plugins-base: Bug fix for id3demux issue Yuqing Zhu
2015-07-28 13:09   ` Carlos Rafael Giani
2015-07-28 13:20     ` Otavio Salvador
2015-07-28 17:58 ` [poky v3][PATCH 2/6] gstreamer1.0-plugins-base: handle audio/video decoder error Yuqing Zhu
2015-07-28 13:11   ` Carlos Rafael Giani
2015-07-28 13:21     ` Otavio Salvador
2015-07-28 17:58 ` [poky v3][PATCH 3/6] gstreamer1.0-plugins-base: update video alignment after video alignment Yuqing Zhu
2015-07-28 13:12   ` Carlos Rafael Giani
2015-07-28 17:58 ` [poky v3][PATCH 4/6] gstreamer1.0-plugins-base: Add video-frame related patch Yuqing Zhu
2015-07-28 17:58 ` [poky v3][PATCH 5/6] gstreamer1.0-plugins-base: Add videofilter " Yuqing Zhu
2015-07-28 17:58 ` [poky v3][PATCH 6/6] gstreamer1.0-plugins-base: Add videoencoder " Yuqing Zhu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox