<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Sebastian,<div>IMHO I think the issue is due to  <span style="font-family: Menlo; font-size: 11px;">osxsrc-></span><span style="font-family: Menlo; font-size: 11px; color: rgb(79, 129, 135);">deviceChannels</span><font face="Menlo"><span style="font-size: 11px;">  returns -1 (I don’t know why) so a default one caps is returned.</span></font></div><div><font face="Menlo"><span style="font-size: 11px;">In that case the conversion S32LE -> S16LE is not needed so that’s why the audio is distorted.</span></font></div><div><font face="Menlo"><span style="font-size: 11px;">What do you think?</span></font></div><div><font face="Menlo"><span style="font-size: 11px;"><br></span></font></div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><span style="color: #bb2ca2">static</span> GstCaps *</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">gst_osx_audio_src_get_caps (GstBaseSrc * src, GstCaps * filter)</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">{</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  GstElementClass *gstelement_class;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(79, 129, 135);"><span style="color: #000000">  </span>GstOsxAudioSrc<span style="color: #000000"> *osxsrc;</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  GstPadTemplate *pad_template;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  GstCaps *caps;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  gint min, max;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  gstelement_class = GST_ELEMENT_GET_CLASS (src);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  osxsrc = <span style="color: #78492a">GST_OSX_AUDIO_SRC</span> (src);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  <span style="color: #bb2ca2">if</span> (osxsrc-><span style="color: #4f8187">deviceChannels</span> == -<span style="color: #272ad8">1</span>) {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>/* -1 means we don't know the number of channels yet.  for now, return</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);">     * template caps.</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0);">     */</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(187, 44, 162);"><span style="color: #000000">    </span>return<span style="color: #000000"> </span>NULL<span style="color: #000000">;</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  }</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><div style="margin: 0px;">  max = osxsrc->deviceChannels;</div><div style="margin: 0px;">  <span style="color: #bb2ca2">if</span> (max < <span style="color: #272ad8">1</span>)</div><div style="margin: 0px; color: rgb(0, 132, 0);"><span style="color: #000000">    max = </span><span style="color: #272ad8">1</span><span style="color: #000000">;                    </span>/* 0 channels means 1 channel? */</div><div style="margin: 0px; min-height: 13px;"><br></div><div style="margin: 0px;">  min = MIN (<span style="color: #272ad8">1</span>, max);</div><div style="margin: 0px; min-height: 13px;"><br></div><div style="margin: 0px;">  pad_template = gst_element_class_get_pad_template (gstelement_class, <span style="color: #d12f1b">"src"</span>);</div><div style="margin: 0px;">  g_return_val_if_fail (pad_template != <span style="color: #bb2ca2">NULL</span>, <span style="color: #bb2ca2">NULL</span>);</div><div style="margin: 0px; min-height: 13px;"><br></div><div style="margin: 0px;">  caps = gst_caps_copy (gst_pad_template_get_caps (pad_template));</div><div style="margin: 0px; min-height: 13px;"><br></div><div style="margin: 0px;">  <span style="color: #bb2ca2">if</span> (min == max) {</div><div style="margin: 0px;">    gst_caps_set_simple (caps, <span style="color: #d12f1b">"channels"</span>, G_TYPE_INT, max, <span style="color: #bb2ca2">NULL</span>);</div><div style="margin: 0px;">  } <span style="color: #bb2ca2">else</span> {</div><div style="margin: 0px;">    gst_caps_set_simple (caps, <span style="color: #d12f1b">"channels"</span>, GST_TYPE_INT_RANGE, min, max, <span style="color: #bb2ca2">NULL</span>);</div><div style="margin: 0px;">  }</div><div style="margin: 0px; min-height: 13px;"><br></div><div style="margin: 0px;">  <span style="color: #bb2ca2">return</span> caps;</div><div style="margin: 0px;">}</div></div><div><div>On 10 Nov 2013, at 08:18, Elio Francesconi <<a href="mailto:elio.francesconi@gmail.com">elio.francesconi@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">I’ve added logs about negotiated caps for: <div><span class="Apple-tab-span" style="white-space:pre">      </span>PIPELINE#1: gst_parse_launch("audiotestsrc ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! udpsink host=192.168.1.6 port=5011", &error);</div><div>and for this one:</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>PIPELINE#2: gst_parse_launch("osxaudiosrc ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! udpsink host=192.168.1.6 port=5011", &error);</div><div><div><div><br></div><div>I’ve tried to extract from logs section regarding capability negotiated starting form source ending on alawenc, this is the result:</div><div><br></div><div>PIPELINE#1(WORKING):</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.216090000 [336m 1073[00m  0xe2b8c00 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<audiotestsrc0:src>[00m query returned audio/x-raw, format=(string){ S16LE, S32LE, F32LE, F64LE }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]</b></div><div><br></div><div><b style="font-family: Menlo; font-size: 11px;">0:00:00.218543000 [336m 1073[00m  0xe2b8c00 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<audioconvert0:sink>[00m query returned audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]</b></div><div><br></div><div><b style="font-family: Menlo; font-size: 11px;">0:00:00.220093000 [336m 1073[00m  0xe2b8c00 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2815:GstCaps *gst_pad_peer_query_caps(GstPad *, GstCaps *):<audioconvert0:sink>[00m peer query returned audio/x-raw, format=(string){ S16LE, S32LE, F32LE, F64LE }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]</b></div><div><br></div><div><b style="font-family: Menlo; font-size: 11px;">0:00:00.221282000 [336m 1073[00m  0xe2b8c00 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<audioconvert0:src>[00m query returned audio/x-raw, format=(string){ S16LE, S32LE, F32LE, F64LE }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2 ]; audio/x-raw, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]</b></div><div><br></div><div><br></div><div><b style="font-family: Menlo; font-size: 11px;">0:00:00.221958000 [336m 1073[00m  0xe2b8c00 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<alawenc0:sink>[00m query returned audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 2 ]</b> </div><div><br></div><div><br></div><div>PIPELINE#2(NOTWORKING): </div>….</div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>finding pad in audioconvert0 compatible with osxaudiosrc0:src</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271008000 [335m 1018[00m  0xe940800 [36mINFO   [00m [00;01;31;41m            GST_PADS gstutils.c:936:gboolean gst_pad_check_link(GstPad *, GstPad *):[00m trying to link osxaudiosrc0:src and audioconvert0:sink</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271021000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2762:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<osxaudiosrc0:src>[00m get pad caps with filter (NULL)</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271039000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00m               query gstquery.c:680:GstQuery *gst_query_new_custom(GstQueryType, GstStructure *):[00m creating new query 0xe941a60 caps</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271212000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;31;41m            GST_PADS gstpad.c:3448:gboolean gst_pad_query(GstPad *, GstQuery *):<osxaudiosrc0:src>[00m doing query 0xe941a60 (caps)</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271263000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00m             basesrc gstbasesrc.c:1248:gboolean gst_base_src_default_query(GstBaseSrc *, GstQuery *):<osxaudiosrc0>[00m query caps returns 0</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271275000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;31;41m            GST_PADS gstpad.c:3470:gboolean gst_pad_query(GstPad *, GstQuery *):<osxaudiosrc0:src>[00m sent query 0xe941a60 (caps), result 0</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271286000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;31;41m            GST_PADS gstpad.c:3514:gboolean gst_pad_query(GstPad *, GstQuery *):<osxaudiosrc0:src>[00m query failed</b></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.271300000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2762:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<audioconvert0:sink>[00m get pad caps with filter (NULL)</b></div><div style="margin: 0px;"><b><font face="Menlo"><span style="font-size: 11px;">….</span></font></b></div><div style="margin: 0px;"><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;"><br><b></b></div><div><b><br></b></div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b>0:00:00.276255000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<audioconvert0:sink>[00m query returned audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]</b></div></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><b><br></b></div><div style="margin: 0px;"><div style="font-family: Menlo; font-size: 11px; margin: 0px;"><b>0:00:00.279536000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<audioconvert0:src>[00m query returned audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]</b></div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"><b><br></b></div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"><div style="margin: 0px;"><b>0:00:00.280053000 [335m 1018[00m  0xe940800 [37mDEBUG  [00m [00;01;34m            GST_CAPS gstutils.c:2769:GstCaps *gst_pad_query_caps(GstPad *, GstCaps *):<alawenc0:sink>[00m query returned audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 2 ]</b></div></div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"><b><br></b></div><div style="margin: 0px;"><br></div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"><b><br></b></div></div></div><div><div>On 09 Nov 2013, at 19:35, Sebastian Dröge <<a href="mailto:sebastian@centricular.com">sebastian@centricular.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">On Sa, 2013-11-09 at 19:19 +0100, Elio Francesconi wrote:<br><blockquote type="cite">Sorry Sebastian I did some tests but I’m not able to use properly capsfilter, but I did these tests:<br><br>this pipeline works very good:<br>gst_parse_launch("osxaudiosrc ! audioconvert ! audioresample ! autoaudiosink", &error);<br>this pipeline works too:<br>gst_parse_launch("audiotestsrc ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! udpsink host=192.168.1.6 port=5011", &error);<br><br>this one no:<br>gst_parse_launch("osxaudiosrc ! audioconvert ! audioresample ! alawenc ! rtppcmapay ! udpsink host=192.168.1.6 port=5011", &error);<br><br>then as you suggested, but I’m not confident have understood your suggestion I converted osxaudiosrc with capsfilter:<br>gst_parse_launch("osxaudiosrc !  audioconvert ! audio/x-raw,format=S16LE,channels=1,layout=interleaved,rate=8000 ! alawenc ! rtppcmapay ! udpsink host=192.168.1.6 port=5011", &error);<br><br>But it seems this caps filter doesn’t fix my issue…<br></blockquote><br>Yeah because you let the conversion be done by audioconvert, instead of<br>having osxaudiosrc negotiate to a different format. But from looking at<br>the code it only supports S32LE anyway (currently).<br><br>So what you could try is to check if osxaudiosrc negotiates to different<br>caps in the working and non-working case. For that you could for example<br>connect to the notify::caps signal on the srcpad of osxaudiosrc, and<br>from the callback there call gst_pad_get_current_caps() and then print<br>that.<br><br>Alternatively it's also printed in the debug logs somewhere :)<br><br>If the caps are the same, the problem will be elsewhere (also adding a<br>queue somewhere in the pipeline might be a good idea, like in front of<br>the encoder).<br><br>--<span class="Apple-converted-space"> </span><br>Sebastian Dröge <<a href="mailto:sebastian@centricular.com">sebastian@centricular.com</a>><br>Centricular Ltd -<span class="Apple-converted-space"> </span><a href="http://www.centricular.com/">http://www.centricular.com</a><br>Expertise, Straight from the Source<br>_______________________________________________<br>gstreamer-devel mailing list<br><a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br><a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></div></blockquote></div><br></div></div></div></blockquote></div><br></div></body></html>