Здравствуйте, Sergey A. Sablin, Вы писали:
SA>Dump — просто сэмпл — он не обязан поддерживать все вожможные ситуации и форматы. SA>Т.к. вы занимаетесь DShow стоит просто запомнить, что avi-шки писать лучше всего именно File Writer- SA>ом, т.к. индексы к avi файлу пишет муксер и Dump просто не позволит ему это сделать. (см. выше)
А какие ситуации и форматы? Задача dump — записать ПОТОК в файл. Не какой-то там формат, а просто байтовый поток. Формат как раз формирует AVI Mux. Заголовки записывает опять же AVI Mux при помощи интерфейса IStream у фильтра FileWriter.
Я говорю о другом. Выполнение графа, в котором FileWriter заменен на Dump прерывается на середине, на этапе записи самого потока, задолго до того, как AVI Mux записывает заголовки. Это очень легко проверить, достаточно добавить в Dump интерфейс IStream. Причем выполнение прерывается по идиотской причине: какой-то фильтр проверяет времена сэмпла и выкидывает ошибку.
По всей видимости ошибка возникает не в Dump (могу это утверждать с вероятностью 99.9%), а в AVI Mux и пока я не нахожу этому разумных объяснений. Как может file writer влиять на сэмплы, которые до него еще не дошли? Разве что как-то хитро настраивает AVI Mux под себя (недокументированные интерфейсы?).
Поэтому вопросы остаются прежние:
1. Как вычислить, в каком фильтре возникает ошибка? Выкидывать фильтры по очереди не получается, т.к. мы отлаживаем последний фильтр графа.
2. В каком направлении копать? Почему вообще у сэмпла может время начала вдруг стать больше время конца и исключительно если в графе FileWriter заменить на Dump?