LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Но вот вопрос - как бы сделать так, чтобы на время записи-удаления из очереди И добавления в очередь - она НЕ БЛОКИРОВАЛАСЬ ??? Иба если блочить - очевидно опять будет неравномерность.

в очередь должны класться указатели на кадры, то есть это должна быть очередь из указателей. время блокировки тут минимально. сама очередь кольцевой буфер. все остальные способы или хуже, или вариант этой стратегии. буфер для кадра берется из преаллокированного пула кадров, они должны быть одного размера, из пула берется буфер, туда пишется кадр, указатель на буфер кладется в очередь на передачу.

при передаче из очереди вынимается указатель на кадр, кадр пересылается, после пересылки, указатель на кадр кладется в очередь свободных буферов(указателей на свободные буфера). когда кадр берется с камеры, из очереди свободных буферов берется указатель, туда пишется кадр и указатель кладется в очередь для пересылки.

у тебя так работает?

Исходная версия alysnix, :

Но вот вопрос - как бы сделать так, чтобы на время записи-удаления из очереди И добавления в очередь - она НЕ БЛОКИРОВАЛАСЬ ??? Иба если блочить - очевидно опять будет неравномерность.

в очередь должны класться указатели на кадры, то есть это должна быть очередь из указателей. время блокировки тут минимально. сама очередь кольцевой буфер. все остальные способы или хуже, или вариант этой стратегии. буфер для кадра берется из пула кадров, они должны быть одного размера, из пула берется буфер, туда пишется кадр, указатель на буфер кладется в очередь на передачу.

при передаче из очереди вынимается указатель на кадр, кадр пересылается, после пересылки, указатель на кадр кладется в очередь свободных буферов(указателей на свободные буфера). когда кадр берется с камеры, из очереди свободных буферов берется указатель, туда пишется кадр и указатель кладется в очередь для пересылки.

у тебя так работает?