Показать сообщение отдельно
Старый 21.04.2017, 22:37   #14
ViPetroFF
Senior Member
 
Регистрация: 17.12.2012
Сообщений: 166
По умолчанию

Благодарю вас за совет, с "<forcedxvarenderer>false</forcedxvarenderer>" kodi падает при включении проигрывания видео. Собрал kodi с исправлениями bag 9213, ничего не происходит при любом положении переключателя "g_advancedSettings.m_DXVAPassColorRange", уровень чёрного остаётся каким был. У меня похоже нельзя выключить dxva renderer.

Здебажил падение, происходит акцесс виалейшен в функции void YUVBuffer::PerformCopy().
В цикле:
Код:
      for (unsigned y = 0; y < m_sDesc.Height >> 1; ++y)
      {
        // Copy Y
        copy_func(d_y, s_y, planes[PLANE_Y].rect.RowPitch);
        s_y += rectangle.RowPitch;
        d_y += planes[PLANE_Y].rect.RowPitch;
        // Copy Y
        copy_func(d_y, s_y, planes[PLANE_Y].rect.RowPitch);
        s_y += rectangle.RowPitch;
        d_y += planes[PLANE_Y].rect.RowPitch;
        // Copy UV
        copy_func(d_uv, s_uv, planes[PLANE_UV].rect.RowPitch);
        s_uv += rectangle.RowPitch;
        d_uv += planes[PLANE_UV].rect.RowPitch;
      }
    }
Там m_sDesc.Height=1088, после деления на два получается 544, когда цикл доходит до y=540, то функция "copy_func(d_y, s_y, ..." при копировании выходит за границы выделенной памяти.
Исправил код на
Код:
      for (unsigned y = 0; y+4 < m_sDesc.Height >> 1; ++y)
Шейдеры заработали, баланс чёрного выправился! Но, fps упал до 3-6 кадров в секунду.

В итоге пришёл к простому решению, можно выключить dxva, производительности цп вполне хватает для soft декодинга h264 при отключенном деинтерлейсинге.

Последний раз редактировалось ViPetroFF; 22.04.2017 в 01:34.
ViPetroFF вне форума   Ответить с цитированием