кодек pcm что это
Статьи
Аудио-кодирование: секреты раскрыты
Настройка аудио для видеозахвата и трансляции.
Как люди, непосредственно связанные с AV сферой, мы постоянно говорим об аудио-кодировании и аудиокодеках, а что же это такое? Аудиокодек – это, по сути, устройство или алгоритм, способный кодировать и декодировать цифровой аудиосигнал.
На практике аудиоволны, которые передаются по воздуху, являются продолжительными аналоговыми сигналами. Сигналы преобразуются в цифровой формат устройством, которое называется аналого-цифровой преобразователь (АЦП), а устройство обратного преобразования – цифро-аналоговый преобразователь (ЦАП). Кодек находится между этими двумя функциями и именно он позволяет откорректировать некоторые важные параметры для успешного захвата, записи и трансляции звукового сигнала: алгоритм кодека, частота дискретизации, разрядность и скорость передачи данных.
Три наиболее популярных аудиокодека: Pulse-Code Modulation ( PCM), MP3 и Advanced Audio Coding ( AAC ). Выбор кодека определяет степень сжатия и качество записи. PCM – кодек, который используется компьютерами, CD-дисками, цифровыми телефонами и иногда SACD-дисками. Источник сигнала для PCM сэмплируется через равные интервалы, и каждый сэмпл представляет собой амплитуду аналогового сигнала в цифровом значении. PCM – это наиболее простой вариант для оцифровки аналогового сигнала.
При наличии правильных параметров этот оцифрованный сигнал может быть полностью реконструирован обратно в аналоговый без каких-либо потерь. Но этот кодек, обеспечивающий практически полную идентичность оригинальному аудио, к сожалению, не очень экономичен, что выражается в очень больших объемах файлов, а такие файлы не подходят для потокового вещания. Мы рекомендуем использовать PCM для записи цифровых образов для ваших источников или когда вы занимаетесь постобработкой аудио.
К счастью, у нас всегда есть возможность выбрать другой кодек, который может сжимать цифровые данные (по сравнению с PCM) на основании некоторых полезных наблюдений о поведении звуковых волн. Но в этом случае приходится идти на компромисс: все альтернативные алгоритмы сопряжены с «потерями», так как невозможно полностью восстановить исходный сигнал, но, тем не менее, результат всё равно хорош настолько, что большинство пользователей не смогут уловить разницу.
MP3 – это формат аудио-кодирования с использованием как раз такого алгоритма сжатия цифровых данных, который позволяет сохранять аудиосигнал в меньшие по объему файлы. Кодек MP3 чаще всего используется пользователями для записи и хранения музыкальных файлов. Мы рекомендуем применять MP3 для трансляций аудио-контента, так как ему требуется меньшая пропускная способность сети.
AAC – это более новый алгоритм кодирования аудиосигнала, ставший «преемником» MP3. AAC стал стандартом для форматов MPEG-2 и MPEG-4. По сути это тоже кодек сжатия цифровых данных, но с меньшей, чем у MP3, потерей качества при кодировании с одинаковыми битрейтами. Мы рекомендуем использовать этот кодек для онлайн трансляций.
Частота дискретизации (кГц, kHz)
Измеряется в герцах (Гц, Hz) или килогерцах (кГц, kHz,) 1 кГц равен 1000 Гц. Например, 44 100 сэмплов в секунду можно обозначить как 44 100 Гц или 44,1 кГц. Выбранная частота дискретизации будет определять максимальную частоту воспроизведения, и, как следует из теоремы Котельникова, для того, чтобы полностью восстановить исходный сигнал, частота дискретизации должна в два раза превышать наибольшую частоту в спектре сигнала.
Как известно, человеческое ухо способно улавливать частоты между 20 Гц и 20 кГц. Учитывая эти параметры и значения, показанные в таблице ниже, можно понять, почему именно частота 44,1 кГц была выбрана в качестве частоты дискретизации для CD и до сих пор считается очень хорошей частотой для записи.
Есть ряд причин для выбора более высокой частоты дискретизации, хотя может показаться, что воспроизводить звук вне диапазона человеческого слуха – пустая трата сил и времени. При этом среднестатистическому слушателю будет вполне достаточно 44,1 – 48 кГц для качественного решения большинства задач.
Разрядность
Наряду с частотой дискретизации есть такое понятие как разрядность или глубина звука. Разрядность – это количество бит цифровой информации для кодирования каждого сэмпла. Проще говоря, разрядность определяет «точность» измерения входного сигнала. Чем больше разрядность, тем меньше погрешность каждого отдельного преобразования величины электрического сигнала в число и обратно. С минимальной возможной разрядностью есть только два варианта измерения точности звука: 0 для полной тишины и 1 для звучания в полном объеме. Если разрядность равна 8 (16), то при измерении входного сигнала может быть получено 2 8 = 256 (2 16 = 65 536) различных значений.
Разрядность закреплена в кодеке PCM, но для кодеков, которые предполагают сжатие (например, MP3 и AAC) этот параметр рассчитывается при кодировании и может меняться от сэмпла к сэмплу.
Битрейт
битрейт = частота дискретизации × разрядность × каналы
Для таких систем как Epiphan Pearl Mini, которые кодируют линейный PCM 16-бит (разрядность 16), этот расчет может быть использован для определения, сколько дополнительных полос пропускания может потребоваться для PCM аудио. Например, для стерео (два канала) оцифровка сигнала производится с частотой 44,1 кГц на 16-бит, а битрейт при этом рассчитывается таким образом:
44,1 кГц × 16 бит × 2 = 1 411,2 кбит/с
Между тем алгоритмы сжатия аудиосигнала, такие как AAC и MP3, имеют меньшее количество бит для передачи сигнала (в этом и заключается их цель), поэтому они используют небольшие битрейты. Обычно значения находятся в диапазоне от 96 кбит/с до 320 кбит/с. Для этих кодеков чем выше битрейт вы выбираете, тем больше аудио бит вы получаете на сэмпл, и тем выше будет качество звучания.
Частота дискретизации, разрядность и битрейты в реальной жизни.
Аудио CD-диски, одни из первых наиболее популярных изобретений для простых пользователей для хранения цифрового аудио, использовали частоту 44,1 кГц (20 Гц – 20 кГц, диапазон человеческого уха) и разрядность 16-бит. Данные значения были выбраны, чтобы при хорошем качестве звука иметь возможность сохранять как можно больше аудио на диске.
Когда к аудио добавилось видео и появились DVD, а позднее Blu-Ray диски, был создан новый стандарт. Записи для DVD и Blu-Rays обычно используют линейный формат PCM с частотой 48 кГц (стерео) или 96 кГц (звук 5.1 Surround) и разрядность 24. Эти значения были выбраны в качестве идеального варианта, чтобы сохранять аудио с синхронизацией с видео и при этом получать максимально возможное качество с использованием дополнительного доступного дискового пространства.
Наши рекомендации
CD, DVD и Blu-Ray диски преследовали одну цель – дать потребителю высококачественный механизм воспроизведения. Задачей всех разработок было предоставить высокое качество аудио и видео, не заботясь о величине файла (лишь бы он умещался на диск). Такое качество мог обеспечить линейный PCM.
Напротив, у мобильных средств информации и потокового медиа совсем другая цель – использовать максимально низкий битрейт, при этом достаточный для поддержания приемлемого для слушателя качества. Для этой задачи лучше всего подходят алгоритмы сжатия. Теми же принципами вы можете руководствоваться для своих записей.
При записи аудио с видео…
При потоковой передаче аудио с видео…
При потоковой передаче или записи для последующей трансляции можно получить хорошее звучание аудио при меньшей полосе пропускания, используя кодеки AAC или MP3 с частотой 44,1 кГц и битрейт 128 кбит/с или выше. Такие параметры гарантируют, что звук будет достаточно хорош и не скажется на качестве трансляции.
Цифровой звук: DSD vs PCM
Цифровой звук. Как же много мифов крутится вокруг этой фразы. Сколько споров возникало между любителями удобства и качества цифры и приверженцами «живого воздушного» винилового звука помноженного на «тёплое ламповое» звучание. Кроме того, есть немало споров и между любителями «цифры»: достаточно ли 16х44.1 или нужно 24х192? Что лучше: мультибит или дельта-сигма? CDDA или SACD? PCM или DSD? В этой статье я попробую простым языком изложить азы цифрового звука, а так же более подробно остановлюсь на сравнении двух типов кодирования аналогового сигнала в цифровой: DSD и PCM.
Для начала ответим на вопрос, что есть цифровой звук? Чем он отличаются от аналогового? Если говорить кратко, математическим языком, аналоговый звуковой сигнал — непрерывная функция, цифровой звуковой сигнал — дискретная функция. Что это значит?
Аналоговый сигнал
Если нарисовать в воображении график синусоиды (именно так в чаще всего изображают звуковую волну): то, как бы мы его не увеличивали, стараясь рассмотреть все детали, — всегда будем видеть плавную гладкую линию: это аналоговый звуковой сигнал (рис. 1).
Рис. 1. Аналоговый сигнал
Аналоговый звук (запись) имеет множество параметров, с помощью которых можно оценить его качество. Рассмотрим три самых важных: частотный диапазон, динамический диапазон, искажения.
Частотный диапазон — набор частот, содержащихся в звуке. Принято считать, что частотный диапазон человеческого слуха 20… 20.000 Гц (иногда указывается 16 — 22.000 Гц). Сам по себе частотный диапазон музыки никакого интереса в плане оценки качества не представляет (к примеру, частотный диапазон все того же взлетающего самолета будет очень широк, а вокальной партии тенора — намного уже). Качественным параметром, скажем, наушников является потенциальный частотный диапазон, а оценивается он с помощью амплитудно-частотной характеристики (АЧХ). Идеальная АЧХ — прямая линия на всем диапазоне частот слуха – означает, что источник звука не усиливает и не ослабляет какие-то отдельные частоты, а значит извлекаемый звук совпадает с оригиналом.
Рис. 2. АЧХ MP3 файла 256 kbps
Динамический диапазон (ДД) — разность между самым тихим и самым громким звуком. Измеряется громкость в децибелах (дБ). Принято считать, что максимальная громкость, не наносящая травм человеку — это 130 дБ — звук взлетающего самолета, а минимальная слышимая громкость — 5… 10 дБ — на уровне шелеста листьев в маловетреную погоду. Естественно, что шелест листьев на фоне взлетающего самолета разобрать будет невозможно, да и слушать музыку с уровнем 130 дБ крайне неприятно. Поэтому принято считать, что комфортный ДД для прослушивания музыки — 80… 100 дБ.
Искажения – не что иное, как отклонение сигнала от оригинала.
Принципы представления звука в цифровом виде
Что же происходит при оцифровке аналогового звука? Не будем углубляться в технические аспекты, разберем все, как говорится, на бумаге: для этого нарисуем нашу воображаемую «идеальную» синусоиду и будем измерять величину сигнала через равные промежутки времени (этот процесс называется дискретизацией или квантованием): мы получим некий последовательный набор значений — это и будет наш цифровой сигнал, полученный методом импульсно-кодовой модуляции (PCM) (рис. 3).
Рис. 3. Преобразование аналогового сигнала в PCM
Два основных параметра качества PCM сигнала — это частота и разрядность. Частота — это количество измерений за одну секунду, чем их больше — тем с большей точностью передаётся сигнал. Частота измеряется в герцах: 44100 Hz, 192000 Hz и др. Разрядность — количество возможных значений величины сигнала (точность передачи величины). Чем больше вариантов — тем больше точность сигнала. Разрядность измеряется в битах: 16 bit (65.536 возможных значений, ДД 96 дБ), 24 bit (16.777.216 значений, ДД 144 дБ) и др.
Рис. 4. Преобразование аналогового сигнала в DSD
Такой вид представления цифрового звука называется импульсно-плотностной модуляцией, чаще всего для него используется аббревиатура DSD. Фактически, единственный качественный параметр такого сигнала — частота. Но так как частоты используются очень высокие (от 2.822.400 Hz), такие цифры сложно запомнить, принято делить частоту DSD сигнала на 44.100 Hz. Полученное число и является показателем качества: DSD64 (ДД 120 дБ), DSD128, DSD256 и т.д.
Восстановление аналогового сигнала из «цифры»
Но оцифровка аналогового сигнала – это полдела. Для прослушивания цифровой музыки нужно выполнить обратное преобразование. Для начала рассмотрим, каким образом превратить в звук цифровой DSD поток. Как мы уже знаем, этот поток представляет из себя высокочастотный (2,8 МГц и более) двухуровневый сигнал, средняя величина этого сигнала меняется со звуковой частотой. То есть, если подходить к решению задачи максимально просто, — нужно отфильтровать все высокочастотные составляющие DSD потока, оставив только полезный звуковой сигнал (частоты до 20. 22 кГц). Делается это с помощью аналогового фильтра низкой частоты (ФНЧ). Простейший ФНЧ – это RC цепочка. Сигнал полученный, после прохождения этой цепочки, показан на рис. 5.
Рис. 5. Восстановление аналогового сигнала из DSD
Как видим, полученный график лишь отдаленно напоминает исходную синусоиду. Но не забываем, что мы «применили» простейший фильтр, улучшая схему фильтра можно добиться практически полного отсутствия высокочастотного шума и получить аналоговый звук с хорошими качественными показателями.
Для восстановления аналогового сигнала из цифрового PCM недостаточно только лишь аналогового ФНЧ, нужно предварительно расшифровать цифровые данные, для этого используются цифро-аналоговые преобразователи (ЦАПы). Бывают они разных типов, но описывать их все в задачи данной статьи не входит. Остановимся на 2-х самых распространённых типах в звуковой технике. Во-первых, это так называемый ЦАП лестничного типа (его ещё называют мультибитным). Как вы, наверное, догадались, такой ЦАП преобразует PCM поток цифровых данных в поток величин звукового сигнала, которые на графике выглядят как лестница (рис. 6). Как и в случае DSD, обязательно использование аналогового фильтра для сглаживания «ступенек».
Рис. 6. Восстановление аналогового сигнала из PCM
Зачастую, в таких преобразователях используется промежуточная передискретизация цифрового PCM сигнала в более высокие значения частоты (например, 192 кГц): это уменьшает «ступеньки», что позволяет упростить схему аналогового фильтра.
Второй тип ЦАП – дельта-сигма – использует передискретизацию в ещё большие значения частоты с одновременным уменьшением разрядности до одного бита. Ничего не напоминает? Это же знакомый нам DSD сигнал! Как далее обработать такой сигнал и превратить его в аналоговый, мы уже рассматривали выше.
Применение PCM и DSD, достоинства/недостатки
Где же мы можем встретить каждый из способов кодирования? PCM формат очень распространён: CDDA диски, DVD Audio, файлы MP3, FLAC, ALAC, AAC, звук в фильмах, и далее, и далее, проще сказать, когда не-PCM. Super Audio CD диски, DSD диски, файлы DSF, DFF — это DSD формат. Что же всё-таки лучше? При воспроизведении какого формата мы получим более качественный звук?
В статьях, посвященных DSD формату, описано множество преимуществ перед PCM, но все ли описываемые преимущества верны или это мифы, придуманные для обывателей, не разбирающихся в технической составляющей, чтобы отвоевывать рынок, плотно занятый PCM форматом? Давайте кратенько пройдемся по списку.
Рис. 7. Динамический диапазон / шум при преобразовании между DSD и PCM
Была ли жизнь до Audio CD? Программный декодер PCM
В прошлой статье мы рассказали про динамические QR коды, которые записывали на VHS кассеты. Эпидемия PCM зацепила и меня, так что пришло время поковырять этот формат.
На первом этапе будем пытаться реализовывать программный декодер. Это ещё не последняя статья по данной тематике, так как на японских аукционах процессоры могут и закончиться, а PCM должен быть в каждом доме! Найти видик не проблема.
Для работы понадобится файл с записью этих самых QR кодов. Получить его можно при помощи платы видеозахвата. Ну и источник сигнала, разумеется. Можно захватить напрямую выход процессора или же запись на магнитофоне. В идеале, работать сразу с устройством захвата, чтобы декодировать сигнал в реальном времени.
Подойдет любой язык. Начинал я с Python. Но он оказался достаточно медленным на моем ноутбуке, так что в результате перешел на C++. К слову, независимо друг от друга (почти) нашим небольшим сообществом развиваются 3 проекта декодера: на OpenCV (С++), на Qt (С++) и на LabView. О первом и пойдет речь. OpenCV выбрана из-за простоты работы как с устройствами захвата, так и заранее записанными видео. Плюс все манипуляции с изображением там сильно оптимизированы.
Первая проблема, с которой обязательно столкнешься — потерянные данные. Они в любом случае будут и никак этого не избежать без “специализированного” оборудования. PCM использует больше строк, чем помещается в видимую область кадра. В случае с NTSC регионом это число составляет 492 строки на кадр при видимой области в 480. В случае с PAL все куда печальнее.
Интересный факт 1. PCM процессоры в режиме NTSC имеют частоту дискретизации 44,056 kHz, а в PAL привычные нам 44,1 kHz.
Интересный факт 2. Именно мусором в невидимых строках и защищали в свое время VHS кассеты от копирования. Белыми строками сводили с ума АРУ (блок автоматической регулировки уровня). Во время воспроизведения все шло нормально, а вот при записи начинались проблемы. Кстати, некоторые программы для захвата с кассет умеют определять наличие защиты от копирования. Это значит, что содержимое служебных строк все же можно получить. Но сложно.
Решений этой проблемы существуют два. Работать с платой захвата хитрым образом в обход драйвера и забирать данные с АЦП, после чего их преобразовывать в полный PCM кадр, или же забить на пропущенные строки. Второй вариант звучит немного дико, но формат хранения данных позволяет восстановить часть данных. В случае с регионом NTSC получается уложиться в ограничения системы коррекции ошибок.
Из-за использования служебных строк нельзя взять видеокарту с композитным выходом и заставить PCM процессор играть. Железо проигнорирует весь кадр, если не найдет заголовок в определенной строке. Есть пара мыслей на этот счет, но об этом как-нибудь потом.
Начнем с того, что видеосигнал идет с чересстрочной разверткой. Каждый кадр содержит в себе как бы два, составленные из нечетных и четных строк. Они называются полями. Именно с полями PCM процессор и работает. Следовательно, и нам нужно разбить исходный поток. Только перед этим черно-белое (оттенки серого) изображение неплохо бы преобразовать в бинарное, чтобы было проще работать.
В этом месте натыкаемся на три трудности, связанные с особенностями устройств видеозахвата. Использовать статический порог для бинаризации изображения нельзя. Но эту проблему решает сам OpenCV, с помощью которого одной волшебной строчкой получаем вполне достойный результат.
Второй проблемой является, внезапно, цвет. PCM процессоры не используют цветовую составляющую видеосигнала, но платы захвата могут пытаться извлечь её из шумов. Особенно это заметно на самом дешевом EasyCAP. Это может немного испортить результат бинаризации, так что сначала изображение нужно преобразовать к оттенкам серого.
Кроме вышеупомянутого, EasyCAP умудряется перепутать поля местами. Точнее пропускает первую строку, из-за чего все остальные строки оказываются не на своих местах. Для записи утренника из детского сада это не сильно важно, а вот тут уже становится проблемой. Расставить строки в правильном порядке достаточно легко. В конце каждого кадра есть область без данных. Если мы передвинем строки, содержащие полезный сигнал, вниз до упора, то поля гарантированно вернутся на свои места. При изучении пробовал использовать три устройства захвата из различных ценовых диапазонов, но самым полезным в итоге оказалось самое дешевое, так как оно вскрыло ряд проблем.
На изображении можно наблюдать цветные пятна и более высокий уровень яркости бит данных, если сравнивать с первой иллюстрацией статьи, захваченной на Magewell Pro Capture AIO.
Самое время вспомнить, на чем хранится сигнал. Магнитофоны стандарта VHS не отличаются особым качеством, так как это бытовой формат. Одних только кадровых и строчных синхроимпульсов недостаточно для стабильной работы. Следовательно, в видеосигнал внесены дополнительные метки синхронизации. В каждой строке в начале имеется последовательность из чередующихся двух белых и двух черных “пикселей”, а в конце строки небольшая область с максимальной яркостью, которая подстраивает АРУ. Сами же биты данных имеют яркость 60% от максимальной для 1 и менее 20% для 0. Вот пример, почему эти метки необходимы: завороты картинки с кассет в начале и конце кадра.
По меткам синхронизации в каждой строке находится область данных. Далее нужно определить ширину бита (всего 128 бит в строке) и ужать строку изображения до 16 байт.
Рассмотрим поближе формат данных. Строка состоит из 8 блоков по 14 бит, содержащих значения для вывода на ЦАП (сэмплы) и коды коррекции ошибок, и блока с контрольной суммой (CRC-16/CCITT-FALSE). По контрольным суммам определяются выпавшие строки, данные в которых аппарат попытается восстановить. На каждой строке хранится по три сэмпла для левого и правого каналов, блок четности P (xor всех сэмплов) и загадочное Q. Порядок следующий: L0, R0, L1, R1, L2, R2, P, Q. Про коррекцию по Q сегодня не будем, так как этот материал ещё не до конца изучен и реализация требует отладки.
Если использовать “как есть”, то побитая строка означает выпадение сразу трех сэмплов, что будет заметно уху по металлическому звону. Но диды были умнее и решили записывать данные лесенками. С одной строки берется только один блок. Следующий берется с небольшим смещением. Ступенька лестницы занимает 16 строк. Блок L0 берется с 1 строки. Блок R0 с 17 строки… Таким образом, с помощью блока четности, можно восстановить данные 16 потерянных подряд строк. Но только при наличии одной ошибки внутри лесенки. Блок Q же позволяет исправить две ошибки, что восстанавливает уже до 32 потерянных строк.
Рассмотрим простой пример. Имеется фрагмент PCM кадра, в котором побились несколько строк (выделены красным). Первые 4 лесенки обработаются нормально. Пятая захватит битую строку. Первым теряется блок Q, но, так как он служит для коррекции ошибок, а сами сэмплы не повреждены, можно идти дальше. С шестой лесенкой поступаем аналогично. Далее снова идут не поврежденные лесенки вплоть до 21. В ней страдает уже блок P. Он тоже служит для восстановления данных. Можно пропустить. Так идем до 37 лесенки, где будет поврежден сэмпл правого канала. Чтобы его восстановить нужно выполнить XOR для блока четности и всех остальных сэмплов:
В результате получим исходное значение. При наличии двух ошибок идет попытка восстановления с использованием блока Q. Если их больше, то с этим уже ничего не сделать, кроме как интерполировать значения битых сэмплов или обнулить их.
Процесс прохода по полю можно наблюдать на небольшой GIF анимации.
И так идем до момента, пока последняя ступенька лестницы не упрется в конец поля. Аппаратный PCM имеет циклический буфер. Как только строка была обработана — её можно заполнить новыми данными. Таким образом, последняя ступенька прыгает вверх без прерывания воспроизведения.
Я избрал немного иной принцип работы. Сейчас уже нет такого ограничения на память, так что буфер имеет немного больший размер: высота поля плюс высота лесенки. Как только лесенка доходит до конца буфера — последние 111 строк переносятся в начало, а заполнение новыми данными идет уже со 112 строки. Разумеется, нельзя забывать, что при работе с картой захвата часть строк мы теряем. Поэтому обязательно заполняем недостающие строки нулями, чтобы по ошибкам CRC отметить их для дальнейшего восстановления.
Изначально PCM был 14-битный. Но со временем, когда VHS видеомагнитофоны повысили качество картинки, производители перешли на 16 бит, не забыв при этом про обратную совместимость.
Забавный факт 3. На некоторых 14-битных PCM процессорах стояли 12 битные АЦП. А два недостающих бита были просто копией старшего бита с выхода АЦП (он же отвечает за знак).
В 16-битном PCM блока Q вообще нет, так что в заголовке поля имеется специальная отметка «коррекция по Q невозможна». Вместо него собраны по 2 недостающих бита сэмплов и P. Высота лесенки в данном случае уже не 8 ступенек, а всего 7, так как недостающие биты блока хранятся на его же строке, а не отдельно. Понять, как устроен 16-битный PCM достаточно просто на примере захвата меандра частотой в 100 Герц и максимальной амплитудой. Все сразу встает на свои места.
Теперь самое время сохранить результат в wav файл. Поможет в этом библиотека libsndfile. Хотя… PCM же не сохраняет файлы, а сразу же воспроизводит. Тут можно вспомнить про такую классную штуку, как pipe. Когда вывод одной программы поступает на вход другой. Просто указываем stdout как назначение и перенаправляем поток в программу ffplay.
Теперь можно наслаждаться выпадениями и продолжать отлаживать код, чтобы от них избавиться.
На этом на сегодня все. Скачать исходники декодера можно со странички на GitHub: https://github.com/walhi/pcm. Там же есть и генератор. Когда-нибудь я оформлю его как плагин для foobar.
Сейчас ведется активная работа по допиливанию восстановления по блоку Q, так что для более менее корректной работы придется попрыгать по коммитам. Но это мелочи. Желающие поиграть могут скачать пример захвата.