MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Тема начата: Aleksoid1978 от 30 Апрель 2018, 02:47:04

Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 30 Апрель 2018, 02:47:04
Существуют MKV, в которых реальная длительность аудио дорожки отличается от длительности видео. Такие дорожки укладываются в MKV с корректировкой (масштабированием) временных меток.
Например: Был видеофайл со звуков и частотой 25 к/с, к нему добавили дорожку из видео с частотой 23,976. Чтобы все было хорошо, временные метки новой дорожки подкорректированы.
Примеры: sample.mkv (http://file.karelia.ru/fjzs6j/).

В текущих версиях MPC-BE такие файлы нормально воспроизводиться только, если подключить LAV Audio Decoder. Если использовать встроенный MpaDecFilter, то будут рывки.
[merge_posts_bbcode]Добавлено: 2018-04-30 12:47:04[/merge_posts_bbcode]

Предлагаю тестовый билд - https://yadi.sk/d/JH-cvVU23UwtTx, там сам .exe + патч(получилось немного некрасиво что в классе ffmpeg декодера используются переменные из самого фильтра, но так на самом деле удобнее чем дублировать переменные и придумывать как их передавать. Тем более что эти новые переменные пригодятся в дальнейшем).
Переделал обработку временных меток(за исключением SPDIF/HDMI Bitstream - руки еще не дошли). Взял за основу код из LAV Audio Decoder.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 30 Апрель 2018, 05:34:05
Пример воспроизводиться так же - с нарастающим рассинхроном.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 30 Апрель 2018, 05:46:02
Опцию корректировки включи в декодере :)
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 30 Апрель 2018, 06:01:46
С включенной опцией нормально. Я думал опция больше не нужна.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 30 Апрель 2018, 06:07:18
Как так не нужна. Я просто избавился от резких рывков, так же корректно обрабатываются данные после парсера ffmpeg(более не нужно большое значение jitter для DTS)
[merge_posts_bbcode]Добавлено: 2018-04-30 16:07:18[/merge_posts_bbcode]

Седня-завтра доделаю для битстрима, ac3 энкодинга.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 30 Апрель 2018, 06:32:07
А в чем тогда смысл второго режима, который сейчас дает рассинхрон?
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 30 Апрель 2018, 08:42:21
Чето попадалось такое, уже и не помню. Пришлось отключать корректировку. Да и что, лишним не будет.
[merge_posts_bbcode]Добавлено: 2018-04-30 18:42:21[/merge_posts_bbcode]

Окончательный вариант(сделал для битстрима и AC3 энкодинга).
https://yadi.sk/d/QctAJ4qQ3Uxmvz
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 30 Апрель 2018, 19:52:15
Просто раньше встроенный аудиорендерер иначе работал, и отключение опции, скорее всего, под него и сделано было (https://sourceforge.net/p/mpcbe/code/2790/?page=2), чтобы звук не прерывался для некоторых файлов.
Сейчас в аудиорендерере свои часы, и он не пропускает и не добавляет сэмплы.
[merge_posts_bbcode]Добавлено: 2018-04-30 21:39:29[/merge_posts_bbcode]

По поводу файла sample.mkv и автопереключалки.
Для этого файла невозможно заранее выставить частоту дисплея. Раньше тоже нельзя было. Хоть usalex и пишет, что было лучше, но сам же признается, что звук постоянно заикался.

[merge_posts_bbcode]Добавлено: 2018-04-30 22:52:15[/merge_posts_bbcode]

Хотя такое можно разрулить на стороне аудиорендерера через ускорение-замедление (atempo), но нужен достоверный "детектор" таких случаев.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 30 Апрель 2018, 23:34:11
Можно будет подумать про ускорение/замедление.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: usalex от 01 Май 2018, 02:10:38
Цитата: V0lt
Для этого файла невозможно заранее выставить частоту дисплея
Почему это нельзя? Можно. Частота дисплея должна быть кратна частоте кадров видео. Это главное правило, необходимое для плавности картинки. А звук - это другая история. Он не на дисплей выводится и не надо на него ориентироваться при выставлении частоты дисплея.
[merge_posts_bbcode]Добавлено: 2018-05-01 05:10:38[/merge_posts_bbcode]

Цитата: V0lt
Хоть usalex и пишет, что было лучше, но сам же признается, что звук постоянно заикался.
Нет. Звук заикался не постоянно, а только тогда, когда я ему это разрешал (была опция выбора режима синхры).
А если какой-то фильм был более разговорного или музыкального жанра, где звук был важнее картинки, можно было поменять режим. Было лучше, потому, что был выбор.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 01 Май 2018, 02:19:00
Ну звук ВСЕГДА является "источником" времени вывода, картинки в том числе. Так работают все аудио-рендереры.
Но это никак не относиться к данной теме(тут про аудио-декодер).
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: usalex от 01 Май 2018, 02:42:53
Цитата: Aleksoid1978
Ну звук ВСЕГДА является "источником" времени вывода, картинки в том числе. Так работают все аудио-рендереры.
Да, я знаю. Но эта схема нормально работает только там, где соблюдены стандарты при изготовлении клипа. А когда сталкиваемся с кривизной, нужен костыль. Был костыль в форме ручного выбора синхры. Но если тебе удастся побороть кривизну через правку декодера, будет супер. Хотя, я сильно сомневаюсь, что на кривизне, типа твоего клипа, возможно сделать плавными одновременно и картинку, и звук.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 01 Май 2018, 05:43:10
Плавность можно конечно сделать - для этого надо в аудио-рендерере немного разгонять/тормозить аудио-поток.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 01 Май 2018, 07:13:08
К сожалению, после переделки встроенного аудио декодера (временных меток), на некоторых видео файлах появился рассинхрон.
[merge_posts_bbcode]Добавлено: 2018-05-01 10:13:08[/merge_posts_bbcode]

И даже не на некоторых....

Да уж, эти переделки временных меток...

В общем так, после SVN r3574 появились следующие проблемы:

1. Рассинхрон
2. Джиттер, которого раньше и близко ни разу не было на некоторых видео файлах
3. Пропуски кадров во время воспроизведения, опять же из-за нарастающего джиттера, которого быть не должно на некоторых видео файлах.

Данное изменение в SVN, на текущий момент, - некорректное, нуждается в доработках и исправлениях, а также и в тщательном тестирование различных форматов видео файлов.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 01 Май 2018, 08:45:11
Ну так наверное надо выложить файлы на которых наблюдается рассинхрон, пропуски кадров и т.д.
Я проверял и на разных "тестовых" файлах, и на реальном просмотре(ну 5-10 минут - а несколько часов).

На самом деле переделывание было не из-за одного этого файла с первого поста.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 01 Май 2018, 10:47:25
Цитата: Aleksoid1978
Ну так наверное надо выложить файлы на которых наблюдается рассинхрон, пропуски кадров и т.д.
Я проверял и на разных "тестовых" файлах, и на реальном просмотре(ну 5-10 минут - а несколько часов).

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

Итак, начнем:

Проблема №1 - рассинхрон (https://yadi.sk/d/bP0EvaJ-3V5uNT).
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 01 Май 2018, 10:53:25
Evgeniy1990
Настройки декодера надеюсь сброшены?
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 01 Май 2018, 11:03:41
Проблема №2 - джиттер на всех WMV (https://yadi.sk/d/A1D9bQTv3V5wr6)
[merge_posts_bbcode]Добавлено: 2018-05-01 14:00:20[/merge_posts_bbcode]

Цитата: V0lt
Evgeniy1990
Настройки декодера надеюсь сброшены?
Настройки по умолчанию в аудио декодере у меня стоят.

[merge_posts_bbcode]Добавлено: 2018-05-01 14:03:41[/merge_posts_bbcode]

Проблема № 3 - пропуски кадров, во время воспроизведения (https://yadi.sk/d/A1D9bQTv3V5wr6).
Особенно заметны пропуски кадров, при использовании LAV Splitter на Windows 10.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 01 Май 2018, 11:04:00
RealAudio исправил.
Asf(и похожие) исправил.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 01 Май 2018, 16:45:24
Цитата: Aleksoid1978
RealAudio исправил.
Asf(и похожие) исправил.
Ок, буду проверять.

Проблема №4 - постоянный джиттер в AVI (https://yadi.sk/d/kUdedSMP3V74Rh)
На данном AVI-видео файле джиттер присутствует и должен быть только в начале, дальше его быть не должно.
Опять ситуация - наоборот, вместо частичного джиттера - постоянный.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 01 Май 2018, 17:12:51
Пофиг на джиттер, если файл воспроизводится нормально.

Если проблема воспроизводиться, только на встроенном рендерере, то скорее всего это проблема рендерера, а не декодера. Это в другую тему.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 02 Май 2018, 05:53:40
Цитата: V0lt
Пофиг на джиттер, если файл воспроизводится нормально.
Что значит - пофиг? Если он вместо одно места присутствия присутствует уже всегда - это уже ненормально, даже если визуально это незаметно.
Цитата: V0lt
Если проблема воспроизводиться, только на встроенном рендерере, то скорее всего это проблема рендерера, а не декодера. Это в другую тему.
Перенес остальные проблемы в тему переделанного встроенного "MPC Audio Renderer" (WASAPI Renderer) (https://mpc-be.org/forum/viewtopic.php?pid=3911#p3911).
[merge_posts_bbcode]Добавлено: 2018-05-02 08:53:40[/merge_posts_bbcode]

Цитата: Aleksoid1978
RealAudio исправил.
Asf(и похожие) исправил.
Проверил поведение данных видео файлов в SVN r3580.

1. Рассинхрона на RealAudio больше нет - исправлено.
2. Постоянного джиттера на AVI больше не наблюдается - исправлено.
3. Пропуски кадров во время воспроизведения на WMV (ASF) так и остались - не исправлено.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 02 Май 2018, 06:35:10
Этот ASF + LAV Source - всегда играл криво, неважно с каким декодером. С системным фильтром все нормально с воспроизведением.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: V0lt от 02 Май 2018, 07:42:40
Поддержу. "Лечить" корявое воспроизведение WMV/ASF на сторонних сплиттерах себе дороже выйдет, тем более если на системном нормально играет.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 14 Май 2018, 07:33:16
Проблема №5 - рассинхрон, при ускоренном/замедленном воспроизведении на "OGG Vorbis Audio".
Присутствует только на нашем встроенном переделанном "MPC Audio Decoder".

Обратите внимание - при использовании внешнего стороннего аудио декодера "LAV Audio Decoder", рассинхрона на данном видео файле, при ускоренном/замедленном воспроизведении - нет.

Алгоритм воспроизведения:

1. Скачать этот видео файл (https://yadi.sk/d/v-xFCrfg3VrzCj)
2. Запустить его
3. Во время его воспроизведения увеличить скорость воспроизведения на 1.2х

В итоге произойдет рассинхрон.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 14 Май 2018, 09:39:38
Блин - не надо уже писать слово "переделанный". В любом случае ничего возвращаться не будет ))
[merge_posts_bbcode]Добавлено: 2018-05-14 19:39:38[/merge_posts_bbcode]

С этим OGG скорее проблема нашего Source фильтра. Ну не умеет он нормально такие видео перематывать. Поэтому после перемотки будет и затуп(либо рывик видео) и разрывы во времени аудио-пакетов.

А наш Audio Renderer не умеет при изменении скорость корректно обрабатывать разрывы во временных метках и вносить корректировки(как это делает при обычном воспроизведении).
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 14 Май 2018, 09:54:28
Цитата: Aleksoid1978
С этим OGG скорее проблема нашего Source фильтра. Ну не умеет он нормально такие видео перематывать. Поэтому после перемотки будет и затуп(либо рывик видео) и разрывы во времени аудио-пакетов.

А наш Audio Renderer не умеет при изменении скорость корректно обрабатывать разрывы во временных метках и вносить корректировки(как это делает при обычном воспроизведении).
Я проверил связку фильтров: "MPC Ogg Source" + "LAV Audio Decoder".
При использовании "LAV Audio Decoder", данный видео файл воспроизводится нормально, без рассинхрона, при ускоренном/замедленном воспроизведении.
А вот с нашим встроенным "MPC Audio Decoder" + "MPC Ogg Source", данный видео файл воспроизводится с рассинхроном, при ускоренном/замедленном воспроизведении.
Здесь проблема именно в "MPC Audio Decoder".

P.S. И потом, я не понял ваш ответ - причем тут затуп и рывки, если речь шла именно про рассинхрон, при ускоренном/замедленном воспроизведении?
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 14 Май 2018, 10:30:51
Я проверил с нашим сплиттером и LAV Audio - так же при изменении скорости или даже после перемотки рассинхрон.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Evgeniy1990 от 15 Май 2018, 01:51:41
Цитата: Aleksoid1978
Я проверил с нашим сплиттером и LAV Audio - так же при изменении скорости или даже после перемотки рассинхрон.
Совершенно верно. Я еще раз перепроверил у себя и действительно, все именно так, как вы сказали.

"MPC Ogg Source" + "MPC Audio Decoder" + "DirectSound Audio Renderer" - рассинхрон
"MPC Ogg Source" + "MPC Audio Decoder" + "MPC Audio Renderer" - рассинхрон

"MPC Ogg Source" + "LAV Audio Decoder" + "DirectSound Audio Renderer" - рассинхрон
"MPC Ogg Source" + "LAV Audio Decoder" + "MPC Audio Renderer" -  рассинхрон

"LAV Splitter Source" + "MPC Audio Decoder" + "DirectSound Audio Renderer" - нет рассинхрона
"LAV Splitter Source" + "MPC Audio Decoder" + "MPC Audio Renderer" - нет рассинхрона

"LAV Splitter Source" + "LAV Audio Decoder" + "DirectSound Audio Renderer" - нет рассинхрона
"LAV Splitter Source" + "LAV Audio Decoder" + "MPC Audio Renderer" - нет рассинхрона

Вывод: только при использовании "LAV Splitter Source" на данном видео файле нет рассинхрона, при ускоренном/замедленном воспроизведении.

Действительно, проблема именно на стороне нашего фильтра-источника: "MPC Ogg Source".

Жаль конечно, что он не умеет корректно работать с OGG/OGM-видео файлами, при ускоренном/замедленном воспроизведении.
[merge_posts_bbcode]Добавлено: 2018-05-15 04:51:41[/merge_posts_bbcode]

Aleksoid1978

Тогда у меня к вам просьба - добавьте пожалуйста в список "Управление приоритетами" возможность выбора фильтров-источников для OGG/OGM, по аналогии со всеми остальными.
Название: Аудиодекодер и A/V синхронизация.[Исправлено]
Отправлено: Aleksoid1978 от 15 Май 2018, 04:40:40
Да дело не в ускоренном воспроизведении - а в перемотке, наш встроенный OGG Source не все файлы умеет корректно перематывать, отсюда и проблема.