Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вс Ноя 04, 2007 8:46 pm Заголовок сообщения: Сжатие кадров в STR-видео(и не только) |
|
|
Собственно, у меня возник такой вопрос... Можно ли распаковать у видео отдельные кадры, а потом запаковать и вставить обратно не изменив структуры файла?
Объясню, зачем мне это надо.
Во-первых, это сэкономит ооооочень пного памяти при построении патча, а во-вторых, останется неизменённым качество незатронутого блока видео, ведь при перепаковке качество хоть немного, но теряется.
Прошу знатоков видеокодеков помочь _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
BoreS
Зарегистрирован: 03.04.2004 Сообщения: 347 Откуда: KarmaSociety
|
Добавлено: Вс Ноя 04, 2007 10:22 pm Заголовок сообщения: |
|
|
присоединяюсь. Нужно в перекодированном видео заменить несколько кадров, затем закодировать обратно в стр и что бы размер по возможности не увеличился и не уменьшился. |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вс Ноя 04, 2007 11:07 pm Заголовок сообщения: |
|
|
Если можно - то хотя бы подскажите литературу и принцип компрессии, постараюсь разобраться сам... _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
Shiru
Зарегистрирован: 25.10.2006 Сообщения: 295 Откуда: Russia, Moscow
|
Добавлено: Вс Ноя 04, 2007 11:20 pm Заголовок сообщения: |
|
|
Насколько я помню, там видео жмётся похожим на MJPEG образом - без межкадрового сжатия. MDEC (Motion Decoder) декодирует сами кадры аппаратно, но поток в str вроде дополнительно пожат хаффманом (распаковывается процессором и кидается на MDEC). Т.е. теоретически отдельные кадры без пережатия всего файла заменить можно. Смотреть надо документацию на Playstation, м.б. что-то есть в SDK (не смотрел, не знаю). Ещё на Zophar'е упоминается официальный документ File Formats, который там не выложен.
Да, сжатие там идёт макроблоками, так что м.б. можно заменить даже часть кадра. |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вс Ноя 04, 2007 11:51 pm Заголовок сообщения: |
|
|
Это радует Ну что ж, буду информировать о прогрессе моих исследований в этой области _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Ноя 05, 2007 1:57 am Заголовок сообщения: |
|
|
Нашёл документ. Судя по количеству опечаток - он неофициальный Но объём внушительный.
По мною прочитанному я понял, что данные сжаты подобно JPEG. Используется Фактор дискретизации(что это такое буду изучать), The color difference blocks (не знаю, как точно переводится, но погуглю), The Luminescence blocks (то же самое). _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
|
Вернуться к началу |
|
|
Shiru
Зарегистрирован: 25.10.2006 Сообщения: 295 Откуда: Russia, Moscow
|
Добавлено: Пн Ноя 05, 2007 3:39 am Заголовок сообщения: |
|
|
Алгоритм у JPEG и подобных методов довольно сложный, но реализовать реально. Умельцы даже писали декодеры на ассемблере для 8-битных компьютеров.
Опечатки в документе могут быть официальными, наверняка изначально он написан на японском, и потом переведён тем, кто под руку попался. |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Ноя 05, 2007 12:09 pm Заголовок сообщения: |
|
|
Блин, я в математике не шарю
Если не трудно, кто-нибудь может расписать алгоритм компрессии/декомпресии так, как он будет исполняться на компе? _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Ноя 05, 2007 5:22 pm Заголовок сообщения: |
|
|
Так, вроде частично вник в алгоритм, спасибо Dangaard'у за изъяснение математических формул
Но есть загвоздка - то не так дока)) То PSX Documentation Project, в ней данные немного не те... А про File Formats пишут следующее:
Цитата: | This is a very detailed document on PSX file formats such as TIM, TMD, XA, STR, and others. This appears to be an official document and due to copyright, it cannot be distributed here. |
Где её можно урвать?
--
Ложная тревога, нашёл Спасибо Bores'у _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
BoreS
Зарегистрирован: 03.04.2004 Сообщения: 347 Откуда: KarmaSociety
|
Добавлено: Пн Ноя 05, 2007 9:16 pm Заголовок сообщения: |
|
|
не за что, теперь ждём от тебя законченного продукта, то бишь программы для редактирования кадров в .СТР |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Пн Ноя 05, 2007 9:40 pm Заголовок сообщения: |
|
|
BoreS писал(а): | не за что, теперь ждём от тебя законченного продукта, то бишь программы для редактирования кадров в .СТР |
А что смешного? Прогресс, хоть маленький, но есть _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
BoreS
Зарегистрирован: 03.04.2004 Сообщения: 347 Откуда: KarmaSociety
|
Добавлено: Вт Ноя 06, 2007 8:17 am Заголовок сообщения: |
|
|
Это у меня не смех, а радость
я уверен что у тебя получится. |
|
Вернуться к началу |
|
|
Shiru
Зарегистрирован: 25.10.2006 Сообщения: 295 Откуда: Russia, Moscow
|
Добавлено: Вт Ноя 06, 2007 8:55 am Заголовок сообщения: |
|
|
К вопросу о декодировании. Основную часть можно подсмотреть в каком-нибудь эмуляторе PlayStation с открытыми исходниками. Например, PCSX (mdec.c, mdec.h). Вот с кодированием будет тяжело, оно само по себе сложнее, и подсмотреть негде.
Есть такая смутная идея. Вроде были программы для конвертирования видео в str, чтобы смотреть на приставке. Можно пойти таким путём: разбираемся, как заменить один кадр в потоке; кодируем свой вариант видео такой программой; берём оттуда нужные кадры и заменяем ими кадры оригинального файла. Бонус: не надо самостоятельно декодировать и кодировать сами кадры. |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вт Ноя 06, 2007 9:45 am Заголовок сообщения: |
|
|
Спасибо большое Но я все-таки постараюсь написать все там, тем более процесс не такой уж и сложный... Мне пригодился бы опыт работы с видео _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вт Ноя 06, 2007 10:48 pm Заголовок сообщения: |
|
|
Короче медленно, но чётко и очень уверенно въезжаю в алгоритм, попутно переводя часть доки, описывающую STR. В конце выложу перевод и своё подробное изъяснение формата STR.
Пока перевёл только маленький кусочек из середины про RunLevel-оптимизацию.
Часть перевода на заценку. _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
HoRRoR RRC2008
Зарегистрирован: 21.06.2006 Сообщения: 2341 Откуда: Ростов-на-Дону
|
Добавлено: Вт Ноя 13, 2007 9:09 pm Заголовок сообщения: |
|
|
Короче пока научился заменять только кадры целиком.
Написал прогу для замены кадров, но за работоспособность не отвечаю Заменит - хорошо, не заменит - я не виноват :D
Frame Replacer
Для применения надо определить:
- Размер сектора
- Адрес первого сектора первого фрейма
- Смещение заголовка в секторе
Как это сделать?
Начнём с размера сектора. Вы можете увидеть повторяющиеся через определённые интервалы схожие структуры. Нужно найти в начале одной из таких структур значение типа 6xxx, обычно это 6001 - это начало заголовка. Отмеряем размер до следующего такого значения - это и будет размер сектора. Обычно это $930.
Адрес первого сектора определить не сложно. Для этого надо сперва определить, с чего начинается сектор. Во всём секторе, за исключением начала (и конца, если это конце фрейма) идут беспорядочные данные. Как только они кончаются, структурированные данные. Вот начало этой структуры и будет началом сектора. Ну а первый сектор будет сектором, идущий первым . Обычно у STR присутствует заголовок файла, где-то от 16 байт, поэтому часто начало файла не является началом первого сектора.
Смещение заголовка - это смещение 6xxx относительно начала сектора.
Использование программы:
FReplacer <Изменяемый файл> <Исходный файл> <Адрес первого сектора первого фрейма> <Размер сектора> <Смещение заголовка в секторе> <Начальный кадр> <Конечный кадр>
<Изменяемый файл> - файл, в котором будут заменяться кадры
<Исходный файл> - файл без звука, созданный с помощью MOVCONV, размер сектора $800
<Адрес первого сектора первого фрейма> - no comments
<Размер сектора> - n/c
<Смещение заголовка в секторе> - n/c
<Начальный кадр> - кадр, начиная с которого заменять
<Конечный кадр> - кончая которым заменять
Пример:
Код: | FReplacer D:\_job\SH1\STR\Old\!@!.STR D:\_job\SH1\STR\sh.str $2C $930 $18 15 90 |
Могу включить поддержку любого исходного видео (не обязательно с размером сектора 2048 байт), но тогда придётся писать больше параметров и т.п. В общем, понадобится кому-нибудь - допишу.
P.S. Просьба потестить _________________ Работаю за деньги
KILL ALL HUMANS!!!!!111 |
|
Вернуться к началу |
|
|
|