Перейти к содержанию
    

CAST JPEG-E

Пытаюсь заюзать данную корку для сжатия оцифрованного видео.

С конфигурированием и регистрами вроде разобрался, а вот с pixelin возникли непонятки :(

Разрядность у него 8 бит. В каком виде ему нужно отдавать пиксели? Если последовательно записывать R, G и B, то не влезает - сигнал scanactive падает примерно на середине потока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё странный момент. Если записывать в pixelin одни нули, по идее, выдаваемые квадраты должны быть чёрного цвета. Вместо этого они тёмно зелёные...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ура заработало! :biggrin: :biggrin: :biggrin: :biggrin: :biggrin: :biggrin:

Тестбенч во вложении - может кому-нибудь пригодится.

testbench.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё странный момент. Если записывать в pixelin одни нули, по идее, выдаваемые квадраты должны быть чёрного цвета. Вместо этого они тёмно зелёные...

Если темно-зеленые, то скорее всего вход не RGB, а YCrCb. Цветоразностные знаковые, так что ноль даст глубокий минус и темную зелень.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

BSACPLD, разрешите поинтересоваться. Эта корка доступна где-то в сети?

Это вроде платное ядро от Alma Tech. С этого месяца они отказались от редистрибьюции компанией CAST.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

BSACPLD, разрешите поинтересоваться. Эта корка доступна где-то в сети?

Это вроде платное ядро от Alma Tech. С этого месяца они отказались от редистрибьюции компанией CAST.

Брал из местных закромов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И вот спустя столько лет я вновь вернулся к этому кодеку...

Для экономии ресурсов решил перевести его в монохромный режим - сенсор все равно монохромный. До этого был YCbCr и все прекрасно работает уже много лет.

Сконвертировал цветной BMP файл в монохромный JPEG с помощью утилиты convert в Linux.

Открыл файл hex редактором и извлёк из него заголовок.

Записываю данный заголовок как и раньше для YCbCr варианта, подаю сырые данные.

И...

Кодек зависает на определенном участке картинки - на вход данные поступают, на выходе тишина.

Пробовал с разными тестовыми паттернами на входе - в зависимости от диапазона чисел на входе либо отрабатывает картинку полностью, либо зависает.

Что данные корректно приходят на вход кодека я проверил - количество пикселей строго равно Height*Width.

Что я делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заголовок вот такой:

FF D8 FF E0 00 10 4A 46 49 46 00 01 01 02 00 1C 
00 1C 00 00 FF DB 00 43 00 03 02 02 02 02 02 03 
02 02 02 03 03 03 03 04 06 04 04 04 04 04 08 06 
06 05 06 09 08 0A 0A 09 08 09 09 0A 0C 0F 0C 0A 
0B 0E 0B 09 09 0D 11 0D 0E 0F 10 10 11 10 0A 0C 
12 13 12 10 13 0F 10 10 10 FF C0 00 0B 08 02 58 
03 20 01 01 11 00 FF C4 00 1C 00 00 02 03 01 01 
01 01 00 00 00 00 00 00 00 00 00 03 04 02 05 06 
00 01 07 08 FF C4 00 51 10 00 01 03 02 03 05 06 
02 06 08 04 04 04 05 02 07 02 03 04 12 00 01 05 
13 22 11 21 31 32 42 06 14 23 41 52 62 51 72 24 
33 61 71 81 82 07 15 43 91 92 A2 B2 C2 A1 B1 C1 
D2 16 34 53 D1 63 73 E2 F0 08 25 E1 F1 F2 17 44 
54 64 35 83 45 74 A3 FF DA 00 08 01 01 00 00 3F 
00 FF D9

Это то, что я записываю в кодек в качестве конфига.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Удалось заставить работать 🙂

Взял JPEG заголовок от цветного JPEG для RTP MJPEG и выпилил из него DQT и две DHT таблицы относящиеся к CbCr составляющим, поправил маркеры с цветовыми компонентами и все заработало 🙂

В итоге получился вот такой заголовок:

FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 
00 01 00 00 FF DB 00 43 00 02 01 01 02 01 01 02 
02 02 02 02 02 02 02 03 05 03 03 03 03 03 06 04 
04 03 05 07 06 07 07 07 06 07 07 08 09 0B 09 08 
08 0A 08 07 07 0A 0D 0A 0A 0B 0C 0C 0C 0C 07 09 
0E 0F 0D 0C 0E 0B 0C 0C 0C FF C0 00 0B 08 02 58 
03 20 01 01 11 00 FF C4 00 1F 00 00 01 05 01 01 
01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 
05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 
03 02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 
04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 
81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 
82 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 
36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 
56 57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 
76 77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 
95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 
B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 
CA D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 
E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF DA 
00 08 01 01 00 00 3F 00 FF D9

Правда пришлось ещё немного подправить RTP MJPEG под Grayscale, но эта небольшая несовместимость со стандартом на моём кастомном плеере позволила поднять FPS до 50 при разрешении 2К (было 30 FPS) 🙂

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...