[Deinterlace-checkins] CVS: dTV/dTV Deinterlace.c,1.12,1.13 Dialogs.c,1.5,1.6 Globals.h,1.7,1.8 SETT
Brought to you by:
adcockj,
dschmelzer
From: Tom B. <tr...@us...> - 2000-11-14 18:48:24
|
Update of /cvsroot/deinterlace/dTV/dTV In directory slayer.i.sourceforge.net:/tmp/cvs-serv14258/dTV/dTV Modified Files: Deinterlace.c Dialogs.c Globals.h SETTINGS.C dTV.c Log Message: For Blended Clipping DeInterlace: Added code to read/write INI parms. Added BlcShowControls INI parm. Changed calc of Comb. Improved/changed Blended Clip defaults. See new comments/default values in Deinterlace.c on BlendedClip rtn. A new dTV.exe is now on www.trbarry.com/dTV.exe. It will need the new Channels.* files for Micheal's new stuff. Index: Deinterlace.c =================================================================== RCS file: /cvsroot/deinterlace/dTV/dTV/Deinterlace.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** Deinterlace.c 2000/11/09 20:50:09 1.12 --- Deinterlace.c 2000/11/14 18:48:21 1.13 *************** *** 526,530 **** // calculated separately for each pixel. ! UINT BlcPixelMotionSense = 55; // "Recent Motion Sensitivity" slider: This increases the tendency to use Clip based --- 526,530 ---- // calculated separately for each pixel. ! UINT BlcPixelMotionSense = 80; // "Recent Motion Sensitivity" slider: This increases the tendency to use Clip based *************** *** 535,539 **** // in the routines that do. ! UINT BlcRecentMotionSense = 0; // "Motion Average Period" slider: This sets the period of the moving average for Recent --- 535,539 ---- // in the routines that do. ! UINT BlcRecentMotionSense = 45; // "Motion Average Period" slider: This sets the period of the moving average for Recent *************** *** 548,552 **** // X_new_avg = ( X_old_avg * (n-1) + 2 * X) / (n+1) ! UINT BlcMotionAvgPeriod = 40; // currently 1..200 // "Pixel Comb Sensitivity" slider: This determines how sensitive we are to the current --- 548,552 ---- // X_new_avg = ( X_old_avg * (n-1) + 2 * X) / (n+1) ! UINT BlcMotionAvgPeriod = 20; // currently 1..200 // "Pixel Comb Sensitivity" slider: This determines how sensitive we are to the current *************** *** 557,571 **** // increase one of these if you get Weave artifacts and decrease one if you get BOB artifacts. ! UINT BlcPixelCombSense = 50; // "Recent Comb Senseitivity" slider: Operates like the Recent Motion slider but operates // on the average Comb Factor. ! UINT BlcRecentCombSense = 0; // "Comb Average Period" slider: Sets the period of the Comb exponential moving average. // See the comments on "Motion Average Period". ! UINT BlcCombAvgPeriod = 40; // currently 1.200 // "Skip High Comb Frames" slider: I added this one in the hopes that it could help to --- 557,571 ---- // increase one of these if you get Weave artifacts and decrease one if you get BOB artifacts. ! UINT BlcPixelCombSense = 75; // "Recent Comb Senseitivity" slider: Operates like the Recent Motion slider but operates // on the average Comb Factor. ! UINT BlcRecentCombSense = 35; // "Comb Average Period" slider: Sets the period of the Comb exponential moving average. // See the comments on "Motion Average Period". ! UINT BlcCombAvgPeriod = 20; // currently 1.200 // "Skip High Comb Frames" slider: I added this one in the hopes that it could help to *************** *** 575,587 **** // too high. ! UINT BlcHighCombSkip = 0; // larger values skip more // "Skip Low Motion Frames" slider: This also is just experimental an probably of low // value. The idea here is that any frame with sufficiently low change from the previous // one is maybe a still frame with some video noise, and could be skipped. Not for ! // normal use. UINT BlcLowMotionSkip = 0; // larger values skip more // "Use Interpolated BOB instead of Clip" check box. For those who don't like the // Clipped Weave, this will change it to an Interpolated Bob. All other blending and --- 575,593 ---- // too high. ! UINT BlcHighCombSkip = 10; // larger values skip more // "Skip Low Motion Frames" slider: This also is just experimental an probably of low // value. The idea here is that any frame with sufficiently low change from the previous // one is maybe a still frame with some video noise, and could be skipped. Not for ! // normal use. NOTE - This slider (but not parm) will soon be replaced by the ! // Vertical Smoothing slider. UINT BlcLowMotionSkip = 0; // larger values skip more + // "Vertical Smoothing" slider: Sets a smoothing constant to smooth between the even + // and odd lines. Not yet implemented, but the INI parm is there. + + UINT BlcVerticalSmoothing = 0; + // "Use Interpolated BOB instead of Clip" check box. For those who don't like the // Clipped Weave, this will change it to an Interpolated Bob. All other blending and *************** *** 597,603 **** // but it sometimes seems to create some softness or shimmering on my stock ticker or // rapidly moving objects with lots of detail like a hockey game. ! BOOL BlcBlendChroma = FALSE; // default should maybe be TRUE? // Other global values, not user parms: --- 603,615 ---- // but it sometimes seems to create some softness or shimmering on my stock ticker or // rapidly moving objects with lots of detail like a hockey game. + + BOOL BlcBlendChroma = TRUE; // default should maybe be TRUE? ! // Finally there is an INI parm, but not a contol to determine whether to even display ! // the Blended Clipping controls when that method is selected. If set to false then ! // Blended Clipping parms are determined only from the INI file. + BOOL BlcShowControls = TRUE; + // Other global values, not user parms: *************** *** 689,693 **** // in the 1000-4000 range, with occasional jumps to much higher values. Since the user // parms are 0-100 and we want output values 0-65535 we will assume a max usual value for each ! // average of 4500 and so divide by ((100*4500)/65535)) = 7 for now. // Note the motion and comb average values have been scaled up by 256 in the averaging rtn, so --- 701,705 ---- // in the 1000-4000 range, with occasional jumps to much higher values. Since the user // parms are 0-100 and we want output values 0-65535 we will assume a max usual value for each ! // average of 4500 and so divide by ((100*4500)/65535)) = 7 for now. (up to 1/5 for new Comb) // Note the motion and comb average values have been scaled up by 256 in the averaging rtn, so *************** *** 695,699 **** X = __max( (BlcRecentMotionSense * BlcTotalAverageMotion / 7), ! (BlcRecentCombSense * BlcTotalAverageComb) / 7 ); i = __min( (X + BlcMinimumClip * 65535 / 100), 65535); // scale to range of 0-65535 MinClip = i << 48 | i << 32 | i << 16 | i; --- 707,711 ---- X = __max( (BlcRecentMotionSense * BlcTotalAverageMotion / 7), ! (BlcRecentCombSense * BlcTotalAverageComb) / 5 ); i = __min( (X + BlcMinimumClip * 65535 / 100), 65535); // scale to range of 0-65535 MinClip = i << 48 | i << 32 | i << 16 | i; *************** *** 807,815 **** // Now is a good time to calculate the Comb Factor. A simple version is just the // distance between L2 and the bob (interpolated middle) value now in mm5. ! movq mm6, mm1 // L2 psubusb mm6, mm5 // L2 - bob, with sat psubusb mm5, mm1 // bob - L2 por mm5, mm6 // abs diff (bob - L2) pand mm5, mm7 // keep only luma movq mm6, mm5 // save a copy for pixel comb sense calc --- 819,844 ---- // Now is a good time to calculate the Comb Factor. A simple version is just the // distance between L2 and the bob (interpolated middle) value now in mm5. ! /* try a different way for now, maybe change back later - TRB 11/14/00 movq mm6, mm1 // L2 psubusb mm6, mm5 // L2 - bob, with sat psubusb mm5, mm1 // bob - L2 por mm5, mm6 // abs diff (bob - L2) + pand mm5, mm7 // keep only luma + movq mm6, mm5 // save a copy for pixel comb sense calc + paddusw mm5, CombAvgL // bump our hist average + movq CombAvgL, mm5 // and save again + pmullw mm6, PixelCombSense // mul by user factor, keep only low 16 bits + */ + + // Instead let's let the Comb Factor just be the difference between L2 and the clipped + // value. It will be zero for any pixel lying in the range where it does not get clipped. + // This avoids penalizing pixels that just happens to be in a high vertical contrast area. + // Doing this gives an adjustment similar to the use of the EdgeDetect value in the + // original Video Delinterlace routine. + movq mm6, mm1 // L2 + movq mm5, mm4 // our clipped value, call it LC + psubusb mm6, mm5 // L2 - LC, with sat + psubusb mm5, mm1 // LC - L2 + por mm5, mm6 // abs diff (LC - L2) pand mm5, mm7 // keep only luma movq mm6, mm5 // save a copy for pixel comb sense calc Index: Dialogs.c =================================================================== RCS file: /cvsroot/deinterlace/dTV/dTV/Dialogs.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** Dialogs.c 2000/11/09 20:50:09 1.5 --- Dialogs.c 2000/11/14 18:48:21 1.6 *************** *** 611,624 **** case IDC_DEFAULT: BlcMinimumClip= 10; ! BlcPixelMotionSense = 55; ! BlcRecentMotionSense = 0; ! BlcMotionAvgPeriod = 40; // currently 1..200 ! BlcPixelCombSense = 50; ! BlcRecentCombSense = 0; ! BlcCombAvgPeriod = 40; // currently 1.200 ! BlcHighCombSkip = 0; // larger values skip more BlcLowMotionSkip = 0; // larger values skip more BlcUseInterpBob = FALSE; ! BlcBlendChroma = FALSE; // default should maybe be TRUE? SetBlcDisplayControls(hDlg); break; --- 611,625 ---- case IDC_DEFAULT: BlcMinimumClip= 10; ! BlcPixelMotionSense = 75; ! BlcRecentMotionSense = 45; ! BlcMotionAvgPeriod = 20; // currently 1..200 ! BlcPixelCombSense = 75; ! BlcRecentCombSense = 35; ! BlcCombAvgPeriod = 20; // currently 1.200 ! BlcHighCombSkip = 10; // larger values skip more BlcLowMotionSkip = 0; // larger values skip more + BlcVerticalSmoothing = 0; // not currently used BlcUseInterpBob = FALSE; ! BlcBlendChroma = TRUE; // default should maybe be TRUE? SetBlcDisplayControls(hDlg); break; Index: Globals.h =================================================================== RCS file: /cvsroot/deinterlace/dTV/dTV/Globals.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** Globals.h 2000/11/09 20:50:09 1.7 --- Globals.h 2000/11/14 18:48:21 1.8 *************** *** 244,247 **** --- 244,249 ---- extern UINT BlcAverageCombs[5][2]; extern UINT BlcTotalAverageComb; + extern BOOL BlcShowControls; + extern UINT BlcVerticalSmoothing; //------------------------------------------------------------------------ Index: SETTINGS.C =================================================================== RCS file: /cvsroot/deinterlace/dTV/dTV/SETTINGS.C,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -r1.15 -r1.16 *** SETTINGS.C 2000/11/09 19:11:47 1.15 --- SETTINGS.C 2000/11/14 18:48:21 1.16 *************** *** 109,112 **** --- 109,128 ---- SimilarityThreshold = GetPrivateProfileInt("Deinterlace", "SimilarityThreshold", SimilarityThreshold, szIniFile); + // Deinterlace settings for Blended Clip only + BlcMinimumClip = GetPrivateProfileInt("Deinterlace", "BlcMinimumClip", BlcMinimumClip , szIniFile); + BlcPixelMotionSense = GetPrivateProfileInt("Deinterlace", "BlcPixelMotionSense", BlcPixelMotionSense , szIniFile); + BlcRecentMotionSense = GetPrivateProfileInt("Deinterlace", "BlcRecentMotionSense", BlcRecentMotionSense , szIniFile); + BlcMotionAvgPeriod = GetPrivateProfileInt("Deinterlace", "BlcMotionAvgPeriod", BlcMotionAvgPeriod , szIniFile); + BlcPixelCombSense = GetPrivateProfileInt("Deinterlace", "BlcPixelCombSense", BlcPixelCombSense , szIniFile); + BlcRecentCombSense = GetPrivateProfileInt("Deinterlace", "BlcRecentCombSense", BlcRecentCombSense , szIniFile); + BlcCombAvgPeriod = GetPrivateProfileInt("Deinterlace", "BlcCombAvgPeriod", BlcCombAvgPeriod , szIniFile); + BlcHighCombSkip = GetPrivateProfileInt("Deinterlace", "BlcHighCombSkip", BlcHighCombSkip , szIniFile); + BlcLowMotionSkip = GetPrivateProfileInt("Deinterlace", "BlcLowMotionSkip", BlcLowMotionSkip , szIniFile); + BlcVerticalSmoothing = GetPrivateProfileInt("Deinterlace", "BlcVerticalSmoothing", BlcVerticalSmoothing , szIniFile); + BlcUseInterpBob = GetPrivateProfileInt("Deinterlace", "BlcUseInterpBob", BlcUseInterpBob , szIniFile); + BlcBlendChroma = GetPrivateProfileInt("Deinterlace", "BlcBlendChroma", BlcBlendChroma , szIniFile); + BlcShowControls = GetPrivateProfileInt("Deinterlace", "BlcShowControls", BlcShowControls , szIniFile); + + VBI_Flags = 0; if(GetPrivateProfileInt("VBI", "VT", 0, szIniFile) != 0) *************** *** 347,350 **** --- 363,382 ---- WritePrivateProfileInt("Deinterlace", "TemporalTolerance", TemporalTolerance, szIniFile); WritePrivateProfileInt("Deinterlace", "SimilarityThreshold", SimilarityThreshold, szIniFile); + + // Deinterlace settings for Blended Clip only + WritePrivateProfileInt("Deinterlace", "BlcMinimumClip", BlcMinimumClip , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcPixelMotionSense", BlcPixelMotionSense , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcRecentMotionSense", BlcRecentMotionSense , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcMotionAvgPeriod", BlcMotionAvgPeriod , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcPixelCombSense", BlcPixelCombSense , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcRecentCombSense", BlcRecentCombSense , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcCombAvgPeriod", BlcCombAvgPeriod , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcHighCombSkip", BlcHighCombSkip , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcLowMotionSkip", BlcLowMotionSkip , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcVerticalSmoothing", BlcVerticalSmoothing , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcUseInterpBob", BlcUseInterpBob , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcBlendChroma", BlcBlendChroma , szIniFile); + WritePrivateProfileInt("Deinterlace", "BlcShowControls", BlcShowControls , szIniFile); + Index: dTV.c =================================================================== RCS file: /cvsroot/deinterlace/dTV/dTV/dTV.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** dTV.c 2000/11/09 20:50:09 1.14 --- dTV.c 2000/11/14 18:48:21 1.15 *************** *** 527,531 **** UpdatePulldownStatus(); SetMenuAnalog(); ! DialogBox(hInst, "BLENDED_CLIP", hWnd, BlendedClipProc); break; --- 527,532 ---- UpdatePulldownStatus(); SetMenuAnalog(); ! if (BlcShowControls) ! DialogBox(hInst, "BLENDED_CLIP", hWnd, BlendedClipProc); break; |