sprop-param-set

Chuck Crisler ccrisler at mutualink.net
Mon Apr 7 12:30:04 PDT 2014


Here is the (hacked up/sucky) source code:

// CMC HACK
    char cPipelineSrc2[256] = "";
    int len = 0;
    sprintf(cPipelineSrc2, cPipelineSrc1,
RTPPorts.inputIpPort[PipelineIndex]);
    len = strlen(cPipelineSrc2);
    cPipelineSrc2[len] = '\\';
    cPipelineSrc2[len + 1] = '=';
    cPipelineSrc2[len + 2] = ',';
    cPipelineSrc2[len + 3] = 0;
    strcat(cPipelineSrc2, "aM48gA");
    len = strlen(cPipelineSrc2);
    cPipelineSrc2[len] = '\\';
    cPipelineSrc2[len + 1] = '=';
    cPipelineSrc2[len + 2] = '\\';
    cPipelineSrc2[len + 3] = '=';
    cPipelineSrc2[len + 4] = 0;
    strcat(cPipelineSrc2, " ! valve name=pay0 drop=false )");
// CMC HACK END


Here are some snippets from the log:

Apr  7 15:13:53 rtspdaemon[4368]: 0:00:00.014901065  4390  0x831e008
DEBUG             RTSPSocket RTSPSocket.cpp:399:StartPipeline: RTSP
Pipeline: ( udpsrc port=6201 name=UDPSrc !
application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264,sprop-parameter-sets=(string)Z0LAH9oBQBbsBEAAAAMAQAAABSPGDKg\=,aM48gA\=\=
! valve name=pay0 drop=false )


So the pipeline looks similar, but still fails:

Apr  7 15:13:53 rtspdaemon[4368]: 0:00:00.955639095  4390  0x831e008
WARN                 default gststructure.c:2112:gst_structure_from_string:
Failed to find delimiter, r=\=,aM48gA\=\=
Apr  7 15:13:53 rtspdaemon[4368]: 0:00:00.955675848  4390  0x831e008
ERROR           GST_PIPELINE ./grammar.y:713:_gst_parse_yyparse: could not
parse caps
"application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264,sprop-parameter-sets=(string)Z0LAH9oBQBbsBEAAAAMAQAAABSPGDKg\=,aM48gA\=\="

Tim, I saw that you escaped the ',', which I haven't here. I have tried
that also, but it seems to be failing on the first '=', so the ',' hasn't
had a chance to cause any problems yet.



On Mon, Apr 7, 2014 at 2:05 PM, Chuck Crisler <ccrisler at mutualink.net>wrote:

> This works in gst-launch but seems to fail when compiled by gcc. I think
> that the compiler strips out the '\' and passes the un-escaped character
> sequence which fails GStreamer parsing. :-(
>
>
> On Mon, Apr 7, 2014 at 9:39 AM, Chuck Crisler <ccrisler at mutualink.net>wrote:
>
>> Thank you Tim. I see that you are escaping the 'bad' characters ('=' and
>> ','). I didn't think of that.
>>
>> Chuck
>>
>>
>> On Fri, Apr 4, 2014 at 5:58 PM, Tim Müller <tim at centricular.com> wrote:
>>
>>> On Fri, 2014-04-04 at 16:24 -0400, Chuck Crisler wrote:
>>>
>>> Hi Chuck,
>>>
>>> > OK, I am beginning to understand. Here is a part of the log.
>>> >
>>> > Apr  4 16:08:05 rtspdaemon[731]: 0:00:00.015266513   753  0x808d008
>>> > DEBUG             RTSPSocket RTSPSocket.cpp:380:StartPipeline: RTSP
>>> > Pipeline: ( udpsrc port=6215 name=UDPSrc !
>>> >
>>> application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264,sprop-parameter-sets=Njc0ZDAwMTZkYTAyODBmNmMwNTUyMDAwMDAwMzAwNDAwMDAwMDc4YzA4MDAzZTgwMDAwYThjMzdiZGYwYmMyMjExYTg=,NjhlZTNjODA=
>>> ! valve name=pay0 drop=false )
>>> > Apr  4 16:08:06 rtspdaemon[731]: 0:00:00.423412736   753  0x808d008
>>> > WARN                 default
>>> > gststructure.c:2112:gst_structure_from_string: Failed to find
>>> > delimiter, r==,NjhlZTNjODA=
>>> > Apr  4 16:08:06 rtspdaemon[731]: 0:00:00.423444876   753  0x808d008
>>> > ERROR           GST_PIPELINE ./grammar.y:713:_gst_parse_yyparse: could
>>> > not parse caps
>>> >
>>> "application/x-rtp,media=video,payload=96,clock-rate=90000,encoding-name=H264,sprop-parameter-sets=Njc0ZDAwMTZkYTAyODBmNmMwNTUyMDAwMDAwMzAwNDAwMDAwMDc4YzA4MDAzZTgwMDAwYThjMzdiZGYwYmMyMjExYTg=,NjhlZTNjODA="
>>> >
>>> >
>>> > gststructure works with ASCII but the sprops-parameter-set is BASE64
>>> > encoded.
>>>
>>> BASE64 is a subset of ASCII.
>>>
>>> >  So first, it can't handle the PPS added after the ',' (which is
>>> > legal). Second, it can't handle '=' in the field (which is legal).
>>> > Third, for some reason gststructure.c fails when I add the NAL type at
>>> > the beginning. The problem is that the Android app parses the SPS and
>>> > will fail if it isn't valid, even though the SPS and PPS are signaled
>>> > inband.
>>>
>>> This seems to work for me:
>>>
>>>  gst-launch-0.10 fakesrc ! 'application/x-rtp, media=(string)video,
>>> clock-rate=(int)90000, encoding-name=(string)H264,
>>> sprop-parameter-sets=(string)"Z01AFeygoP2AiAAAAwALuaygAHixbLA\=\,aOvssg
>>> \=\=", payload=(int)96, ssrc=(uint)1968523427,
>>> clock-base=(uint)2269461842, seqnum-base=(uint)26782' ! fakesink
>>>
>>> Generated with:
>>>
>>>  gst-launch-0.10 -v videotestsrc ! x264enc ! rtph264pay ! fakesink
>>>
>>> (well, almost, I looked at the debug log, because the -v output is
>>> doubly-escaped I think; h)
>>>
>>>  Cheers
>>>   -Tim
>>>
>>>
>>> --
>>> Tim Müller, Centricular Ltd - http://www.centricular.com
>>>
>>> _______________________________________________
>>> 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/20140407/bf8442b5/attachment.html>


More information about the gstreamer-devel mailing list