IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Сверх сжатие данных (https://www.imho.ws/showthread.php?t=11890)

Alex_Rus 24.09.2002 22:28

Сверх сжатие данных
 
Я хочу добиться сжатия данных (avi,mp3) минимум в 2 раза,используя метод арифметического кодирования(немного мной измененного).Пока не хватает точности для раскодирования.Некоторые наработки уже есть.Если есть мысли,пишите.

denver 24.09.2002 22:57

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

Alex_Rus 25.09.2002 08:52

А ты какие методы пробовал? Демомейкеры ведь каким то образом сжимают несколько мегабайт в 64 кб.
Я вижу смысл заниматься только математикой.Я все посчитал.
Обратное преобразование возможно без потери данных только если увеличить точность.(Виндовского калькулятора вполне хватает)Но как работать с числом у которого мантиса 33 символа я не знаю.
Может есть какие библиотеки? Что-нибудь посоветуешь?

Метод Хафмана или LZW не дает толком ничего.

RaZEr 25.09.2002 13:07

Что за демомейкеры ?

Alex_Rus 25.09.2002 20:29

Не правильно выразился.
Демосценеры конечно,а не мейкеры.

RaZEr 26.09.2002 13:04

Где почитать можно ?

Alex_Rus 26.09.2002 20:22

Почитать можно в FIDO,если ты про демосценеров.

В общем, это люди,которые пишут на ASM'e всякие
красивые штуки типа динамически меняющихся 3D объектов на 3D сцене.
Причем 3D объектом может быть и 3D модель чего-нибудь.
Все это крутится вертится(не хаотично) со множеством световых эффектов(зависит конечно от сценария).Все это
сопровождается неплохим стерео звуком.
Преимущественно пишут под OpenGL.
У них есть жесткое ограничение на участие в соревновании.Демка должна занимать не больше 64кило.Демка представляет из себя простой EXE-шник всего
на 64кб.

Я как-то смотрел одну такую демку.Так вот, она у меня распаковалась метров на 5(говорят,что жмут даже гораздо больше 5).Все это хозяйство,которое вылезло, практически не упаковывалось никакими архиваторами.
Не все они конечно распаковываются на винт.

Вот отсюда мысль в общем то и пошла.

RaZEr 27.09.2002 13:19

Ну пакуется эта демка хорошо из-за большого количества строковых данных . Обычно все простые реализации движков OpenGL базируются на обычных текстовых инструкциях aka набор координат через разделитель . Но я не понял почему на ASM'е ? 64kb программа может быть пволне написана на WinAPI . Да и все нормальные программеры пишут OpenGL на cpp инициализируя окошко через WinAPI функции .

Alex_Rus 27.09.2002 22:55

Может быть,не спорю.Сам писал на cpp под OpenGL.
Я просто по себе смотрю.Если бы уменя было такое ограничение,то писал бы я точно на ASM'е исп. API само-собой.
Но не забывай про текстурирование и вполне качественную музыку.Не верится, что сие есть результат генерации какой-нибудь ф-ции.
Причем строковые данные как ты говоришь вполне нормально пакуются тем же ZIP'ом,а та демка(распакованная) не паковалась ничем.Вот и думай после этого.

Я тебя как-то спрашивал на счет Сишных библиотек для расчетов с повышенной точностью.Есть такие?
Я не нашел.

RaZEr 28.09.2002 18:08

Т.е. по-твоему эти ребята юзают сверх секретный алгоритм сжатия доныне неизвестный науке ;)

Alex_Rus 28.09.2002 20:20

Возможно разработанный всего лишь ими самими,или улучшенный старый.

BuilderSoft 29.09.2002 21:13

Нужно сделать Packed binary file

Alex_Rus 29.09.2002 23:08

Ты знаешь как его сделать?

BuilderSoft 30.09.2002 22:57

Нету обшего модуля нужно свой

Нужно на каждый bit не integer, byte..... писать

denver 01.10.2002 01:36

Цитата:

Как писал Alex_Rus
Я как-то смотрел одну такую демку.Так вот, она у меня распаковалась метров на 5(говорят,что жмут даже гораздо больше 5).Все это хозяйство,которое вылезло, практически не упаковывалось никакими архиваторами.
Слышь, а ты чем их "распаковывал"???

Ты ее в *.avi файл "распаковал" что-ли? Тада конечно это не сожмет никакой архиватор.

имхо в 64кб играет роль не столько сжатие, сколько оптимизация асм кода + текстур + музыки.

Alex_Rus 01.10.2002 21:20

Denver
Демка распаковалась сама в кучу tga'шек + муз. файло не помню какого формата.Не разу эти демки не видел что ли?

BuilderSoft
Что сие значит?Ты хочешь одним битом кодировать байт?
Или я тебя просто не понял.Не жалей клаву.Какие методы сжатия пробовал ты?

denver 01.10.2002 21:34

Цитата:

Как писал Alex_Rus
Демка распаковалась сама в кучу tga'шек + муз. файло
Давай короче ссылку на эту самораспаковующуюся демку, или залей мне на мыло, чаво она там распаковывает посмотрим.

BuilderSoft 01.10.2002 22:13

Нет я не пробовал сжать

Я только открывал токой

dimonk 02.10.2002 07:51

naverno rebjata ne pozhaleli paru desjatkov bajt dlja koda, kotorij pishet vsjakij musor na vint chtobi mi potom gadali ;))

Alex_Rus 02.10.2002 21:33

Вложений: 1
Короче, ловите 3 демки.
Распаковывается только hologram_final.exe.

denver 02.10.2002 23:29

Все 260-килограмные TGA файлы ничем не уступают 5-килограмным JPEG со средним коэффициентом сжатия (то есть их просто сохранили как точечные рисунки)
Не знаю чего там напихано в .XM файле, но знаю что музыку такого качества слушал лет 10 назад в файлах *.mod, *.s3m - занимали по 200-300кб, т.е. вполне возможно что потоком можно их сохранить как WAV который будет хоть 50 метров занимать (и по качеству не отличаться).

Кароче, все это цирк на дроте и показуха :)

А денег им за это не шибко платят, так за новый алгоритм сжатия хоть бы нобелевскую получили бы (если б нашли такой :)

Alex_Rus 02.10.2002 23:49

А теперь все перемнож и сложи.И что получится(даже по тем цифрам,что ты тут написал)?

denver 02.10.2002 23:59

Я ж говорил, они оптимизируют усе. Один хрен они не сжимают это новейшими достижениями науки (по крайней мере существенно).
Цитата:

Но как работать с числом у которого мантиса 33 символа я не знаю
Почему бы тебе не написать свои функции с методами деления/умножения/чеготамнадо в столбик с записью в переменную строкового типа. Не так уж и сложно имхо

Alex_Rus 03.10.2002 08:44

Я думал,что есть библиотеки,но видно придется писать самому.
Я уже перешел на программирование сопроцессора.С++ режет точность до 64bit. А с сопроцессором можно работать и с 80bit'ой точностью.
И как они это все оптимизируют (10метров в 64кило)?Мы сли есть?

ARTi 28.10.2002 23:53

Все архиваторы стараются быть максимально универсальными. А здесь конкретно заточено под tga, xm и прочее - выигрыш в заточенности всегда есть

denver 29.10.2002 05:40

Alex_Rus
Ну как, продвигается работа?

Alex_Rus 29.10.2002 05:46

Я что и предлагаю..... Сделать заточенный архиватор.
Но вот люди,ничего толком не попробовавшие сделать, начинают давать всякие советы. Мол ничего не получится и т.д.
Начинаешь спрашивать чего не получилось у них, так они толком сказать ничего не могут. Сразу видно,что в проблему глубоко не вникали. => получается отвлеченный базар, а вовсе не по теме.

Alex_Rus 29.10.2002 05:49

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

denver 29.10.2002 09:45

Насчет 64кб демок.
Если задаться целью то можно создать(подогнать) музыкальный (графический) файл содержимое которого будет результатом мат. выражения (например (№"В;дВ * GF{}#E)^%}T, естественно это все в 256-чном исчислении) но не каждый муз. (граф) файл можно представить в лаконичном. виде мат.вычислений.

Второе.
Любая заточка имеет место там где есть закономерности.
Текстовая информация поддается закономерностям, т.к. можно сказать уверенно что большая вероятность появления "й" после "и" и очень маленькая "ь" после пробела.
(По крайней мере может иметь место повторение большого кол-ва символов).
В avi или wav файлах (также как и в rar, zip, arj...) закономерности нет в принципе. Символы равновероятны, т.е. поведение их случайное.
Подогнать можно только под определенный например wav, зная вероятности именно его символов. Но другой wav файл (если брать такуюже таблицу вероятностей) не будет сжиматься настолько (а может и увеличиться вовсе).

З.Ы. Я не верю в чудо, но мне почему-то интересно что из твоих вычислений получится. А если у тебя любые avi,mp3 файлы будут жаться то могу тебя поздравить - у тебя так же значительно (в два раза?) сожмуться и rar, и zip (что имхо неосуществимо, т.е. "сжать" можно а вот разжать нет).

denver 29.10.2002 09:56

Цитата:

В avi или wav файлах (также как и в rar, zip, arj...) закономерности нет в принципе. Символы равновероятны
Может я ошибаюсь?

Alex_Rus 30.10.2002 05:16

На счет равновероятных символов в zip,arj и т.д., то ты в принципе прав.А вот на счет avi не совсем. Там разброс вероятностей наблюдается и иногда довольно приличный.
И в принципе я сам рассматриваю только одни avi'шки.

То,что можно подогнать(генерить с помощью формулы) под мат. формулу,то над этим я думал, даже не исключаю того,что так оно и есть в этих демках.Меня это и натолкнуло на эту тему.

Я не понял, в чем у тебя проблема с получением таблицы вероятностей для данного файла? Сначала проводишь анализ архивируемого файла, а уже потом делаешь с ним что надо.
Таблица вероятностей для каждого конкретного файла своя,так что нет ни какой привязки и сохраняется она как априорная информация для распаковки уже в архиве.
В арифметическом кодировании не нужны ни какие закономерности в появлении байт. Работаешь с числами,а не с байтами. Закономерность еще не есть равновероятность.Даже для равновероятных символов есть определенный приемы, используя которые это не мешает.

denver 30.10.2002 08:39

Ясно, я не спец в арифметическом кодировании.
А насчет подгонки - если подогнать файл под формулу можно, то обратно имхо должно быть довольно сложно (компрессия неизвестных файлов)?

Alex_Rus 30.10.2002 19:24

Подогнать имхо практически невозможно.Так как работаю я с файлами 700 метровыми(с фильмами то бишь).Сам понимаешь-это гигантский поток инфы.
В моем случае получилось почти как в анекдоте: Мол гладко было на бумаге,но забыли про овраги.
На бумаге с помощью обычного инженерного калькулятора все считается туда и обратно безовсяких потерь. А вот в проге чего то не то.
Сейчас думаю,как можно компенсировать ошибку,которая вылезает из-за округления при расчетах в следствии ограниченной точности.

Ты понимаешь,подогнать файл под формулу(пусть он даже ей и генерится) можно,но вот формулу под конкретный файл....? Может какие-то методы анализа и существуют как это сделать, но я таких не знаю.

ARTi 04.11.2002 22:40

Как я себе это представляю.
Берется файл и просматривается, какая инфа в нем преобладает. Можно по заголовку, расширению, но в этом случае может быть облом, поэтому лучше анализировать контент. Как - можно подумать, простейший анализ (например, отличить код от текста) сделать несложно, зато потом уже будет от чего оттолкнуться.
Под каждый тип содержания свой алгоритм запаковки, вплоть до этих самых формул.
Кстати, о птичках. Проще наверно будет делать сразу солид-архив. Все файлы сваливаются в одну кучу и фрагменты этой кучи сортируются по контенту. А там - как обычно.
А можно пойти дальше. Сделать "дефрагментацию" этой куче, так, чтобы все фрагменты одного контента находились вместе (в одном большом фрагменте). Тогда еще проще будет их запаковать. Только вот таблица для фрагментации обратно тоже может разрастись... С ней тоже что-то придется делать...
Какие еще будут идеи?

denver 05.11.2002 06:11

Да примерно так и делается в основном... проблема как раз в "алгоритм запаковки, вплоть до этих самых формул" :))
А так все четко, нверное гуманитарный факультет? :))

Panorama 05.11.2002 08:17

[http://www.computerra.ru/offline/2002/447/18334/] :)

Ну генерить принято в демомейкинге все текстуры и большинство моделей (если речь о 3D). Вглядитесь - весьма нереалистичные они.

Есть кучка давно уже заоптимизированных алгоритмов генерации. Фракталы или генерация шума или еще что-то там или их комбинации. Реализация этих алгоритмов занимает 300-1000 байт кода (целочисленная арифметика, обычно).

Тоже самое со звуком. Берем пару-тройку сэмплов байт на 300 (4bit mono) конвертим в 16 bit stereo, разделяем на каналы, подмешиваем искажений, накладываем фильтры (reverberation, "surround" и пр.).

Оптимизация демок, обычно, имеет мало общего со сжатием без потерь.

Возмите, например, тот же [hologram_final.exe], распакуйте его upx'ом (получится 380кб) и посмотрите внутрь - так и есть код и 150кб сэмплов да 50кб графики. Все.

И не майтесь дурью (см. приведенный URL).

Alex_Rus 07.11.2002 07:32

Panorama
Любопытная статейка, но как говориться попытка не пытка...

ARTi 13.11.2002 02:00

Panorama
> Я как-то смотрел одну такую демку.Так вот, она у меня распаковалась метров на 5(говорят,что жмут даже гораздо больше 5).Все это хозяйство,которое вылезло, практически не упаковывалось никакими архиваторами.
и что, ты думаешь, она прямо при распаковке генерилась?
да и вообще, статейка конечно интересная, но, помнится, какая-то фирма, выпустив 32x CDROM, опубликовала кучу физико-математических выкладок о том, что быстрее ну никак! Тут же через несколько месяцев другая фирма выпустила сидюк на 40x...
так что сколько угодно и как угодно доказывать о "невозможности" или "несуществовании" чего-либо, как пару веков назад об "электричестве". В результате все старания консерваторов идут на свалку через те же пару столетий. И если потом вспоминаются, то только с кривой усмешкой.
Так чтааа... мы может быть и "маемся дурью", ну так нам, дуракам, невдомек.
С демками, конечно же, все так и есть, как ты сказал, но... НО! - оно всегда есть. Есть еще и теория вероятности, знаешь ли.

denver 13.11.2002 05:49

Цитата:

Как писал ARTi
Все это хозяйство,которое вылезло, практически не упаковывалось никакими архиваторами.
и что, ты думаешь, она прямо при распаковке генерилась?

Можешь не сомневаться.

З.Ы. А причем сдесь теория вероятности?
Если есть теория вероятности значит есть шансы??? :))

Alex_Rus 13.11.2002 07:03

Denver
Вероятность шанса есть всегда!!! :-)


Часовой пояс GMT +4, время: 15:08.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.