Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > E-Book Readers > Amazon Kindle > Kindle Developer's Corner

Notices

Reply
 
Thread Tools Search this Thread
Old 04-11-2020, 01:48 AM   #31
geek1011
Wizard
geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.
 
Posts: 2,735
Karma: 6987557
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
I've extracted it from the latest update package. Also, gst-launch is present.

Code:
$ find update_kindle_all_new_paperwhite_v2_5.12.4 | grep -e gst-launch -e mixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/share/alsa/smixer.conf
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/gst-launch-0.10
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/alsamixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/amixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/gst-launch
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/gstreamer-0.10/libgstmixersink.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/gstreamer-0.10/libgstmixersink.so.1.0
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/gstreamer-0.10/libgstmixersink.so.1
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerCommon.so.1
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerCommon.so.1.0
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer/smixer-ac97.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer/smixer-hda.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer/smixer-sbase.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerAPI.so.1
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerCommon.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerAPI.so.1.0
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerAPI.so
The interface seems simple enough to use directly with dlsym. The lib seems to support both C++ (mixer::*) and C (Mixer*).

The easiest way to use it would probably to write an output adapter for miniaudio (a single-file C audio lib) or to use it through gstreamer (with gst-launch or directly).

Some random notes:
- It's thread-safe.
- The C interface is just a wrapper for the C++ one.
- /var/run/mixer
- */mstream

Try something like:
cat raw_audio_s16le_4800.bin | /usr/bin/gst-launch filesrc location=/dev/stdin ! rawaudioparse use-sink-caps=false format=pcm pcm-format=s16le sample-rate=48000 ! audioconvert ! audioresample ! mixersink
where raw_audio_s16le_4800.bin is raw audio from something like:
ffmpeg -i audio.file -f s16le -acodec pcm_s16le -ac 2 -ar 48000 raw_audio_s16le_4800.bin

Or, compile this, and run something like:
./audioconverter audio.file /dev/stdout | /usr/bin/gst-launch filesrc location=/dev/stdin ! wavparse ! audioconvert ! audioresample ! mixersink

libaudioclient (used by libasrEarcon) seems to have a higher-lever wrapper around libmixerAPI which supports playing WAV files. It should be simple enough to adapt it to play anything. /usr/bin/ivonattsd makes use of this.

Some more notes on libmixerAPI usage:
- MixerOpenPlay returns 1 (failure) or 0 (success).
- You need to use MixerGetSampleSizeBits to get the current bit depth (i.e. 16-bit).
- To play samples, do MixerGetBufPlay, memcpy the samples, then MixerReleaseBufPlay.
- MixerWaitTillAudioProcessed waits until the buffer has been emptied (i.e. to play audio, loop between MixerWaitTillAudioProcessed/MixerGetBufPlay/memcpy/MixerReleaseBufPlay/decode until there isn't any more audio left to play).
- MixerClose takes the address of the mixer and destroys it.
- If you use libaudioclient instead, it's as simple as audio_initializeStream/audio_playWaveSamples/audio_waitForCompletion/audio_destroyStream).

Last edited by geek1011; 04-11-2020 at 03:56 PM.
geek1011 is offline   Reply With Quote
Old 04-11-2020, 03:59 AM   #32
geek1011
Wizard
geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.
 
Posts: 2,735
Karma: 6987557
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
Some more stuff about libmixerAPI:
- void* MixerOpenPlay(int rate, int channels, int sampleSize, const char* something)
- Note: something is "Music" if null, idk exactly what it's being used for yet.
- void MixerClose(void* mixer)
- int MixerGetBufPlay(void* mixer, uint8_t** buf_ptr_out, int* buf_size_out)
- Returns 0 on success, 1 on failure.
- void MixerReleaseBufPlay(void* mixer, int n_written, uint8_t* buf_ptr)
- These params are mostly just educated guesses (I haven't gone through the disassembly in detail yet).
- void* MixerWaitTillAudioProcessed(void* mixer)
- I haven't figured out the return type yet.
- void MixerDrain(void* mixer)
- void MixerFlush(???)
- I haven't figured out the params yet.

Note: This is purely based on static analysis, so it's all untested. Even so, this should be enough to link with (or dlopen) libmixerAPI and play raw PCM signed integer samples.

Last edited by geek1011; 04-11-2020 at 04:05 AM.
geek1011 is offline   Reply With Quote
Advert
Old 04-12-2020, 12:39 PM   #33
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
Quote:
Originally Posted by geek1011 View Post
I've extracted it from the latest update package. Also, gst-launch is present.

Code:
$ find update_kindle_all_new_paperwhite_v2_5.12.4 | grep -e gst-launch -e mixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/share/alsa/smixer.conf
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/gst-launch-0.10
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/alsamixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/amixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/bin/gst-launch
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/gstreamer-0.10/libgstmixersink.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/gstreamer-0.10/libgstmixersink.so.1.0
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/gstreamer-0.10/libgstmixersink.so.1
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerCommon.so.1
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerCommon.so.1.0
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer/smixer-ac97.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer/smixer-hda.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/alsa-lib/smixer/smixer-sbase.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerAPI.so.1
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerCommon.so
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerAPI.so.1.0
update_kindle_all_new_paperwhite_v2_5.12.4/fwo_rootfs/usr/lib/libmixerAPI.so
The interface seems simple enough to use directly with dlsym. The lib seems to support both C++ (mixer::*) and C (Mixer*).

The easiest way to use it would probably to write an output adapter for miniaudio (a single-file C audio lib) or to use it through gstreamer (with gst-launch or directly).

Some random notes:
- It's thread-safe.
- The C interface is just a wrapper for the C++ one.
- /var/run/mixer
- */mstream

Try something like:
cat raw_audio_s16le_4800.bin | /usr/bin/gst-launch filesrc location=/dev/stdin ! rawaudioparse use-sink-caps=false format=pcm pcm-format=s16le sample-rate=48000 ! audioconvert ! audioresample ! mixersink
where raw_audio_s16le_4800.bin is raw audio from something like:
ffmpeg -i audio.file -f s16le -acodec pcm_s16le -ac 2 -ar 48000 raw_audio_s16le_4800.bin

Or, compile this, and run something like:
./audioconverter audio.file /dev/stdout | /usr/bin/gst-launch filesrc location=/dev/stdin ! wavparse ! audioconvert ! audioresample ! mixersink

libaudioclient (used by libasrEarcon) seems to have a higher-lever wrapper around libmixerAPI which supports playing WAV files. It should be simple enough to adapt it to play anything. /usr/bin/ivonattsd makes use of this.

Some more notes on libmixerAPI usage:
- MixerOpenPlay returns 1 (failure) or 0 (success).
- You need to use MixerGetSampleSizeBits to get the current bit depth (i.e. 16-bit).
- To play samples, do MixerGetBufPlay, memcpy the samples, then MixerReleaseBufPlay.
- MixerWaitTillAudioProcessed waits until the buffer has been emptied (i.e. to play audio, loop between MixerWaitTillAudioProcessed/MixerGetBufPlay/memcpy/MixerReleaseBufPlay/decode until there isn't any more audio left to play).
- MixerClose takes the address of the mixer and destroys it.
- If you use libaudioclient instead, it's as simple as audio_initializeStream/audio_playWaveSamples/audio_waitForCompletion/audio_destroyStream).


From your research I agree that libaudioclient appears to be the simplest approach. As from my earlier post, I had planned to use mplayer to originate the audio stream. I should be able to get mplayer to pipe a stream in WAV format, but I guess I will need a program to accept it and pass it on via libaudioclient. What resources available on the pw4 can be used for this purpose? As you noted ivonattsd makes use of libaudioclient, but it is dedicated for another purpose. I assume that there is no existing program on the pw4 right now that will address this problem, so one will need to be built.

Dave

Last edited by dhdurgee; 04-12-2020 at 12:41 PM. Reason: typo
dhdurgee is offline   Reply With Quote
Old 04-12-2020, 12:46 PM   #34
geek1011
Wizard
geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.
 
Posts: 2,735
Karma: 6987557
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
Quote:
Originally Posted by dhdurgee View Post
From your research I agree that libaudioclient appears to be the simplest approach. As from my earlier post, I had planned to use mplayer to originate the audio stream. I should be able to get mplayer to pipe a stream in WAV format, but I guess I will need a program to accept it and pass it on via libaudioclient. What resources available on the pw4 can be used for this purpose? As you noted ivonattsd makes use of libaudioclient, but it is dedicated for another purpose. I assume that there is no existing program on the pw4 right now that will address this problem, so one will need to be built.
Dave, did you try the gstreamer command I gave you? That takes raw audio piped into it, and plays it through libgstmixersink (which uses libmixerAPI).
geek1011 is offline   Reply With Quote
Old 04-12-2020, 05:11 PM   #35
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
Quote:
Originally Posted by geek1011 View Post
Dave, did you try the gstreamer command I gave you? That takes raw audio piped into it, and plays it through libgstmixersink (which uses libmixerAPI).
I just took a shot at this with a few variations. It appears ffmpeg isn't on the pw4, but I believe I was able to accomplish the same thing with mplayer as:

Code:
[root@kindle mplayer]# ./mplayer -v -ao pcm -format s16le -af resample=48000 /mnt/us/music/01-Diamond_Star.mp3
MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team
CPU: ARM
get_path('codecs.conf') -> '/tmp/root/.mplayer/codecs.conf'
Reading /tmp/root/.mplayer/codecs.conf: Can't open '/tmp/root/.mplayer/codecs.conf': No such file or directory
Reading /opt/kindle/etc/mplayer/codecs.conf: Can't open '/opt/kindle/etc/mplayer/codecs.conf': No such file or directory
Using built-in default codecs.conf.
Configuration: --prefix=/opt/kindle --enable-cross-compile --enable-armv6 --target=arm-linux --host-cc=gcc --cc=arm-kindle-linux-gnueabi-cc --as=arm-kindle-linux-gnueabi-as --nm=arm-kindle-linux-gnueabi-nm --ranlib=arm-kindle-linux-gnueabi-ranlib --disable-mencoder --disable-libdvdcss-internal --disable-dvdread-internal --disable-tv --disable-tga --disable-dvb --disable-v4l2 --disable-yuv4mpeg
CommandLine: '-v' '-ao' 'pcm' '-format' 's16le' '-af' 'resample=48000' '/mnt/us/music/01-Diamond_Star.mp3'
get_path('font/font.desc') -> '/tmp/root/.mplayer/font/font.desc'
font: can't open file: /tmp/root/.mplayer/font/font.desc
font: can't open file: /opt/kindle/share/mplayer/font/font.desc
Using Unoptimized OnScreenDisplay
Using nanosleep() timing
get_path('input.conf') -> '/tmp/root/.mplayer/input.conf'
Can't open input config file /tmp/root/.mplayer/input.conf: No such file or directory
Can't open input config file /opt/kindle/etc/mplayer/input.conf: No such file or directory
Falling back on default (hardcoded) input config
get_path('01-Diamond_Star.mp3.conf') -> '/tmp/root/.mplayer/01-Diamond_Star.mp3.conf'

Playing /mnt/us/music/01-Diamond_Star.mp3.
get_path('sub/') -> '/tmp/root/.mplayer/sub/'
[file] File size is 4975194 bytes
STREAM: [file] /mnt/us/music/01-Diamond_Star.mp3
STREAM: Description: File
STREAM: Author: Albeu
STREAM: Comment: based on the code from ??? (probably Arpi)
LAVF_check: MPEG audio layer 2/3
Checking for YUV4MPEG2
ASF_check: not ASF guid!
Checking for REAL
Checking for SMJPEG
Searching demuxer type for filename /mnt/us/music/01-Diamond_Star.mp3 ext: .mp3
Trying demuxer 17 based on filename extension
==> Found audio stream: 0
demux_audio: seeking from 0x4BEA5A to start pos 0x1184
demux_audio: audio data 0x1184 - 0x4BE9DA  
Audio only file format detected.
Clip info:
 Title: Diamond Star
 Artist: Point Valid with Catherine A..
 Album: Diamond Star
 Year: 2009
 Comment: Track 1
 Track: 1
 Genre: Alternative Rock
get_path('sub/') -> '/tmp/root/.mplayer/sub/'
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
dec_audio: Allocating 4608 + 65536 = 70144 bytes for output buffer.
mp3lib: using generic C decore!
MP3lib: init layer2&3 finished, tables done
MPEG 1.0, Layer III, 44100 Hz 128 kbit Joint-Stereo, BPF: 417
Channels: 2, copyright: No, original: Yes, CRC: No, emphasis: 0
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
Building audio filter chain for 44100Hz/2ch/s16le -> 0Hz/0ch/s16le...
[libaf] Adding filter resample 
[resample] Changing sample rate to 48000Hz
[resample] Using integer processing and inexact frequecy conversion.
[resample] New filter designed up: 160 down: 147
[resample] Using integer processing and inexact frequecy conversion.
Trying preferred audio driver 'pcm', options '[none]'
[AO PCM] File: audiodump.wav (WAVE)
PCM: Samplerate: 48000Hz Channels: Stereo Format s16le
[AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast
[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
AO: [pcm] 48000Hz 2ch s16le (2 bytes per sample)
AO: Description: RAW PCM/WAVE file writer audio output
AO: Author: Atmosfear
Building audio filter chain for 44100Hz/2ch/s16le -> 48000Hz/2ch/s16le...
[resample] Using integer processing and inexact frequecy conversion.
[resample] Using integer processing and inexact frequecy conversion.
Video: no video
Freeing 0 unused video chunks.
Starting playback...
[libaf] Reallocating memory in module resample, old len = 0, new len = 67714
Increasing filtered audio buffer size from 0 to 67712
Increasing filtered audio buffer size from 67712 to 67724                                                                           
Increasing filtered audio buffer size from 67724 to 67740                                                                           
Increasing filtered audio buffer size from 67740 to 67752                                                                           
ds_fill_buffer: EOF reached (stream: audio)                                                                                         
ds_fill_buffer: EOF reached (stream: audio)                                                                                         
EOF code: 1  26.9) of 310.0 (05:10.0) 22.4%                                                                                         

Uninit audio filters...
[libaf] Removing filter resample 
Uninit audio: mp3lib

Exiting... (End of file)
So I believe I had a good file to try, but unfortuantely when I did:

Code:
[root@kindle mplayer]# cat audiodump.wav | /usr/bin/gst-launch filesrc location=/dev/stdin ! rawaudioparse use-sink-caps=false forma
t=pcm pcm-format=s16le sample-rate=48000 ! audioconvert ! audioresample ! mixersink
WARNING: erroneous pipeline: no element "rawaudioparse"
[root@kindle mplayer]#
What next?

Dave

PS: I thought to try editing down the pipeline and got:

Code:
[root@kindle mplayer]# cat audiodump.wav | /usr/bin/gst-launch filesrc location=/dev/stdin ! mixersink
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/MixerSink:mixersink0: The stream is in the wrong format.
Additional debug info:
gstbaseaudiosink.c(836): gst_base_audio_sink_preroll (): /GstPipeline:pipeline0/MixerSink:mixersink0:
sink not negotiated.
Execution ended after 4387667 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
[root@kindle mplayer]#

Last edited by dhdurgee; 04-12-2020 at 05:15 PM.
dhdurgee is offline   Reply With Quote
Advert
Old 04-12-2020, 11:48 PM   #36
geek1011
Wizard
geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.
 
Posts: 2,735
Karma: 6987557
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
Quote:
Originally Posted by dhdurgee View Post
I just took a shot at this with a few variations. It appears ffmpeg isn't on the pw4, but I believe I was able to accomplish the same thing with mplayer as:

Code:
[root@kindle mplayer]# ./mplayer -v -ao pcm -format s16le -af resample=48000 /mnt/us/music/01-Diamond_Star.mp3
MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team
CPU: ARM
get_path('codecs.conf') -> '/tmp/root/.mplayer/codecs.conf'
Reading /tmp/root/.mplayer/codecs.conf: Can't open '/tmp/root/.mplayer/codecs.conf': No such file or directory
Reading /opt/kindle/etc/mplayer/codecs.conf: Can't open '/opt/kindle/etc/mplayer/codecs.conf': No such file or directory
Using built-in default codecs.conf.
Configuration: --prefix=/opt/kindle --enable-cross-compile --enable-armv6 --target=arm-linux --host-cc=gcc --cc=arm-kindle-linux-gnueabi-cc --as=arm-kindle-linux-gnueabi-as --nm=arm-kindle-linux-gnueabi-nm --ranlib=arm-kindle-linux-gnueabi-ranlib --disable-mencoder --disable-libdvdcss-internal --disable-dvdread-internal --disable-tv --disable-tga --disable-dvb --disable-v4l2 --disable-yuv4mpeg
CommandLine: '-v' '-ao' 'pcm' '-format' 's16le' '-af' 'resample=48000' '/mnt/us/music/01-Diamond_Star.mp3'
get_path('font/font.desc') -> '/tmp/root/.mplayer/font/font.desc'
font: can't open file: /tmp/root/.mplayer/font/font.desc
font: can't open file: /opt/kindle/share/mplayer/font/font.desc
Using Unoptimized OnScreenDisplay
Using nanosleep() timing
get_path('input.conf') -> '/tmp/root/.mplayer/input.conf'
Can't open input config file /tmp/root/.mplayer/input.conf: No such file or directory
Can't open input config file /opt/kindle/etc/mplayer/input.conf: No such file or directory
Falling back on default (hardcoded) input config
get_path('01-Diamond_Star.mp3.conf') -> '/tmp/root/.mplayer/01-Diamond_Star.mp3.conf'

Playing /mnt/us/music/01-Diamond_Star.mp3.
get_path('sub/') -> '/tmp/root/.mplayer/sub/'
[file] File size is 4975194 bytes
STREAM: [file] /mnt/us/music/01-Diamond_Star.mp3
STREAM: Description: File
STREAM: Author: Albeu
STREAM: Comment: based on the code from ??? (probably Arpi)
LAVF_check: MPEG audio layer 2/3
Checking for YUV4MPEG2
ASF_check: not ASF guid!
Checking for REAL
Checking for SMJPEG
Searching demuxer type for filename /mnt/us/music/01-Diamond_Star.mp3 ext: .mp3
Trying demuxer 17 based on filename extension
==> Found audio stream: 0
demux_audio: seeking from 0x4BEA5A to start pos 0x1184
demux_audio: audio data 0x1184 - 0x4BE9DA  
Audio only file format detected.
Clip info:
 Title: Diamond Star
 Artist: Point Valid with Catherine A..
 Album: Diamond Star
 Year: 2009
 Comment: Track 1
 Track: 1
 Genre: Alternative Rock
get_path('sub/') -> '/tmp/root/.mplayer/sub/'
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
dec_audio: Allocating 4608 + 65536 = 70144 bytes for output buffer.
mp3lib: using generic C decore!
MP3lib: init layer2&3 finished, tables done
MPEG 1.0, Layer III, 44100 Hz 128 kbit Joint-Stereo, BPF: 417
Channels: 2, copyright: No, original: Yes, CRC: No, emphasis: 0
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
Building audio filter chain for 44100Hz/2ch/s16le -> 0Hz/0ch/s16le...
[libaf] Adding filter resample 
[resample] Changing sample rate to 48000Hz
[resample] Using integer processing and inexact frequecy conversion.
[resample] New filter designed up: 160 down: 147
[resample] Using integer processing and inexact frequecy conversion.
Trying preferred audio driver 'pcm', options '[none]'
[AO PCM] File: audiodump.wav (WAVE)
PCM: Samplerate: 48000Hz Channels: Stereo Format s16le
[AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast
[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
AO: [pcm] 48000Hz 2ch s16le (2 bytes per sample)
AO: Description: RAW PCM/WAVE file writer audio output
AO: Author: Atmosfear
Building audio filter chain for 44100Hz/2ch/s16le -> 48000Hz/2ch/s16le...
[resample] Using integer processing and inexact frequecy conversion.
[resample] Using integer processing and inexact frequecy conversion.
Video: no video
Freeing 0 unused video chunks.
Starting playback...
[libaf] Reallocating memory in module resample, old len = 0, new len = 67714
Increasing filtered audio buffer size from 0 to 67712
Increasing filtered audio buffer size from 67712 to 67724                                                                           
Increasing filtered audio buffer size from 67724 to 67740                                                                           
Increasing filtered audio buffer size from 67740 to 67752                                                                           
ds_fill_buffer: EOF reached (stream: audio)                                                                                         
ds_fill_buffer: EOF reached (stream: audio)                                                                                         
EOF code: 1  26.9) of 310.0 (05:10.0) 22.4%                                                                                         

Uninit audio filters...
[libaf] Removing filter resample 
Uninit audio: mp3lib

Exiting... (End of file)
So I believe I had a good file to try, but unfortuantely when I did:

Code:
[root@kindle mplayer]# cat audiodump.wav | /usr/bin/gst-launch filesrc location=/dev/stdin ! rawaudioparse use-sink-caps=false forma
t=pcm pcm-format=s16le sample-rate=48000 ! audioconvert ! audioresample ! mixersink
WARNING: erroneous pipeline: no element "rawaudioparse"
[root@kindle mplayer]#
What next?

Dave

PS: I thought to try editing down the pipeline and got:

Code:
[root@kindle mplayer]# cat audiodump.wav | /usr/bin/gst-launch filesrc location=/dev/stdin ! mixersink
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/MixerSink:mixersink0: The stream is in the wrong format.
Additional debug info:
gstbaseaudiosink.c(836): gst_base_audio_sink_preroll (): /GstPipeline:pipeline0/MixerSink:mixersink0:
sink not negotiated.
Execution ended after 4387667 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
[root@kindle mplayer]#
Ok, that looks promising. I guess gstreamer is too old for rawaudioparse. Try converting it to wav instead of raw PCM audio (it can be from a computer), then replacing the"! rawaudioparse ... !" with "! wavparse !".
geek1011 is offline   Reply With Quote
Old 04-13-2020, 03:26 PM   #37
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
I regret to inform you that "wavparse" also yields a "no element" error.

I did a bit more looking around and it appears that they have stripped things down to the minimum they need. I checked what gst binaries were present and at least they left gst-inspect, which shows:

Code:
coreindexers:  memindex: A index that stores entries in memory
mixersink:  mixersink: Audio Sink Mixer
audiblesrc:  audiblesrc: Audible source
coreelements:  multiqueue: MultiQueue
coreelements:  typefind: TypeFind
coreelements:  tee: Tee pipe fitting
coreelements:  filesink: File Sink
coreelements:  queue: Queue
coreelements:  identity: Identity
coreelements:  filesrc: File Source
coreelements:  fdsink: Filedescriptor Sink
coreelements:  fdsrc: Filedescriptor Source
coreelements:  fakesink: Fake Sink
coreelements:  fakesrc: Fake Source
coreelements:  capsfilter: CapsFilter
staticelements:  bin: Generic bin
staticelements:  pipeline: Pipeline object

Total count: 5 plugins, 17 features
So this is all you have to work with using gstreamer. Is this sufficient? If you have mplayer handy, the one here on the pw4 is MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team, then perhaps you could test things as well since you are more familiar with gstreamer.

The full list of gst binaries is:

Code:
-rwxr-xr-x    1 root     root          9244 Nov 27  2018 /usr/bin/gst-feedback
-rwxr-xr-x    1 root     root          3173 Nov 27  2018 /usr/bin/gst-feedback-0.10
-rwxr-xr-x    1 root     root          9240 Nov 27  2018 /usr/bin/gst-inspect
-rwxr-xr-x    1 root     root         30308 Nov 27  2018 /usr/bin/gst-inspect-0.10
-rwxr-xr-x    1 root     root          9240 Nov 27  2018 /usr/bin/gst-launch
-rwxr-xr-x    1 root     root         20276 Nov 27  2018 /usr/bin/gst-launch-0.10
-rwxr-xr-x    1 root     root          9244 Nov 27  2018 /usr/bin/gst-typefind
-rwxr-xr-x    1 root     root          9624 Nov 27  2018 /usr/bin/gst-typefind-0.10
-rwxr-xr-x    1 root     root          1734 Nov 27  2018 /usr/bin/gst-visualise-0.10
-rwxr-xr-x    1 root     root          9244 Nov 27  2018 /usr/bin/gst-xmlinspect
-rwxr-xr-x    1 root     root         17692 Nov 27  2018 /usr/bin/gst-xmlinspect-0.10
As you can see above the pw4 has gstreamer 0.10 as opposed to any other release.

Let me know of anything else I can try for you.

If this is insufficient support I guess we need to investigate libaudioclient instead.

Dave
dhdurgee is offline   Reply With Quote
Old 04-13-2020, 05:09 PM   #38
geek1011
Wizard
geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.
 
Posts: 2,735
Karma: 6987557
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
To use gstreamer then, you'd need to either compile the module externally (do you have a TC, @NiLuJe?) or pre-convert the audio to the right format.
geek1011 is offline   Reply With Quote
Old 04-13-2020, 05:22 PM   #39
NiLuJe
BLAM!
NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.NiLuJe ought to be getting tired of karma fortunes by now.
 
NiLuJe's Avatar
 
Posts: 13,477
Karma: 26012494
Join Date: Jun 2010
Location: Paris, France
Device: Kindle 2i, 3g, 4, 5w, PW, PW2, PW5; Kobo H2O, Forma, Elipsa, Sage, C2E
I do, but gstreamer is probably down a long rabbit hole of dependencies, so I'd approach that from a slightly different angle: BuildRoot (which does support ct-ng TCs, I've used it a few weeks ago to build X stuff for KOReader because I couldn't be arsed to deal with it manually ;p).

In this specific instance, though, the drawback of not doing it manually is that BR won't be shipping prehistoric code (i.e., you'll end with with something adhering to gstreamer's 1.0 API/ABI, not 0.10).

You could probably still piggy-back on the BR sysroot to just end up having to build an old gstreamer manually, though.

Last edited by NiLuJe; 04-13-2020 at 05:24 PM.
NiLuJe is offline   Reply With Quote
Old 04-13-2020, 08:14 PM   #40
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
Quote:
Originally Posted by geek1011 View Post
To use gstreamer then, you'd need to either compile the module externally (do you have a TC, @NiLuJe?) or pre-convert the audio to the right format.
Is there an easy way to determine the right format? Perhaps I could try using gst-launch with an audible file and some extras in the pipeline to display what is going into mixersink? I know that mplayer can modify the output audio format, so it might be possible to feed its output directly to mixersink.

Dave
dhdurgee is offline   Reply With Quote
Old 04-14-2020, 10:59 AM   #41
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
I don't know if this is helpful, but in case it is I used gst-inspect on the two provided custom elements in case it is helpful. I don't know what to do with it, but I had hoped it might give a clue either to what stream format the mixersink expect, or if it is flexible how to specify what input we are passing to it. I had hoped that the audible source details might allow me to use something like:

gst-launch audiblesrc {options} ! mixersink {options}

If this would work then perhaps there would be a way to pull the stream description from the source to the sink. Unfortunately there is a reference to an authentication file in audiblesrc, so unless someone knows where that hides this isn't possible.
Attached Files
File Type: txt audiblesrc.txt (3.1 KB, 204 views)
File Type: txt mixersink.txt (4.5 KB, 198 views)
dhdurgee is offline   Reply With Quote
Old 04-16-2020, 03:46 PM   #42
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
I did a bit of a web search looking for further information and aproaches to attacking the gstreamer problem. This led me to try this:

Code:
[root@kindle mplayer]# /usr/bin/gst-launch -v filesrc location=./audiodump.wav ! 'audio/x-raw-int,rate=(int)44100,channels=(int)2' !
 queue ! mixersink
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)2
ERROR: from element /GstPipeline:pipeline0/MixerSink:mixersink0: The stream is in the wrong format.
Additional debug info:
gstbaseaudiosink.c(706): gst_base_audio_sink_setcaps (): /GstPipeline:pipeline0/MixerSink:mixersink0:
cannot parse audio format.
Execution ended after 20550000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
Perhaps someone can help me interpret this further. Looking at the gst-inspect output for mixersink I believe I have the capabilities matched. Is this implying that my audiodump.wav is in incorrect format and I need to try again? Other suggestions?

Dave

PS: I have tried this with and without the WAV header -ao pcm -format s16le

Last edited by dhdurgee; 04-16-2020 at 04:05 PM.
dhdurgee is offline   Reply With Quote
Old 04-16-2020, 06:45 PM   #43
geek1011
Wizard
geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.geek1011 ought to be getting tired of karma fortunes by now.
 
Posts: 2,735
Karma: 6987557
Join Date: May 2016
Location: Ontario, Canada
Device: Kobo Mini, Aura Edition 2 v1, Clara HD
Quote:
Originally Posted by dhdurgee View Post
I did a bit of a web search looking for further information and aproaches to attacking the gstreamer problem. This led me to try this:

Code:
[root@kindle mplayer]# /usr/bin/gst-launch -v filesrc location=./audiodump.wav ! 'audio/x-raw-int,rate=(int)44100,channels=(int)2' !
 queue ! mixersink
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)2
ERROR: from element /GstPipeline:pipeline0/MixerSink:mixersink0: The stream is in the wrong format.
Additional debug info:
gstbaseaudiosink.c(706): gst_base_audio_sink_setcaps (): /GstPipeline:pipeline0/MixerSink:mixersink0:
cannot parse audio format.
Execution ended after 20550000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
Perhaps someone can help me interpret this further. Looking at the gst-inspect output for mixersink I believe I have the capabilities matched. Is this implying that my audiodump.wav is in incorrect format and I need to try again? Other suggestions?

Dave

PS: I have tried this with and without the WAV header -ao pcm -format s16le
You are on the right track here. Note that you do not need the WAV header, as it's raw PCM audio.

Try other common bitrate/channel combinations. For bitrates, try 16000, 44100, and 48000. For channels, try 1 and 2. Note that you don't need to reconvert the audio files until one works, as you could just feed it random bytes for all it cares (obviously, you'll hear garbage too, but the goal is to get it to start).
geek1011 is offline   Reply With Quote
Old 04-16-2020, 09:33 PM   #44
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
Here is a puzzle for you. I tried all variations I could think of without success. I then thought to try the audiblesrc, not expecting it to work as there was a authentication property and I had no idea where to find it. IT PLAYED! Here is a log from it:

Code:
[root@kindle mplayer]# /usr/bin/gst-launch -v audiblesrc location=/mnt/us/audible/Free_Excerpt__Star_Wars__Heir_to_the_Empire_-_Behi
nd_the_Scenes_B005JZ4RJ6.aax ! queue ! mixersink
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstAudibleSrc:audiblesrc0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/MixerSink:mixersink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
^CCaught interrupt -- handling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 14439976002 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/MixerSink:mixersink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstAudibleSrc:audiblesrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
[root@kindle mplayer]#
I see caps I was using and a few more above in a different order. Trying with my line edited it runs as well, although I heard noting on the headset:

Code:
[root@kindle mplayer]# /usr/bin/gst-launch -v filesrc location=./audiodump.pcm ! 'audio/x-raw-int,endianness=(int)1234,signed=(boole
an)true,width=(int)16,depth=(int)16,rate=(int)22050,channels=(int)1' ! queue ! mixersink
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
New clock: GstSystemClock
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/MixerSink:mixersink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)22050, channels=(int)1
Caught interrupt -- ^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 5376706001 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/MixerSink:mixersink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
[root@kindle mplayer]#
Now I need to figure how to get mplayer to output in this format. Obviously I will be resampling and converting to monoral from stereo, but getting the rest right will take some time.

Dave
dhdurgee is offline   Reply With Quote
Old 04-17-2020, 01:17 PM   #45
dhdurgee
Guru
dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.dhdurgee ought to be getting tired of karma fortunes by now.
 
Posts: 829
Karma: 2525050
Join Date: Jun 2010
Device: K3W, PW4
SUCCESS!

Thinking further I realized that the mixer would need to support a range of options for input or they would not have specified one in the caps for it. What was preventing operation was the lack of several other options. So tried again with the appropriate options for the track I was testing with and it worked. Here is the log of the run:

Code:
[root@kindle mplayer]# /usr/bin/gst-launch -v filesrc location=./audiodump.pcm ! 'audio/x-raw-int,endianness=(int)1234,signed=(boole
an)true,width=(int)16,depth=(int)16,rate=(int)44100,channels=(int)2' ! queue ! mixersink
Setting pipeline to PAUSED ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
New clock: GstSystemClock
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/MixerSink:mixersink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2
Got EOS from element "pipeline0".
Execution ended after 207406500025 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/MixerSink:mixersink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
[root@kindle mplayer]#
So using mplayer with -vc null -vo null -ao pcm:nowaveheader -format s16le produces a compatible output in "audiodump.pcm" in the current directory. This can be played providing the rate and number of channels are known to fill out the gst-launch command line.

I would like to figure out a way to pipe this to the gst-launch command and have the rate and number of channels deduced from the source. On my k3 I was playing both local mp3 files and internet radio streams, but that won't work without manual intervention at this point.

What would probably be workable is to pipe the mplayer output, with the WAVE header, to a program that would use the header to construct the gst pipeline and pipe the rest of the stream to it for playback. This is beyond my current experience level.

Can someone take this further?

Dave

Last edited by dhdurgee; 04-17-2020 at 01:19 PM. Reason: typo
dhdurgee is offline   Reply With Quote
Reply

Tags
audiobook, bluetooth, jailbreak, m4b, mp3


Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Issue with finding audiobook metadata on Amazon angelyne Calibre 6 10-21-2018 08:52 AM
Listen Audiobook Player question Hrafn Audiobook Hardware & Software 0 06-16-2018 02:36 AM
Listen Up - We've got a brand new audiobook forum Alexander Turcic Announcements 11 09-10-2014 06:18 PM
Amazon Ebooks and downloaded Audiobook ErikaGC Kindle Fire 1 06-10-2013 12:13 PM
Sony & Amazon, etc. - Why No Wifi or Bluetooth? poohbear_nc News 8 08-26-2009 04:29 PM


All times are GMT -4. The time now is 06:44 AM.


MobileRead.com is a privately owned, operated and funded community.