LINUX.ORG.RU

Сообщения dmitry_gstreamer

 

Поток GStreamer в железо с выполнением нормирования частоты следования буферов.

Здравствуйте

Имею такую задачу: Имеется устройство в ALSA 44100, моно (alsasrc device=somedev). somedev - пусть это будет микрофон. Имеется некая железка, которая через определенный файловый интерфейс принимает буфера раз в 20 мс по 160 байт. Можно не раз в 20 мс, а пореже, но кратно 20 мс.

Как мне поток в GStreamer'e заквантовать по n*20 мс? Какой механизм можно использовать для приведения к такому кванту. То есть сыпятся буфера много чаще, чем надо отдавать в свою железку. Может есть элемент для таких целей? К выходу этого элемента будет подключаться свой элемент, аналог filesink, который по приходу буферов будет закидывать их в железку, упаковывая их в свой формат. Железка не имеет калбечного механизма, она просто принимает буфера и по факту приема буферов их обрабатывает.

Хорошего дня!

 

dmitry_gstreamer
()

Как отловить событие подключения к устройству ALSA приложения?

Как отловить событие подключения приложения к звуковому устройству через ALSA?

Есть в юзерспейс некое приложение и оно хочет знать о том, что к устройству случилось подключение кем-то, не важно кем. Сам факт открытия устройства для последующего воспроизведения. Что для этого может предложить ALSA?

Например в командной строке был выполнено: #gst-launch-1.0 some_plugin_bin ! alsasink device=somedevice &

 , ,

dmitry_gstreamer
()

Gstreamer-1.8.0 deinterleave ->audiomixer->interleave что не нравится парсеру?

Здравия!

Имею цель стереопоток с alsasrc разбить на два моно канала. Один канал пустить на alsasink напрямую, а второй поток пропустить через audiomixer и добавлять к нему иные потоки. Базовую конструкцию пайплайна делаю сразу. Она работает и имеет вот такой вид:

 
gst-launch-1.0  audiotestsrc ! audio/x-raw,channels=2 ! deinterleave name=deinterleave_tsh_in \
                deinterleave_tsh_in.src_0 ! audioconvert  ! queue! volume name=volume_tsh_in !  \
                audiomixer name=audiomixer_tsh ! volume  ! queue ! interleave_tsh.sink_0 \
                deinterleave_tsh_in.src_1 ! queue! interleave_tsh.sink_1 \
                interleave name=interleave_tsh ! capssetter caps="audio/x-raw,channels=2,channel-mask=(bitmask)0x3" ! alsasink \
                audiotestsrc freq=2000 ! capsfilter name=c4 caps="audio/x-raw,channels=1" ! queue ! audioconvert ! audiomixer_tsh. \
                audiotestsrc freq=3000 ! capsfilter name=c41 caps="audio/x-raw,channels=1" ! queue ! audioconvert ! audiomixer_tsh. \
                audiotestsrc freq=4000 ! capsfilter name=c42 caps="audio/x-raw,channels=1" ! queue ! audioconvert ! audiomixer_tsh. \
                audiotestsrc freq=5000 ! capsfilter name=c43 caps="audio/x-raw,channels=1" ! queue ! audioconvert ! audiomixer_tsh. \
                audiotestsrc freq=6000 ! capsfilter name=c44 caps="audio/x-raw,channels=1" ! queue ! audioconvert ! audiomixer_tsh. 

Вывод вот такой:

Установка конвейера в состояние PAUSED…
Подготовка конвейера (PREROLL)…
0:00:00.070060800  9983      0x1c50990 WARN              aggregator gstaggregator.c:1391:gst_aggregator_query_latency_unlocked:<audiomixer_tsh> Latency query failed
0:00:00.070674960  9983      0x1c04540 FIXME                default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc1:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.071309280  9983      0x1c04540 WARN                    alsa conf.c:4694:snd_config_expand: alsalib error: Unknown parameters {AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
0:00:00.071452680  9983      0x1c045e0 FIXME                default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc2:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.071794440  9983      0x1c04540 WARN                    alsa pcm.c:2239:snd_pcm_open_noupdate: alsalib error: Unknown PCM default:{AES0 0x02 AES1 0x82 AES2 0x00 AES3 0x02}
0:00:00.074060400  9983      0x1c509e0 FIXME                default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc3:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.079287560  9983      0x1c04140 FIXME                default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc4:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.079586600  9983      0x1c50990 WARN              aggregator gstaggregator.c:1391:gst_aggregator_query_latency_unlocked:<audiomixer_tsh> Latency query failed
0:00:00.082484760  9983      0x1c50990 WARN              aggregator gstaggregator.c:1391:gst_aggregator_query_latency_unlocked:<audiomixer_tsh> Latency query failed
0:00:00.084717000  9983      0x1c50990 WARN              aggregator gstaggregator.c:1391:gst_aggregator_query_latency_unlocked:<audiomixer_tsh> Latency query failed
0:00:00.084800520  9983      0x1c508f0 FIXME                default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc5:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.086415160  9983      0x1c50990 WARN              aggregator gstaggregator.c:1391:gst_aggregator_query_latency_unlocked:<audiomixer_tsh> Latency query failed
0:00:00.087054520  9983      0x1c046d0 FIXME                default gstutils.c:3764:gst_pad_create_stream_id_internal:<audiotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.087060200  9983      0x1c50990 WARN              aggregator gstaggregator.c:1391:gst_aggregator_query_latency_unlocked:<audiomixer_tsh> Latency query failed
0:00:00.097438800  9983      0x1c04630 FIXME             interleave interleave.c:919:gst_interleave_sink_event:<interleave_tsh> FIXME: merge tags and send after stream-start
0:00:00.097968240  9983      0x1c50b20 WARN              interleave interleave.c:317:gst_interleave_set_channel_positions:<interleave_tsh> Invalid channel positions, using NONE
0:00:00.098058360  9983      0x1c50b20 FIXME               basesink gstbasesink.c:3125:gst_base_sink_default_event:<alsasink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:00.105754240  9983      0x1c50b20 FIXME             interleave interleave.c:919:gst_interleave_sink_event:<interleave_tsh> FIXME: merge tags and send after stream-start
Перераспределение латентности…
Конвейер подготовлен (PREROLLED)…
Установка конвейера в состояние PLAYING…
New clock: GstAudioSinkClock

Умные и грамотные люди, поясните сии уведомления.
С уважением!

 , , ,

dmitry_gstreamer
()

RSS подписка на новые темы