Атомарны ли указатели в Си?
Вот пишут, что
You can also assume that pointer types are atomic
https://www.gnu.org/software/libc/manual/html_node/Atomic-Types.html
То есть указатели всегда атомарные даже без дополнительных инклудов и atomic?
Вот пишут, что
You can also assume that pointer types are atomic
https://www.gnu.org/software/libc/manual/html_node/Atomic-Types.html
То есть указатели всегда атомарные даже без дополнительных инклудов и atomic?
6-7 февраля 2021 года прошла одна из крупнейших бесплатных конференций, посвящённая свободному программному обеспечению — FOSDEM. Обычно конференция проводилась вживую в Брюсселе, но из-за пандемии коронавируса её пришлось перенести в онлайн. Для реализации этой задачи организаторы скооперировались с командой Element и выбрали чат на основе свободного протокола Matrix для построения федеративной сети коммуникаций в реальном времени, свободную VoIP-платформу Jitsi Meet для интеграции видеоконференций, и собственные инструменты для их автоматизации. Конференцию посетило более 30 тысяч пользователей, из которых 8 тысяч — активные, а 24 тысячи — гости.
Протокол Matrix построен на основе линейной истории событий (events) в формате JSON внутри ациклического графа событий (DAG): простыми словами, является распределённой базой данных, хранящей полную историю отправленных сообщений и данные участвующих пользователей, реплицируя эту информацию между участвующими серверами — ближайшей аналогичной по работе технологией может быть Git. Основной реализацией этой сети является мессенджер с поддержкой сквозного шифрования и VoIP (аудио- и видеозвонков, групповых конференций). Эталонные реализации клиентов и серверов разрабатываются коммерческой компанией Element, сотрудники которой также возглавляют некоммерческую организацию Matrix.org Foundation, курирующую разработку спецификации протокола Matrix. На данный момент в сети Matrix насчитывается 28 миллионов аккаунтов и 60 тысяч серверов.
( читать дальше... )
>>> Подробности
Группа разработчиков обещает создать расширение RISC-V для работы с графикой. Анонс упоминает троих:
План предусматривает:
Заявленные цели включают:
Как видно из рисунка, возможны будут и маломощный процессор RISC-V с единственным графическим блоком, и использование множества таких процессоров в качестве шейдеров большого GPU параллельно с основным процессором RISC-V.
Согласно статье в EE Times будут использованы некоторые идеи Libre GPU.
Пробрасываю как обычно в локалку порты пробрасывают, но комп на той стороне туннеля походу вообще не втыкает куда ему ответ слать. В результате после долгого зависона получается connection timeout.
У него там вообще шлюз свой прописан и все что не из его подсети, он отвечает на свой шлюз. Вопрос в том как сделать, чтоб мой изначальный запрос (tcp пакет) содержал обратный адрес, который комп на той стороне туннеля поймет куда отвечать.
Блин, я так объясняю, наверное них.. не понятно)
Есть ноутбук с AMD E1-1200. И периодически система начинает очень сильно тормозить, с загрузкой cpu 100% от самых элементарных действий типа просто держать DE открытым. И при этом временно помогает смена термопасты. Я подозреваю, что что-то не в порядке с охлаждением, проц греется и начинает снижать производительность чтобы не перегреться.
cpufreq-info при этом ничего необычного не пишет, частоты 777 - 1400 МГц.
Температура в районе 50 градусов.
Есть ли возможность как-то явно у процессора спросить, троттлится ли он по температуре?
Matrix является открытым стандартом для интероперабельной, децентрализованной связи в реальном времени по IP. Она может быть использована для обмена мгновенными сообщениями, голосом или видео по VoIP/WebRTC или в любом другом месте, где вам нужен стандартный HTTP API для публикации и подписки на данные при отслеживании истории разговоров.
NeoChat – кроссплатформенный Matrix клиент для KDE, работающий на ПК и мобильных телефонах. NeoChat использует фреймворк Kirigami и QML для отрисовки интерфейса.
NeoChat предоставляет все основные возможности современного мессенджера: помимо обычной отправки сообщений, вы можете пригласить пользователей в групповые чаты, создать приватные чаты и искать общедоступные групповые чаты.
Также доступны некоторые функции управления групповыми чатами: вы можете выкинуть или заблокировать пользователей, загрузить аватар чата и отредактировать его описание.
NeoChat также включает в себя базовый редактор изображений, который позволяет обрезать и поворачивать изображения перед их отправкой. Редактор изображений реализован с помощью KQuickImageEditor.
>>> Подробности
Вкратце: стримминг камеры(+звука) на rtmp сервисы через ffmpeg
Проблема в следующем: Кадры со входа дропаются, если битрейд передачи потока превышает ~400kbps.
По умолчанию, если ffmpeg получает видеокадр «слишком рано» (в то время как предыдущий кадр еще не закончен), он отбрасывает этот кадр, чтобы он мог поддерживать ввод в реальном времени
Вот что в доках:
https://trac.ffmpeg.org/wiki/DirectShow
By default FFmpeg captures frames from the input, and then does whatever you told it to do, for instance, re-encoding them and saving them to an output file. By default if it receives a video frame «too early» (while the previous frame isn't finished yet), it will discard that frame, so that it can keep up the the real time input.
Ну ок, тут вроде понятно, если кадры с камеры идут очень быстро, а я их не успеваю обрабатывать, то их нужно отбрасывать, для достижения реалтайма. Но я не вижу узких мест. Кодировщик настроен на минималку, FPS на входе и на выходе одинаков. Процессор нагружен на 2-3%. Сеть ДОМРУ ну где то 50Mbps. Сервер тоже тянет.
В целом все хорошо работает. Но сбился с толку уже с этим rtbufsize, который постоянно «too full or near too full», если битрейд превышает 400kbps
rtbufsize - буфер памяти для входа для realtime устройств. Я его установил в 10M(мегабайт). Играть с ним нет вообще никакого смысла, если установишь хоть в гигабайт, то все равно он со временем переполнится, а latency будет огромный
Камеру установил на минималку (640x480@20), выходной поток такой же (640x480@20), битрейд максимальный - 800k.
ffmpeg -f dshow -video_size 640x480 -framerate 20 -rtbufsize 10M -i "video=dev_realtime" -vcodec libx264 -preset veryfast -b 800k -maxrate 800k -bufsize 1600K -r 20 -f flv "rtmp://x.y"
Привет. Надо такое: есть некоторое количество потоков (на стадии компиляции количество неизвестно, в рантайме количество изменяется), нужно их всех усыпить и разбудить из вне в нужный момент. condition_variable - нафиг мне там мьютекс не нужен. Заюзать барьеры - можно, но я тут покумекал, есть свои минусы и лишний гемор. Нужно просто в ждущих потоках сделать wait(), а в управляющем wakeup(), и все ждущие потоки просыпаются, поработали и пошли на новый круг. Без всяких счетчиков - если кто-то затормозил на прошлом круге и не успел сделать wait(), то следующий круг просто пропустил.
Задача реализовать потоковое видео по схеме:
Подскажите куда копать? наткнулся на нечто похожее здесь https://flashphoner.com/webrtc-server-potokovogo-video-dlya-onlajjn-t/?lang=ru какие есть еще варианты?
Ищу аналог mediaget на Линукс. wine не подходит. Совет виндоссам, у вас есть такая штука как Soda Player.
Компания Element приобретает Gitter у GitLab, чтобы адаптировать сервис для работы в условиях федеративной сети Matrix. Это первый крупный мессенджер, который планируется прозрачно перенести в децентрализованную сеть вместе со всеми пользователями и историей сообщений.
Gitter является свободным централизованным средством для групповой коммуникации между разработчиками. Помимо типовой функциональности командного чата, по сути своей схожей с несвободным Slack, Gitter также предоставляет инструменты для тесной интеграции с платформами совместной разработки, вроде GitLab и GitHub. В прошлом сервис был проприетарным, пока его не приобрела компания GitLab.
( читать дальше... )
>>> Подробности
Привет, ЛОР!
В продолжении моего предыдущего треда про Bluetooth и кодеки. В комментариях всплыла статья, в которой том числе упоминалось, что LDAC – плохой кодек, потому что не поддерживает high-resolution audio, т.е. что-то с параметрами сэмплирования 24bit/96kHz и выше.
Если смысл в больших размерах сэмплов я могу понять (больше динамический диапазон и так далее), то зачем нужна большая частота дискретизации? Про теорему Котельникова ты, ЛОР, я думаю, знаешь. Поэтому объясни мне, есть ли технический смысл в записи аудио с частотой больше 44.1kHz?
Кстати, ради интереса, я накопал у себя на диске записи с частотой 192kHz. Запустив Sonic Visualiser, я увидел примерно вот это: https://i.imgur.com/sRDR44y.jpg
Как видишь, ЛОР, выше 20kHz протекает только какой-то шум. Плюс есть непонятная полоса в районе 77kHz. Кстати, что это?
В общем, расскажи, ЛОР, это всё просто блажь и никакого смысла в этом нет? Или всё же FLAC в 192kHz – единственное верный путь?
Привет, ЛОР!
А вот объясни мне, пожалуйста, такую штуку. Насколько я понимаю, A2DP позволяет использовать любой кодек. Единственное требование в реализации профиля: сделать поддержку SBC как фоллбэка. В итоге, есть наушники с AAC, с разными вариантами aptX, Sony свой собственный LDAC запилили.
Мой вопрос: а почему нет Bluetooth-наушников с нативной поддержкой FLAC? Что именно этому мешает? Лицензию покупать не нужно, с патентами тоже проблем нету.
Друзья, ай нид хелп. Что происходит? Мне нужен ролик 30 фпс из коллекции фреймов, пробую два варианта:
$ ffmpeg -i %04d.png -c:v libx264 -preset slow -crf 18 -c:a aac -ar 48000 -ac 2 -profile:v high -level 4.0 -bf 2 -coder 1 -pix_fmt yuv420p -b:v 10M -r 30 -b:a 320k output.mp4
$ ffmpeg -i %04d.png -c:v libx264 -preset slow -crf 18 -c:a aac -ar 48000 -ac 2 -profile:v high -level 4.0 -bf 2 -coder 1 -pix_fmt yuv420p -b:v 10M -framerate 30 -b:a 320k output.mp4
т.е. в первом варинте применил опию -r, а во втором -framerate. Во втором случае получаю 25 (или 24, не помню) фпс, во втором 30 фпс, но вставляются автоматом доп фреймы, которые делают ролик по продолжительности равным аналогичному видосу на 25 фпс. Опции для ффмпг брал с сети, рекомендуемые для ютуба. Мне нужен честные 30 фпс лишь из тех фреймов, который я указал (-i %04d.png). Что я неправильно передал в консоли?
Я составил таблички и пояснения к ним:
2008-2013 годы:
┌──────────────────────────┬─────┬─────┐
│ │VDPAU│VAAPI│
├──────────────────────────┼─────┼─────┤
│NVIDIA (проприетарный) │ [x] │ [ ] │
├──────────────────────────┼─────┼─────┤
│Catalyst (fglrx) │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│Intel i965 │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│nouveau (открытый NVIDIA) │ [ ] │ [ ] │
├──────────────────────────┼─────┼─────┤
│radeon │ [ ] │ [ ] │
└──────────────────────────┴─────┴─────┘
2014 год (Ubuntu 13.10 или Linux Mint 16 + Oibaf PPA)
┌──────────────────────────┬─────┬─────┐
│ │VDPAU│VAAPI│
├──────────────────────────┼─────┼─────┤
│NVIDIA (проприетарный) │ [x] │ [ ] │
├──────────────────────────┼─────┼─────┤
│Catalyst (fglrx) │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│Intel i965 │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│nouveau (открытый NVIDIA) │ [x] │ [ ] │
├──────────────────────────┼─────┼─────┤
│radeon │ [x] │ [ ] │
└──────────────────────────┴─────┴─────┘
2015 год
┌──────────────────────────┬─────┬─────┐
│ │VDPAU│VAAPI│
├──────────────────────────┼─────┼─────┤
│NVIDIA (проприетарный) │ [x] │ [ ] │
├──────────────────────────┼─────┼─────┤
│Catalyst (fglrx) │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│Intel i965 │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│nouveau (открытый NVIDIA) │ [x] │ [x] │
├──────────────────────────┼─────┼─────┤
│radeon │ [x] │ [x] │
└──────────────────────────┴─────┴─────┘
2016 год - настоящее время
┌──────────────────────────┬─────┬─────┐
│ │VDPAU│VAAPI│
├──────────────────────────┼─────┼─────┤
│NVIDIA (проприетарный) │ [x] │ [ ] │
├──────────────────────────┼─────┼─────┤
│Intel i965 │ [ ] │ [x] │
├──────────────────────────┼─────┼─────┤
│nouveau (открытый NVIDIA) │ [x] │ [x] │
├──────────────────────────┼─────┼─────┤
│radeon/amdgpu/amdgpu-pro │ [x] │ [x] │
└──────────────────────────┴─────┴─────┘
Первые 5 лет на NVIDIA был VDPAU, а на ATi и Intel - VA-API.
Потом в открытых драйверах Radeon и Nouveau стал поддерживаться VDPAU. Почему разработчики этих открытых* драйверов выбрали именно VDPAU? Может монетку кинули? А ведь было бы так красиво, если бы NVIDIA была единственная во второй таблице с поддержкой VDPAU! Но - что было, то было, и история не терпит сослагательного наклонения
Скорее всего, выбор объяснялся тем, что на YouTube был Flash Player, а он поддерживал только VDPAU. Однако в 2016 году YouTube отказался от Flash Player, а вместе с ним - и остальные сайты с онлайн видео и аудио. И тут мне следовало бы сказать «поэтому в radeon и nouveau добавили VA-API», но это произошло ещё в 2014, за два года до ухода YouTube с Flash Player
В декабре 2015 года была выпущена последняя версия проприетарного драйвера видеокарт Catalyst (также известного как fglrx). Последняя версия Ubuntu, в которой можно запустить версию 15.12 - 16.04, да и то нужно установить xserver из 15.10. Поэтому я убрал Catalyst из таблицы, и добавил amdgpu-pro, в который реинкарнировался Catalyst
Допустим, имеется конфиг ядра, где почти всё выключено от разработчика дистрибутива. Нужно включить модули к железу определённого компа. Речь не идёт об универсальной конфигурации, где всё включено. Это я и сам умею. Вопрос в следующем, как вы определяете оборудование своего компа в конфиге ядра? Интересуют методы. Как связать выводы консольных команд об оборудовании с названиями подключаемых модулей в .config ядра? Поделитесь опытом.
Новый пока законопроект появился
https://www.rbc.ru/technology_and_media/21/09/2020/5f68b08e9a79475b652dcf7c
По экспертным оценкам Минцифры, растет количество маскирующих протоколов, позволяющих скрыть фактические сетевые адреса устройств от внешних систем и протоколов шифрования. «Все большее распространение получают протоколы с применением криптографических алгоритмов и методов шифрования TLS 1.3, ESNI, DoH (DNS поверх HTTPS), DoT (DNS поверх TLS) (криптографические протоколы, которые обеспечивают защищенную передачу данных в интернете — РБК)», — указано в пояснительной записке.
В случае нарушения запрета предлагается приостанавливать работу интернет-ресурса с запрещенными протоколами шифрования.
На opennet.ru обсуждают утверждение стандарта С++20:
https://www.opennet.ru/opennews/art.shtml?num=53670
На лоре ещё 7 месяцев назад обсудили :)
Но может кто ещё хочет :)
Закон о ликвидации изоляции рунета представили ко второму чтению в итоговом виде. Прямо сейчас его будут принимать. Вот такое оно будет: https://meduza.io/feature/2019/04/11/zakonoproekt-ob-izolyatsii-rossiyskogo-s...
Из интересного: сбои системы будут иметь место и отвечать за них никто не будет (операторы связи неувиновны по закону).
Update: Всё, закон приняли (пообсуждали аж 8 минут): https://meduza.io/video/2019/04/11/vy-lishaete-grazhdan-rossii-prava-poluchat... Можно танцевать!
На Reddit-е появился большой пост с описанием того, что вошло в C++20 в результате очередного заседания комитета. На этой встрече в С++20 включили:
static, thread_local, and lambda capture for structured bindings.
std::execution::unseq execution policy.
std::ssize() free function that returns a signed size.
std::span usability enhancements.
Precalculated hash values in lookup.
На следующей встрече в июне 2019-го будут рассматриваться к включению в C++20 следующие предложения (принципиально они уже одобрены, но до сих пор не были включены из-за незавершености формальных спецификаций):
The C++20 synchronization library.
Allow constexpr allocation, but disallow allocations that are not deleted at compile time.
constexpr std::type_info::operator==.
New conceptification of iterators.
Monadic operations for std::optional.
Deprecating some uses of volatile.
Implicit creation of objects for low-level object manipulation.
Ну и до кучи указывается, что еще было добавлено в C++20 ранее:
A lot more constexpr features: consteval functions, std::is_constant_evaluated, constexpr union, constexpr try and catch, constexpr dynamic_cast and typeid.
За подробностями лучше сходить на Reddit, там много поясняющего текста. Так же можно почитать отчет Херба Саттера.
← предыдущие | следующие → |