Cocoa Port:

- Add new static method to run a video filter without needed to instantiate a new video filter object.
- When changing filters, do not reinitialize the destination buffers if the video filter ID is the same.
- Do some other cleanup of the video filter code.
- Add new HQ4XS video filter.
This commit is contained in:
rogerman 2012-12-28 03:36:57 +00:00
parent db96f7a0b6
commit c77f686f6b
6 changed files with 270 additions and 326 deletions

View File

@ -31,6 +31,7 @@
@interface CocoaVideoFilter : NSObject
{
VideoFilter *vf;
VideoFilterTypeID currentFilterType;
}
- (id) initWithSize:(NSSize)theSize;

View File

@ -46,6 +46,7 @@
}
vf = new VideoFilter((unsigned int)theSize.width, (unsigned int)theSize.height, typeID, numThreads);
currentFilterType = typeID;
return self;
}
@ -73,11 +74,19 @@
{
BOOL result = NO;
bool cResult = vf->ChangeFilter(typeID);
if (cResult)
if (typeID == currentFilterType)
{
result = YES;
}
else
{
bool cResult = vf->ChangeFilterByID(typeID);
if (cResult)
{
result = YES;
currentFilterType = typeID;
}
}
return result;
}

View File

@ -5112,7 +5112,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{256, 408}</string>
<object class="NSView" key="NSWindowView" id="439893737">
<reference key="NSNextResponder"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -5122,7 +5122,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSPSMatrix" key="NSDrawMatrix"/>
<string key="NSFrame">{{0, 24}, {256, 384}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<bool key="NSViewCanDrawConcurrently">YES</bool>
<object class="NSOpenGLPixelFormat" key="NSPixelFormat">
<object class="NSMutableData" key="NSPixelAttributes">
@ -5136,7 +5135,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSPSMatrix" key="NSDrawMatrix"/>
<string key="NSFrame">{{2, 3}, {16, 16}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<int key="NSpiFlags">28938</int>
<double key="NSMaxValue">100</double>
</object>
@ -5145,7 +5143,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{180, 3}, {56, 15}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSliderCell" key="NSCell" id="918619685">
<int key="NSCellFlags">-2079981824</int>
@ -5179,7 +5176,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string key="NSFrame">{{160, 1}, {20, 20}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="58250235">
<int key="NSCellFlags">130560</int>
@ -5200,7 +5196,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">294</int>
<string key="NSFrame">{{17, 5}, {137, 14}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="60380140">
<int key="NSCellFlags">68288064</int>
@ -5219,8 +5214,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<string key="NSFrameSize">{256, 408}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{256, 476}</string>
@ -8085,6 +8078,17 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSTag">5</int>
<reference key="NSTarget" ref="485055850"/>
</object>
<object class="NSMenuItem" id="704515259">
<reference key="NSMenu" ref="977831859"/>
<string key="NSTitle">HQ4xS</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="396634170"/>
<reference key="NSMixedImage" ref="678976864"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">18</int>
<reference key="NSTarget" ref="485055850"/>
</object>
<object class="NSMenuItem" id="181666868">
<reference key="NSMenu" ref="977831859"/>
<string key="NSTitle">2xSaI</string>
@ -8317,7 +8321,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSuperview" ref="967352767"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1069210537">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Use Vertical Sync</string>
<reference key="NSSupport" ref="462791774"/>
@ -15439,7 +15443,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSWindowTemplate" id="1037714331">
<int key="NSWindowStyleMask">279</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{1651, 296}, {204, 501}}</string>
<string key="NSWindowRect">{{1651, 276}, {204, 521}}</string>
<int key="NSWTFlags">-461896704</int>
<string key="NSWindowTitle">Video Output Settings</string>
<string key="NSWindowClass">NSPanel</string>
@ -15453,7 +15457,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSButton" id="670018968">
<reference key="NSNextResponder" ref="440584564"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{25, 18}, {154, 19}}</string>
<string key="NSFrame">{{20, 18}, {164, 19}}</string>
<reference key="NSSuperview" ref="440584564"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="205339011">
@ -15483,16 +15487,16 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSMatrix" id="807791156">
<reference key="NSNextResponder" ref="36717965"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 14}, {129, 358}}</string>
<string key="NSFrame">{{18, 14}, {129, 378}}</string>
<reference key="NSSuperview" ref="36717965"/>
<bool key="NSEnabled">YES</bool>
<int key="NSNumRows">18</int>
<int key="NSNumRows">19</int>
<int key="NSNumCols">1</int>
<object class="NSMutableArray" key="NSCells">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSButtonCell" id="406038934">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">None</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15510,7 +15514,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<object class="NSButtonCell" id="266817043">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">LQ2x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15616,7 +15620,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
</object>
<object class="NSButtonCell" id="1020424148">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">LQ2xS</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15663,7 +15667,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
</object>
<object class="NSButtonCell" id="617951998">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">HQ2x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15677,7 +15681,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
</object>
<object class="NSButtonCell" id="976048887">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">HQ2xS</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15691,7 +15695,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
</object>
<object class="NSButtonCell" id="823966181">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">HQ4x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15705,7 +15709,21 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
</object>
<object class="NSButtonCell" id="896705182">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">HQ4XS</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
<int key="NSTag">18</int>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<reference key="NSNormalImage" ref="62036590"/>
<reference key="NSAlternateImage" ref="491083016"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="989723426">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">2xSaI</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15717,9 +15735,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="989723426">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<object class="NSButtonCell" id="31989988">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Super 2xSaI</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15731,9 +15749,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="31989988">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">139264</int>
<object class="NSButtonCell" id="809818802">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Super Eagle</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15745,9 +15763,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="809818802">
<object class="NSButtonCell" id="863635465">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Scanline</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15759,9 +15777,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="863635465">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<object class="NSButtonCell" id="1004225907">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Bilinear</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15773,9 +15791,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="1004225907">
<int key="NSCellFlags">1140981248</int>
<int key="NSCellFlags2">139264</int>
<object class="NSButtonCell" id="338954373">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Nearest 2x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15787,9 +15805,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="338954373">
<object class="NSButtonCell" id="188640664">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Nearest 1.5x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15801,9 +15819,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="188640664">
<object class="NSButtonCell" id="134108895">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Nearest+ 1.5x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15815,9 +15833,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="134108895">
<object class="NSButtonCell" id="1009745071">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">EPX</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15829,9 +15847,9 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="1009745071">
<object class="NSButtonCell" id="385829730">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">EPX+</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
@ -15843,29 +15861,15 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="385829730">
<object class="NSButtonCell" id="454811629">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">139264</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">EPX 1.5x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
<int key="NSTag">16</int>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<reference key="NSNormalImage" ref="62036590"/>
<reference key="NSAlternateImage" ref="491083016"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="454811629">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">EPX+ 1.5x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
<int key="NSTag">17</int>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<object class="NSImage" key="NSNormalImage">
<int key="NSImageFlags">12779520</int>
<object class="NSMutableArray" key="NSReps">
@ -15904,6 +15908,19 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" id="94235884">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">EPX+ 1.5x</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="807791156"/>
<int key="NSTag">17</int>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<reference key="NSAlternateImage" ref="491083016"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
</object>
<string key="NSCellSize">{129, 18}</string>
<string key="NSIntercellSpacing">{4, 2}</string>
@ -15967,11 +15984,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSFont" ref="462791774"/>
</object>
</object>
<string key="NSFrame">{{1, 1}, {168, 382}}</string>
<string key="NSFrame">{{1, 1}, {168, 402}}</string>
<reference key="NSSuperview" ref="197231888"/>
</object>
</object>
<string key="NSFrame">{{17, 41}, {170, 398}}</string>
<string key="NSFrame">{{17, 41}, {170, 418}}</string>
<reference key="NSSuperview" ref="440584564"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@ -15994,7 +16011,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSButton" id="309436516">
<reference key="NSNextResponder" ref="440584564"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 465}, {169, 18}}</string>
<string key="NSFrame">{{17, 485}, {169, 18}}</string>
<reference key="NSSuperview" ref="440584564"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="956793">
@ -16016,11 +16033,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSButton" id="824878810">
<reference key="NSNextResponder" ref="440584564"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 445}, {135, 18}}</string>
<string key="NSFrame">{{17, 465}, {135, 18}}</string>
<reference key="NSSuperview" ref="440584564"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="523499188">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Use Vertical Sync</string>
<reference key="NSSupport" ref="26"/>
@ -16036,7 +16053,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
</object>
<string key="NSFrameSize">{204, 501}</string>
<string key="NSFrameSize">{204, 521}</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
@ -16051,7 +16068,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<object class="NSView" key="NSWindowView" id="729561310">
<reference key="NSNextResponder"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -16070,7 +16087,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 77}, {206, 18}}</string>
<reference key="NSSuperview" ref="372893695"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="715693022">
<int key="NSCellFlags">-2080244224</int>
@ -16093,7 +16109,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 57}, {134, 18}}</string>
<reference key="NSSuperview" ref="372893695"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="874032897">
<int key="NSCellFlags">-2080244224</int>
@ -16116,7 +16131,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 37}, {80, 18}}</string>
<reference key="NSSuperview" ref="372893695"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="67001337">
<int key="NSCellFlags">-2080244224</int>
@ -16139,7 +16153,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{185, 12}, {45, 19}}</string>
<reference key="NSSuperview" ref="372893695"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="424545719">
<int key="NSCellFlags">-1804468671</int>
@ -16220,7 +16233,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 14}, {165, 14}}</string>
<reference key="NSSuperview" ref="372893695"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="714807735">
<int key="NSCellFlags">68288064</int>
@ -16235,12 +16247,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string key="NSFrame">{{1, 1}, {248, 103}}</string>
<reference key="NSSuperview" ref="219189503"/>
<reference key="NSWindow"/>
</object>
</object>
<string key="NSFrame">{{17, 163}, {250, 119}}</string>
<reference key="NSSuperview" ref="729561310"/>
<reference key="NSWindow"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
@ -16264,7 +16274,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{65, 18}, {154, 19}}</string>
<reference key="NSSuperview" ref="729561310"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="837427736">
<int key="NSCellFlags">-2080244224</int>
@ -16295,7 +16304,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 14}, {107, 58}}</string>
<reference key="NSSuperview" ref="909175549"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<int key="NSNumRows">3</int>
<int key="NSNumCols">1</int>
@ -16500,12 +16508,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string key="NSFrame">{{1, 1}, {248, 82}}</string>
<reference key="NSSuperview" ref="299127137"/>
<reference key="NSWindow"/>
</object>
</object>
<string key="NSFrame">{{17, 364}, {250, 98}}</string>
<reference key="NSSuperview" ref="729561310"/>
<reference key="NSWindow"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
@ -16539,7 +16545,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 14}, {120, 78}}</string>
<reference key="NSSuperview" ref="1000433834"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<int key="NSNumRows">4</int>
<int key="NSNumCols">1</int>
@ -16791,12 +16796,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string key="NSFrame">{{1, 1}, {248, 102}}</string>
<reference key="NSSuperview" ref="264524412"/>
<reference key="NSWindow"/>
</object>
</object>
<string key="NSFrame">{{17, 41}, {250, 118}}</string>
<reference key="NSSuperview" ref="729561310"/>
<reference key="NSWindow"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
@ -16830,7 +16833,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 32}, {113, 18}}</string>
<reference key="NSSuperview" ref="887816052"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="394241287">
<int key="NSCellFlags">-2080244224</int>
@ -16853,7 +16855,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 12}, {108, 18}}</string>
<reference key="NSSuperview" ref="887816052"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="109440671">
<int key="NSCellFlags">-2080244224</int>
@ -16874,12 +16875,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string key="NSFrame">{{1, 1}, {248, 58}}</string>
<reference key="NSSuperview" ref="353783913"/>
<reference key="NSWindow"/>
</object>
</object>
<string key="NSFrame">{{17, 286}, {250, 74}}</string>
<reference key="NSSuperview" ref="729561310"/>
<reference key="NSWindow"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
@ -16900,8 +16899,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<string key="NSFrameSize">{284, 482}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
@ -28950,6 +28947,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<int key="connectionID">6235</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">changeVideoFilter:</string>
<reference key="source" ref="580129455"/>
<reference key="destination" ref="94235884"/>
</object>
<int key="connectionID">6237</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -29558,10 +29563,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="object" ref="440584564"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="309436516"/>
<reference ref="670018968"/>
<reference ref="197231888"/>
<reference ref="824878810"/>
<reference ref="309436516"/>
<reference ref="670018968"/>
</object>
<reference key="parent" ref="1037714331"/>
</object>
@ -31332,6 +31337,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference ref="356590466"/>
<reference ref="745268548"/>
<reference ref="515818914"/>
<reference ref="704515259"/>
</object>
<reference key="parent" ref="485055850"/>
</object>
@ -33828,6 +33834,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference ref="1009745071"/>
<reference ref="385829730"/>
<reference ref="454811629"/>
<reference ref="94235884"/>
</object>
<reference key="parent" ref="197231888"/>
</object>
@ -39445,6 +39452,16 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="object" ref="1013933872"/>
<reference key="parent" ref="13611839"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6236</int>
<reference key="object" ref="94235884"/>
<reference key="parent" ref="807791156"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6238</int>
<reference key="object" ref="704515259"/>
<reference key="parent" ref="977831859"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -41368,6 +41385,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>6233.IBAttributePlaceholdersKey</string>
<string>6233.IBPluginDependency</string>
<string>6234.IBAttributePlaceholdersKey</string>
<string>6238.IBPluginDependency</string>
<string>627.IBEditorWindowLastContentRect</string>
<string>627.IBPluginDependency</string>
<string>627.IBWindowTemplateEditedContentRect</string>
@ -42141,7 +42159,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{1004, 578}, {489, 425}}</string>
<string>{{872, 628}, {489, 425}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
@ -42193,7 +42211,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<bytes key="NSTransformStruct">P4AAAL+AAABC6AAAw5QAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{531, 545}, {151, 363}}</string>
<string>{{1002, 572}, {151, 383}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -42975,7 +42993,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCRAAAxHyAAA</bytes>
<bytes key="NSTransformStruct">P4AAAL+AAABBkAAAw9UAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -43003,7 +43021,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABBiAAAw+aAAA</bytes>
<bytes key="NSTransformStruct">P4AAAL+AAABBiAAAxAbAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -45384,6 +45402,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="toolTip">OpenGL-based 3D rendering engine. Some 3D objects may have better looking texturing, but the geometry may be less accurate. Extremely high CPU usage.</string>
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{609, 360}, {400, 100}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{609, 360}, {400, 100}}</string>
@ -45447,9 +45466,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{1422, 661}, {204, 501}}</string>
<string>{{1237, 473}, {204, 521}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{1422, 661}, {204, 501}}</string>
<string>{{1237, 473}, {204, 521}}</string>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -45502,7 +45521,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABByAAAwgwAAA</bytes>
<bytes key="NSTransformStruct">P4AAAL+AAABBoAAAwmQAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -45763,7 +45782,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">6235</int>
<int key="maxID">6238</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">

View File

@ -572,7 +572,7 @@ VideoFilter::~VideoFilter()
A bool that reports if the resizing was successful. A value of true means success,
while a value of false means failure.
********************************************************************************************/
bool VideoFilter::SetSourceSize(unsigned int width, unsigned int height)
bool VideoFilter::SetSourceSize(const unsigned int width, const unsigned int height)
{
bool result = false;
@ -612,15 +612,15 @@ bool VideoFilter::SetSourceSize(unsigned int width, unsigned int height)
pthread_mutex_unlock(&this->_mutexSrc);
result = this->ChangeFilter(this->GetTypeID());
result = this->ChangeFilterByID(this->GetTypeID());
return result;
}
/********************************************************************************************
ChangeFilter()
ChangeFilterByID()
Changes the video filter type.
Changes the video filter type using a VideoFilterTypeID.
Takes:
typeID - The type ID of the video filter. See the VideoFilterTypeID
@ -630,143 +630,62 @@ bool VideoFilter::SetSourceSize(unsigned int width, unsigned int height)
A bool that reports if the filter change was successful. A value of true means
success, while a value of false means failure.
********************************************************************************************/
bool VideoFilter::ChangeFilter(VideoFilterTypeID typeID)
bool VideoFilter::ChangeFilterByID(const VideoFilterTypeID typeID)
{
bool result = false;
if (typeID >= VideoFilterTypeIDCount)
{
return result;
}
return this->ChangeFilterByAttributes(&VideoFilterAttributesList[typeID]);
}
/********************************************************************************************
ChangeFilterByAttributes()
Changes the video filter type using video filter attributes.
Takes:
vfAttr - The video filter's attributes.
Returns:
A bool that reports if the filter change was successful. A value of true means
success, while a value of false means failure.
********************************************************************************************/
bool VideoFilter::ChangeFilterByAttributes(const VideoFilterAttributes *vfAttr)
{
bool result = false;
if (vfAttr == NULL)
{
return result;
}
pthread_mutex_lock(&this->_mutexSrc);
const unsigned int srcWidth = this->_srcSurfaceMaster->Width;
const unsigned int srcHeight = this->_srcSurfaceMaster->Height;
pthread_mutex_unlock(&this->_mutexSrc);
unsigned int destWidth = srcWidth;
unsigned int destHeight = srcHeight;
const char *typeString = VideoFilter::GetTypeStringByID(typeID);
VideoFilterCallback filterCallback = NULL;
switch (typeID)
{
case VideoFilterTypeID_None:
break;
case VideoFilterTypeID_LQ2X:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderLQ2X;
break;
case VideoFilterTypeID_LQ2XS:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderLQ2XS;
break;
case VideoFilterTypeID_HQ2X:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderHQ2X;
break;
case VideoFilterTypeID_HQ2XS:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderHQ2XS;
break;
case VideoFilterTypeID_HQ4X:
destWidth = srcWidth * 4;
destHeight = srcHeight * 4;
filterCallback = &RenderHQ4X;
break;
case VideoFilterTypeID_2xSaI:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &Render2xSaI;
break;
case VideoFilterTypeID_Super2xSaI:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderSuper2xSaI;
break;
case VideoFilterTypeID_SuperEagle:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderSuperEagle;
break;
case VideoFilterTypeID_Scanline:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderScanline;
break;
case VideoFilterTypeID_Bilinear:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderBilinear;
break;
case VideoFilterTypeID_Nearest2X:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderNearest2X;
break;
case VideoFilterTypeID_Nearest1_5X:
destWidth = srcWidth * 3 / 2;
destHeight = srcHeight * 3 / 2;
filterCallback = &RenderNearest_1Point5x;
break;
case VideoFilterTypeID_NearestPlus1_5X:
destWidth = srcWidth * 3 / 2;
destHeight = srcHeight * 3 / 2;
filterCallback = &RenderNearestPlus_1Point5x;
break;
case VideoFilterTypeID_EPX:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderEPX;
break;
case VideoFilterTypeID_EPXPlus:
destWidth = srcWidth * 2;
destHeight = srcHeight * 2;
filterCallback = &RenderEPXPlus;
break;
case VideoFilterTypeID_EPX1_5X:
destWidth = srcWidth * 3 / 2;
destHeight = srcHeight * 3 / 2;
filterCallback = &RenderEPX_1Point5x;
break;
case VideoFilterTypeID_EPXPlus1_5X:
destWidth = srcWidth * 3 / 2;
destHeight = srcHeight * 3 / 2;
filterCallback = &RenderEPXPlus_1Point5x;
break;
default:
break;
}
const VideoFilterTypeID typeID = vfAttr->typeID;
const unsigned int dstWidth = srcWidth * vfAttr->scaleMultiply / vfAttr->scaleDivide;
const unsigned int dstHeight = srcHeight * vfAttr->scaleMultiply / vfAttr->scaleDivide;
const char *typeString = vfAttr->typeString;
const VideoFilterCallback filterCallback = vfAttr->filterFunction;
pthread_mutex_lock(&this->_mutexDest);
uint32_t *newSurfaceBuffer = (uint32_t *)calloc(destWidth * destHeight, sizeof(uint32_t));
uint32_t *newSurfaceBuffer = (uint32_t *)calloc(dstWidth * dstHeight, sizeof(uint32_t));
if (newSurfaceBuffer == NULL)
{
return result;
}
this->_filterCallback = filterCallback;
this->_destSurfaceMaster->Width = destWidth;
this->_destSurfaceMaster->Height = destHeight;
this->_destSurfaceMaster->Pitch = destWidth * 2;
this->_destSurfaceMaster->Width = dstWidth;
this->_destSurfaceMaster->Height = dstHeight;
this->_destSurfaceMaster->Pitch = dstWidth * 2;
free(this->_destSurfaceMaster->Surface);
this->_destSurfaceMaster->Surface = (unsigned char*)newSurfaceBuffer;
@ -853,6 +772,59 @@ uint32_t* VideoFilter::RunFilter()
return destBufPtr;
}
/********************************************************************************************
RunFilterCustom() - STATIC
Runs the pixels from srcBuffer through the video filter, and then stores the
resulting pixels into dstBuffer.
Takes:
srcBuffer - A pointer to the source pixel buffer. The caller is responsible
for ensuring that this buffer is valid. Also note that certain video filters
may do out-of-bounds reads, so the caller is responsible for overallocating
this buffer in order to avoid crashing on certain platforms.
dstBuffer - A pointer to the destination pixel buffer. The caller is responsible
for ensuring that this buffer is valid and large enough to store all of the
destination pixels.
srcWidth - The source surface width in pixels.
srcHeight - The source surface height in pixels.
typeID - The type ID of the video filter. See the VideoFilterTypeID
enumeration for possible values.
Returns:
Nothing.
********************************************************************************************/
void VideoFilter::RunFilterCustom(const uint32_t *__restrict__ srcBuffer, uint32_t *__restrict__ dstBuffer,
const unsigned int srcWidth, const unsigned int srcHeight,
const VideoFilterTypeID typeID)
{
if (typeID >= VideoFilterTypeIDCount)
{
return;
}
const VideoFilterAttributes *vfAttr = &VideoFilterAttributesList[typeID];
const unsigned int dstWidth = srcWidth * vfAttr->scaleMultiply / vfAttr->scaleDivide;
const unsigned int dstHeight = dstWidth * vfAttr->scaleMultiply / vfAttr->scaleDivide;
const VideoFilterCallback filterFunction = vfAttr->filterFunction;
SSurface srcSurface = {(unsigned char *)srcBuffer, srcWidth*2, srcWidth, srcHeight};
SSurface dstSurface = {(unsigned char *)dstBuffer, dstWidth*2, dstWidth, dstHeight};
if (filterFunction == NULL)
{
memcpy(dstBuffer, srcBuffer, dstWidth * dstHeight * sizeof(uint32_t));
}
else
{
filterFunction(srcSurface, dstSurface);
}
}
/********************************************************************************************
GetTypeStringByID() - STATIC
@ -866,89 +838,14 @@ uint32_t* VideoFilter::RunFilter()
A C-string that represents the video filter type. If typeID is invalid,
this method returns the string "Unknown".
********************************************************************************************/
const char* VideoFilter::GetTypeStringByID(VideoFilterTypeID typeID)
const char* VideoFilter::GetTypeStringByID(const VideoFilterTypeID typeID)
{
const char *typeString = "Unknown";
switch (typeID)
if (typeID >= VideoFilterTypeIDCount)
{
case VideoFilterTypeID_None:
typeString = VIDEOFILTERTYPE_NONE_STRING;
break;
case VideoFilterTypeID_LQ2X:
typeString = VIDEOFILTERTYPE_LQ2X_STRING;
break;
case VideoFilterTypeID_LQ2XS:
typeString = VIDEOFILTERTYPE_LQ2XS_STRING;
break;
case VideoFilterTypeID_HQ2X:
typeString = VIDEOFILTERTYPE_HQ2X_STRING;
break;
case VideoFilterTypeID_HQ2XS:
typeString = VIDEOFILTERTYPE_HQ2XS_STRING;
break;
case VideoFilterTypeID_HQ4X:
typeString = VIDEOFILTERTYPE_HQ4X_STRING;
break;
case VideoFilterTypeID_2xSaI:
typeString = VIDEOFILTERTYPE_2XSAI_STRING;
break;
case VideoFilterTypeID_Super2xSaI:
typeString = VIDEOFILTERTYPE_SUPER_2XSAI_STRING;
break;
case VideoFilterTypeID_SuperEagle:
typeString = VIDEOFILTERTYPE_SUPER_EAGLE_STRING;
break;
case VideoFilterTypeID_Scanline:
typeString = VIDEOFILTERTYPE_SCANLINE_STRING;
break;
case VideoFilterTypeID_Bilinear:
typeString = VIDEOFILTERTYPE_BILINEAR_STRING;
break;
case VideoFilterTypeID_Nearest2X:
typeString = VIDEOFILTERTYPE_NEAREST_2X_STRING;
break;
case VideoFilterTypeID_Nearest1_5X:
typeString = VIDEOFILTERTYPE_NEAREST_1_5X_STRING;
break;
case VideoFilterTypeID_NearestPlus1_5X:
typeString = VIDEOFILTERTYPE_NEAREST_PLUS_1_5X_STRING;
break;
case VideoFilterTypeID_EPX:
typeString = VIDEOFILTERTYPE_EPX_STRING;
break;
case VideoFilterTypeID_EPXPlus:
typeString = VIDEOFILTERTYPE_EPX_PLUS_STRING;
break;
case VideoFilterTypeID_EPX1_5X:
typeString = VIDEOFILTERTYPE_EPX_1_5X_STRING;
break;
case VideoFilterTypeID_EPXPlus1_5X:
typeString = VIDEOFILTERTYPE_EPX_PLUS_1_5X_STRING;
break;
default:
break;
return VIDEOFILTERTYPE_UNKNOWN_STRING;
}
return typeString;
return VideoFilterAttributesList[typeID].typeString;
}
/********************************************************************************************
@ -963,7 +860,7 @@ VideoFilterTypeID VideoFilter::GetTypeID()
return typeID;
}
void VideoFilter::SetTypeID(VideoFilterTypeID typeID)
void VideoFilter::SetTypeID(const VideoFilterTypeID typeID)
{
pthread_mutex_lock(&this->_mutexTypeID);
this->_typeID = typeID;

View File

@ -22,7 +22,6 @@
#include <stdlib.h>
#include <string>
#include <pthread.h>
#include "types.h"
#include "../filter/filter.h"
@ -46,32 +45,48 @@ enum VideoFilterTypeID
VideoFilterTypeID_EPX,
VideoFilterTypeID_EPXPlus,
VideoFilterTypeID_EPX1_5X,
VideoFilterTypeID_EPXPlus1_5X
VideoFilterTypeID_EPXPlus1_5X,
VideoFilterTypeID_HQ4XS,
VideoFilterTypeIDCount // Make sure this one is always last
};
// VIDEO FILTER TYPE STRINGS
#define VIDEOFILTERTYPE_NONE_STRING "None"
#define VIDEOFILTERTYPE_LQ2X_STRING "LQ2X"
#define VIDEOFILTERTYPE_LQ2XS_STRING "LQ2XS"
#define VIDEOFILTERTYPE_HQ2X_STRING "HQ2X"
#define VIDEOFILTERTYPE_HQ2XS_STRING "HQ2XS"
#define VIDEOFILTERTYPE_HQ4X_STRING "HQ4X"
#define VIDEOFILTERTYPE_2XSAI_STRING "2xSaI"
#define VIDEOFILTERTYPE_SUPER_2XSAI_STRING "Super 2xSaI"
#define VIDEOFILTERTYPE_SUPER_EAGLE_STRING "Super Eagle"
#define VIDEOFILTERTYPE_SCANLINE_STRING "Scanline"
#define VIDEOFILTERTYPE_BILINEAR_STRING "Bilinear"
#define VIDEOFILTERTYPE_NEAREST_2X_STRING "Nearest 2x"
#define VIDEOFILTERTYPE_NEAREST_1_5X_STRING "Nearest 1.5x"
#define VIDEOFILTERTYPE_NEAREST_PLUS_1_5X_STRING "Nearest+ 1.5x"
#define VIDEOFILTERTYPE_EPX_STRING "EPX"
#define VIDEOFILTERTYPE_EPX_PLUS_STRING "EPX+"
#define VIDEOFILTERTYPE_EPX_1_5X_STRING "EPX 1.5x"
#define VIDEOFILTERTYPE_EPX_PLUS_1_5X_STRING "EPX+ 1.5x"
#define VIDEOFILTERTYPE_UNKNOWN_STRING "Unknown"
#define VIDEOFILTERTYPE_UNKNOWN_STRING "Unknown"
typedef void (*VideoFilterCallback)(SSurface Src, SSurface Dst);
typedef struct
{
VideoFilterTypeID typeID;
const char *typeString;
VideoFilterCallback filterFunction;
unsigned int scaleMultiply;
unsigned int scaleDivide;
} VideoFilterAttributes;
// Attributes list of known video filters, indexed using VideoFilterTypeID.
const VideoFilterAttributes VideoFilterAttributesList[] = {
{VideoFilterTypeID_None, "None", NULL, 1, 1},
{VideoFilterTypeID_LQ2X, "LQ2X", &RenderLQ2X, 2, 1},
{VideoFilterTypeID_LQ2XS, "LQ2XS", &RenderLQ2XS, 2, 1},
{VideoFilterTypeID_HQ2X, "HQ2X", &RenderHQ2X, 2, 1},
{VideoFilterTypeID_HQ2XS, "HQ2XS", &RenderHQ2XS, 2, 1},
{VideoFilterTypeID_HQ4X, "HQ4X", &RenderHQ4X, 4, 1},
{VideoFilterTypeID_2xSaI, "2xSaI", &Render2xSaI, 2, 1},
{VideoFilterTypeID_Super2xSaI, "Super 2xSaI", &RenderSuper2xSaI, 2, 1},
{VideoFilterTypeID_SuperEagle, "Super Eagle", &RenderSuperEagle, 2, 1},
{VideoFilterTypeID_Scanline, "Scanline", &RenderScanline, 2, 1},
{VideoFilterTypeID_Bilinear, "Bilinear", &RenderBilinear, 2, 1},
{VideoFilterTypeID_Nearest2X, "Nearest 2x", &RenderNearest2X, 2, 1},
{VideoFilterTypeID_Nearest1_5X, "Nearest 1.5x", &RenderNearest_1Point5x, 3, 2},
{VideoFilterTypeID_NearestPlus1_5X, "Nearest+ 1.5x", &RenderNearestPlus_1Point5x, 3, 2},
{VideoFilterTypeID_EPX, "EPX", &RenderEPX, 2, 1},
{VideoFilterTypeID_EPXPlus, "EPX+", &RenderEPXPlus, 2, 1},
{VideoFilterTypeID_EPX1_5X, "EPX 1.5x", &RenderEPX_1Point5x, 3, 2},
{VideoFilterTypeID_EPXPlus1_5X, "EPX+ 1.5x", &RenderEPXPlus_1Point5x, 3, 2},
{VideoFilterTypeID_HQ4XS, "HQ4XS", &RenderHQ4XS, 4, 1} };
// Parameters struct for IPC
typedef struct
{
SSurface srcSurface;
@ -146,10 +161,13 @@ public:
VideoFilter(unsigned int srcWidth, unsigned int srcHeight, VideoFilterTypeID typeID, unsigned int numberThreads);
~VideoFilter();
bool SetSourceSize(unsigned int width, unsigned int height);
bool ChangeFilter(VideoFilterTypeID typeID);
bool SetSourceSize(const unsigned int width, const unsigned int height);
bool ChangeFilterByID(const VideoFilterTypeID typeID);
bool ChangeFilterByAttributes(const VideoFilterAttributes *vfAttr);
uint32_t* RunFilter();
static const char* GetTypeStringByID(VideoFilterTypeID typeID);
static void RunFilterCustom(const uint32_t *__restrict__ srcBuffer, uint32_t *__restrict__ dstBuffer, const unsigned int srcWidth, const unsigned int srcHeight, const VideoFilterTypeID typeID);
static const char* GetTypeStringByID(const VideoFilterTypeID typeID);
VideoFilterTypeID GetTypeID();
const char* GetTypeString();