Имя:
Пароль:
-- ИЛИ --
Войти, используя:

Форум   Общая тематика и компьютеры   Программирование

написать кодек

 
Пост #61152 от 13 апреля 2009, 13:27 

zaym

Подскажите с чего начать и где почитать о создании кодеков.
И если не сложно растолкуйте как выбирается кодек для каждого видео файла и можно ли сделать так чтобы видео файл отрывал только какой-то определенный кодек?
Отправить личное сообщениеПрофиль пользователя---
Постов: 64
Нарушений: Нет
Пост #61177 от 13 апреля 2009, 21:05 

Vlafy

zaym,
Читать вам, наверное, надо много...

Видеофайл не может открывать кодек. Видеофайл - это файл, использующий один из контейнеров (avi, asf, mpeg ts, mpeg ps, mp4, mkv и т.д.) для хранения одного или нескольких потоков видео, звука, титров и т.д. Каждый поток может быть сжат по какому-то алгоритму, информация об этом хранится в заголовке файла.

Когда плеер открывает файл, он считывает форматы потоков и ищет в системе подходящий декодер. Если его нет, то воспроизвести поток не удастся.

Насколько я понял, ваша задача - написать пару кодеровщик и декодеровщик ("кодек" - это сокращение от КОдер-ДЕКодер). В терминах DirectShow - это обычные transform-фильтры. Т.е. вам надо начинать с изучения создания transform-фильтров.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Пост #61199 от 14 апреля 2009, 11:35 

zaym

да, надо написать пару кодеровщик и декодеровщик.

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

Насколько я знаю то DS использует интелижент коннект в котором подбирает фильтры по совместимости медиатипов и если у моего декодера будет такой-же медиатип как и у некого стандартного и мериты будут совпадать, то какой фильр будет выбран?
Отправить личное сообщениеПрофиль пользователя---
Постов: 64
Нарушений: Нет
Пост #61220 от 14 апреля 2009, 21:05 

Vlafy

zaym : Насколько я знаю то DS использует интелижент коннект в котором подбирает фильтры по совместимости медиатипов и если у моего декодера будет такой-же медиатип как и у некого стандартного и мериты будут совпадать, то какой фильр будет выбран?
Почти, но не совсем. Мерит - это приоритет в выборе. Для DirectShow фильтр и кодек - суть вещи идентичные. Это просто разное название одного и того же. При подборе подходящего фильтра (декодера) граф менеджер сначала ищет среди фильтров с самым большим меритом, потом пониже и т.д. до какого-то значения. Об этом можно найти в SDK. По памяти - есть MERIT_DO_NOT_USE, всё что больше него - участвует в интеллигент-коннекте. Т.е. вы можете своему фильтру присвоить требуемый мерит, чтобы графмэнеджер пробовал его подключать.

Если будете писать свой софт, то мерит не обязательно ставить высоким, можно подключать свой декодер сразу. Тогда только ваш софт сможет воспроизводить такие файлы, а никакой другой софт не сможет.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Пост #61227 от 15 апреля 2009, 10:48 

zaym

как раз самая основанная проблема в том, что декодер должен подхватываться большинством популярных плееров и при этом всем не должен мешать системе просматривать видое которое было закодировано другими кодеками, а участвовать в рендере только "своих" файлов.
Отправить личное сообщениеПрофиль пользователя---
Постов: 64
Нарушений: Нет
Пост #61233 от 15 апреля 2009, 20:20 

Vlafy

zaym,
Никакой проблемы тут нет. Ставите ему высокий мерит. При поиске декодера для какого-то медиа-тайпа графмэнеджер будет пытаться подключить ваш фильтр. Вы должны проверить входной медиа-тайп и если он не соответствует вашему, то вернуть соответствующий код ошибки. И всё. Если же медиа-тайп ваш, то возвращайте S_OK и ваш декодер подключится.
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Пост #61250 от 16 апреля 2009, 12:37 

zaym

грейт сеньку
буду пытаться пистать, а там посмотрим по ходу дела
Отправить личное сообщениеПрофиль пользователя---
Постов: 64
Нарушений: Нет
Пост #61455 от 24 апреля 2009, 13:38 

trupoed

народ а что из набора инклюдов SDK нужно подключить для того чтобы сделать хотя бы простейший кодек.

и если не сложно. то опишите для чего нужны если не все то хотя бы некоторые из инклюдов.
Отправить личное сообщениеПрофиль пользователяРоссия
Муром
Постов: 1
Нарушений: Нет
Пост #61459 от 24 апреля 2009, 17:12 

Vlafy

trupoed,
В SDK есть примеры фильтров, там можно посмотреть, что включать. Ещё надо не забыть собрать base classes: http-ссылка
Отправить личное сообщениеПрофиль пользователяКонфигурация пользователяБлог пользователяWeb-сайт пользователяРоссия
Сосновый Бор
Постов: 6083
Нарушений: Нет
Если Вы зарегистрированы, то для отправки сообщений, пожалуйста, авторизуйтесь.
-- ИЛИ --
Войдите, используя: Facebook Twitter Yandex Вконтакте Mail.ru ...
Страница создана за 0.064 секунды
Copyright © 1999-2012 PcTuner.Ru · Design by Alex Dovby