реклама на сайте
подробности

 
 
> Синхронизация вывода видео на VGA монитор, Как синхронизировать отмасштабированное видео c VGA монитором
Flip-fl0p
сообщение Aug 20 2018, 08:01
Сообщение #1


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Приверствую уважаемые посетители форума !
Возник вопрос про синхронизацию вывода изображения на VGA.
Поскольку альтеровское ядро scaler II"платное" - пришлось разработать собственный scaler в основе которого лежит алгоритм билинейной интерполяции.
Особых проблем при написании scaler у меня не возникло и моделирование показывает - что все работает правильно.
Но я столкнулся с тем, что никак не могу придумать как правильно синхронизировать вывод отмасштабированного видео с новым разрешением.
Чуть подробнее про проблему:
Допустим что scaler понижает масштаб видео с 800х600х60hz (Vertical refresh 37.878787878788 kHz) до 640х480х60Hz (Vertical refresh 31.46875 kHz). Так вот у нас получается, что не совпадают периоды Vertical refresh на этих разрешениях. И это несовпадение периодов приводит к тому, что выходной видеобуффер либо постоянно переполняется, либо слишком быстро опустошается, в зависимости от того какое разрешение масштабируется. Вот и сижу ломаю голову как правильно синхронизировать новый отмасштабированный видеопоток с выходным разрешением. Очень хотелось бы услышать подсказку от более опытных коллег !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prostoRoman
сообщение Aug 20 2018, 09:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 28-06-11
Пользователь №: 65 930



Цитата(Flip-fl0p @ Aug 20 2018, 11:01) *
...
Возник вопрос про синхронизацию вывода изображения на VGA.
... пришлось разработать собственный scaler ...

Допустим что scaler понижает масштаб видео с 800х600х60hz (Vertical refresh 37.878787878788 kHz) до 640х480х60Hz (Vertical refresh 31.46875 kHz). Так вот у нас получается, что не совпадают периоды Vertical refresh на этих разрешениях. И это несовпадение периодов приводит к тому, что выходной видеобуффер либо постоянно переполняется, ...



У Вас кадровые частоты всегда равны?

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


Что если сделать так:

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

2. Простенькая схема формирования выхода со своим, в общем случае, независимым пиксельклоком формирует выходные сигналы стандартным образом.

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

Если нет - то зависит от задачи. Если транслируется гуй - то можно выводить полкадра старого. пол кадра нового, если качественное видео - тогда всё сложнее. Нужна межкадровая интерполяция.

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 20 2018, 09:50
Сообщение #3


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(prostoRoman @ Aug 20 2018, 12:34) *
У Вас кадровые частоты всегда равны?

Нет. Входная кадровая частота зависит от входного разрешения, которое может быть любым начиная от 640x480 заканчивая 1680x1050. Выходная кадровая всегда одинаковая. Например 1024х768. Scaler автоматически определяет входное разрешение и перенастраивает свои коэффициенты.
Самое интересное, что в Альтеровских IP корках - они как-то реализовали это без применения внешнего буфера.
Но для начала будем считать что они фиксированы. Для начала я хочу сделать масштабирование какого-то фиксированного разрешения, чтобы разобраться. А далее буду "прикручивать" возможность детектирования входного разрешения.

Цитата(_4afc_ @ Aug 20 2018, 12:38) *
Не понял. У вас строчная потоков данных 600*60=36000 и 480*60=28800.
А уж с какой частотой вы собрались со всеми полями выдавать 28800 - это ваше дело.

Не совсем понял Вас. Т.е Вы предлагаете отойти от стандартов VESA и выдавать строки быстрее чем того требуется ? Или я не так понял ?
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Aug 20 2018, 11:40
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Flip-fl0p @ Aug 20 2018, 13:50) *
Не совсем понял Вас. Т.е Вы предлагаете отойти от стандартов VESA и выдавать строки быстрее чем того требуется ? Или я не так понял ?


Возьмите картинку 800x600 отскалируйте её до 640x480 и выведите в левом верхнем углу экрана 800х600.

Что нам останется сделать чтобы получить 640x480@60 ? Очевидно не выводить некоторые строки снизу и подрезать длину строки.

С какой там точностью VESA от вас требует Vertical refresh 31.46875 kHz?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 20 2018, 12:11
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(_4afc_ @ Aug 20 2018, 14:40) *
С какой там точностью VESA от вас требует Vertical refresh 31.46875 kHz?

Про точность Vertical refresh не скажу т.к стандарта у меня нет, и боюсь никогда не будет crying.gif, а на просторах сети, я не встретил каких-либо рекомендаций. Да и до этого работал по принципу: что указано на сайте http://tinyvga.com/vga-timing то и применял. Но опыт работы показывает что в несколько процентов ошибка вполне допустима. Т.к PLL например не всегда позволяет получить с большой точностью необходимый pixel_clk.

Цитата(_4afc_ @ Aug 20 2018, 14:40) *
Возьмите картинку 800x600 отскалируйте её до 640x480 и выведите в левом верхнем углу экрана 800х600.

Что нам останется сделать чтобы получить 640x480@60 ? Очевидно не выводить некоторые строки снизу и подрезать длину строки.

Так это понятно. Можно вообще посередине экрана вывести. Вот только есть один нюанс: картинка поступает с разрешением 800x600 и после масштабирования становится с другим разрешением. Но выводится то она так-же на разрешение 800х600. И тут фактически частота поступления данных и частота вывода данных одна и та-же. В таком ключе задача то вообще простая.

А в моем случае есть ЖК матрица, тайминги которой соответствуют VESA. И понимает она только одно разрешение: 1024х768 60 Hz.
А входной видеопоток может быть любым: от 640x480 до 1680x1050 60 Hz. И задача состоит в том, чтобы преобразовать входной поток в разрешение ЖК матрицы. Я прекрасно осознаю, что в процессе преобразования может быть небольшое искажение данных, и качество "неродного" разрешения будет хуже....
Так вот я сейчас тестирую scaler на обычном VGA мониторе. Пытаюсь входной видеопоток 800х600 понизить до 640x480 и вывести в формате 640x480. Такие разрешения выбрал просто "на шару". Первое что попало в голову. Вот тут я и перестал понимать, как это сделать.
P.S. Прошу прощения за тупые вопросы, но мозг уже слишком зациклился на текущей задаче и могу банально тупить и не видеть решения перед носом.... smile3046.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Flip-fl0p   Синхронизация вывода видео на VGA монитор   Aug 20 2018, 08:01
- - warrior-2001   Берем 3 буффера. В один пишем, из другого читаем, ...   Aug 20 2018, 08:43
|- - Flip-fl0p   Цитата(warrior-2001 @ Aug 20 2018, 11...   Aug 20 2018, 09:08
|- - _4afc_   Цитата(Flip-fl0p @ Aug 20 2018, 16:1...   Aug 20 2018, 13:56
|- - _4afc_   Цитата(Flip-fl0p @ Aug 20 2018, 16:1...   Aug 21 2018, 09:24
- - _4afc_   Цитата(Flip-fl0p @ Aug 20 2018, 12:0...   Aug 20 2018, 09:38
- - Plain   1080 / 768 = 1,4 строки FIFO, округляется до 2, пл...   Aug 20 2018, 20:51
- - warrior-2001   Я вот так и не понять сути проблемы. Указал выше, ...   Aug 21 2018, 07:16
- - Flip-fl0p   Мне стыдно признаться, но даже сейчас я не совсем ...   Aug 21 2018, 08:01
|- - _4afc_   А я считаю, что 1. Back porch 48 pixel - може...   Aug 21 2018, 08:45
||- - warrior-2001   Цитата(_4afc_ @ Aug 21 2018, 11:45) у мен...   Aug 21 2018, 08:48
||- - ikm   Цитата(_4afc_ @ Aug 21 2018, 11:45) у мен...   Aug 21 2018, 09:02
|- - _4afc_   Цитата(Flip-fl0p @ Aug 21 2018, 12:0...   Aug 21 2018, 09:07
|- - prostoRoman   Цитата(Flip-fl0p @ Aug 21 2018, 11:0...   Aug 21 2018, 09:14
||- - Flip-fl0p   Цитата(prostoRoman @ Aug 21 2018, 12:14) ...   Aug 21 2018, 09:32
|- - Plain   Цитата(Flip-fl0p @ Aug 21 2018, 11:0...   Aug 21 2018, 09:59
- - Sergey_Bekrenyov   По-моему, у TC в голове все смешалось. Scaler толь...   Aug 21 2018, 19:39
|- - Flip-fl0p   Цитата(Sergey_Bekrenyov @ Aug 21 2018, 22...   Aug 22 2018, 03:51
|- - Sergey_Bekrenyov   Цитата(Flip-fl0p @ Aug 22 2018, 06:5...   Aug 23 2018, 13:45
|- - Flip-fl0p   Цитата(Sergey_Bekrenyov @ Aug 23 2018, 16...   Aug 23 2018, 15:33
|- - Sergey_Bekrenyov   Цитата(Flip-fl0p @ Aug 23 2018, 18:3...   Aug 23 2018, 18:52
|- - Flip-fl0p   Цитата(Sergey_Bekrenyov @ Aug 23 2018, 21...   Aug 23 2018, 19:07
|- - Sergey_Bekrenyov   Цитата(Flip-fl0p @ Aug 23 2018, 22:0...   Aug 24 2018, 11:37
- - Flip-fl0p   Итак господа, провел вчера весь вечер за экспереме...   Aug 22 2018, 07:45
|- - Plain   Цитата(Flip-fl0p @ Aug 22 2018, 10:4...   Aug 22 2018, 18:17
|- - lembrix   Цитата(Flip-fl0p @ Aug 22 2018, 10:4...   Aug 24 2018, 07:07
|- - Alexey_Rostov   Цитата(lembrix @ Aug 24 2018, 10:07) Стра...   Aug 28 2018, 15:02
|- - _4afc_   Цитата(Alexey_Rostov @ Aug 28 2018, 18:02...   Aug 28 2018, 15:53
|- - Flip-fl0p   Цитата(Alexey_Rostov @ Aug 28 2018, 18:02...   Aug 29 2018, 05:12
|- - _4afc_   Цитата(Flip-fl0p @ Aug 29 2018, 08:1...   Aug 29 2018, 05:49
|- - Alexey_Rostov   Цитата(Flip-fl0p @ Aug 29 2018, 08:1...   Aug 29 2018, 06:05
|- - Plain   Цитата(Alexey_Rostov @ Aug 29 2018, 09:05...   Aug 29 2018, 06:21
||- - Alexey_Rostov   Цитата(Plain @ Aug 29 2018, 09:21) Надо у...   Aug 29 2018, 09:47
||- - Flip-fl0p   Цитата(Alexey_Rostov @ Aug 29 2018, 12:47...   Aug 29 2018, 10:26
||- - Alexey_Rostov   Цитата(Flip-fl0p @ Aug 29 2018, 13:2...   Aug 29 2018, 10:46
||- - Flip-fl0p   Цитата(Alexey_Rostov @ Aug 29 2018, 13:46...   Aug 29 2018, 10:51
|- - Flip-fl0p   Цитата(Alexey_Rostov @ Aug 29 2018, 09:05...   Aug 29 2018, 06:23
|- - _4afc_   Цитата(Alexey_Rostov @ Aug 29 2018, 09:05...   Aug 29 2018, 10:21
|- - Alexey_Rostov   Цитата(_4afc_ @ Aug 29 2018, 13:21) Вот п...   Aug 29 2018, 10:29
- - warrior-2001   Ну я же скинул ссылку на проект рабочий от Альтеры...   Aug 22 2018, 08:33
|- - Flip-fl0p   Цитата(warrior-2001 @ Aug 22 2018, 11...   Aug 22 2018, 09:02
- - Plain   Цитата(Alexey_Rostov @ Aug 29 2018, 12:47...   Aug 29 2018, 10:40
|- - Alexey_Rostov   Цитата(Plain @ Aug 29 2018, 13:40) Суммир...   Aug 29 2018, 10:53
|- - Plain   Цитата(Alexey_Rostov @ Aug 29 2018, 13:53...   Aug 29 2018, 12:31
|- - Alexey_Rostov   Цитата(Plain @ Aug 29 2018, 15:31) Нет, в...   Aug 29 2018, 13:23
|- - Plain   Цитата(Alexey_Rostov @ Aug 29 2018, 16:23...   Aug 29 2018, 13:48
|- - Alexey_Rostov   Цитата(Plain @ Aug 29 2018, 16:48) С чего...   Aug 30 2018, 05:05
- - Plain   Извлечение из поступающих сигналов полезной информ...   Aug 30 2018, 05:31
- - Flip-fl0p   Цитата(Plain @ Aug 30 2018, 08:31) Извлеч...   Aug 31 2018, 07:47
|- - Plain   Цитата(Flip-fl0p @ Aug 31 2018, 10:4...   Aug 31 2018, 09:37
|- - Flip-fl0p   Цитата(Plain @ Aug 31 2018, 12:37) Огром...   Sep 18 2018, 08:19
- - Plain   Для любой синхронизации естественно должен быть за...   Sep 18 2018, 09:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 03:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01477 секунд с 7
ELECTRONIX ©2004-2016