Unable to stream 16bit wav file to speaker

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

Unable to stream 16bit wav file to speaker

Myzhar
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--

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

Re: Unable to stream 16bit wav file to speaker

Stefan Sauer
On 12/05/2016 02:53 PM, Walter Lucetti wrote:
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Are you sure the 16bit wav file is well formed? According to the output gstreamer plays it as 8bit, which explains the noise. Can you share this file?

Stefan

/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--
Walter Lucetti

email: [hidden email]
web: www.robot-home.it



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



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

Re: Unable to stream 16bit wav file to speaker

Myzhar
Hi Stefan,

the file is generated by a text-to-speech application and on VLC the properties are correct:
PCM S16LE
Mono
22050Hz
16 bit

You can check it downloading from here:
https://www.dropbox.com/s/j68n82e04j4ljjy/00000002.wav?dl=0

Thank you for your help
Walter


2016-12-05 16:58 GMT+01:00 Stefan Sauer <[hidden email]>:
On 12/05/2016 02:53 PM, Walter Lucetti wrote:
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Are you sure the 16bit wav file is well formed? According to the output gstreamer plays it as 8bit, which explains the noise. Can you share this file?

Stefan

/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--
Walter Lucetti

email: [hidden email]
web: www.robot-home.it



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



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




--

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

Re: Unable to stream 16bit wav file to speaker

Stefan Sauer
On 12/05/2016 05:26 PM, Walter Lucetti wrote:
Hi Stefan,

the file is generated by a text-to-speech application and on VLC the properties are correct:
PCM S16LE
Mono
22050Hz
16 bit

You can check it downloading from here:
https://www.dropbox.com/s/j68n82e04j4ljjy/00000002.wav?dl=0

Thank you for your help
Walter

I can confirm, that the file is not handled porperly and sounds distorted. Will fix it.

Stefan


2016-12-05 16:58 GMT+01:00 Stefan Sauer <[hidden email]>:
On 12/05/2016 02:53 PM, Walter Lucetti wrote:
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Are you sure the 16bit wav file is well formed? According to the output gstreamer plays it as 8bit, which explains the noise. Can you share this file?

Stefan

/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--
Walter Lucetti

email: [hidden email]
web: www.robot-home.it



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

_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Walter Lucetti email: [hidden email] web: www.robot-home.it
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


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

Re: Unable to stream 16bit wav file to speaker

Stefan Sauer
On 12/08/2016 03:12 PM, Stefan Sauer wrote:
On 12/05/2016 05:26 PM, Walter Lucetti wrote:
Hi Stefan,

the file is generated by a text-to-speech application and on VLC the properties are correct:
PCM S16LE
Mono
22050Hz
16 bit

You can check it downloading from here:
https://www.dropbox.com/s/j68n82e04j4ljjy/00000002.wav?dl=0

Thank you for your help
Walter

I can confirm, that the file is not handled porperly and sounds distorted. Will fix it.

Stefan
Actually the file is broken. These are the header parameters:
blockalign = 1
width      = 8
depth      = 16
av_bps     = 22050
frequency  = 22050
channels   = 1
bytes_per_sample = 1
bps        = 22050
caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

From various places you can check the wav format spec:
http://soundfile.sapp.org/doc/WaveFormat/
BlockAlign       == NumChannels * BitsPerSample/8
                               The number of bytes for one sample including
                               all channels.

The issue is that blockalign=1, but for 16bit, it must be >= 2. We can probably add a workaround, not sure what others think. If you can please also report to the software that created the file.

Stefan



2016-12-05 16:58 GMT+01:00 Stefan Sauer <[hidden email]>:
On 12/05/2016 02:53 PM, Walter Lucetti wrote:
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Are you sure the 16bit wav file is well formed? According to the output gstreamer plays it as 8bit, which explains the noise. Can you share this file?

Stefan

/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--
Walter Lucetti

email: [hidden email]
web: www.robot-home.it



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

_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Walter Lucetti email: [hidden email] web: www.robot-home.it
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

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


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

Re: Unable to stream 16bit wav file to speaker

Stefan Sauer
On 12/08/2016 03:48 PM, Stefan Sauer wrote:
On 12/08/2016 03:12 PM, Stefan Sauer wrote:
On 12/05/2016 05:26 PM, Walter Lucetti wrote:
Hi Stefan,

the file is generated by a text-to-speech application and on VLC the properties are correct:
PCM S16LE
Mono
22050Hz
16 bit

You can check it downloading from here:
https://www.dropbox.com/s/j68n82e04j4ljjy/00000002.wav?dl=0

Thank you for your help
Walter

I can confirm, that the file is not handled porperly and sounds distorted. Will fix it.

Stefan
Actually the file is broken. These are the header parameters:
blockalign = 1
width      = 8
depth      = 16
av_bps     = 22050
frequency  = 22050
channels   = 1
bytes_per_sample = 1
bps        = 22050
caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Oh, and also the avg_bps is wrong. Needs to be 44100 for 16bit.

Stefan


From various places you can check the wav format spec:
http://soundfile.sapp.org/doc/WaveFormat/
BlockAlign       == NumChannels * BitsPerSample/8
                               The number of bytes for one sample including
                               all channels.

The issue is that blockalign=1, but for 16bit, it must be >= 2. We can probably add a workaround, not sure what others think. If you can please also report to the software that created the file.

Stefan



2016-12-05 16:58 GMT+01:00 Stefan Sauer <[hidden email]>:
On 12/05/2016 02:53 PM, Walter Lucetti wrote:
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Are you sure the 16bit wav file is well formed? According to the output gstreamer plays it as 8bit, which explains the noise. Can you share this file?

Stefan

/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--
Walter Lucetti

email: [hidden email]
web: www.robot-home.it



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

_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Walter Lucetti email: [hidden email] web: www.robot-home.it
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

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

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


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

Re: Unable to stream 16bit wav file to speaker

Myzhar
Thank you Stefan,

The file has been generated by the a software written by a colleague of mine. He told me that he found one problem in the header, but Monday (4 days of holydays here in Italy) I will say to him that the problems were two.

Thank you very much for the help

Regards
Walter


Il 08 Dic 2016 15:50, "Stefan Sauer" <[hidden email]> ha scritto:
On 12/08/2016 03:48 PM, Stefan Sauer wrote:
On 12/08/2016 03:12 PM, Stefan Sauer wrote:
On 12/05/2016 05:26 PM, Walter Lucetti wrote:
Hi Stefan,

the file is generated by a text-to-speech application and on VLC the properties are correct:
PCM S16LE
Mono
22050Hz
16 bit

You can check it downloading from here:
https://www.dropbox.com/s/j68n82e04j4ljjy/00000002.wav?dl=0

Thank you for your help
Walter

I can confirm, that the file is not handled porperly and sounds distorted. Will fix it.

Stefan
Actually the file is broken. These are the header parameters:
blockalign = 1
width      = 8
depth      = 16
av_bps     = 22050
frequency  = 22050
channels   = 1
bytes_per_sample = 1
bps        = 22050
caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Oh, and also the avg_bps is wrong. Needs to be 44100 for 16bit.

Stefan



From various places you can check the wav format spec:
http://soundfile.sapp.org/doc/WaveFormat/
BlockAlign       == NumChannels * BitsPerSample/8
                               The number of bytes for one sample including
                               all channels.

The issue is that blockalign=1, but for 16bit, it must be >= 2. We can probably add a workaround, not sure what others think. If you can please also report to the software that created the file.

Stefan



2016-12-05 16:58 GMT+01:00 Stefan Sauer <[hidden email]>:
On 12/05/2016 02:53 PM, Walter Lucetti wrote:
Hi all,

I have a problem with GStreamer 1.9.90 and a 16bit PCM mono channel wave file to be played.

I'm using this very simple pipeline that works very well with 8bit file:

gst-launch-1.0.exe filesrc location="C:/Users/walter/Desktop/00000002.wav" ! decodebin ! audioresample ! audioconvert ! autoaudiosink -v -e

With 16 bit file (S16LE to be precise) the output is a long noise.

this is the output I obtain with "-v" option... I notice that recognized format il "8U", but I'm not able to force it to 16bit anyway:

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050

Are you sure the 16bit wav file is well formed? According to the output gstreamer plays it as 8bit, which explains the noise. Can you share this file?

Stefan

/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Redistribute latency...
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstDirectSoundSink:autoaudiosink0-actual-sink-directsound.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstAudioResample:audioresample0.GstPad:sink: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstDecodePad:src_0.GstProxyPad:proxypad2: caps = audio/x-raw, format=(string)U8, layout=(string)interleaved, channels=(int)1, rate=(int)22050
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
handling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:03.745515003
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


Thank you for help
Walter

--
Walter Lucetti

email: [hidden email]
web: www.robot-home.it



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

_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Walter Lucetti email: [hidden email] web: www.robot-home.it
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

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

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


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



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Walter Lucetti
www.myzhar.com