DecklinkSink and Caps

Johan Peerbolte jpeerbolte at actistream.com
Tue Dec 11 04:46:10 PST 2012


Hi Krzysztof

I don't know this function
>> 
>  src = gst_bin_get_by_name (GST_BIN (pipeline), "src");


Its perfect now

Thanks
Johan





Le 3 déc. 2012 à 15:27, Krzysztof Konopko <krzysztof.konopko at youview.com> a écrit :

> Hi Johan,
> 
> I don't know what went wrong. Why are trying to make your life more
> difficult than necessary?
> 
> I replaced ~70 lines of your code with just a few simple calls:
> 
>  /* Build the pipeline */
> 
>  error = NULL;
>  pipeline = gst_parse_launch (
>    "rtspsrc name=src timeout=1 buffer-mode=1"
>    " latency=9000 protocols=GST_RTSP_LOWER_TRANS_TCP"
>    " ! queue ! gstrtpbin latency=250"
>    " ! queue min-threshold-time=500000"
>    " ! rtph264depay ! ffdec_h264"
>    " ! interlace top-field-first=true field-pattern=1"
>    " ! videoscale add-borders=false ! videorate"
>    " ! ffmpegcolorspace"
>    " ! video/x-raw-yuv,framerate=25/1,format=(fourcc)UYVY"
>    " ! decklinksink name=sink mode=2",
>    &error);
> 
>  if (!pipeline) {
>    g_printerr ("Cannot create pipeline: %s. Exiting.\n",
>                error ? error->message : "(unknown error)");
>    if (error) g_error_free (error);
>    // actually it should be a goto to free all resources
>    // as never know when this code gets reused where it
>    // actually matters
>    return EXIT_FAILURE;
>  }
> 
>  src = gst_bin_get_by_name (GST_BIN (pipeline), "src");
>  g_object_set (G_OBJECT (src), "location", argv[1], NULL);
>  gst_object_unref (src);
> 
>  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>  gst_bus_add_watch (bus, bus_call, loop);
>  gst_object_unref (bus);
> 
> ////////////////////------------***********------------/////////////////////////
> 
> 
> and it works (I used autovideosink and
> rtsp://cdn.actistream.com/vod/cam1.mp4 resource).
> 
> If you need more flexibility you can always refer to elements by their
> names as I did for "src". If the pipeline construction has to be more
> dynamic than at some point this approach will probably become clumsy but
> at least IMHO you should start with something dead simple that works (as
> above).
> 
> Kris
> 
> On 03/12/12 13:54, Johan Peerbolte wrote:
>> Hi Kris,
>> 
>> i have test this and its work for caps  !
>> Thanks
>> 
>> But i have the same error, do you have idea?
>> i have add news sources on this mail
>> 
>> 
>> the output of GST_DEBUG=2 :
>> CAPS OK
>> 
>> Now playing: rtsp://10.21.216.105:1935/mystream
>> ............................................................................................................................................................................................................................................................0:00:02.518530509
>> 10241      0x145e680 WARN                 rtspsrc
>> gstrtspsrc.c:4184:gst_rtspsrc_loop:<rtspsrc0> error: Internal data flow
>> error.
>> 0:00:02.518563366 10241      0x145e680 WARN                 rtspsrc
>> gstrtspsrc.c:4184:gst_rtspsrc_loop:<rtspsrc0> error: streaming task paused,
>> reason not-linked (-1)
>> Error: Internal data flow error.
>> Returned, stopping playback
>> 0:00:02.519555898 10241      0x145e680 WARN                 rtspsrc
>> gstrtspsrc.c:4591:gst_rtspsrc_try_send:<rtspsrc0> receive interrupted
>> 0:00:02.519603473 10241      0x145e680 WARN                 rtspsrc
>> gstrtspsrc.c:6406:gst_rtspsrc_pause:<rtspsrc0> PAUSE interrupted
>> 0:00:02.520729547 10241      0x145e680 WARN                 rtspsrc
>> gstrtspsrc.c:4589:gst_rtspsrc_try_send:<rtspsrc0> error: Could not receive
>> message. (Parse error)
>> 0:00:02.520814868 10241      0x145e680 WARN                 rtspsrc
>> gstrtspsrc.c:5885:gst_rtspsrc_close:<rtspsrc0> error: Could not send
>> message. (Parse error)
>> Deleting pipeline
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 2012/12/3 Krzysztof Konopko <krzysztof.konopko at youview.com>
>> 
>>> Hi Johan,
>>> 
>>> In GStreamer 0.10.x format type should be GST_TYPE_FOURCC, not
>>> G_TYPE_STRING and the value just "UYVY".
>>> 
>>> I guess you're reading documentation for GStreamer 1.0 where the format
>>> type is indeed G_TYPE_STRING and the value should be "UYVY". The FOURCC
>>> type has been refactored in GStreamer 1.0.
>>> 
>>> BTW, my personal advise is to use gst_parse_launch() wherever you can
>>> which will save you time and effort as it allows you to specify
>>> pipepline description as you do on the command line. IMHO this is
>>> simpler and less error prone. You can still refer to individual elements
>>> by their name property. Construct the pipeline on a bit-by-bit basis
>>> only when it's absolutely necessary.
>>> 
>>> Kris
>>> 
>>> On 03/12/12 10:39, Johan Peerbolte wrote:
>>>> Hello all,
>>>> 
>>>> I have a pipeline  :
>>>> 
>>>> "gst-launch rtspsrc name=src timeout=1 buffer-mode=1 latency=9000
>>>> protocols=GST_RTSP_LOWER_TRANS_TCP location=%s ! queue ! gstrtpbin
>>>> latency=250 "
>>>> "! queue min-threshold-time=500000  ! rtph264depay  ! ffdec_h264 !
>>>> interlace top-field-first=true field-pattern=1 ! videoscale
>>>> add-borders=false  ! videorate ! ffmpegcolorspace !  video/x-raw-yuv,
>>>> framerate=25/1,format=(fourcc)UYVY ! decklinksink name=sink mode=2"
>>>> 
>>>> 
>>>> 
>>>> This play rtsp and output of decklink sdi card, the decklinksink plugin
>>>> take only UYVY.
>>>> For this i have added caps at the end "video/x-raw-yuv,
>>>> framerate=25/1,format=(fourcc)UYVY"
>>>> 
>>>> I want to create a little binary to do the same work, but i have problem,
>>>> maybe with caps
>>>> 
>>>> I use this : "
>>>>  GstCaps *filtercaps = gst_caps_new_simple ("video/x-raw-yuv",
>>>> "framerate", GST_TYPE_FRACTION, 25, 1, "format", G_TYPE_STRING,
>>>> "(fourcc)UYVY", NULL);
>>>>  g_object_set (G_OBJECT (filter), "caps", filtercaps, NULL);
>>>> 
>>>>  gboolean link_ok = gst_element_link_filtered(colorsp,sink,filtercaps);
>>>>  gst_caps_unref (filtercaps);
>>>> "
>>>> 
>>>> i have attached sources
>>>> 
>>>> 
>>>> the ouptut of GST_DEBUG=2 ./mybinary rtsp://server/app/file.mp4
>>>> 
>>>> """""
>>>> ** (mybinary:20272): WARNING **: Failed to link caps!
>>>> Now playing: rtsp://cdn.actistream.com/vod/cam1.mp4
>>>> 
>>>> A new pad recv_rtp_src_0_1866764401_96 was created
>>>> application/x-rtpon the pad
>>>> A new pad recv_rtp_src_1_1773709704_97 was created
>>>> 
>>>> application/x-rtp0:00:07.569209168 20272      0x15af050 WARN
>>>>  rtspsrc gstrtspsrc.c:4184:gst_rtspsrc_loop:<rtspsrc0> error: Internal
>>>> data flow error.
>>>> 0:00:07.569229090 20272      0x15af050 WARN                 rtspsrc
>>>> gstrtspsrc.c:4184:gst_rtspsrc_loop:<rtspsrc0> error: streaming task
>>> paused,
>>>> reason not-linked (-1)
>>>> Error: Internal data flow error.
>>>> Returned, stopping playback
>>>> 0:00:07.570128028 20272      0x15af050 WARN                 rtspsrc
>>>> gstrtspsrc.c:4591:gst_rtspsrc_try_send:<rtspsrc0> receive interrupted
>>>> 0:00:07.570145785 20272      0x15af050 WARN                 rtspsrc
>>>> gstrtspsrc.c:6406:gst_rtspsrc_pause:<rtspsrc0> PAUSE interrupted
>>>> 0:00:07.582227357 20272      0x15af050 WARN                 rtspsrc
>>>> gstrtspsrc.c:4589:gst_rtspsrc_try_send:<rtspsrc0> error: Could not
>>> receive
>>>> message. (Parse error)
>>>> 0:00:07.582267763 20272      0x15af050 WARN                 rtspsrc
>>>> gstrtspsrc.c:5885:gst_rtspsrc_close:<rtspsrc0> error: Could not send
>>>> message. (Parse error)
>>>> Deleting pipeline
>>>> 
>>>> """""
>>>> 
>>>> i think i made a mistake about caps, maybe one person have advice :-)
>>>> Thanks
>>>> Johan
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> gstreamer-devel mailing list
>>>> gstreamer-devel at lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>> 
>>> 
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20121211/f1a23bd8/attachment-0001.html>


More information about the gstreamer-devel mailing list