cutter with vorbis or opus: not-negotiated error

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

cutter with vorbis or opus: not-negotiated error

Antoine Martin
Hi,

I'm trying to use the cutter element before either vorbisenc or opusenc
but I consistently get the "not-negotiated" error.
The same pipeline works just fine with most other audio encoders.

Examples that work fine:
gst-launch-1.0 audiotestsrc ! cutter ! lamemp3enc ! fakesink
Same pipeline also works with flacenc, wavenc, speexenc, faac..

Now the more detailed output with the ones that don't work:
gst-launch-1.0 -vtm audiotestsrc ! cutter ! vorbisenc  ! fakesink
WARNING: erroneous pipeline: could not link cutter0 to vorbisenc0

gst-launch-1.0 -vtm audiotestsrc ! cutter ! wavpackenc ! fakesink
WARNING: erroneous pipeline: could not link cutter0 to wavpackenc0

gst-launch-1.0 -v audiotestsrc ! cutter ! opusenc ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0.GstPad:src: caps =
audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstCutter:cutter0.GstPad:src: caps = audio/x-raw,
format=(string)S16LE, layout=(string)interleaved, rate=(int)44100,
channels=(int)1
/GstPipeline:pipeline0/GstCutter:cutter0.GstPad:sink: caps =
audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)44100, channels=(int)1
ERROR: from element
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0: Internal data
stream error.
Additional debug info:
gstbasesrc.c(2939): gst_base_src_loop ():
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...


What do I need to do to make it work?
(my actual pipeline usually gets its src from pulsesrc)

Thanks
Antoine
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: cutter with vorbis or opus: not-negotiated error

Yasushi SHOJI-2
Hi,

On Fri, Sep 8, 2017 at 7:05 PM, Antoine Martin <[hidden email]> wrote:
> I'm trying to use the cutter element before either vorbisenc or opusenc
> but I consistently get the "not-negotiated" error.
> The same pipeline works just fine with most other audio encoders.
>
> Examples that work fine:
> gst-launch-1.0 audiotestsrc ! cutter ! lamemp3enc ! fakesink
> Same pipeline also works with flacenc, wavenc, speexenc, faac..

those encoders supports

      audio/x-raw
                 format: { (string)S8, (string)S16LE }

which is the format cutter's src pad supports.  You can check that
with

    $ gst-inspect-1.0 cutter

> Now the more detailed output with the ones that don't work:
> gst-launch-1.0 -vtm audiotestsrc ! cutter ! vorbisenc  ! fakesink
> WARNING: erroneous pipeline: could not link cutter0 to vorbisenc0
>
> gst-launch-1.0 -vtm audiotestsrc ! cutter ! wavpackenc ! fakesink
> WARNING: erroneous pipeline: could not link cutter0 to wavpackenc0

These encoders don't supports S8 nor S16LE, but F32LE or S32LE.
You need to convert the format with 'audioconvert'

    $ gst-launch-1.0  audiotestsrc ! cutter ! audioconvert ! fakesink
--
              yashi
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: cutter with vorbis or opus: not-negotiated error

Antoine Martin
On 11/09/17 09:15, Yasushi SHOJI wrote:

> Hi,
>
> On Fri, Sep 8, 2017 at 7:05 PM, Antoine Martin <[hidden email]> wrote:
>> I'm trying to use the cutter element before either vorbisenc or opusenc
>> but I consistently get the "not-negotiated" error.
>> The same pipeline works just fine with most other audio encoders.
>>
>> Examples that work fine:
>> gst-launch-1.0 audiotestsrc ! cutter ! lamemp3enc ! fakesink
>> Same pipeline also works with flacenc, wavenc, speexenc, faac..
>
> those encoders supports
>
>       audio/x-raw
>                  format: { (string)S8, (string)S16LE }
>
> which is the format cutter's src pad supports.  You can check that
> with
>
>     $ gst-inspect-1.0 cutter
>
>> Now the more detailed output with the ones that don't work:
>> gst-launch-1.0 -vtm audiotestsrc ! cutter ! vorbisenc  ! fakesink
>> WARNING: erroneous pipeline: could not link cutter0 to vorbisenc0
>>
>> gst-launch-1.0 -vtm audiotestsrc ! cutter ! wavpackenc ! fakesink
>> WARNING: erroneous pipeline: could not link cutter0 to wavpackenc0
>
> These encoders don't supports S8 nor S16LE, but F32LE or S32LE.
> You need to convert the format with 'audioconvert'
>
>     $ gst-launch-1.0  audiotestsrc ! cutter ! audioconvert ! fakesink
>
Thanks!
I swear that adding audioconvert was the first thing I had tried.
It must have been in the wrong place, or with opus:
$ gst-launch-1.0  audiotestsrc ! cutter ! audioconvert ! opusenc ! fakesink
ERROR: from element
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0: Internal data
stream error.

That's because opus needs an "audioresample" element instead:
$ gst-launch-1.0  audiotestsrc ! cutter ! audioresample ! opusenc ! fakesink

Now I wished I could say that the problem is completely solved with the
other codecs (vorbis, wavpack, etc) but unfortunately I am seeing a
different issue when adding a muxer to the pipeline (could be related to
our use of appsink + appsrc in between) - which I will ignore for now
since I have at least one decent codec that works well.

Thanks again,
Antoine
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel