<span>Enlightening. In that case, would audiobuffersplit be regarded as more of a debugging tool / hack to test if pipeline works?  </span><br><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 19, 2019, 12:56 AM Sebastian Dröge <<a href="mailto:sebastian@centricular.com">sebastian@centricular.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, 2019-02-19 at 00:36 -0800, Casey Waldren wrote:<br>
> Given an audio source that produces audio in N byte chunks, and a<br>
> downstream element that consumes chunks of N*4 bytes, what is the<br>
> best way to link these elements?<br>
> <br>
> I have encountered this problem with a plugin that transforms audio<br>
> from 4 to 2 channels. Gstreamer seems to lack docs on the topic of<br>
> block sizes, so I feel like I have missed some important knowledge<br>
> about how audio sources are supposed to operate.<br>
> <br>
> I could change the audio source to produce these fixed sized blocks,<br>
> or the downstream element to accept smaller blocks and accumulate<br>
> them, e.g. with a GstAdapter. This seems brittle and sounds like a<br>
> general purpose plugin should be provided for this purpose. Is that<br>
> audiobuffersplit, or is there some other technique? <br>
<br>
The correct solution here is to use e.g. a GstAdapter in the downstream<br>
element to be able to accept any block size. audio/x-raw caps require<br>
nothing from the block size of buffers (other than being the same<br>
amount of samples for each channel), and the size of buffers can also<br>
change between buffer and buffer.<br>
Generally, it's a bug in an element if it can't handle raw audio<br>
buffers of arbitrary size.<br>
<br>
<br>
An alternative would be to define a different caps for this that would<br>
allow negotiating a specific block size and elements using those caps<br>
would then ensure to only produce/consume buffers of that size.<br>
<br>
-- <br>
Sebastian Dröge, Centricular Ltd · <a href="https://www.centricular.com" rel="noreferrer" target="_blank">https://www.centricular.com</a><br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></blockquote></div>