Advertisement
Guest User

xbmc postprocessing WiP

a guest
Apr 5th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.00 KB | None | 0 0
  1. diff -Naur xbmc-9999.old/language/English/strings.po xbmc-9999/language/English/strings.po
  2. --- xbmc-9999.old/language/English/strings.po   2013-04-04 12:50:15.435601834 +0200
  3. +++ xbmc-9999/language/English/strings.po   2013-04-04 12:50:53.330600343 +0200
  4. @@ -6399,7 +6399,43 @@
  5.  msgid "Post-processing"
  6.  msgstr ""
  7.  
  8. -#empty strings from id 16401 to 17499
  9. +msgctxt "#16401"
  10. +msgid "Post-processing Mode"
  11. +msgstr ""
  12. +
  13. +msgctxt "#16402"
  14. +msgid "Default"
  15. +msgstr ""
  16. +
  17. +msgctxt "#16403"
  18. +msgid "Lowest"
  19. +msgstr ""
  20. +
  21. +msgctxt "#16404"
  22. +msgid "Lower"
  23. +msgstr ""
  24. +
  25. +msgctxt "#16405"
  26. +msgid "Low"
  27. +msgstr ""
  28. +
  29. +msgctxt "#16406"
  30. +msgid "Standard"
  31. +msgstr ""
  32. +
  33. +msgctxt "#16407"
  34. +msgid "High"
  35. +msgstr ""
  36. +
  37. +msgctxt "#16408"
  38. +msgid "Higher"
  39. +msgstr ""
  40. +
  41. +msgctxt "#16409"
  42. +msgid "Highest"
  43. +msgstr ""
  44. +
  45. +#empty strings from id 16410 to 17499
  46.  
  47.  msgctxt "#17500"
  48.  msgid "Display sleep timeout"
  49. diff -Naur xbmc-9999.old/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp xbmc-9999/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
  50. --- xbmc-9999.old/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp   2013-04-04 12:50:14.833601857 +0200
  51. +++ xbmc-9999/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp   2013-04-04 13:06:22.139563815 +0200
  52. @@ -688,8 +688,51 @@
  53.              {
  54.                if (!sPostProcessType.empty())
  55.                  sPostProcessType += ",";
  56. -              // This is what mplayer uses for its "high-quality filter combination"
  57. -              sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProc;
  58. +
  59. +              switch (g_settings.m_currentVideoSettings.m_PostProcessingMode)
  60. +              {
  61. +              case VS_PPMODE_DEFAULT:
  62. +                {
  63. +                  // this is the one that will be overwritten by settings in Advancedsettings.xml
  64. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcDefault;
  65. +                }
  66. +                break;
  67. +              case VS_PPMODE_LOWEST:            }
  68. +                {
  69. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcLowest;
  70. +                }
  71. +                break;
  72. +              case VS_PPMODE_LOWER:
  73. +                {
  74. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcLower;
  75. +                }
  76. +                break;
  77. +              case VS_PPMODE_LOW:
  78. +                {
  79. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcLow;
  80. +                }
  81. +                break;
  82. +              case VS_PPMODE_STANDARD:
  83. +                {
  84. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcStandard;
  85. +                }
  86. +                break;
  87. +              case VS_PPMODE_HIGH:
  88. +                {
  89. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcHigh;
  90. +                }
  91. +                break;
  92. +              case VS_PPMODE_HIGHER:
  93. +                {
  94. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcHigher;
  95. +                }
  96. +                break;
  97. +              case VS_PPMODE_HIGHEST:
  98. +                {
  99. +                  sPostProcessType += g_advancedSettings.m_videoPPFFmpegPostProcHighest;
  100. +                }
  101. +                break;
  102. +              }
  103.              }
  104.  
  105.              if (!sPostProcessType.empty())
  106. diff -Naur xbmc-9999.old/xbmc/settings/AdvancedSettings.cpp xbmc-9999/xbmc/settings/AdvancedSettings.cpp
  107. --- xbmc-9999.old/xbmc/settings/AdvancedSettings.cpp    2013-04-04 12:50:14.755601860 +0200
  108. +++ xbmc-9999/xbmc/settings/AdvancedSettings.cpp    2013-04-04 12:50:53.337600343 +0200
  109. @@ -120,7 +120,14 @@
  110.    m_videoPercentSeekBackwardBig = -10;
  111.    m_videoBlackBarColour = 0;
  112.    m_videoPPFFmpegDeint = "linblenddeint";
  113. -  m_videoPPFFmpegPostProc = "ha:128:7,va,dr";
  114. +  m_videoPPFFmpegPostProcDefault = "ha:a,va:a,dr:a"; // automatic version of standard filter
  115. +  m_videoPPFFmpegPostProcLowest = "h1:a,v1:a,dr:a"; // hb filters
  116. +  m_videoPPFFmpegPostProcLower = "hb:a,vb:a,dr:a";
  117. +  m_videoPPFFmpegPostProcLow = "hb:a:128:7,vb:a,dr:a";
  118. +  m_videoPPFFmpegPostProcStandard = "ha:32:39,va,dr"; // ha filters
  119. +  m_videoPPFFmpegPostProcHigh = "ha:a:128:7,va:a,dr:a";
  120. +  m_videoPPFFmpegPostProcHigher = "ha:128:7,va,dr";
  121. +  m_videoPPFFmpegPostProcHighest = "ha:256:3,va,dr";
  122.    m_videoDefaultPlayer = "dvdplayer";
  123.    m_videoDefaultDVDPlayer = "dvdplayer";
  124.    m_videoIgnoreSecondsAtStart = 3*60;
  125. @@ -520,7 +527,7 @@
  126.  
  127.      XMLUtils::GetString(pElement,"cleandatetime", m_videoCleanDateTimeRegExp);
  128.      XMLUtils::GetString(pElement,"ppffmpegdeinterlacing",m_videoPPFFmpegDeint);
  129. -    XMLUtils::GetString(pElement,"ppffmpegpostprocessing",m_videoPPFFmpegPostProc);
  130. +    XMLUtils::GetString(pElement,"ppffmpegpostprocessing",m_videoPPFFmpegPostProcDefault);
  131.      XMLUtils::GetInt(pElement,"vdpauscaling",m_videoVDPAUScaling);
  132.      XMLUtils::GetFloat(pElement, "nonlinearstretchratio", m_videoNonLinStretchRatio, 0.01f, 1.0f);
  133.      XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers);
  134. diff -Naur xbmc-9999.old/xbmc/settings/AdvancedSettings.h xbmc-9999/xbmc/settings/AdvancedSettings.h
  135. --- xbmc-9999.old/xbmc/settings/AdvancedSettings.h  2013-04-04 12:50:14.755601860 +0200
  136. +++ xbmc-9999/xbmc/settings/AdvancedSettings.h  2013-04-04 12:50:53.338600343 +0200
  137. @@ -136,7 +136,14 @@
  138.      int m_videoPercentSeekForwardBig;
  139.      int m_videoPercentSeekBackwardBig;
  140.      CStdString m_videoPPFFmpegDeint;
  141. -    CStdString m_videoPPFFmpegPostProc;
  142. +    CStdString m_videoPPFFmpegPostProcDefault;
  143. +    CStdString m_videoPPFFmpegPostProcLowest;
  144. +    CStdString m_videoPPFFmpegPostProcLower;
  145. +    CStdString m_videoPPFFmpegPostProcLow;
  146. +    CStdString m_videoPPFFmpegPostProcStandard;
  147. +    CStdString m_videoPPFFmpegPostProcHigh;
  148. +    CStdString m_videoPPFFmpegPostProcHigher;
  149. +    CStdString m_videoPPFFmpegPostProcHighest;
  150.      int m_videoVDPAUdeintHD;
  151.      int m_videoVDPAUdeintSD;
  152.      bool m_videoVDPAUtelecine;
  153. diff -Naur xbmc-9999.old/xbmc/settings/MediaSettings.cpp xbmc-9999/xbmc/settings/MediaSettings.cpp
  154. --- xbmc-9999.old/xbmc/settings/MediaSettings.cpp   2013-04-04 12:50:14.755601860 +0200
  155. +++ xbmc-9999/xbmc/settings/MediaSettings.cpp   2013-04-04 13:14:21.782544952 +0200
  156. @@ -87,6 +87,9 @@
  157.      if (!XMLUtils::GetFloat(pElement, "noisereduction", m_defaultVideoSettings.m_NoiseReduction, 0.0f, 1.0f))
  158.        m_defaultVideoSettings.m_NoiseReduction = 0.0f;
  159.      XMLUtils::GetBoolean(pElement, "postprocess", m_defaultVideoSettings.m_PostProcess);
  160. +    int postProcessingMode;
  161. +    GetInteger(pElement, "postprocessingmode", postProcessingMode, VS_PPMODE_DEFAULT, VS_PPMODE_DEFAULT, VS_PPMODE_HIGHEST);
  162. +    m_defaultVideoSettings.m_PostProcessingMode = (EPOSTPROCESSINGMODE)postProcessingMode;
  163.      if (!XMLUtils::GetFloat(pElement, "sharpness", m_defaultVideoSettings.m_Sharpness, -1.0f, 1.0f))
  164.        m_defaultVideoSettings.m_Sharpness = 0.0f;
  165.      XMLUtils::GetBoolean(pElement, "outputtoallspeakers", m_defaultVideoSettings.m_OutputToAllSpeakers);
  166. @@ -140,6 +143,7 @@
  167.    XMLUtils::SetInt(pNode, "scalingmethod", m_defaultVideoSettings.m_ScalingMethod);
  168.    XMLUtils::SetFloat(pNode, "noisereduction", m_defaultVideoSettings.m_NoiseReduction);
  169.    XMLUtils::SetBoolean(pNode, "postprocess", m_defaultVideoSettings.m_PostProcess);
  170. +  XMLUtils::SetInt(pNode, "postprocessingmode", m_defaultVideoSettings.m_PostProcessingMode);
  171.    XMLUtils::SetFloat(pNode, "sharpness", m_defaultVideoSettings.m_Sharpness);
  172.    XMLUtils::SetInt(pNode, "viewmode", m_defaultVideoSettings.m_ViewMode);
  173.    XMLUtils::SetFloat(pNode, "zoomamount", m_defaultVideoSettings.m_CustomZoomAmount);
  174. diff -Naur xbmc-9999.old/xbmc/settings/VideoSettings.cpp xbmc-9999/xbmc/settings/VideoSettings.cpp
  175. --- xbmc-9999.old/xbmc/settings/VideoSettings.cpp   2013-04-04 12:50:14.754601860 +0200
  176. +++ xbmc-9999/xbmc/settings/VideoSettings.cpp   2013-04-04 12:50:53.340600343 +0200
  177. @@ -49,6 +49,7 @@
  178.    m_Sharpness = 0.0f;
  179.    m_NoiseReduction = 0;
  180.    m_PostProcess = false;
  181. +  m_PostProcessingMode = VS_PPMODE_DEFAULT;
  182.    m_VolumeAmplification = 0;
  183.    m_AudioDelay = 0.0f;
  184.    m_OutputToAllSpeakers = false;
  185. @@ -81,6 +82,7 @@
  186.    if (m_Sharpness != right.m_Sharpness) return true;
  187.    if (m_NoiseReduction != right.m_NoiseReduction) return true;
  188.    if (m_PostProcess != right.m_PostProcess) return true;
  189. +  if (m_PostProcessingMode != right.m_PostProcessingMode) return true;
  190.    if (m_VolumeAmplification != right.m_VolumeAmplification) return true;
  191.    if (m_AudioDelay != right.m_AudioDelay) return true;
  192.    if (m_OutputToAllSpeakers != right.m_OutputToAllSpeakers) return true;
  193. diff -Naur xbmc-9999.old/xbmc/settings/VideoSettings.h xbmc-9999/xbmc/settings/VideoSettings.h
  194. --- xbmc-9999.old/xbmc/settings/VideoSettings.h 2013-04-04 12:50:14.754601860 +0200
  195. +++ xbmc-9999/xbmc/settings/VideoSettings.h 2013-04-04 12:50:53.341600343 +0200
  196. @@ -96,6 +96,18 @@
  197.    VS_SCALINGMETHOD_MAX // do not use and keep as last enum value.
  198.  };
  199.  
  200. +enum EPOSTPROCESSINGMODE
  201. +{
  202. +  VS_PPMODE_DEFAULT=0,
  203. +  VS_PPMODE_LOWEST,
  204. +  VS_PPMODE_LOWER,
  205. +  VS_PPMODE_LOW,
  206. +  VS_PPMODE_STANDARD,
  207. +  VS_PPMODE_HIGH,
  208. +  VS_PPMODE_HIGHER,
  209. +  VS_PPMODE_HIGHEST
  210. +};
  211. +
  212.  typedef enum {
  213.    ViewModeNormal      = 0,
  214.    ViewModeZoom,
  215. @@ -134,6 +146,7 @@
  216.    float m_Gamma;
  217.    float m_NoiseReduction;
  218.    bool m_PostProcess;
  219. +  EPOSTPROCESSINGMODE m_PostProcessingMode;
  220.    float m_Sharpness;
  221.    float m_AudioDelay;
  222.    int m_ResumeTime;
  223. diff -Naur xbmc-9999.old/xbmc/video/dialogs/GUIDialogVideoSettings.cpp xbmc-9999/xbmc/video/dialogs/GUIDialogVideoSettings.cpp
  224. --- xbmc-9999.old/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2013-04-04 12:50:14.733601861 +0200
  225. +++ xbmc-9999/xbmc/video/dialogs/GUIDialogVideoSettings.cpp 2013-04-04 12:50:53.342600343 +0200
  226. @@ -68,6 +68,7 @@
  227.  #define VIDEO_SETTINGS_POSTPROCESS        22
  228.  #define VIDEO_SETTINGS_VERTICAL_SHIFT     23
  229.  #define VIDEO_SETTINGS_DEINTERLACEMODE    24
  230. +#define VIDEO_SETTINGS_POSTPROCESS_MODE   25
  231.  
  232.  void CGUIDialogVideoSettings::CreateSettings()
  233.  {
  234. @@ -174,6 +175,12 @@
  235.      AddSlider(VIDEO_SETTINGS_PIXEL_RATIO, 217, &CMediaSettings::Get().GetCurrentVideoSettings().m_CustomPixelRatio, 0.5f, 0.01f, 2.0f, FormatFloat);
  236.    if (g_renderManager.Supports(RENDERFEATURE_POSTPROCESS))
  237.      AddBool(VIDEO_SETTINGS_POSTPROCESS, 16400, &CMediaSettings::Get().GetCurrentVideoSettings().m_PostProcess);
  238. +  {
  239. +    const int entries[] = {16402, 16403, 16404, 16405, 16406, 16407, 16408, 16409};
  240. +    AddSpin(VIDEO_SETTINGS_POSTPROCESS_MODE, 16401, (int*)&CMediaSettings::Get().GetCurrentVideoSettings().m_PostProcessingMode, 8, entries);
  241. +    EnableSettings(VIDEO_SETTINGS_POSTPROCESS_MODE, &CMediaSettings::Get().GetCurrentVideoSettings().m_PostProcess);
  242. +    UpdateSetting(VIDEO_SETTINGS_POSTPROCESS_MODE);
  243. +  }
  244.  
  245.  #ifdef HAS_VIDEO_PLAYBACK
  246.    if (g_renderManager.Supports(RENDERFEATURE_BRIGHTNESS))
  247. @@ -252,6 +259,12 @@
  248.      EnableSettings(VIDEO_SETTINGS_INTERLACEMETHOD, CMediaSettings::Get().GetCurrentVideoSettings().m_DeinterlaceMode != VS_DEINTERLACEMODE_OFF);
  249.    }
  250.  
  251. +  else if (setting.id == VIDEO_SETTINGS_POSTPROCESS)
  252. +  {
  253. +    EnableSettings(VIDEO_SETTINGS_POSTPROCESS_MODE, &CMediaSettings::Get().GetCurrentVideoSettings().m_PostProcess);
  254. +    UpdateSetting(VIDEO_SETTINGS_POSTPROCESS_MODE);
  255. +  }
  256. +
  257.    if (g_PVRManager.IsPlayingRadio() || g_PVRManager.IsPlayingTV())
  258.      g_PVRManager.TriggerSaveChannelSettings();
  259.  }
  260. diff -Naur xbmc-9999.old/xbmc/video/VideoDatabase.cpp xbmc-9999/xbmc/video/VideoDatabase.cpp
  261. --- xbmc-9999.old/xbmc/video/VideoDatabase.cpp  2013-04-04 12:50:14.735601861 +0200
  262. +++ xbmc-9999/xbmc/video/VideoDatabase.cpp  2013-04-04 12:50:53.350600342 +0200
  263. @@ -108,7 +108,7 @@
  264.                  "SubtitleDelay float, SubtitlesOn bool, Brightness float, Contrast float, Gamma float,"
  265.                  "VolumeAmplification float, AudioDelay float, OutputToAllSpeakers bool, ResumeTime integer, Crop bool, CropLeft integer,"
  266.                  "CropRight integer, CropTop integer, CropBottom integer, Sharpness float, NoiseReduction float, NonLinStretch bool, PostProcess bool,"
  267. -                "ScalingMethod integer, DeinterlaceMode integer)\n");
  268. +                "ScalingMethod integer, DeinterlaceMode integer, PostProcessingMode integer)\n");
  269.      m_pDS->exec("CREATE UNIQUE INDEX ix_settings ON settings ( idFile )\n");
  270.  
  271.      CLog::Log(LOGINFO, "create stacktimes table");
  272. @@ -3593,12 +3593,12 @@
  273.        strSQL=PrepareSQL("update settings set Deinterlace=%i,ViewMode=%i,ZoomAmount=%f,PixelRatio=%f,VerticalShift=%f,"
  274.                         "AudioStream=%i,SubtitleStream=%i,SubtitleDelay=%f,SubtitlesOn=%i,Brightness=%f,Contrast=%f,Gamma=%f,"
  275.                         "VolumeAmplification=%f,AudioDelay=%f,OutputToAllSpeakers=%i,Sharpness=%f,NoiseReduction=%f,NonLinStretch=%i,PostProcess=%i,ScalingMethod=%i,"
  276. -                       "DeinterlaceMode=%i,",
  277. +                       "DeinterlaceMode=%i,PostProcessingMode=%i,",
  278.                         setting.m_InterlaceMethod, setting.m_ViewMode, setting.m_CustomZoomAmount, setting.m_CustomPixelRatio, setting.m_CustomVerticalShift,
  279.                         setting.m_AudioStream, setting.m_SubtitleStream, setting.m_SubtitleDelay, setting.m_SubtitleOn,
  280.                         setting.m_Brightness, setting.m_Contrast, setting.m_Gamma, setting.m_VolumeAmplification, setting.m_AudioDelay,
  281.                         setting.m_OutputToAllSpeakers,setting.m_Sharpness,setting.m_NoiseReduction,setting.m_CustomNonLinStretch,setting.m_PostProcess,setting.m_ScalingMethod,
  282. -                       setting.m_DeinterlaceMode);
  283. +                       setting.m_DeinterlaceMode,setting.m_PostProcessingMode);
  284.        CStdString strSQL2;
  285.        strSQL2=PrepareSQL("ResumeTime=%i,Crop=%i,CropLeft=%i,CropRight=%i,CropTop=%i,CropBottom=%i where idFile=%i\n", setting.m_ResumeTime, setting.m_Crop, setting.m_CropLeft, setting.m_CropRight, setting.m_CropTop, setting.m_CropBottom, idFile);
  286.        strSQL += strSQL2;
  287. @@ -3612,7 +3612,7 @@
  288.                  "AudioStream,SubtitleStream,SubtitleDelay,SubtitlesOn,Brightness,"
  289.                  "Contrast,Gamma,VolumeAmplification,AudioDelay,OutputToAllSpeakers,"
  290.                  "ResumeTime,Crop,CropLeft,CropRight,CropTop,CropBottom,"
  291. -                "Sharpness,NoiseReduction,NonLinStretch,PostProcess,ScalingMethod,DeinterlaceMode) "
  292. +                "Sharpness,NoiseReduction,NonLinStretch,PostProcess,ScalingMethod,DeinterlaceMode,PostProcessingMode) "
  293.                "VALUES ";
  294.        strSQL += PrepareSQL("(%i,%i,%i,%f,%f,%f,%i,%i,%f,%i,%f,%f,%f,%f,%f,%i,%i,%i,%i,%i,%i,%i,%f,%f,%i,%i,%i,%i)",
  295.                             idFile, setting.m_InterlaceMethod, setting.m_ViewMode, setting.m_CustomZoomAmount, setting.m_CustomPixelRatio, setting.m_CustomVerticalShift,
  296. @@ -3620,7 +3620,7 @@
  297.                             setting.m_Contrast, setting.m_Gamma, setting.m_VolumeAmplification, setting.m_AudioDelay, setting.m_OutputToAllSpeakers,
  298.                             setting.m_ResumeTime, setting.m_Crop, setting.m_CropLeft, setting.m_CropRight, setting.m_CropTop, setting.m_CropBottom,
  299.                             setting.m_Sharpness, setting.m_NoiseReduction, setting.m_CustomNonLinStretch, setting.m_PostProcess, setting.m_ScalingMethod,
  300. -                           setting.m_DeinterlaceMode);
  301. +                           setting.m_DeinterlaceMode,setting.m_PostProcessingMode);
  302.        m_pDS->exec(strSQL.c_str());
  303.      }
  304.    }
  305. @@ -4133,7 +4133,11 @@
  306.      m_pDS->exec("UPDATE settings SET DeinterlaceMode = 1 WHERE Deinterlace = 1"); // method auto => mode auto
  307.      m_pDS->exec("UPDATE settings SET DeinterlaceMode = 0, Deinterlace = 1 WHERE Deinterlace = 0"); // method none => mode off, method auto
  308.    }
  309. -
  310. +  if (iVersion < 57)
  311. +  {
  312. +    m_pDS->exec("ALTER table settings add PostProcessingMode integer");
  313. +    m_pDS->exec(PrepareSQL("UPDATE settings set PostProcessingMode=%i", g_settings.m_defaultVideoSettings.m_PostProcessingMode));
  314. +  }
  315.    if (iVersion < 59)
  316.    { // base paths for video_ts and bdmv files was wrong (and inconsistent depending on where and when they were scanned)
  317.      CStdString where = PrepareSQL(" WHERE files.strFileName LIKE 'VIDEO_TS.IFO' or files.strFileName LIKE 'index.BDMV'");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement