GstMemory replacement orphaning externally supplied buffers wrapped in GstMemory objects

Robert Krakora rob.krakora at messagenetsystems.com
Mon Aug 12 06:09:13 PDT 2013


Hello,

I have found that the UVC driver allocated buffers previously wrapped in a
GstMemory object by v4l2src and appended to a GstBuffer can get orphaned
via memory replacement in gst_buffer_resize() called in v4l2src (have logs
to back this up) and gst_buffer_map_range() which is called by
gst_buffer_map() which is in turn called from uvch264src.  There has to be
a way to wrap the driver allocated buffers in a GstMemory object without
the possibility of them being orphaned.  GstMemory has no knowledge of
externally supplied buffers that I can see.  It has a function to wrap them
though.  Should there not be a flag resident in the object that denotes it
as wrapped or not and if wrapped not to attempt memory replacement?

Best Regards,

Rob Krakora

/**
 * gst_buffer_map_range:
 * @buffer: a #GstBuffer.
 * @idx: an index
 * @length: a length
 * @info: (out): info about the mapping
 * @flags: flags for the mapping
 *
 * This function fills @info with the #GstMapInfo of @length merged memory
blocks
 * starting at @idx in @buffer. When @length is -1, all memory blocks
starting
 * from @idx are merged and mapped.
 *
 * @flags describe the desired access of the memory. When @flags is
 * #GST_MAP_WRITE, @buffer should be writable (as returned from
 * gst_buffer_is_writable()).
 *
 * When @buffer is writable but the memory isn't, a writable copy will
 * automatically be created and returned. The readonly copy of the buffer
memory
 * will then also be replaced with this writable copy.
 *
 * The memory in @info should be unmapped with gst_buffer_unmap() after
usage.
 *
 * Returns: %TRUE if the map succeeded and @info contains valid
 * data.
 */
gboolean
gst_buffer_map_range (GstBuffer * buffer, guint idx, gint length,
    GstMapInfo * info, GstMapFlags flags)
{
  GstMemory *mem, *nmem;
  gboolean write, writable;
  gsize len;

  g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE);
  g_return_val_if_fail (info != NULL, FALSE);
  len = GST_BUFFER_MEM_LEN (buffer);
  g_return_val_if_fail ((len == 0 && idx == 0 && length == -1) ||
      (length == -1 && idx < len) || (length > 0
          && length + idx <= len), FALSE);

  GST_CAT_LOG (GST_CAT_BUFFER, "buffer %p, idx %u, length %d, flags %04x",
      buffer, idx, length, flags);

  write = (flags & GST_MAP_WRITE) != 0;
  writable = gst_buffer_is_writable (buffer);

  /* check if we can write when asked for write access */
  if (G_UNLIKELY (write && !writable))
    goto not_writable;

  if (length == -1)
    length = len - idx;

  GST_CAT_DEBUG (GST_CAT_BUFFER, "len %u, idx %u, length %d", len, idx,
length);

  mem = _get_merged_memory (buffer, idx, length);
  if (G_UNLIKELY (mem == NULL))
    goto no_memory;

  /* now try to map */
  nmem = gst_memory_make_mapped (mem, info, flags);
  if (G_UNLIKELY (nmem == NULL))
    goto cannot_map;

  /* if we merged or when the map returned a different memory, we try to
replace
   * the memory in the buffer */
  if (G_UNLIKELY (length > 1 || nmem != mem)) {
    /* if the buffer is writable, replace the memory */
    if (writable) {
      _replace_memory (buffer, len, idx, length, gst_memory_ref (nmem));
    } else {
      if (len > 1) {
        GST_CAT_DEBUG (GST_CAT_PERFORMANCE,
            "temporary mapping for memory %p in buffer %p", nmem, buffer);
      }
    }
  }
  return TRUE;

  /* ERROR */
not_writable:
  {
    GST_WARNING_OBJECT (buffer, "write map requested on non-writable
buffer");
    g_critical ("write map requested on non-writable buffer");
    return FALSE;
  }
no_memory:
  {
    /* empty buffer, we need to return NULL */
    GST_DEBUG_OBJECT (buffer, "can't get buffer memory");
    info->memory = NULL;
    info->data = NULL;
    info->size = 0;
    info->maxsize = 0;
    return TRUE;
  }
cannot_map:
  {
    GST_DEBUG_OBJECT (buffer, "cannot map memory");
    return FALSE;
  }
}


On Sat, Aug 10, 2013 at 10:24 PM, Robert Krakora <
rob.krakora at messagenetsystems.com> wrote:

> Hi Peter,
>
> I attached two patches which are "hacks" to this bug
> https://bugzilla.gnome.org/show_bug.cgi?id=699517, one for
> gst-plugins-good-1.1.3 and one for gst-plugins-bad-1.1.3.  This bug needs a
> proper fix though.
>
> Best Regards,
>
> Rob
>
>
>
> On Thu, Jul 11, 2013 at 11:55 AM, Robert Krakora <
> rob.krakora at messagenetsystems.com> wrote:
>
>> I filed a bug report for this a couple of months ago.  Myself and another
>> engineer struggled with this error for a few weeks.  This plugin works fine
>> on GStreamer 0.10.  I think that it has something to do with v4l2src on
>> GStreamer 1.x.  I know I saw  that there was an open issue that Wim and
>> others have been struggling to solve.  They may be related...
>>
>>
>> On Thu, Jul 11, 2013 at 11:51 AM, Peter Rennert <p.rennert at cs.ucl.ac.uk>wrote:
>>
>>> I just want to add that I get the same problem even with a very reduced
>>> pipeline of:
>>>
>>> gst-launch-1.0 uvch264src device=/dev/video1 name=src auto-start=true
>>> src.vfsrc ! queue ! fakesink src.vidsrc ! queue ! video/x-h264 ! fakesink
>>>
>>>
>>> ........
>>>
>>> (gst-launch-1.0:5463): GStreamer-WARNING **: gstpad.c:3692:gst_pad_chain_
>>> **data_unchecked:<fakesink1:**sink> Got data flow before segment event
>>>
>>> (gst-launch-1.0:5463): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>> **data:<capsfilter0:src> Got data flow before segment event
>>>
>>> (gst-launch-1.0:5463): GStreamer-WARNING **: gstpad.c:3692:gst_pad_chain_
>>> **data_unchecked:<fakesink1:**sink> Got data flow before segment event
>>> ERROR: from element /GstPipeline:pipeline0/**GstUvcH264Src:src/**
>>> GstUvcH264MjpgDemux:**uvch264mjpgdemux0: Not enough data to read marker
>>> content
>>> Additional debug info:
>>> gstuvch264_mjpgdemux.c(507): gst_uvc_h264_mjpg_demux_chain ():
>>> /GstPipeline:pipeline0/**GstUvcH264Src:src/**GstUvcH264MjpgDemux:**
>>> uvch264mjpgdemux0
>>> Execution ended after 0:00:34.640728375
>>> Setting pipeline to PAUSED ...
>>> Setting pipeline to READY ...
>>> Setting pipeline to NULL ...
>>> Freeing pipeline .
>>>
>>> On 07/11/2013 04:23 PM, Peter Rennert wrote:
>>>
>>>> Hello,
>>>>
>>>> I am trying to get the uvch264src to work in gstreamer 1.1.1.1 (git
>>>> head compiled yesterday) with the following pipeline:
>>>>
>>>> gst-launch-1.0 uvch264src device=/dev/video1 name=src auto-start=true
>>>> src.vfsrc ! queue ! video/x-raw,width=320,height=**
>>>> 240,format="YUY2",framerate=**15/1 ! xvimagesink src.vidsrc ! queue !
>>>> video/x-h264,width=1920,**height=1080,framerate=30/1,**profile=constrained-baseline
>>>> ! h264parse ! avdec_h264 ! xvimagesink
>>>>
>>>> It runs as expected (showing both the 1920x1080 and 320x240 windows).
>>>> But it constantly prints warnings (see below). Then stops it . You can find
>>>> the GST_DEBUG output below the warnings below.
>>>>
>>>> It works stable with gstreamer 0.10 (an older compilation) and
>>>>
>>>> gst-launch uvch264_src device=/dev/video1 name=src auto-start=true
>>>> src.vfsrc ! queue ! video/x-raw-yuv,width=320,**height=240,framerate=15/1
>>>> ! xvimagesink src.vidsrc ! queue ! video/x-h264,width=1920,**
>>>> height=1080,framerate=30/1,**profile=constrained-baseline ! h264parse
>>>> ! ffdec_h264 ! xvimagesink
>>>>
>>>> I am using a C920.
>>>>
>>>> I found a (probably) related problem here:
>>>> http://comments.gmane.org/**gmane.comp.video.gstreamer.**bugs/107399<http://comments.gmane.org/gmane.comp.video.gstreamer.bugs/107399>
>>>>
>>>>
>>>> Do I do something wrong in gstreamer 1 or is this a bug?
>>>>
>>>> -----------------
>>>>
>>>> Warnings (i get loads of them, this is just an excerpt):
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<capsfilter1:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<h264parse0:**sink> Got
>>>> data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<h264parse0:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<avdec_h264-0:**sink> Got
>>>> data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<capsfilter0:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<xvimagesink0:**sink> Got
>>>> data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<capsfilter1:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<h264parse0:**sink> Got
>>>> data flow before segment event
>>>>
>>>> (gst-launch-1.0:2962): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<h264parse0:src> Got data flow before segment event
>>>>
>>>> ==============================**==============================**======
>>>>
>>>> GST_DEBUG=5 :
>>>>
>>>> (only the interesting bit, shortly before the error gets reported until
>>>> the moment the error gets reported)
>>>>
>>>> 0:00:35.394998922  3694      0x1e171e0 DEBUG GST_CLOCK
>>>> gstclock.c:922:gst_clock_get_**internal_time:<GstSystemClock> internal
>>>> time 26:55:06.762023021
>>>> 0:00:35.395022245  3694      0x1e171e0 DEBUG GST_CLOCK
>>>> gstclock.c:967:gst_clock_get_**time:<GstSystemClock> adjusted time
>>>> 26:55:06.762023021
>>>> 0:00:35.395034653  3694      0x1e171e0 DEBUG v4l2src
>>>> gstv4l2src.c:823:gst_v4l2src_**fill:<v4l2src0> ts: 26:55:06.771552000
>>>> now 26:55:06.762058860 delay 0:00:00.000000000
>>>> 0:00:35.395050068  3694      0x1e171e0 INFO v4l2src
>>>> gstv4l2src.c:861:gst_v4l2src_**fill:<v4l2src0> sync to
>>>> 0:00:34.433332989 out ts 0:00:34.768634907
>>>> 0:00:35.395062230  3694      0x1e171e0 DEBUG basesrc
>>>> gstbasesrc.c:2216:gst_base_**src_do_sync:<v4l2src0> no sync needed
>>>> 0:00:35.395069279  3694      0x1e171e0 DEBUG basesrc
>>>> gstbasesrc.c:2414:gst_base_**src_get_range:<v4l2src0> buffer ok
>>>> 0:00:35.395080250  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:1958:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> handling buffer 0x1de7720 of size 166785 and offset 1032
>>>> 0:00:35.395090539  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2042:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> calling prepare buffer
>>>> 0:00:35.395099383  3694      0x1e171e0 DEBUG GST_CAPS
>>>> gstpad.c:2408:gst_pad_has_**current_caps:<capsfilter5:**sink> check
>>>> current pad caps image/jpeg, width=(int)320, height=(int)240,
>>>> pixel-aspect-ratio=(fraction)**1/1, framerate=(fraction)30/1
>>>> 0:00:35.395123772  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2049:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> using allocated buffer in 0x1de7720, out 0x1de7720
>>>> 0:00:35.395131630  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2066:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> doing inplace transform
>>>> 0:00:35.395150881  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (12215). JPG: 0-8 - APP4: 8 - 12225
>>>> 0:00:35.395163919  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f77291e63d0,
>>>> maxsize:1440014 offset:0 size:8
>>>> 0:00:35.395174000  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f7728009720 -> 0x7f77291e63d0
>>>> 0:00:35.395566373  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:550:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> New auxiliary stream : v1 - 22 bytes - H264 1920x1080 -- 333333 *100ns --
>>>> 27 ms -- 56960032
>>>> 0:00:35.395589065  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:552:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Auxiliary stream size : 12187 bytes
>>>> 0:00:35.395598711  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7728587db0,
>>>> maxsize:1440014 offset:38 size:12187
>>>> 0:00:35.395609310  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f7728009720 -> 0x7f7728587db0
>>>> 0:00:35.395854659  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:659:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Pushing H264 auxiliary buffer video/x-h264, width=(int)1920,
>>>> height=(int)1080, framerate=(fraction)30/1
>>>> 0:00:35.395885190  3694      0x1e171e0 DEBUG GST_PADS
>>>> gstpad.c:3224:do_probe_**callbacks:<src:vidsrc> data is passed
>>>> 0:00:35.395901512  3694      0x1e171e0 DEBUG GST_PADS
>>>> gstpad.c:3088:probe_hook_**marshal:<src:vidsrc> probe returned OK
>>>> 0:00:35.395918777  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (65533). JPG: 12225-12225 - APP4: 12225 - 77760
>>>> 0:00:35.395929092  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:550:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> New auxiliary stream : v1 - 22 bytes - YUY2 320x240 -- 333333 *100ns -- 27
>>>> ms -- 56960032
>>>> 0:00:35.395940742  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:552:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Auxiliary stream size : 153600 bytes
>>>> 0:00:35.396005741  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7728c67d10,
>>>> maxsize:1440014 offset:12255 size:65505
>>>> 0:00:35.395934221  3694      0x1e2b0a0 DEBUG queue_dataflow
>>>> gstqueue.c:1240:gst_queue_**loop:<queue1> queue is not empty
>>>> 0:00:35.396055314  3694      0x1e2b0a0 DEBUG basetransform
>>>> gstbasetransform.c:1962:gst_**base_transform_handle_buffer:<**capsfilter1>
>>>> handling buffer 0x7f77380050b0 of size 12187 and offset NONE
>>>> 0:00:35.396076643  3694      0x1e2b0a0 DEBUG basetransform
>>>> gstbasetransform.c:2042:gst_**base_transform_handle_buffer:<**capsfilter1>
>>>> calling prepare buffer
>>>> 0:00:35.396089336  3694      0x1e2b0a0 DEBUG GST_CAPS
>>>> gstpad.c:2408:gst_pad_has_**current_caps:<capsfilter1:**sink> check
>>>> current pad caps video/x-h264, width=(int)1920, height=(int)1080,
>>>> framerate=(fraction)30/1
>>>> 0:00:35.396116373  3694      0x1e2b0a0 DEBUG basetransform
>>>> gstbasetransform.c:2049:gst_**base_transform_handle_buffer:<**capsfilter1>
>>>> using allocated buffer in 0x7f77380050b0, out 0x7f77380050b0
>>>> 0:00:35.396128931  3694      0x1e2b0a0 DEBUG basetransform
>>>> gstbasetransform.c:2066:gst_**base_transform_handle_buffer:<**capsfilter1>
>>>> doing inplace transform
>>>>
>>>> (gst-launch-1.0:3694): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<capsfilter1:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:3694): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<h264parse0:**sink> Got
>>>> data flow before segment event
>>>> 0:00:35.396169900  3694      0x1e2b0a0 DEBUG GST_CAPS
>>>> gstpad.c:2408:gst_pad_has_**current_caps:<h264parse0:src> check
>>>> current pad caps video/x-h264, width=(int)1920, height=(int)1080,
>>>> framerate=(fraction)30/1, profile=(string)constrained-**baseline,
>>>> parsed=(boolean)true, stream-format=(string)byte-**stream,
>>>> alignment=(string)au
>>>> 0:00:35.396202328  3694      0x1e2b0a0 DEBUG h264parse
>>>> gsth264parse.c:165:gst_h264_**parse_reset_frame:<h264parse0> reset
>>>> frame
>>>>
>>>> (gst-launch-1.0:3694): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<h264parse0:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:3694): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<avdec_h264-0:**sink> Got
>>>> data flow before segment event
>>>> 0:00:35.396241398  3694      0x1e2b0a0 DEBUG default
>>>> gstsegment.c:481:gst_segment_**to_running_time: invalid position (-1)
>>>> 0:00:35.396281397  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:935:gst_**ffmpegviddec_do_qos:<avdec_**h264-0> decoding
>>>> time 2562047:47:16.854775807
>>>> 0:00:35.396314138  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:1100:gst_**ffmpegviddec_video_frame:<**avdec_h264-0>
>>>> stored opaque values idx 1032
>>>> 0:00:35.396349848  3694      0x1e2b0a0 DEBUG libav :0:: Frame num gap
>>>> 60 58
>>>> 0:00:35.396378922  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:704:gst_**ffmpegviddec_release_buffer:<**avdec_h264-0>
>>>> release frame 1030
>>>> 0:00:35.396414061  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:538:gst_**ffmpegviddec_get_buffer:<**avdec_h264-0>
>>>> getting buffer picture 0x7f773c726040
>>>> 0:00:35.396437146  3694      0x1e2b0a0 DEBUG videodecoder
>>>> gstvideodecoder.c:2883:gst_**video_decoder_get_frame:<**avdec_h264-0>
>>>> frame_number : 1032
>>>> 0:00:35.396466024  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:557:gst_**ffmpegviddec_get_buffer:<**avdec_h264-0>
>>>> storing opaque 0x7f77300c4130
>>>> 0:00:35.397593960  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:704:gst_**ffmpegviddec_release_buffer:<**avdec_h264-0>
>>>> release frame 1031
>>>> 0:00:35.397631322  3694      0x1e2b0a0 DEBUG default
>>>> gstvideoutils.c:40:_gst_video_**codec_frame_free: free frame
>>>> 0x7f7728848080
>>>> 0:00:35.397643694  3694      0x1e2b0a0 DEBUG GST_MEMORY
>>>> gstmemory.c:88:_gst_memory_**free: free memory 0x7f7728849000
>>>> 0:00:35.397666794  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:538:gst_**ffmpegviddec_get_buffer:<**avdec_h264-0>
>>>> getting buffer picture 0x7f773c7264c0
>>>> 0:00:35.398284117  3694      0x1e2b0a0 DEBUG videodecoder
>>>> gstvideodecoder.c:2883:gst_**video_decoder_get_frame:<**avdec_h264-0>
>>>> frame_number : 1032
>>>> 0:00:35.398304138  3694      0x1e2b0a0 WARN libav gstavviddec.c:632:gst_
>>>> **ffmpegviddec_get_buffer:<**avdec_h264-0> already alloc'ed output
>>>> buffer for frame
>>>> 0:00:35.398316802  3694      0x1e2b0a0 ERROR libav :0:: get_buffer()
>>>> failed (-1 2 (nil))
>>>> 0:00:35.398331690  3694      0x1e2b0a0 ERROR libav :0::
>>>> decode_slice_header error
>>>> 0:00:35.398348752  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:538:gst_**ffmpegviddec_get_buffer:<**avdec_h264-0>
>>>> getting buffer picture 0x7f773c7264c0
>>>> 0:00:35.398356353  3694      0x1e2b0a0 DEBUG videodecoder
>>>> gstvideodecoder.c:2883:gst_**video_decoder_get_frame:<**avdec_h264-0>
>>>> frame_number : 1032
>>>> 0:00:35.398363340  3694      0x1e2b0a0 WARN libav gstavviddec.c:632:gst_
>>>> **ffmpegviddec_get_buffer:<**avdec_h264-0> already alloc'ed output
>>>> buffer for frame
>>>> 0:00:35.398370450  3694      0x1e2b0a0 ERROR libav :0:: get_buffer()
>>>> failed (-1 2 (nil))
>>>> 0:00:35.398377837  3694      0x1e2b0a0 ERROR libav :0::
>>>> decode_slice_header error
>>>> 0:00:35.398386031  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:538:gst_**ffmpegviddec_get_buffer:<**avdec_h264-0>
>>>> getting buffer picture 0x7f773c7264c0
>>>> 0:00:35.398392697  3694      0x1e2b0a0 DEBUG videodecoder
>>>> gstvideodecoder.c:2883:gst_**video_decoder_get_frame:<**avdec_h264-0>
>>>> frame_number : 1032
>>>> 0:00:35.398399053  3694      0x1e2b0a0 WARN libav gstavviddec.c:632:gst_
>>>> **ffmpegviddec_get_buffer:<**avdec_h264-0> already alloc'ed output
>>>> buffer for frame
>>>> 0:00:35.398404717  3694      0x1e2b0a0 ERROR libav :0:: get_buffer()
>>>> failed (-1 2 (nil))
>>>> 0:00:35.398411627  3694      0x1e2b0a0 ERROR libav :0::
>>>> decode_slice_header error
>>>> 0:00:35.398418838  3694      0x1e2b0a0 DEBUG libav
>>>> gstavviddec.c:538:gst_**ffmpegviddec_get_buffer:<**avdec_h264-0>
>>>> getting buffer picture 0x7f773c7264c0
>>>> 0:00:35.398425798  3694      0x1e2b0a0 DEBUG videodecoder
>>>> gstvideodecoder.c:2883:gst_**video_decoder_get_frame:<**avdec_h264-0>
>>>> frame_number : 1032
>>>> 0:00:35.398432465  3694      0x1e2b0a0 WARN libav gstavviddec.c:632:gst_
>>>> **ffmpegviddec_get_buffer:<**avdec_h264-0> already alloc'ed output
>>>> buffer for frame
>>>> 0:00:35.398438066  3694      0x1e2b0a0 ERROR libav :0:: get_buffer()
>>>> failed (-1 2 (nil))
>>>> 0:00:35.398445219  3694      0x1e2b0a0 ERROR libav :0::
>>>> decode_slice_header error
>>>> 0:00:35.398451851  3694      0x1e2b0a0 ERROR libav :0:: mmco: unref
>>>> short failure
>>>> 0:00:35.398627695  3694      0x1e2b0a0 INFO libav :0:: concealing 8160
>>>> DC, 8160 AC, 8160 MV errors
>>>> 0:00:35.398828963  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f7728009720 -> 0x7f7728c67d10
>>>> 0:00:35.399319058  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (65533). JPG: 77760-77760 - APP4: 77760 - 143295
>>>> 0:00:35.399353615  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7728849000,
>>>> maxsize:1440014 offset:77764 size:65531
>>>> 0:00:35.399368422  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f7728009720 -> 0x7f7728849000
>>>> 0:00:35.399658333  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (22566). JPG: 143295-143295 - APP4: 143295 - 165863
>>>> 0:00:35.399677140  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7728dc76c0,
>>>> maxsize:1440014 offset:143299 size:22564
>>>> 0:00:35.399690113  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f7728009720 -> 0x7f7728dc76c0
>>>> 0:00:35.399982333  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:659:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Pushing YUY2 auxiliary buffer video/x-raw, format=(string)YUY2,
>>>> width=(int)320, height=(int)240, framerate=(fraction)15/1
>>>> 0:00:35.400035247  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:1962:gst_**base_transform_handle_buffer:<**videoconvert4>
>>>> handling buffer 0x7f7730007550 of size 153600 and offset NONE
>>>> 0:00:35.400047757  3694      0x1e171e0 DEBUG default
>>>> gstsegment.c:481:gst_segment_**to_running_time: invalid position (-1)
>>>> 0:00:35.400057009  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2042:gst_**base_transform_handle_buffer:<**videoconvert4>
>>>> calling prepare buffer
>>>> 0:00:35.400066028  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:1537:**default_prepare_output_buffer:**<videoconvert4>
>>>> passthrough: reusing input buffer
>>>> 0:00:35.400074785  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2049:gst_**base_transform_handle_buffer:<**videoconvert4>
>>>> using allocated buffer in 0x7f7730007550, out 0x7f7730007550
>>>> 0:00:35.400085953  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2060:gst_**base_transform_handle_buffer:<**videoconvert4>
>>>> element is in passthrough
>>>> 0:00:35.400100607  3694      0x1e171e0 DEBUG GST_PADS
>>>> gstpad.c:3224:do_probe_**callbacks:<src:vfsrc> data is passed
>>>> 0:00:35.400125786  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:694:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> SOS marker wasn't found. MJPG is container only
>>>> 0:00:35.400136546  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:88:_gst_memory_**free: free memory 0x7f77291e63d0
>>>> 0:00:35.400153414  3694      0x1e171e0 DEBUG v4l2
>>>> gstv4l2bufferpool.c:933:gst_**v4l2_buffer_pool_release_**buffer:<v4l2bufferpool0>
>>>> release buffer 0x1de7720
>>>> 0:00:35.400178526  3694      0x1e171e0 DEBUG basesrc
>>>> gstbasesrc.c:2351:gst_base_**src_get_range:<v4l2src0> calling create
>>>> offset 18446744073709551615 length 4096, time 0
>>>> 0:00:35.400194362  3694      0x1e171e0 DEBUG v4l2
>>>> gstv4l2bufferpool.c:832:gst_**v4l2_buffer_pool_acquire_**buffer:<v4l2bufferpool0>
>>>> acquire
>>>> 0:00:35.400205021  3694      0x1e171e0 DEBUG GST_POLL
>>>> gstpoll.c:1200:gst_poll_wait: timeout :99:99:99.999999999
>>>> 0:00:35.400235182  3694      0x1e2b1e0 DEBUG queue_dataflow
>>>> gstqueue.c:1240:gst_queue_**loop:<queue0> queue is not empty
>>>> 0:00:35.402142734  3694      0x1e2b1e0 DEBUG basetransform
>>>> gstbasetransform.c:1962:gst_**base_transform_handle_buffer:<**capsfilter0>
>>>> handling buffer 0x7f7730007550 of size 153600 and offset NONE
>>>> 0:00:35.402168640  3694      0x1e2b1e0 DEBUG basetransform
>>>> gstbasetransform.c:2042:gst_**base_transform_handle_buffer:<**capsfilter0>
>>>> calling prepare buffer
>>>> 0:00:35.402178987  3694      0x1e2b1e0 DEBUG GST_CAPS
>>>> gstpad.c:2408:gst_pad_has_**current_caps:<capsfilter0:**sink> check
>>>> current pad caps video/x-raw, format=(string)YUY2, width=(int)320,
>>>> height=(int)240, framerate=(fraction)15/1
>>>> 0:00:35.402210753  3694      0x1e2b1e0 DEBUG basetransform
>>>> gstbasetransform.c:2049:gst_**base_transform_handle_buffer:<**capsfilter0>
>>>> using allocated buffer in 0x7f7730007550, out 0x7f7730007550
>>>> 0:00:35.402218850  3694      0x1e2b1e0 DEBUG basetransform
>>>> gstbasetransform.c:2066:gst_**base_transform_handle_buffer:<**capsfilter0>
>>>> doing inplace transform
>>>>
>>>> (gst-launch-1.0:3694): GStreamer-WARNING **: gstpad.c:3923:gst_pad_push_
>>>> **data:<capsfilter0:src> Got data flow before segment event
>>>>
>>>> (gst-launch-1.0:3694): GStreamer-WARNING **:
>>>> gstpad.c:3692:gst_pad_chain_**data_unchecked:<xvimagesink0:**sink> Got
>>>> data flow before segment event
>>>> 0:00:35.402247697  3694      0x1e2b1e0 DEBUG basesink
>>>> gstbasesink.c:3283:gst_base_**sink_chain_unlocked:<**xvimagesink0> got
>>>> times start: 99:99:99.999999999, end: 99:99:99.999999999
>>>> 0:00:35.402263093  3694      0x1e2b1e0 DEBUG basesink
>>>> gstbasesink.c:1899:gst_base_**sink_get_sync_times:<**xvimagesink0> got
>>>> times start: 99:99:99.999999999, stop: 99:99:99.999999999, do_sync 0
>>>> 0:00:35.402275683  3694      0x1e2b1e0 DEBUG default
>>>> gstsegment.c:481:gst_segment_**to_running_time: invalid position (-1)
>>>> 0:00:35.402281951  3694      0x1e2b1e0 DEBUG default
>>>> gstsegment.c:481:gst_segment_**to_running_time: invalid position (-1)
>>>> 0:00:35.402289418  3694      0x1e2b1e0 DEBUG basesink
>>>> gstbasesink.c:3354:gst_base_**sink_chain_unlocked:<**xvimagesink0>
>>>> rendering object 0x7f7730007550
>>>> 0:00:35.402297939  3694      0x1e2b1e0 DEBUG basesink
>>>> gstbasesink.c:938:gst_base_**sink_set_last_buffer_unlocked:**<xvimagesink0>
>>>> setting last buffer to 0x7f7730007550
>>>> 0:00:35.402309005  3694      0x1e2b1e0 DEBUG GST_MEMORY
>>>> gstmemory.c:88:_gst_memory_**free: free memory 0x7f7728f27070
>>>> 0:00:35.402322365  3694      0x1e2b1e0 DEBUG GST_MEMORY
>>>> gstmemory.c:88:_gst_memory_**free: free memory 0x7f7729086a20
>>>> 0:00:35.402329259  3694      0x1e2b1e0 DEBUG GST_MEMORY
>>>> gstmemory.c:88:_gst_memory_**free: free memory 0x7f7729345d80
>>>> 0:00:35.402748981  3694      0x1e2b1e0 DEBUG bufferpool
>>>> gstbufferpool.c:479:gst_**buffer_pool_set_active:<**xvimagebufferpool1>
>>>> pool was in the right state
>>>> 0:00:35.402773116  3694      0x1e2b1e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7738006800,
>>>> maxsize:153607 offset:0 size:153600
>>>> 0:00:35.402785810  3694      0x1e2b1e0 DEBUG GST_PERFORMANCE
>>>> gstbuffer.c:244:_get_merged_**memory: memcpy 65505 bytes for merge
>>>> 0x7f7738006800 from memory 0x7f7728c67d10
>>>> 0:00:35.402805953  3694      0x1e2b1e0 DEBUG GST_PERFORMANCE
>>>> gstbuffer.c:244:_get_merged_**memory: memcpy 65531 bytes for merge
>>>> 0x7f7738006800 from memory 0x7f7728849000
>>>> 0:00:35.402825501  3694      0x1e2b1e0 DEBUG GST_PERFORMANCE
>>>> gstbuffer.c:244:_get_merged_**memory: memcpy 22564 bytes for merge
>>>> 0x7f7738006800 from memory 0x7f7728dc76c0
>>>> 0:00:35.402843541  3694      0x1e2b1e0 DEBUG GST_PERFORMANCE
>>>> gstbuffer.c:1509:gst_buffer_**map_range: temporary mapping for memory
>>>> 0x7f7738006800 in buffer 0x7f7730007550
>>>> 0:00:35.402930602  3694      0x1e2b1e0 DEBUG GST_PERFORMANCE
>>>> video-frame.c:245:gst_video_**frame_copy_plane: copy plane 0, w:640
>>>> h:240
>>>> 0:00:35.402963361  3694      0x1e2b1e0 DEBUG GST_MEMORY
>>>> gstmemory.c:88:_gst_memory_**free: free memory 0x7f7738006800
>>>> 0:00:35.402993223  3694      0x1e2b1e0 DEBUG videosink
>>>> gstvideosink.c:117:gst_video_**sink_center_rect: source is 320x240
>>>> dest is 320x240, result is 320x240 with x,y 0x0
>>>> 0:00:35.403172767  3694      0x1e2b1e0 DEBUG GST_QOS
>>>> gstbasesink.c:2855:gst_base_**sink_do_render_stats:<**xvimagesink0>
>>>> avg_render: 0:00:00.000771911
>>>> 0:00:35.403185342  3694      0x1e2b1e0 DEBUG basesink
>>>> gstbasesink.c:3393:gst_base_**sink_chain_unlocked:<**xvimagesink0>
>>>> object unref after render 0x7f7730007550
>>>> 0:00:35.403196545  3694      0x1e2b1e0 DEBUG queue_dataflow
>>>> gstqueue.c:1228:gst_queue_**loop:<queue0> queue is empty
>>>> 0:00:35.426997236  3694      0x1e171e0 DEBUG v4l2
>>>> gstv4l2bufferpool.c:1167:gst_**v4l2_buffer_pool_process:<**v4l2bufferpool0>
>>>> process buffer 0x1de7830
>>>> 0:00:35.427041303  3694      0x1e171e0 DEBUG GST_CLOCK
>>>> gstclock.c:922:gst_clock_get_**internal_time:<GstSystemClock> internal
>>>> time 26:55:06.794065247
>>>> 0:00:35.427056137  3694      0x1e171e0 DEBUG GST_CLOCK
>>>> gstclock.c:967:gst_clock_get_**time:<GstSystemClock> adjusted time
>>>> 26:55:06.794065247
>>>> 0:00:35.427067629  3694      0x1e171e0 DEBUG v4l2src
>>>> gstv4l2src.c:823:gst_v4l2src_**fill:<v4l2src0> ts: 26:55:06.800990000
>>>> now 26:55:06.794092266 delay 0:00:00.000000000
>>>> 0:00:35.427080729  3694      0x1e171e0 INFO v4l2src
>>>> gstv4l2src.c:861:gst_v4l2src_**fill:<v4l2src0> sync to
>>>> 0:00:34.466666322 out ts 0:00:34.800677133
>>>> 0:00:35.427092788  3694      0x1e171e0 DEBUG basesrc
>>>> gstbasesrc.c:2216:gst_base_**src_do_sync:<v4l2src0> no sync needed
>>>> 0:00:35.427100101  3694      0x1e171e0 DEBUG basesrc
>>>> gstbasesrc.c:2414:gst_base_**src_get_range:<v4l2src0> buffer ok
>>>> 0:00:35.427112183  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:1958:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> handling buffer 0x1de7830 of size 165490 and offset 1033
>>>> 0:00:35.427122893  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2042:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> calling prepare buffer
>>>> 0:00:35.427131748  3694      0x1e171e0 DEBUG GST_CAPS
>>>> gstpad.c:2408:gst_pad_has_**current_caps:<capsfilter5:**sink> check
>>>> current pad caps image/jpeg, width=(int)320, height=(int)240,
>>>> pixel-aspect-ratio=(fraction)**1/1, framerate=(fraction)30/1
>>>> 0:00:35.427157133  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2049:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> using allocated buffer in 0x1de7830, out 0x1de7830
>>>> 0:00:35.427164745  3694      0x1e171e0 DEBUG basetransform
>>>> gstbasetransform.c:2066:gst_**base_transform_handle_buffer:<**capsfilter5>
>>>> doing inplace transform
>>>> 0:00:35.427176735  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (12182). JPG: 0-8 - APP4: 8 - 12192
>>>> 0:00:35.427197573  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7728f27070,
>>>> maxsize:1440014 offset:0 size:8
>>>> 0:00:35.427207769  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f77281690c0 -> 0x7f7728f27070
>>>> 0:00:35.427908444  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:550:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> New auxiliary stream : v1 - 22 bytes - H264 1920x1080 -- 333333 *100ns --
>>>> 27 ms -- 67059032
>>>> 0:00:35.427927470  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:552:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Auxiliary stream size : 12154 bytes
>>>> 0:00:35.427939077  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7729086a20,
>>>> maxsize:1440014 offset:38 size:12154
>>>> 0:00:35.427948111  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f77281690c0 -> 0x7f7729086a20
>>>> 0:00:35.428626317  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:659:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Pushing H264 auxiliary buffer video/x-h264, width=(int)1920,
>>>> height=(int)1080, framerate=(fraction)30/1
>>>> 0:00:35.428658303  3694      0x1e171e0 DEBUG GST_PADS
>>>> gstpad.c:3224:do_probe_**callbacks:<src:vidsrc> data is passed
>>>> 0:00:35.428666953  3694      0x1e171e0 DEBUG GST_PADS
>>>> gstpad.c:3088:probe_hook_**marshal:<src:vidsrc> probe returned OK
>>>> 0:00:35.428679400  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (65533). JPG: 12192-12192 - APP4: 12192 - 77727
>>>> 0:00:35.428688152  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:550:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> New auxiliary stream : v1 - 22 bytes - YUY2 320x240 -- 333333 *100ns -- 27
>>>> ms -- 67059032
>>>> 0:00:35.428697950  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:552:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Auxiliary stream size : 153600 bytes
>>>> 0:00:35.428708335  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f77291e63d0,
>>>> maxsize:1440014 offset:12222 size:65505
>>>> 0:00:35.428720262  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f77281690c0 -> 0x7f77291e63d0
>>>> 0:00:35.429419395  3694      0x1e171e0 DEBUG uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:513:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> Found APP4 marker (65533). JPG: 77727-77727 - APP4: 77727 - 143262
>>>> 0:00:35.429437926  3694      0x1e171e0 DEBUG GST_MEMORY
>>>> gstmemory.c:138:gst_memory_**init: new memory 0x7f7729345d80,
>>>> maxsize:1440014 offset:77731 size:65531
>>>> 0:00:35.429446663  3694      0x1e171e0 DEBUG GST_PERFORMANCE
>>>> gstallocator.c:466:_sysmem_**copy: memcpy 1440007 memory
>>>> 0x7f77281690c0 -> 0x7f7729345d80
>>>> 0:00:35.430148554  3694      0x1e171e0 WARN uvch264mjpgdemux
>>>> gstuvch264_mjpgdemux.c:507:**gst_uvc_h264_mjpg_demux_chain:**<uvch264mjpgdemux0>
>>>> error: Not enough data to read marker content
>>>> 0:00:35.430172000  3694      0x1e171e0 DEBUG GST_MESSAGE
>>>> gstelement.c:1807:gst_element_**message_full:<**uvch264mjpgdemux0>
>>>> start
>>>> 0:00:35.430202374  3694      0x1e171e0 INFO GST_ERROR_SYSTEM
>>>> gstelement.c:1838:gst_element_**message_full:<**uvch264mjpgdemux0>
>>>> posting message: Not enough data to read marker content
>>>> 0:00:35.430223343  3694      0x1e171e0 DEBUG GST_BUS
>>>> gstbus.c:312:gst_bus_post:<**bus0> [msg 0x1e3c5a0] posting on bus
>>>> error message: 0x1e3c5a0, time 99:99:99.999999999, seq-num 378, element
>>>> 'uvch264mjpgdemux0', GstMessageError, gerror=(GError)NULL,
>>>> debug=(string)"gstuvch264_**mjpgdemux.c\(507\):\
>>>> gst_uvc_h264_mjpg_demux_chain\ \(\):\ /GstPipeline:pipeline0/**
>>>> GstUvcH264Src:src/**GstUvcH264MjpgDemux:**uvch264mjpgdemux0";
>>>>
>>>> ... now it continues with with and EOS that stops the pipeline
>>>>
>>>
>>> ______________________________**_________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.**freedesktop.org<gstreamer-devel at lists.freedesktop.org>
>>> http://lists.freedesktop.org/**mailman/listinfo/gstreamer-**devel<http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel>
>>>
>>
>>
>>
>> --
>> Rob Krakora
>> MessageNet Systems
>> 101 East Carmel Dr. Suite 105
>> Carmel, IN 46032
>> (317)566-1677 Ext 212
>> (317)663-0808 Fax
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>
>
> --
>
> Rob Krakora,
> Senior Software Engineer
>
> MessageNet Systems
> 101 E Carmel Dr, Suite 105
> Carmel, IN 46032
>
> MessageNetSystems.com<http://www.messagenetcommunicationsystems.com/?utm_source=email+signature&utm_medium=email&utm_campaign=email+signature+to+homepage>
>
> Rob.Krakora at MessageNetSystems.com <rob.krakora at messagenetsystems.com>
> P: 317.566.1677, 212
> F: 317.663.0808
>
> For the latest news, information, and blogs, please be sure to visit,
> follow, and like us...
>
>
> <http://www.messagenetcommunicationsystems.com/get-the-message-out-blog/?utm_source=email+signature&utm_medium=email&utm_campaign=gmail+signature+to+blog>
>    <http://www.youtube.com/user/MessageNetConnection/feed>  <http://www.linkedin.com/company/messagenet-systems>
>    <http://twitter.com/MessageNet>  <http://www.facebook.com/MessageNetsystems>
>



-- 

Rob Krakora,
Senior Software Engineer

MessageNet Systems
101 E Carmel Dr, Suite 105
Carmel, IN 46032

MessageNetSystems.com<http://www.messagenetcommunicationsystems.com/?utm_source=email+signature&utm_medium=email&utm_campaign=email+signature+to+homepage>
Rob.Krakora at MessageNetSystems.com <rob.krakora at messagenetsystems.com>
P: 317.566.1677, 212
F: 317.663.0808

For the latest news, information, and blogs, please be sure to visit,
follow, and like us...

<http://www.messagenetcommunicationsystems.com/get-the-message-out-blog/?utm_source=email+signature&utm_medium=email&utm_campaign=gmail+signature+to+blog>
   <http://www.youtube.com/user/MessageNetConnection/feed>
<http://www.linkedin.com/company/messagenet-systems>
   <http://twitter.com/MessageNet>  <http://www.facebook.com/MessageNetsystems>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20130812/503b7e4d/attachment-0001.html>


More information about the gstreamer-devel mailing list