Порядок оценки элементов в выражении неуточнен (кроме некоторых очень частных случаев, таких как операторы &&
и ||
и тернарный оператор, которые вводят точки последовательности ); поэтому не гарантируется, что test
будет оцениваться до или после foo(test)
(который его модифицирует).
Если ваш код зависит от конкретного порядка оценки, самым простым методом его получения является разделение вашего выражения на несколько разделенных операторов.
DirectShow обрабатывает куски данных в "медиа-образцах", которые являются просто буферами, реализованными через IMediaSample
COM-интерфейс. Для выделения сэмплов используется менеджер памяти на базе COM, интерфейс IMemAllocator
, который должен быть реализован фильтрами. Для передачи образцов используется метод IMemAllocator::GetBuffer
.
Полностью документировано там: Data Flow in the Filter Graph