• Что и как декодирует видео в браузере?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Зависит от браузера и операционной системы.
    Chrome честно использует куски из ffmpeg, а если видеокарта поддерживает (а она обычно поддерживает), то декодирует прямо на ней.

    Видеофайл, обычно, это сложный контейнер, содержащий много потоков данных - звук, видео, субтитры и так далее. Процесс упаковки в контейнер называется муксинг, распаковки - демуксинг. Соответственно, кусок сначала попадает в демуксер и из него вынимаются нужные потоки.
    Демуксер может быть частью ffmpeg или gstreamer, может быть частью DirectX, может быть частью Андроида (AMediaFormat).

    После демуксера конкретно видео поступает в декодер - аппаратный (на видеокарте) или программный, а потом на экран.

    Программный декодер опять же может быть частью ffmpeg или gstreamer, или из DirectX (это к вопросу, используются ли установленные кодеки)
    Ответ написан
  • Как организовать ВКС?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Расскажу о своем опыте. Оборудование уже старенькое, но работает.

    Центром всей сети является asterisk. Он рулит правами доступа, маршрутизацией, очередями в колл-центр, учетом звонков и т. д.

    Телефоны 9917, регистрируются по SIP на астериске, без CUCM.

    В качестве сервера ВКС стоит openmcu-ru. Вместе с ним работает Cisco MCU - если нужно много точек в HD цеплять (20-30), серверы соединяются цепочкой. Именно MCU отвечает за режессирование видео и звука во время конференции - кого вывести крупным планом, кому включить микрофон и т.д.

    Туда же интегрирована традиционная телефония по протоколу H.323 через плату расширения в АТС Panasonic TDA200.

    С мобильников доступ по VPN. На андроиде программа CSipSimple (с видео), на яблоках - Linphone.

    В залах - Cisco SX80 (он шикарен) + видеостена.

    На десктопах Ekiga или Linphone.

    Итого получается. У людей на столе стоит один телефон, на который прилетают как звонки из городской телефонной сети (через панасоник - H323 - Asterisk - телефон), так и любые местные комбинации, плюс выход в конференцию.

    Удаленный юзер с мобилой (по IP) также легко может позвонить на любой номер внутри (в том числе и на аналоговый телефон, воткнутый в панасоник), так и на любой номер снаружи, а также позвонить на видеофон или в конференцию.

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

    Естественно, этим всем рулит куча правил в астериске, чтобы права разграничивались, или реализовывались сценарии типа "меня нет на месте" - сначала звонок идет в кабинет человека, потом по IP на его мобилу, потом просто на мобилу, традиционным звонком.

    По последнему вопросу (про телевизор) - openmcu-ru поддерживает отдачу потока в ffmpeg - а оттуда можно транслировать куда угодно, хоть на сайт (есть положительный опыт, включая отдачу на мобильник в браузер), хоть на телевизор.
    Ответ написан
  • Как управлять сторонней программой на ПК?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Можно эмулировать действия пользователя.
    Если разработчики программы предусмотрели API, можно пользоваться этим API
    При особом желании, можно внедрить в программу свою DLL и что-то там подергать, но в некоторых случаях, это запрещено лицензией.
    Ответ написан
  • Как отключать девайс при зарядке аккумулятора?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Трекер кушает меньше остальной автомобильной начинки, всевозможных блоков комфорта, сигналок и прочего фарша.

    Вот тут снизу подсказывают, что за два месяца уже штатное барахло сожрет 60 [суток] * 24 [часа/суток] * 0.035 [Ампер] = 36 [Ампер*Часов], то есть, почти вся емкость батареи.

    Чтобы точно решить, целесообразно ли что-то (китайское, с али) колхозить в проводку машины, подключая это что-то напрямую к батарее (надо бы через отдельный предохранитель, потому как в прикуривателе стоит дубина), стоит измерить потребление тока через 10-20 минут стояния в закрытом состоянии с трекером и без трекера. Вполне возможно, что трекер даже видно не будет.
    Ответ написан
  • Почему в консоли на выводе 0?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Строка с форматом неверно составлена.
    printf("%.1f\n","%.1f\n","%.1f\n", fut, m, dm);  // тут ошибка

    printf("%.1f\t%.1f\t%.1f\n", fut, m, dm);
    Ответ написан
  • Работа с QSystemSemaphore и QSharedMemory?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Потому что экземпляры классов, которые создаются main() должны существовать все время работы программы. А если вы их уберете в другую область видимости, они уничтожатся при выходе за эту область.
    Ответ написан
  • Как разбить текст на страницы?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Нужен какой-то парсер HTML, например, такой
    Ответ написан
  • Как сделать дублированный голос на видео более реалистичным?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Минимальная обработка звука делалась? Компрессор, реверб, эквалайзер, панорама - слышали о таком?

    Манипулируя эквалайзером и компрессором, нужно засунуть звук в микс основной сцены. Если актер говорит на фоне музыки, надо в музыкальной дорожке поджать те частоты, на которых вещает актер, а у актера их приподнять. Если актер выбивается по уровню из микса - вправить его на место уровнем или компрессором. Если актер - мужчина, ему, возможно, нужно поджать нижние частоты, чтоб не бубукал. Если женщина - верхние, чтоб не пищала.

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

    При записи на студии, если это реально студия, а не кухня в общаге, реверберация от стен будет погашена покрытием этих стен - звук будет без реверберации, и будет звучать ненатурально. Так вот, реверб эту натуральность как раз вернет.

    Регулируя громкость по каналам, нужно расположить звук так, чтобы он шел от того места, где стоит персонаж, а не из форточки.

    Примерно как-то так.
    Ответ написан
  • Соотношение многопоточности приложения c++ и многопоточности на уровне системы?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    У вас тотальный бардак в голове относительно терминов. Разберитесь с тем, что такое процесс, а что такое поток, что за "второй способ работы с многопоточностью при помощи мьютексов" и так далее. "Многопоточность в одной единице трансляции" - это просто шедевр. Как единицы трансляции связаны с потоками?

    Из вашего потока сознания я понял, что вам нужен QSingleApplication - Штука, которая не дает запустить программу более одного раза.
    Ответ написан
  • Зачем системному администратору в техникуме дают математику?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Очередной "зачем меня учат" - вопрос. Объясняю:

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

    Именно для этой цели во все учебные программы засунуты такие ненужные вещи как физкультура (чтобы в 30 лет не скупать половину аптеки), культурология (чтобы отличать Бебеля от Бабеля, Бабеля от кабеля, кабель от кобеля, а кобеля от суки), математика и прочее барахло.

    Умение ковыряться с абстрактными буковками на бумажке что-то там улучшает в мозгах, после чего решение тех же задач по планированию работ получается с меньшими усилиями. И кроме того, вы не будете всю жизнь тянуть кабели (надеюсь), так что начальные знания полезно иметь.
    Ответ написан
  • Какой ЯП лучше всего подойдет для МКЭ, МКО или МКР анализа?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    С++ дает баланс между написанием хитрой архитектуры и быстродействием.
    Ну и легкий доступ к MKL/OpenCL/CUDA/MPI/OpenMP - индустриальным стандартам организации массового параллелизма.
    Ответ написан
  • Почему в java результатом i += i++ будет 0?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    i++ - постфиксный инкремент. Так как тут нету прибамбасов с точкой следования из C++ и C, тут однозначно получится:
    i+=i++ можно без проблем переписать как
    result=i+i++
    считаем постфиксный инкремент i++, это значит берем из i 0, теперь увеличиваем i на 1
    result=0+0
    i=1
    считаем сложение 0 + 0 (то значение, которое было в i перед вычислением выражения, и то, что мы вытащили при префиксном инкременте)
    result=0
    i=1
    теперь записываем в i результат прибавления 0 к 0, перетирая ранее записанную туда 1.
    i=result //тут в i запишется 0
    Ответ написан
  • Подключение передней панели к компьютеру?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Кнопке совершенно без разницы, с какой стороны у нее минус.
    Ответ написан
  • Бинарный код всегда и везде один и тот же?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Бинарный код можно условно разделить на программу и данные (но данные могут быть вшиты в программу).
    О программном коде - он различается для процессоров разных архитектур и версий. Процессоры разных версий могут поддерживать разные наборы инструкций, поэтому даже в рамках одной архитектуры x86_64 закинуть программу с более позднего Core на более ранний Pentium 4 не получится - будет ругань на отсутствие поддержки AVX2, например - программа работать не будет, будет падать.

    Ну и между архитектурами совместимости обычно нет никакой - код от Пентиума совсем никак не будет работать на микропроцессоре AVR, вынутом из вашего холодильника или стиралки.

    О данных. Как уже написали, для целых чисел может быть разный порядок следования их байтов. Зависит это от процессора - поэтому, при обмене данными по сети или в виде файлов, если программы могут работать на машинах с разной архитектурой, данные либо конвертируют в какой то один порядок байт (сетевой порядок, например), либо преобразуют в текст из первой половины таблицы ASCII (коды от 0 до 127) разными способами.

    Для чисел с плавающей запятой есть стандарт представления IEE-754 - чаще всего, они хранятся и передаются в нем, либо конвертируются в текст.

    Ну и для текстов есть разные кодировки, и единственное, что в них совпадает - это коды для символов [0-127]. На остальных местах в разных кодировках может быть все что угодно.
    Ответ написан
  • Почему float == int == double?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Я уже один раз вам советовал забыть нафиг похапе, а вы снова за свое. Динамическая типизация требует постоянного таскания за всеми сущностями в программе информации об их типах, что нафиг не нужно сиплюсплюсу. В этом языке действует принцип "не платить за неиспользуемые фичи". Для большинства программ, которые пишут на C++, нет нужды в таскании информации о типах.

    Положили вы в память матрицу 100 000 * 100 000 по 8 байт, съели 80 гиг, а вам еще рядом надо 40 гиг под типы (если идентификатор типа ест 4 байта)? Ну уж нет.

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

    Так что ответы на ваши вопросы:
    1. Потому что для сравнения типы были неявно приведены. Причем для чисел с плавающей запятой вы рискуете узнать для себя много нового, пытаясь сравнивать их напрямую с чем-либо.
    2. Никак. C++ хранит типы только для объектов, и то в очень ограниченной форме. Ну и может выводить типы статически, если очень хочется.
    3. Играет. 1.0 - это double 1.0f - float
    4. См. ответ 3. sizeof(double) == 8, sizeof(float) == 4
    Ответ написан
  • Рефакторить или рерайтить?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    У вас будет проблема с тем, что на имеющийся быдлокод у вас нет ТЗ и описания того, как это чудо должно работать - вам придется восстанавливать это из кода.

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

    Со стороны трудно оценить объем вносимых изменений - если это разовая работа, проще добавить в эту свалку костылей еще один и забыть как страшный сон.

    Иначе, вам придется заниматься рефакторингом через тестирование, обвешать это одоробло тестами и потихоньку фиксить, используя ванильную версию в качестве эталона.

    Полный рерайт - это, возможно, остановка каких-то процессов на время рерайта. Маловероятно, что это допустимо.
    Ответ написан
  • Как работает "Приостановить" в VMware?

    gbg
    @gbg
    Баянист. Тамада. Услуги.
    Она работает как гибернация - нужно же ей куда-то сохранть состояние машины (всю ее оперативку) на время ребута хоста.
    Ответ написан