Вообщем задали задачу, написать простейший плеер, критерии вес и "прожорливость". Однако, я ни разу не работал с мультимедиыными функциями винды. Подскажите какие функции надо юзать. Подкиньте пару примерчиков на си или асме, если есть такие
Плейер чего музыки или видео? Рекомендую заюзать DirectShow - размер будет сверхмалый, буквально пара функций и готово. К тому-же DirectShow - знает кучу форматов.
Если юзать DirectShow будут использоваться кодеки установленные в системе? Я правильно понял? А можно примерчик с DirectShow?
MrKreazy Не совсем кодеки, а DirectShow фильтры. С кодеками работать гемор. А с фильтрами на порядок проще. Все примеры дома, могу показать только завтра. Правда там С++, но это не важно. Есть пример как просто проигрывать, как проигрывать в своём окне и как грабить мультимедиа данные из фильтров. Кстати написан проигрыватель который грабит данные из фильтров и выводит средствами OpenGl, с софтварными эффектами: на кубе, с огнём и т.д.
MrKreazy С DirectShow можно можно уложиться в пару кб. так как кода там почти ни какого -). К стати можешь глянуть в DirectX SDK, так как это там описано.
СДК у меня нету! Искать его как-то неохота. Если не разберусь, естественно буду искать, а так неохота
Вот мой EffectPlayer DirectShow на С++. Там в папке release работающий бинарник. Но пересобрать его без DirectX SDK и Мultimedia Format SDK нельзя. Так как для сборки нужна streams.lib, которая собирается из исходников, которые в DirectX SDK и есть зависимость от Мultimedia Format SDK. Но сам бинарник получается небольшой. Сам плейер 36кб, + Glut32.dll (~200кб), но это просто особенность данной проги зависимость от Glut, а так вполне реально сделать небольшой по размеру бинарника проигрыватель. в проигрователе файл открывается из контекстного меню правой кнопкой мыши, и после того как начнётся проигрывание, понажимай клавиши 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, +, q, w e - просмотр сначала.
Вот ещё два более простых примера в одном архиве на С++. Тот что Simple должен и запускаться и пересобираться без проблем, но совсем попсовый пример. Второй проигрывание в своём окне с классом, для удобного использования DirectShow, в котором скрыта вся работа с DirecShow, и можно пользоваться только удобными методами этого класса. Но нужна сборка, и есно streams.lib, со всем что я указал в посте выше.
Теперь проблема с директиксом: Когда начинаешь, например играть видео, грузить много оперы(до 15метров). Решение-свернуть/развернуть плеер и... памяти уже занято всего 3метра. Можно ли как-то чистить память программно? А для звука соответственно нужно юзаты дайрект саунд?
Ну так а потребление такого количества памяти-это нормально? Если нет, то как память подчистить можно?
MrKreazy "Нужна!" - это не ответ. Если память кому-то действительно понадобится, DX распределит её более рационально, в ущерб производительности. Кстати, мультимедия и "минимальная прожорливость" - понятия несовместимые. На один канал звука обычно уходит от 8Мб в драйвере.
Кстати говоря, мне вот тож просто необходим какой-нибудь кроссплатформенный звуковой API. Поискал в инете. Нашел вот: http://www.portaudio.com/ http://www.openal.org/ http://ufmod.sourceforge.net/ http://www.fmod.org/ Насколько я понимаю, fmod и ufmod предназначены исключительно для проигрывания треккерной музыки, что мне не надо совсем, причем fmod не полностью free. Я в замешательстве. Есть PortAudio и есть OpenAL. Что лучше использовать? Мне необходимо, чтобы как минимум работало под винду, линукс и макос. Как минимум очень быстрый вывод звука. Как максимум аппаратное микширование, эффекты, 3d-звук (может быть). Кто с чем работал? Может есть еще какие-то известные API? Что работает быстрее? И последнее: как это все приспособить к асму (в моем случае fasm), ведь библиотеки то все на С++