Рывки видео, рассинхрон звука и быстро разряжающийся аккумулятор при просмотре фильма на смартфоне или ТВ-приставке чаще всего связаны именно с выбранным режимом декодирования — SW (программный) или HW (аппаратный). Этот переключатель встречается в настройках видеоплееров вроде MX Player, VLC, Kodi и во встроенных плеерах Android-приставок, и неправильный выбор напрямую влияет на плавность воспроизведения.
Разница между режимами принципиальна: при SW-декодировании видеопоток обрабатывает центральный процессор (CPU) за счёт программных алгоритмов, а при HW-декодировании работу берёт на себя отдельный аппаратный блок в чипе — видеоускоритель (GPU или выделенный декодер). Ниже разберём, как это работает, в каких ситуациях какой режим выбирать и как проверить, что именно используется у вас сейчас.
Как устроено программное и аппаратное декодирование
Любой видеофайл — это сжатый поток данных, закодированный кодеком (H.264/AVC, H.265/HEVC, VP9, AV1 и другими). Чтобы показать картинку на экране, устройство должно этот поток распаковать в реальном времени. Вопрос только в том, кто этим занимается.
При программном декодировании (SW) вся математика ложится на ядра центрального процессора. Плеер использует программные библиотеки (например, FFmpeg) и может декодировать практически любой формат, для которого написан код. Плата за универсальность — высокая нагрузка на CPU, нагрев и расход батареи.
При аппаратном декодировании (HW) поток передаётся специализированному блоку внутри чипа, который физически «заточен» под конкретные кодеки. Он справляется с задачей быстрее и с заметно меньшим энергопотреблением, но поддерживает только те форматы, которые производитель чипа реализовал аппаратно.
💡HW-декодер экономит батарею и снижает нагрев, SW-декодер универсальнее и поддерживает больше форматов.