Автор Тема: Аудиодекодер и A/V синхронизация.[Исправлено]  (Прочитано 2437 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Существуют MKV, в которых реальная длительность аудио дорожки отличается от длительности видео. Такие дорожки укладываются в MKV с корректировкой (масштабированием) временных меток.
Например: Был видеофайл со звуков и частотой 25 к/с, к нему добавили дорожку из видео с частотой 23,976. Чтобы все было хорошо, временные метки новой дорожки подкорректированы.
Примеры: sample.mkv.

В текущих версиях 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.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1772
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #1 : 30 Апрель 2018, 05:34:05 »
Пример воспроизводиться так же - с нарастающим рассинхроном.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #2 : 30 Апрель 2018, 05:46:02 »
Опцию корректировки включи в декодере :)
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1772
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #3 : 30 Апрель 2018, 06:01:46 »
С включенной опцией нормально. Я думал опция больше не нужна.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #4 : 30 Апрель 2018, 06:07:18 »
Как так не нужна. Я просто избавился от резких рывков, так же корректно обрабатываются данные после парсера ffmpeg(более не нужно большое значение jitter для DTS)
[merge_posts_bbcode]Добавлено: 2018-04-30 16:07:18[/merge_posts_bbcode]

Седня-завтра доделаю для битстрима, ac3 энкодинга.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1772
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #5 : 30 Апрель 2018, 06:32:07 »
А в чем тогда смысл второго режима, который сейчас дает рассинхрон?

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #6 : 30 Апрель 2018, 08:42:21 »
Чето попадалось такое, уже и не помню. Пришлось отключать корректировку. Да и что, лишним не будет.
[merge_posts_bbcode]Добавлено: 2018-04-30 18:42:21[/merge_posts_bbcode]

Окончательный вариант(сделал для битстрима и AC3 энкодинга).
https://yadi.sk/d/QctAJ4qQ3Uxmvz
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 1772
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #7 : 30 Апрель 2018, 19:52:15 »
Просто раньше встроенный аудиорендерер иначе работал, и отключение опции, скорее всего, под него и сделано было, чтобы звук не прерывался для некоторых файлов.
Сейчас в аудиорендерере свои часы, и он не пропускает и не добавляет сэмплы.
[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), но нужен достоверный "детектор" таких случаев.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Аудиодекодер и A/V синхронизация.[Исправлено]
« Ответ #8 : 30 Апрель 2018, 23:34:11 »
Можно будет подумать про ускорение/замедление.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

usalex

  • Пользователь
  • **
  • Сообщений: 22
Цитата: V0lt
Для этого файла невозможно заранее выставить частоту дисплея
Почему это нельзя? Можно. Частота дисплея должна быть кратна частоте кадров видео. Это главное правило, необходимое для плавности картинки. А звук - это другая история. Он не на дисплей выводится и не надо на него ориентироваться при выставлении частоты дисплея.
[merge_posts_bbcode]Добавлено: 2018-05-01 05:10:38[/merge_posts_bbcode]

Цитата: V0lt
Хоть usalex и пишет, что было лучше, но сам же признается, что звук постоянно заикался.
Нет. Звук заикался не постоянно, а только тогда, когда я ему это разрешал (была опция выбора режима синхры).
А если какой-то фильм был более разговорного или музыкального жанра, где звук был важнее картинки, можно было поменять режим. Было лучше, потому, что был выбор.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Ну звук ВСЕГДА является "источником" времени вывода, картинки в том числе. Так работают все аудио-рендереры.
Но это никак не относиться к данной теме(тут про аудио-декодер).
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

usalex

  • Пользователь
  • **
  • Сообщений: 22
Цитата: Aleksoid1978
Ну звук ВСЕГДА является "источником" времени вывода, картинки в том числе. Так работают все аудио-рендереры.
Да, я знаю. Но эта схема нормально работает только там, где соблюдены стандарты при изготовлении клипа. А когда сталкиваемся с кривизной, нужен костыль. Был костыль в форме ручного выбора синхры. Но если тебе удастся побороть кривизну через правку декодера, будет супер. Хотя, я сильно сомневаюсь, что на кривизне, типа твоего клипа, возможно сделать плавными одновременно и картинку, и звук.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Плавность можно конечно сделать - для этого надо в аудио-рендерере немного разгонять/тормозить аудио-поток.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1399
К сожалению, после переделки встроенного аудио декодера (временных меток), на некоторых видео файлах появился рассинхрон.
[merge_posts_bbcode]Добавлено: 2018-05-01 10:13:08[/merge_posts_bbcode]

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

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

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

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

Данное изменение в SVN, на текущий момент, - некорректное, нуждается в доработках и исправлениях, а также и в тщательном тестирование различных форматов видео файлов.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2164
Ну так наверное надо выложить файлы на которых наблюдается рассинхрон, пропуски кадров и т.д.
Я проверял и на разных "тестовых" файлах, и на реальном просмотре(ну 5-10 минут - а несколько часов).

На самом деле переделывание было не из-за одного этого файла с первого поста.
I7 2600K@4.2 / Asrock P67 Extreme 4 Gen 3 / Kingston HyperX 8Gb 1866 (4x2) Kit / GIGABYTE GTX 960 / BenQ EW2430 / LG 47LM620T / Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215