FIFO / труба меняется между Debian 5 и 6 - PullRequest
2 голосов
/ 08 августа 2011

В настоящее время мы создаем цепочку инструментов linux для кодирования в реальном времени в целях трансляции видео. Для этого мы создали программу на C ++, которая порождает некоторые процессы декодера ffmpeg (как для аудио, так и для видео), передает этот вывод кодерам (ffmpeg & mpeg2enc) через fifo, а затем передает кодированный вывод нашему мультиплексору, который кэширует несколько МБ данных и затем выводит мультиплексированный файл через карту вывода ASI.

В Debian 5 эта настройка работает безупречно и, как правило, даже не создает высокую нагрузку на процессор. Однако в Debian 6 и Ubuntu 10.04 внутренний буфер мультиплексора постепенно уменьшается, пока не достигнет нуля, после чего начинают происходить частые выходные сбои.

Использование nice и ionice, похоже, не решает эту проблему. Я также пробовал различные пользовательские параметры компиляции ядра (повышенная частота, предварительное вытеснение и т. Д.), Но это также, похоже, не работает.

Хотя возможно, что в ffmpeg или mpeg2enc произошла серьезная регрессия, я предполагаю, что проблема связана с тем, как новое ядро ​​/ дистрибутив обрабатывает FIFO.

Кто-нибудь знает, что может быть причиной этой проблемы? Или какие недавние изменения произошли как в Debian, так и в его конфигурации ядра (между версиями 5 и 6) и Ubuntu, что могло вызвать такое нежелательное поведение?

...