Zitat:
Zitat von beiti
Einfach als sRGB? Oder werden da echte Videofarbräume wie Rec.709 benutzt?
|
Es wird auf Benutzerseite folgende Auswahl geboten
Zitat:
Input Type
The type of the video: Auto-Detect, HDTV, SDTV NTSC, SDTV PAL. This option determines how the color primaries of the input video are interpreted by the color management engine.
|
Auto-Detect macht es von den Auflösung des Videos abhängig:
Code:
static const int ntscSizes[][2] = {{720, 480}, {720, 486}, {704, 480}};
static const int palSizes[][2] = {{720, 576}, {704, 576}};
sonst wird HDTV angenommen.
Ich gehe schon davon aus, dass die richtigen Video-Farbräume genommen werden. Das ist in der "Videoplayer-Szene" so üblich.
Der Unterschied zwischen den Settings ist aber wirklich sehr wenig zu sehen. Vielleicht bräuchte ich mal ein spezielles Testvideo falls es so etwas gibt.
Man kann natürlich auch in den Source gucken ... Idee!
Source ist hier:
http://mpc-hc.svn.sourceforge.net/vi...12&view=markup
Die entsprechende Funktion heißt:
HRESULT CDX9RenderingEngine::CreateIccProfileLut(TCHAR* profilePath, float* lut3D)
und ist im Moment in Zeile 1159 zu finden (Revision 3650)
Der interessante Teil ist der folgende.
Sieht alles ziemlich gut aus.
Die Farbräume stehen in den Kommentaren.
Jetzt müsste nur noch mal die Primaries nachschlagen um wirklich sicher zu gehen

... aber ich muss jetzt echt los
Code:
// Set the input white point. It's D65 in all cases.
cmsCIExyY whitePoint;
whitePoint.x = 0.312713;
whitePoint.y = 0.329016;
whitePoint.Y = 1.0;
// Set the input primaries
cmsCIExyYTRIPLE primaries;
switch (videoSystem) {
case VIDEO_SYSTEM_HDTV:
// Rec. 709
primaries.Red.x = 0.64;
primaries.Red.y = 0.33;
primaries.Green.x = 0.30;
primaries.Green.y = 0.60;
primaries.Blue.x = 0.15;
primaries.Blue.y = 0.06;
break;
case VIDEO_SYSTEM_SDTV_NTSC:
// SMPTE-C
primaries.Red.x = 0.630;
primaries.Red.y = 0.340;
primaries.Green.x = 0.310;
primaries.Green.y = 0.595;
primaries.Blue.x = 0.155;
primaries.Blue.y = 0.070;
break;
case VIDEO_SYSTEM_SDTV_PAL:
// PAL/SECAM
primaries.Red.x = 0.64;
primaries.Red.y = 0.33;
primaries.Green.x = 0.29;
primaries.Green.y = 0.60;
primaries.Blue.x = 0.15;
primaries.Blue.y = 0.06;
break;
default:
return E_FAIL;
}
primaries.Red.Y = 1.0;
primaries.Green.Y = 1.0;
primaries.Blue.Y = 1.0;
// Set the input gamma, which is the gamma of a reference studio display we want to simulate
// For more information, see the paper at http://www.poynton.com/notes/PU-PR-IS/Poynton-PU-PR-IS.pdf
cmsToneCurve* transferFunction = cmsBuildGamma(0, gamma);