Текущее время: 02 май 2025, 23:20 • Часовой пояс: UTC + 3 часа |
Обсуждение BeholdTV 5.10
Автор | Сообщение |
Maxch5
|
Добавлено: 14 окт 2010, 16:05. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
при размере окна 300*217 телетекст еще нормально читается, а вот OSD уже с трудом.
Хотя если сильно нарушить соотношение сторон, даже при большем размере видео окна, действительно текст становится не читаемым(
Но видео тоже становится ужасным, я не думаю что кто нибудь смотрит ТВ с такими искажениями.
Я так понял ПО тюнера передаёт(через директ Х, презентер,...) видеокарте картинку со стандартными разрешением, а она уже сама масштабирует и выводит в нужном месте.
То есть картинка с размером окна уже не возвращается в ПО тюнера???
Макс.
|
|
|
hd44780
|
Добавлено: 14 окт 2010, 16:34. Заголовок сообщения: |
|
|
Эксперт |  |
Зарегистрирован: 23 мар 2007, 14:32 Сообщения: 4034 Откуда: РФ, ДНР, Донецк
|
Maxch5 писал(а): То есть картинка с размером окна уже не возвращается в ПО тюнера???
Скорее всего так.
Я когда-то смотрел исходники какой-то программы работающей с тюнером через Directshow и оверлей. Там вообще отсутствовала какая-либо обработка событий видеоокна. Хотя картинка масштабировалась как угодно (текст там правда не накладывался вообще).
Я и делаю вывод, что масштабированием занимается видеорендерер, а не отдельные фильтры.
Behold TV 609FM, Behold TV X7 Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB. Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
|
|
|
Maxch5
|
Добавлено: 14 окт 2010, 19:56. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
Мда, жаль, такой вариант снижает загрузку ЦП, но ограничивает возможности(((
Хотя видеокарта это всего лишь инструмент, наверно можно изменить картинку поле обработки самой видеокартой, но для этого программистам придется повозиться.
Проще будет "склеить" видео окно и OSD, чтоб не расслаивались.
OSD это отдельное окно(нестандартной формы), которое "парит" над видео окном???
Макс.
|
|
|
hd44780
|
Добавлено: 14 окт 2010, 20:21. Заголовок сообщения: |
|
|
Эксперт |  |
Зарегистрирован: 23 мар 2007, 14:32 Сообщения: 4034 Откуда: РФ, ДНР, Донецк
|
Maxch5 писал(а): OSD это отдельное окно(нестандартной формы), которое "парит" над видео окном???
Вообще - да. Хотя, как это реализовано в btv, не знаю.
Behold TV 609FM, Behold TV X7 Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB. Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
|
|
|
Maxch5
|
Добавлено: 14 окт 2010, 22:44. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
Я смог словить три объекта: TVideoFrame, VideoRenderer и TBhOsdWnd.
Как реализовано я догадываюсь, это самый простой вариант, имеет всего 1 глюк(расслоение) и 1 заморочку с синхронным перемещением двух окон.
От них можно попытаться избавится используя MDI формы(окно в окне), над синхронным перемещение парится ОС и расслоений не бывает, но мне не удалось сделать вложенное окно нестандартной формы отдельно от основного(делал на VB6).
Есть другой вариант, может удастся сделать обычный рисунок нестандартной формы,
ну в крайнем случае сделать OSD из множества отдельных компонентов одного окна.
Макс.
|
|
|
hd44780
|
Добавлено: 15 окт 2010, 08:54. Заголовок сообщения: |
|
|
Эксперт |  |
Зарегистрирован: 23 мар 2007, 14:32 Сообщения: 4034 Откуда: РФ, ДНР, Донецк
|
Maxch5 писал(а): Я смог словить три объекта: TVideoFrame, VideoRenderer и TBhOsdWnd.
Ну да, TVideoFrame - окно с ТВ картинкой, TBhOsdWnd - OSD. Третье - не знаю.
Есть еще TMain - панель управления. Именно ему посылаютя WM сообщения для управления.
Я смотрел утилитой Spy++ из состава VC6 или VS2005 (в 2008 ее не нашел) - там этих TBhOsdWnd вообще штук 5 (у меня ПО 5.10).
Но с этими окнами я не игрался.
Окна VideoRenderer я у себя не нашел. Зато есть EVR Fullscreen Window. Может от типа рендерера зависит.....
Maxch5, какой у тебя рендерер включен? У меня EVR.
Насчет искажения текста - он в первую очередь страдает при масштабировании. Это легко увидеть в любом примитивном граф. редакторе - написать на любой картинке любой текст, потом отмасштабировать ее. С текстом сразу получаются разные беды  .
Единственный способ (на мой взгляд) избавиться от этого - отлавливать изменения размера окна (какой-нибудь WM_RESIZE) и рисовать текст по-новой с новым, пересчитанным размером.
Правда, реализуем ли данный алгоритм или нет - не знаю, т.к. нам неизвестны структура и алгоритм ПО. Все что я сказал - лишь мои мысли вслух. Может я и не прав в чем-то.
PS. Ох, накажут меня за этот оффтоп в данной теме  ....
Behold TV 609FM, Behold TV X7 Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB. Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
|
|
|
Maxch5
|
Добавлено: 15 окт 2010, 12:59. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
Эти элементы ловятся и при EVR, и при VMR7/9.
Предположительно:
TVideoFrame - видео окно
VideoRenderer - скорей всего объект через который выводится видео
TBhOsdWnd - нарезанное окно OSD, рисуют походу прямо на нем(других элементов этого окна я не словил)
Пользуюсь VMR7/9, жрет ресурсов меньше))
По клацал эти режимы и расслаиваться перестало))
Макс.
|
|
|
EugeneF
|
Добавлено: 15 окт 2010, 21:20. Заголовок сообщения: |
|
|
Зарегистрирован: 16 апр 2008, 22:22 Сообщения: 611
|
hd44780 писал(а): Насчет искажения текста - он в первую очередь страдает при масштабировании. Это легко увидеть в любом примитивном граф. редакторе - написать на любой картинке любой текст, потом отмасштабировать ее. С текстом сразу получаются разные беды  . Это зависит от того, как масштабировать, от алгоритма интерполяции, от антиэлайсингового фильтра. В Direct3D эти все параметры масштабирования текстур может задавать приложение. Наверняка и в параметрах рендерера тоже. Цитата: Единственный способ (на мой взгляд) избавиться от этого - отлавливать изменения размера окна (какой-нибудь WM_RESIZE) и рисовать текст по-новой с новым, пересчитанным размером.
OSD и так сейчас исчезает при каждой попытке масштабирования окна. Так что достаточно его только при каждом новом вызове перерисовывать заново с разным шрифтом в зависимости от размеров окна. Только по-моему, это не поможет, т.к. все равно поверхность с OSD будет масштабироваться рендерером из размера ТВ кадра в размер окна. Вариант, это использовать сглаженные шрифты или двойное масштабирование из формата окна в кадр и потом обратно, хотя это уже изврат...
|
|
|
Maxch5
|
Добавлено: 15 окт 2010, 21:47. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
А если попробовать словить кадр сразу после масштабирования и наложить OSD, забирать его у видео карты не обязательно, игрушки ворочают всё прямо в памяти видушки.
Я так понял используется компонент, который обеспечивает вывод картинки, лучше бы сделали на API)))
Макс.
|
|
|
EugeneF
|
Добавлено: 15 окт 2010, 22:17. Заголовок сообщения: |
|
|
Зарегистрирован: 16 апр 2008, 22:22 Сообщения: 611
|
А его и сделали на API DirectX. Как же можно без него-то? Windows не позволяет обращаться напрямую к регистрам видеоадаптера.
Ловить может как-то и можно, но это уже изврат. Не факт, что EVR и WMR это штатно поддерживают. Обрабатывать кадр во время отрисовки можно с помощью шейдеров, а накладывать чего-нибудь с помощью текстур с альфа каналом, если такая возможность поддерживается рендерером.
Но вообще, это обсуждение действительно начинает переходить в оффтоп. Надеюсь, администрация перенесет его в соответствующий раздел...
|
|
|
Maxch5
|
Добавлено: 15 окт 2010, 22:48. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
Перенести могут всю тему целиком, по этому заканчиваем.
Я надеюсь тут есть что нибудь полезное для программистов))).
Макс.
|
|
|
EugeneF
|
Добавлено: 15 окт 2010, 23:05. Заголовок сообщения: |
|
|
Зарегистрирован: 16 апр 2008, 22:22 Сообщения: 611
|
Всю переносить ни к чему, достаточно только несколько последних сообщений. А эти два потом удалить...
ЗЫ:
Wikipedia писал(а): Media Foundation uses the Enhanced Video Renderer (EVR) for rendering video content, which acts as a mixer as well. It can mix up to 16 simultaneous streams, with the first stream being a reference stream. All but the reference stream can have per-pixel transparency information, as well as any specified z-order.
|
|
|
BTVSoft
|
Добавлено: 18 окт 2010, 14:35. Заголовок сообщения: |
|
|
Beholder |  |
Зарегистрирован: 19 авг 2004, 11:47 Сообщения: 190
|
Maxch5
Цитата: Я так понял используется компонент, который обеспечивает вывод картинки, лучше бы сделали на API)))
Вы заблуждаетесь. Из всех сторонних компонентов используется только RxLib и Berg NextGrid. Все остальное написано ручками на базе WinAPI и Platform WSDK.
|
|
|
Maxch5
|
Добавлено: 18 окт 2010, 18:41. Заголовок сообщения: |
|
|
Зарегистрирован: 28 ноя 2007, 22:56 Сообщения: 515 Откуда: Украина, Днепропетровск
|
Молодцы!
Ну если вы всё это сделали сами, то добавить еще 1 видео поток не составит труда))
Макс.
|
|
|
TroN
|
Добавлено: 28 окт 2010, 19:44. Заголовок сообщения: |
|
|
Зарегистрирован: 15 авг 2006, 09:42 Сообщения: 40 Откуда: Екатеринбург, Россия
|
Уважаемые разработчики не могли бы вы сделать в следующей версии программного обеспечения одну очень простую в реализации и так мне а может и не только мне функцию. А именно как известно существует функция таймера сна. так вот у данной функции нет вариантов действий, а именно она просто выключает ПК.
А вот привязать действие ее к тому как настроена кнопка выключения на пульте очень необходимо. Либо хотя бы сделать возможность настраивать этот самый таймер сна.
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|