Воспроизведение x264 4:4:4 [Не баг]

Автор a2c5, 15 января 2019, 17:28:41

« назад - далее »

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

a2c5

Все настройки MPC-BE.1.5.3.4322.x64 по умолчанию.

При включении опции "Запоминать позицию в файле",
когда воспроизведение 444PP начинается не с первого кадра видео,
вместо видео отображаются полосы, квадраты и шум.
Если воспроизведение 444PP начинается с самого начала видео, всё норм.

Да, с LAVFilters-0.73.1-x64 то же самое.
В предыдущих версиях MPC-BE то же самое.

И огромная благодарность авторам за MPC-BE.

V0lt

a2c5, дай ссылку на проблемный файл.

Evgeniy1990

Цитата: V0lta2c5, дай ссылку на проблемный файл.
Баг подтверждаю! Проявляется абсолютно на любых видео файлах с 4:4:4 Predictive (High 4:4:4 Profile).

V0lt, для вас ссылка на видео файл: https://yadi.sk/i/aUOjNpZcLwPv-A

И скриншот для наглядности. :)
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.

a2c5

V0lt, вряд ли дело в файле.
MPC-BE.1.4.5.787 воспроизводит x264 444PP хорошо (и  с LAVFilters неизвестной версии).
MPC-BE.1.5.0.2235 тоже норм (и со старыми LAVFilters-0.69).

Но более свежие, как MPC-BE.1.5.2, сыпят кадр и с  LAVFilters и без (и уже не работают со старыми LAVFilters-0.69).
Ща начну 1,08 ГБ файл 2014 года заливать куда-нибудь, ссылка будет позже.

А, ссылка уже есть. Спасибо, Evgeniy1990.

V0lt

Я тоже поймал баг.
Вот еще небольшая раздача для проверки.
Спойлер

Добавлено: 2019-01-15 19:51:02

Проверил с LAV v0.73.1. От смены сплиттера и декодера не зависит.

a2c5

V0lt, спасибочки! Уже предвкушаю...))

Aleksoid1978

Это файлы закодированные старой версией энкодера, он делал не по спекам. В начале самого потока прописана версия кодировщика. ffmpeg сейчас декодирует по спекам. И что бы старые файлы были норм - декодер смотрит версию энкодера, которая в начале потока храниться. Поэтому если открыть то норм, а если не с начала - то нет картинки правильной.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

a2c5

Aleksoid1978, мда...  ничего не поделаешь.
Ну, будем включать старые 444PP с первого кадра, а новые будут без проблем.
Благодарю за разъяснение. С наилучшими пожеланиями.

V0lt

Aleksoid1978
А поиск почему нормальный?
Я специально отключил быстрый поиск и все равно перематывает хорошо. А с запоминанием вот такая ерунда.

Aleksoid1978

Ну так версия x264 енкодера при открытии сначала считалась и запомнилась. А если с запоминанием - то эти данные просто не читаются, ибо они хранятся(обычно) считай в пером кадре.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

a2c5

Другие проигрыватели открывают старые 444PP без проблем
и, что интереснее, вообще без задержки.)

Aleksoid1978

Да закройте вы уже эту тему- к чему все это, какие то тесты и т.д.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Итого.
Если видео Hi444PP закодировано x264 с версией core меньше 151 (до r2851 ?), то оно будет иметь указанную проблему на декодерах, основанных на FFmpeg.

Версию x264 core можно посмотреть в отчете MediaInfo в поле "Библиотека кодирования" ("Writing library").

Учёт версии x264 core в FFmpeg:
   /* It would be better to do this in fill_decode_caches, but we don\'t know
     * the transform mode of the current macroblock there. */
    if (CHROMA444(h) && IS_8x8DCT(mb_type)){
        int i;
        uint8_t *nnz_cache = sl->non_zero_count_cache;
        if (h->x264_build < 151U) {
Если у такого файла отрезано начало, то артефакты будут с самого начала.
Пример: https://yadi.sk/d/iA7rgDHeS5WMt

VLC анализирует заголовок как-то иначе и играет без артефактов.

Все, что находиться на Рутрекере по запросу "Hi444PP" закодировано x264 core 142 или старее. :(

Aleksoid1978

VLC(3.0.7 и 3.0.8) так же играет с артефактами. Если старые версии и играли нормально - значит там использовалась старая версия ffmpeg.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

#14
Файлы из сообщений или вот этот. Открываю с начала, но после ручной перемотки картика пропадает и появляются артефакты.

Совсем недавно в бета-релизе 1.5.5 (build 5274) встроенный декодер декодировал этот файл нормально.
В MPC-HC 1.9.4 и LAV Video Decoder тоже все хорошо.

Версия x264 там похоже старая, но проблема новая.