Что вы можете сделать, это загрузить несколько кадров, давайте назовем это порцией из N кадров, в очередь с диска. Как только вы установите ограничение для буфера, вы извлекаете кадры и обрабатываете их. Вы можете сделать это параллельно, используя две очереди (Q1 и Q2) и два потока (T1 и T2). При обработке кадров из Q1, используя T2, вы можете загрузить Q2, используя T1. Вы будете выполнять переключение контекста одной очереди, когда она заполнится, и извлекать кадры и обрабатывать их, пока другая очередь загружается кадрами с диска. Конечно, вам нужно будет разобраться в тонкостях потоков / распараллеливания, связанных с таким подходом, и в этом случае может быть полезен поток BOOST.