Господа, кто разбирается в gstreamer'е в достаточной степени?
Нужно написать плагин для бесшовного воспроизведения сегмента аудио данных (seamless loop), проще говоря нужно в определенный момент «смикшировать» края этого сегмента. У нас есть конвеер(pipeline), в который нужно включить этот элемент. Выглядит он так: filesrc->decoder->audioconvert->проектируемый элемент>audiosink.
Предполагается, что в элементе будут храниться буферы, накачанные вперед, и сохраняться уже прошедшие буферы. По нажатиям кнопок loopIn и loopOut среди прошедших сохраненных в элементе буферов мы будем находить по timestamp'ам наибооле близкий ко времени нажатия кнопочек, «микшировать» и выводить в нужное время.
Вопросы получаются несколько абстрактные:
- возможно ли это вообще?
- что делать со временем? как определить участок буфера, который нужно микшировать достаточно точно?
- подойдет ли в качестве основы GstBaseTransform?
Замечания: работаю на с 0.10 версией gstreamer'а, использую сборки для винды и мака с gstreamer.com, соответственно, с ними плагин должен быть именно для этой версии и работать под маком и виндой.