Re[2]: Создание фильтра
От: scs Россия http://mylinks.h1.ru
Дата: 15.10.02 10:48
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте _AD_, Вы писали:


A>>Привет всем!


A>>Мне необходимо шифровать видео файлы, чтобы потом их можно было просмотреть только моим просмотрщиком. Расшифровывание файла на диск и его последующий показ не подходит по понятным причинам

A>>Видимо нужно писать свой фильтр, который бы шифровал/расшифровывал видеопоток. Подскажите пожалуйста можно ли написать фильтр, который бы осуществлял шифрование после всех кодирований данных кодеками, но перед записью данных в файл и расшифровывал данные сразу после считывания их из файла, но перед началом обработки данных кодеками?

A>>


A>>Заранее благодарен за советы.


А>Пытаюсь прицепить свой фильтр к File Source (Async) а он не цепляется и выдает ошибку (типа не совместимы пины и баста), хотя я в событии CheckInputType возвращаю S_OK ($00000000). Если стоит галочка Connect Intelligent (graphedit.exe) то между данными фильтрами появляется AVI Splitter. Подскажите как их сцепить напрямую?


И правильно делает что появляется (я про AVI Splitter). Напрямую твой фильтр приконнектить невозможно (по крайней мере без дополнительных усилий). Дело в том что к File Source нужно коннектится особым образом — через интерфейс IAsyncReader, поэтому только AVI Splitter умеет коннектится к File Source.
Привожу источники:
File Source (Async) Filter
описание IAsyncReader

Но самое главное что этого тебе делать и ненужно. Если ты хочешь писать в обычный ави-файл в своем формате, то нужно зарегистрировать свой медиатип, написать фильтр кодер и декодер. Если это будет сделано то для просмотра граф будет собираться автоматически и его сможет проиграть любой проигрыватель. Если же ты хочешь создать свой формат файла то тебе его тоже нужно зарегистрировать, но подругому, вместе с source-фильтром, который будет читать ваш файл и который вы должны тоже написать см. Registering a Custom File Type.

Вообще же советую почитать в DirectShow SDK статью про написание компрессоров/декомпрессоров, тебе нужно сделать пару подобных фильтров которые будут шифровать/дешифровать медиа-поток, а коннектить шифратор в своей программе ты сможешь и после любого компрессора.

Начни ну хотя бы с этого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.