Десять лет я искал нормальный документ, в котором русским языком было бы описано как декодировать JPG файл с примерами. И вот в этом же форуме правда в соседней ветке нашел - http://community.livejournal.com/fotobooks/285330.html Но раз уж такой праздник - а нет ли таких же книжек по DivX, MPG, MP3, DJVU и другим сжатым форматам? Пока я вручную декодирую только Deflate (ZIP,PNG), JPG и GIF
Хм. То не мне спасибо Это спасибо Exception13 вот отсюда http://www.wasm.ru/forum/viewtopic.php?id=39795
Присоединяюсь к автору темы. Подробное описание алгоритмов MP3, JPEG, MPEG, x264 с доходчивыми исходниками на C ищу давно и упорно, так что за любые ссылки на эту тему будет приагромнейшее спасибо. А ещё я ищу аналогичные материалы по формату PDF. Тут курьёз в том, что поисковики по этому запросу выдают половину интернета!
Если надо на русском - то ничего толкового ты не найдёшь. Если подходит английский - тогда в чём проблема? Читай спецификации. По JPEG в частности ITU-T81.PDF - там алгоритм в деталях расписан, есть примеры реализации (псевдокод).
Зачем вручную декодировать видео и аудио, если есть кодеки? Декодирование современных форматов типа MPEG - достаточно сложное и муторное дело.
Ursus Согласен. Писать самому реализацию MPEG4 (хотя бы одного из стандартов, типа part 2 Visual или part 10 AVC) очень трудоемко - вижу смысл тока в профите, и если есть огромное кол-во времени. Лучше все равно не сделаете. Или тс придумывает собственный стандарт на базе готового ?
вы такие писсимисты. а еслиб все так думали. то что не было бы кодеков. парень молодец. его интересует сделать, а не тупо юзать то. что не всегда работает так ка хочется.
abcd008 Вы сами хоть пробовали писать в одиночку MPEG4 одну из частей, по стандарту, имея на руках только док стандарта? Я пробовал, и знаю о чем речь. В принципе, дока по Part 2 у меня валяется. Могу выложить если надо. Делайте, раз так хотите. http://rghost.ru/4603856 Ну и советую форумы по этому делу 1) Форум разработчиков стандартов. Короче отцы всего и вся - там Doom9.org 2) русский ресурс о компрессии compression.ru в нем доки есть и форум.
я пробовал. но не mpeg. с английским плоховато. но а так когда есть хорошая документация можно все. это лучше чем пытаться разобрать чужие исходники. не понимая что они делают.
Стандарт H.264 есть и в официальной русской версии. В дополнение к нему смотреть референсный енкодер-декодер JM (в отличие от x264, JM написан так, чтобы в его исходниках легко было разобраться). Из книжек на русском рекомендую вот эту.
Зачем писать декодеры самому? А для собственного, так сказать, удовольствия, это ж чертовски увлекательно! И чтобы мозг не высох Кто-то, например, разгадывает кроссворды, кто-то в шахматы играет. А коддинг -это гораздо круче. И потом, пользоваться библиотеками собственной реализации (тем более полностью ассемблерной) гораздо приятнее, чем готовыми костылями, которыми нас снабжают всякие очень_умные_дяди. Зачем ещё нужно изобретать велосипед на реактивной тяге? Это только НАСТОЯЩИЙ программист может понять. А вы, батенька Ursus, всего лишь настоящий коммерсант (да не в обиду будет сказано)... Ну это всё, конечно, в свободное личное время, а не в рабочее (начальник вряд ли оценит)
Booster Сишных реализаций и без того тьма тьмущая, а вот ассемблерных... Только Ассемблер даёт самые высокие качество кода и производительность, а следовательно, реальное преимущество по сравнению со стандартными кодеками, написанными, как правило, на языках высокого уровня. Ну и конечно, море удовольствия от процесса программирования, осознание собственной власти над машиной...
LShadow77 У меня другая информация. Ускорение даёт не ассемблер, а векторизация, sse, многопоточность, gpu и подобные техники. Ассемблер может дать выигрыш, но далеко не везде и небольшую. К примеру кодек использующий dxva побить в принципе невозможно. Минусов у ассемблера достаточно и удовольствие это сомнительное. Сегодня гораздо важнее задействовать все ресурсы, нежели писать на ассемблере.
Про векторизацию можно подробнее? SSE/SSE2, MMX, 3DNOW - это расширения основной системы команд микропроцессора, т.е. тот же ассемблер. Я не понимаю, как многопоточность может увеличивать быстродействие? Разве что, если потоки распределены между разными ядрами в многоядерных процессорах. GPU, декодирующие видео, стоят далеко не у всех (у меня, например, нет). И, к тому же, как я понимаю, в этой теме речь идёт именно о программировании алгоритмов декомпрессии. Ну, аппаратное решение всегда намного быстрее программного, но опять же, не всем пока доступное. И на ассемблере доступ к аппаратным средствам всё же несколько быстрее. Это Ваше личное мнение, спорить не буду. Что мешает задействовать все ресурсы на ассемблере?