Video: Output standard resolution frames in 256x239 instead of always doubling resolution

This commit is contained in:
Sour 2019-07-06 14:03:27 -04:00
parent 5d79229f3a
commit f16970a2fd
10 changed files with 170 additions and 100 deletions

View file

@ -26,10 +26,11 @@ void BaseVideoFilter::SetBaseFrameInfo(FrameInfo frameInfo)
FrameInfo BaseVideoFilter::GetFrameInfo()
{
int overscanMultiplier = _baseFrameInfo.Width == 512 ? 2 : 1;
FrameInfo frameInfo = _baseFrameInfo;
OverscanDimensions overscan = GetOverscan();
frameInfo.Width -= overscan.Left * 2 + overscan.Right * 2;
frameInfo.Height -= overscan.Top * 2 + overscan.Bottom * 2;
frameInfo.Width -= overscan.Left * overscanMultiplier + overscan.Right * overscanMultiplier;
frameInfo.Height -= overscan.Top * overscanMultiplier + overscan.Bottom * overscanMultiplier;
return frameInfo;
}

View file

@ -88,21 +88,23 @@ void DefaultVideoFilter::ApplyFilter(uint16_t *ppuOutputBuffer)
uint32_t *out = GetOutputBuffer();
FrameInfo frameInfo = GetFrameInfo();
OverscanDimensions overscan = GetOverscan();
uint32_t xOffset = overscan.Left * 2;
uint32_t yOffset = overscan.Top * 2 * 512;
int overscanMultiplier = _baseFrameInfo.Width == 512 ? 2 : 1;
uint32_t width = _baseFrameInfo.Width;
uint32_t xOffset = overscan.Left * overscanMultiplier;
uint32_t yOffset = overscan.Top * overscanMultiplier * width;
uint8_t scanlineIntensity = (uint8_t)((1.0 - _console->GetSettings()->GetVideoConfig().ScanlineIntensity) * 255);
if(scanlineIntensity < 255) {
for(uint32_t i = 0; i < frameInfo.Height; i++) {
if(i & 0x01) {
for(uint32_t j = 0; j < frameInfo.Width; j++) {
*out = ApplyScanlineEffect(_calculatedPalette[ppuOutputBuffer[i * 512 + j + yOffset + xOffset]], scanlineIntensity);
*out = ApplyScanlineEffect(_calculatedPalette[ppuOutputBuffer[i * width + j + yOffset + xOffset]], scanlineIntensity);
out++;
}
} else {
for(uint32_t j = 0; j < frameInfo.Width; j++) {
*out = _calculatedPalette[ppuOutputBuffer[i * 512 + j + yOffset + xOffset]];
*out = _calculatedPalette[ppuOutputBuffer[i * width + j + yOffset + xOffset]];
out++;
}
}
@ -110,7 +112,7 @@ void DefaultVideoFilter::ApplyFilter(uint16_t *ppuOutputBuffer)
} else {
for(uint32_t i = 0; i < frameInfo.Height; i++) {
for(uint32_t j = 0; j < frameInfo.Width; j++) {
out[i*frameInfo.Width+j] = _calculatedPalette[ppuOutputBuffer[i * 512 + j + yOffset + xOffset]];
out[i*frameInfo.Width+j] = _calculatedPalette[ppuOutputBuffer[i * width + j + yOffset + xOffset]];
}
}
}

View file

@ -81,8 +81,8 @@ public:
_argbBuffer = argbBuffer;
_overscan = overscan;
_lineWidth = lineWidth;
_yScale = 2; //TODO
_xScale = 2; //TODO
_yScale = lineWidth >= 512 ? 2 : 1;
_xScale = lineWidth >= 512 ? 2.0f : 1.0f;
InternalDraw();

View file

@ -415,10 +415,12 @@ int LuaApi::GetScreenBuffer(lua_State *lua)
{
LuaCallHelper l(lua);
int multiplier = _ppu->IsHighResOutput() ? 2 : 1;
lua_newtable(lua);
for(int y = 0; y < 239; y++) {
for(int x = 0; x < 256; x++) {
lua_pushinteger(lua, DefaultVideoFilter::ToArgb(*(_ppu->GetScreenBuffer() + y * 1024 + x * 2)) & 0xFFFFFF);
lua_pushinteger(lua, DefaultVideoFilter::ToArgb(*(_ppu->GetScreenBuffer() + y * 256 * multiplier * multiplier + x * multiplier)) & 0xFFFFFF);
lua_rawseti(lua, -2, (y << 8) + x);
}
}
@ -450,8 +452,10 @@ int LuaApi::GetPixel(lua_State *lua)
checkparams();
errorCond(x < 0 || x > 255 || y < 0 || y > 238, "invalid x,y coordinates (must be between 0-255, 0-238)");
int multiplier = _ppu->IsHighResOutput() ? 2 : 1;
//Ignores intensify & grayscale bits
l.Return(DefaultVideoFilter::ToArgb(*(_ppu->GetScreenBuffer() + y * 1024 + x * 2)) & 0xFFFFFF);
l.Return(DefaultVideoFilter::ToArgb(*(_ppu->GetScreenBuffer() + y * 256 * multiplier * multiplier + x * multiplier)) & 0xFFFFFF);
return l.ReturnCount();
}

View file

@ -14,9 +14,13 @@ NtscFilter::NtscFilter(shared_ptr<Console> console) : BaseVideoFilter(console)
FrameInfo NtscFilter::GetFrameInfo()
{
FrameInfo frameInfo = BaseVideoFilter::GetFrameInfo();
OverscanDimensions overscan = GetOverscan();
frameInfo.Width = SNES_NTSC_OUT_WIDTH(_baseFrameInfo.Width / 2) - overscan.Left * 2 - overscan.Right * 2;
int widthDivider = _baseFrameInfo.Width == 512 ? 2 : 1;
int heightMultiplier = _baseFrameInfo.Width == 512 ? 1 : 2;
FrameInfo frameInfo;
frameInfo.Width = SNES_NTSC_OUT_WIDTH(_baseFrameInfo.Width / widthDivider) - overscan.Left*2 - overscan.Right*2;
frameInfo.Height = _baseFrameInfo.Height * heightMultiplier - overscan.Top*2 - overscan.Bottom*2;
return frameInfo;
}
@ -47,22 +51,29 @@ void NtscFilter::ApplyFilter(uint16_t *ppuOutputBuffer)
{
FrameInfo frameInfo = GetFrameInfo();
OverscanDimensions overscan = GetOverscan();
bool useHighResOutput = _baseFrameInfo.Width == 512;
uint32_t baseWidth = SNES_NTSC_OUT_WIDTH(256);
uint32_t xOffset = overscan.Left * 2;
uint32_t yOffset = overscan.Top * 2 * baseWidth;
snes_ntsc_blit_hires(&_ntscData, ppuOutputBuffer, 512, IsOddFrame() ? 0 : 1, 512, frameInfo.Height, _ntscBuffer, SNES_NTSC_OUT_WIDTH(256)*4);
if(useHighResOutput) {
snes_ntsc_blit_hires(&_ntscData, ppuOutputBuffer, 512, IsOddFrame() ? 0 : 1, 512, _baseFrameInfo.Height, _ntscBuffer, SNES_NTSC_OUT_WIDTH(256) * 4);
} else {
snes_ntsc_blit(&_ntscData, ppuOutputBuffer, 256, IsOddFrame() ? 0 : 1, 256, _baseFrameInfo.Height, _ntscBuffer, SNES_NTSC_OUT_WIDTH(256) * 8);
}
VideoConfig cfg = _console->GetSettings()->GetVideoConfig();
if(cfg.ScanlineIntensity == 0) {
for(uint32_t i = 0; i < frameInfo.Height; i++) {
for(uint32_t i = 0; i < frameInfo.Height; i+=2) {
memcpy(GetOutputBuffer()+i*frameInfo.Width, _ntscBuffer + yOffset + xOffset + i*baseWidth, frameInfo.Width * sizeof(uint32_t));
memcpy(GetOutputBuffer()+(i+1)*frameInfo.Width, _ntscBuffer + yOffset + xOffset + i*baseWidth, frameInfo.Width * sizeof(uint32_t));
}
} else {
uint8_t intensity = (uint8_t)((1.0 - cfg.ScanlineIntensity) * 255);
for(uint32_t i = 0; i < frameInfo.Height; i++) {
if(i & 0x01) {
uint32_t *in = _ntscBuffer + yOffset + xOffset + i * baseWidth;
uint32_t *in = _ntscBuffer + yOffset + xOffset + (i - 1) * baseWidth;
uint32_t *out = GetOutputBuffer() + i * frameInfo.Width;
for(uint32_t j = 0; j < frameInfo.Width; j++) {
out[j] = ApplyScanlineEffect(in[j], intensity);

View file

@ -147,8 +147,6 @@ bool Ppu::ProcessEndOfScanline(uint16_t hClock)
_internalOamAddress = (_oamRamAddress << 1);
}
_allowFrameSkip = !_console->GetVideoRenderer()->IsRecording() && (_console->GetSettings()->GetEmulationSpeed() == 0 || _console->GetSettings()->GetEmulationSpeed() > 150);
VideoConfig cfg = _console->GetSettings()->GetVideoConfig();
_configVisibleLayers = (cfg.HideBgLayer0 ? 0 : 1) | (cfg.HideBgLayer1 ? 0 : 2) | (cfg.HideBgLayer2 ? 0 : 4) | (cfg.HideBgLayer3 ? 0 : 8) | (cfg.HideSprites ? 0 : 16);
@ -161,6 +159,12 @@ bool Ppu::ProcessEndOfScanline(uint16_t hClock)
_regs->SetNmiFlag(true);
SendFrame();
_allowFrameSkip = !_console->GetVideoRenderer()->IsRecording() && (_console->GetSettings()->GetEmulationSpeed() == 0 || _console->GetSettings()->GetEmulationSpeed() > 150);
if(!_allowFrameSkip || (_frameCount & 0x03) == 0) {
//If we're not skipping this frame, reset the high resolution flag
_useHighResOutput = false;
}
if(_regs->IsNmiEnabled()) {
_console->GetCpu()->SetNmiFlag();
}
@ -1086,33 +1090,66 @@ void Ppu::ApplyBrightness()
}
}
void Ppu::ConvertToHiRes()
{
uint16_t scanline = _overscanMode ? (_scanline - 1) : (_scanline + 6);
if(_drawStartX > 0) {
for(int x = 0; x < _drawStartX; x++) {
_currentBuffer[(scanline << 10) + (x << 1)] = _currentBuffer[(scanline << 8) + x];
_currentBuffer[(scanline << 10) + (x << 1) + 1] = _currentBuffer[(scanline << 8) + x];
}
memcpy(_currentBuffer + (scanline << 10) + 512, _currentBuffer + (scanline << 10), 512 * sizeof(uint16_t));
}
for(int i = scanline - 1; i >= 0; i--) {
for(int x = 0; x < 256; x++) {
_currentBuffer[(i << 10) + (x << 1)] = _currentBuffer[(i << 8) + x];
_currentBuffer[(i << 10) + (x << 1) + 1] = _currentBuffer[(i << 8) + x];
}
memcpy(_currentBuffer + (i << 10) + 512, _currentBuffer + (i << 10), 512 * sizeof(uint16_t));
}
}
void Ppu::ApplyHiResMode()
{
//When overscan mode is off, center the 224-line picture in the center of the 239-line output buffer
uint16_t scanline = _overscanMode ? (_scanline - 1) : (_scanline + 6);
uint32_t screenY = IsDoubleHeight() ? (_oddFrame ? ((scanline << 1) + 1) : (scanline << 1)) : (scanline << 1);
uint32_t baseAddr = (screenY << 9);
if(IsDoubleWidth()) {
ApplyBrightness<false>();
for(int x = _drawStartX; x <= _drawEndX; x++) {
_currentBuffer[baseAddr + (x << 1)] = _subScreenBuffer[x];
_currentBuffer[baseAddr + (x << 1) + 1] = _mainScreenBuffer[x];
}
} else {
for(int x = _drawStartX; x <= _drawEndX; x++) {
_currentBuffer[baseAddr + (x << 1)] = _mainScreenBuffer[x];
_currentBuffer[baseAddr + (x << 1) + 1] = _mainScreenBuffer[x];
}
bool useHighResOutput = _useHighResOutput || IsDoubleWidth() || IsDoubleHeight();
if(_useHighResOutput != useHighResOutput) {
//Convert standard res picture to high resolution when the PPU starts drawing in high res mid frame
ConvertToHiRes();
_useHighResOutput = useHighResOutput;
}
if(!IsDoubleHeight()) {
//Copy this line's content to the next line (between the current start & end bounds)
memcpy(
_currentBuffer + baseAddr + 512 + (_drawStartX << 1),
_currentBuffer + baseAddr + (_drawStartX << 1),
(_drawEndX - _drawStartX + 1) << 2
);
if(!_useHighResOutput) {
memcpy(_currentBuffer + (scanline << 8) + _drawStartX, _mainScreenBuffer + _drawStartX, (_drawEndX - _drawStartX + 1) << 2);
} else {
uint32_t screenY = IsDoubleHeight() ? (_oddFrame ? ((scanline << 1) + 1) : (scanline << 1)) : (scanline << 1);
uint32_t baseAddr = (screenY << 9);
if(IsDoubleWidth()) {
ApplyBrightness<false>();
for(int x = _drawStartX; x <= _drawEndX; x++) {
_currentBuffer[baseAddr + (x << 1)] = _subScreenBuffer[x];
_currentBuffer[baseAddr + (x << 1) + 1] = _mainScreenBuffer[x];
}
} else {
for(int x = _drawStartX; x <= _drawEndX; x++) {
_currentBuffer[baseAddr + (x << 1)] = _mainScreenBuffer[x];
_currentBuffer[baseAddr + (x << 1) + 1] = _mainScreenBuffer[x];
}
}
if(!IsDoubleHeight()) {
//Copy this line's content to the next line (between the current start & end bounds)
memcpy(
_currentBuffer + baseAddr + 512 + (_drawStartX << 1),
_currentBuffer + baseAddr + (_drawStartX << 1),
(_drawEndX - _drawStartX + 1) << 2
);
}
}
}
@ -1151,15 +1188,17 @@ void Ppu::ProcessWindowMaskSettings(uint8_t value, uint8_t offset)
void Ppu::SendFrame()
{
constexpr uint16_t width = 512;
constexpr uint16_t height = 478;
uint16_t width = _useHighResOutput ? 512 : 256;
uint16_t height = _useHighResOutput ? 478 : 239;
_console->GetNotificationManager()->SendNotification(ConsoleNotificationType::PpuFrameDone);
if(!_overscanMode) {
//Clear the top 7 and bottom 8 rows
memset(_currentBuffer, 0, width * 14 * sizeof(uint16_t));
memset(_currentBuffer + width * 462, 0, width * 16 * sizeof(uint16_t));
int top = (_useHighResOutput ? 14 : 7);
int bottom = (_useHighResOutput ? 16 : 8);
memset(_currentBuffer, 0, width * top * sizeof(uint16_t));
memset(_currentBuffer + width * (height - bottom), 0, width * bottom * sizeof(uint16_t));
}
bool isRewinding = _console->GetRewindManager()->IsRewinding();
@ -1178,6 +1217,12 @@ void Ppu::SendFrame()
#endif
}
bool Ppu::IsHighResOutput()
{
return _useHighResOutput;
}
uint16_t* Ppu::GetScreenBuffer()
{
return _currentBuffer;

View file

@ -79,6 +79,7 @@ private:
uint16_t *_outputBuffers[2] = {};
uint16_t *_currentBuffer = nullptr;
bool _useHighResOutput = false;
SpriteInfo _sprites[33] = {};
uint8_t _spriteCount = 0;
@ -201,6 +202,7 @@ private:
template<bool forMainScreen>
void ApplyBrightness();
void ConvertToHiRes();
void ApplyHiResMode();
template<uint8_t layerIndex>
@ -235,6 +237,7 @@ public:
bool ProcessEndOfScanline(uint16_t hClock);
uint16_t GetLastScanline();
bool IsHighResOutput();
uint16_t* GetScreenBuffer();
uint8_t* GetVideoRam();
uint8_t* GetCgRam();

View file

@ -41,12 +41,16 @@ ScreenSize VideoDecoder::GetScreenSize(bool ignoreScale)
FrameInfo frameInfo = _videoFilter->GetFrameInfo();
double aspectRatio = _console->GetSettings()->GetAspectRatio(_console->GetRegion());
double scale = (ignoreScale ? 1 : _console->GetSettings()->GetVideoConfig().VideoScale);
size.Width = (int32_t)(frameInfo.Width * scale / 2);
size.Height = (int32_t)(frameInfo.Height * scale / 2);
bool useHighResOutput = _baseFrameInfo.Width >= 512 || _videoFilterType == VideoFilterType::NTSC;
int divider = useHighResOutput ? 2 : 1;
size.Width = (int32_t)(frameInfo.Width * scale / divider);
size.Height = (int32_t)(frameInfo.Height * scale / divider);
if(aspectRatio != 0.0) {
uint32_t originalHeight = frameInfo.Height + (overscan.Top + overscan.Bottom) * 2;
uint32_t originalWidth = frameInfo.Width + (overscan.Left + overscan.Right) * 2;
size.Width = (uint32_t)(originalHeight * scale * aspectRatio * ((double)frameInfo.Width / originalWidth)) / 2;
uint32_t originalHeight = frameInfo.Height + (overscan.Top + overscan.Bottom) * divider;
uint32_t originalWidth = frameInfo.Width + (overscan.Left + overscan.Right) * divider;
size.Width = (uint32_t)(originalHeight * scale * aspectRatio * ((double)frameInfo.Width / originalWidth)) / divider;
}
/*

View file

@ -35,7 +35,7 @@ public:
if(!_skipMode && _sendFrame) {
//Use Blargg's NTSC filter's max size as a minimum resolution, to prevent changing resolution too often
int32_t newWidth = std::max<int32_t>(width, SNES_NTSC_OUT_WIDTH(256));
int32_t newHeight = std::max<int32_t>(height, 240);
int32_t newHeight = std::max<int32_t>(height, 239 * 2);
if(_retroEnv != nullptr && (_previousWidth != newWidth || _previousHeight != newHeight)) {
//Resolution change is needed
retro_system_av_info avInfo = {};
@ -63,8 +63,8 @@ public:
ratio = (float)256 / 239;
}
OverscanDimensions overscan = _console->GetSettings()->GetOverscan();
int width = (256 - overscan.Left - overscan.Right) * 2;
int height = (239 - overscan.Top - overscan.Bottom) * 2;
int width = (256 - overscan.Left - overscan.Right);
int height = (239 - overscan.Top - overscan.Bottom);
ratio *= (float)width / height / 256 * 239;
info.geometry.aspect_ratio = ratio;

View file

@ -86,11 +86,6 @@
this.tableLayoutPanel14 = new System.Windows.Forms.TableLayoutPanel();
this.nudOverscanLeft = new Mesen.GUI.Controls.MesenNumericUpDown();
this.lblLeft = new System.Windows.Forms.Label();
this.ctxPicturePresets = new System.Windows.Forms.ContextMenuStrip(this.components);
this.mnuPresetComposite = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetSVideo = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetRgb = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetMonochrome = new System.Windows.Forms.ToolStripMenuItem();
this.tpgAdvanced = new System.Windows.Forms.TabPage();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.chkHideBgLayer0 = new Mesen.GUI.Controls.ctrlRiskyOption();
@ -98,6 +93,11 @@
this.chkHideBgLayer2 = new Mesen.GUI.Controls.ctrlRiskyOption();
this.chkHideBgLayer3 = new Mesen.GUI.Controls.ctrlRiskyOption();
this.chkHideSprites = new Mesen.GUI.Controls.ctrlRiskyOption();
this.ctxPicturePresets = new System.Windows.Forms.ContextMenuStrip(this.components);
this.mnuPresetComposite = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetSVideo = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetRgb = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetMonochrome = new System.Windows.Forms.ToolStripMenuItem();
this.tabMain.SuspendLayout();
this.tpgGeneral.SuspendLayout();
this.tlpMain.SuspendLayout();
@ -119,9 +119,9 @@
this.tableLayoutPanel12.SuspendLayout();
this.tableLayoutPanel13.SuspendLayout();
this.tableLayoutPanel14.SuspendLayout();
this.ctxPicturePresets.SuspendLayout();
this.tpgAdvanced.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.ctxPicturePresets.SuspendLayout();
this.SuspendLayout();
//
// baseConfigPanel
@ -140,7 +140,7 @@
this.tabMain.Location = new System.Drawing.Point(0, 0);
this.tabMain.Name = "tabMain";
this.tabMain.SelectedIndex = 0;
this.tabMain.Size = new System.Drawing.Size(574, 437);
this.tabMain.Size = new System.Drawing.Size(574, 408);
this.tabMain.TabIndex = 2;
//
// tpgGeneral
@ -1075,51 +1075,13 @@
this.lblLeft.Text = "Left";
this.lblLeft.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// ctxPicturePresets
//
this.ctxPicturePresets.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuPresetComposite,
this.mnuPresetSVideo,
this.mnuPresetRgb,
this.mnuPresetMonochrome});
this.ctxPicturePresets.Name = "contextPicturePresets";
this.ctxPicturePresets.Size = new System.Drawing.Size(148, 92);
//
// mnuPresetComposite
//
this.mnuPresetComposite.Name = "mnuPresetComposite";
this.mnuPresetComposite.Size = new System.Drawing.Size(147, 22);
this.mnuPresetComposite.Text = "Composite";
this.mnuPresetComposite.Click += new System.EventHandler(this.mnuPresetComposite_Click);
//
// mnuPresetSVideo
//
this.mnuPresetSVideo.Name = "mnuPresetSVideo";
this.mnuPresetSVideo.Size = new System.Drawing.Size(147, 22);
this.mnuPresetSVideo.Text = "S-Video";
this.mnuPresetSVideo.Click += new System.EventHandler(this.mnuPresetSVideo_Click);
//
// mnuPresetRgb
//
this.mnuPresetRgb.Name = "mnuPresetRgb";
this.mnuPresetRgb.Size = new System.Drawing.Size(147, 22);
this.mnuPresetRgb.Text = "RGB";
this.mnuPresetRgb.Click += new System.EventHandler(this.mnuPresetRgb_Click);
//
// mnuPresetMonochrome
//
this.mnuPresetMonochrome.Name = "mnuPresetMonochrome";
this.mnuPresetMonochrome.Size = new System.Drawing.Size(147, 22);
this.mnuPresetMonochrome.Text = "Monochrome";
this.mnuPresetMonochrome.Click += new System.EventHandler(this.mnuPresetMonochrome_Click);
//
// tpgAdvanced
//
this.tpgAdvanced.Controls.Add(this.tableLayoutPanel2);
this.tpgAdvanced.Location = new System.Drawing.Point(4, 22);
this.tpgAdvanced.Name = "tpgAdvanced";
this.tpgAdvanced.Padding = new System.Windows.Forms.Padding(3);
this.tpgAdvanced.Size = new System.Drawing.Size(566, 411);
this.tpgAdvanced.Size = new System.Drawing.Size(566, 382);
this.tpgAdvanced.TabIndex = 7;
this.tpgAdvanced.Text = "Advanced";
this.tpgAdvanced.UseVisualStyleBackColor = true;
@ -1143,7 +1105,7 @@
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(560, 405);
this.tableLayoutPanel2.Size = new System.Drawing.Size(560, 376);
this.tableLayoutPanel2.TabIndex = 0;
//
// chkHideBgLayer0
@ -1196,6 +1158,44 @@
this.chkHideSprites.TabIndex = 4;
this.chkHideSprites.Text = "Hide sprites";
//
// ctxPicturePresets
//
this.ctxPicturePresets.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuPresetComposite,
this.mnuPresetSVideo,
this.mnuPresetRgb,
this.mnuPresetMonochrome});
this.ctxPicturePresets.Name = "contextPicturePresets";
this.ctxPicturePresets.Size = new System.Drawing.Size(148, 92);
//
// mnuPresetComposite
//
this.mnuPresetComposite.Name = "mnuPresetComposite";
this.mnuPresetComposite.Size = new System.Drawing.Size(147, 22);
this.mnuPresetComposite.Text = "Composite";
this.mnuPresetComposite.Click += new System.EventHandler(this.mnuPresetComposite_Click);
//
// mnuPresetSVideo
//
this.mnuPresetSVideo.Name = "mnuPresetSVideo";
this.mnuPresetSVideo.Size = new System.Drawing.Size(147, 22);
this.mnuPresetSVideo.Text = "S-Video";
this.mnuPresetSVideo.Click += new System.EventHandler(this.mnuPresetSVideo_Click);
//
// mnuPresetRgb
//
this.mnuPresetRgb.Name = "mnuPresetRgb";
this.mnuPresetRgb.Size = new System.Drawing.Size(147, 22);
this.mnuPresetRgb.Text = "RGB";
this.mnuPresetRgb.Click += new System.EventHandler(this.mnuPresetRgb_Click);
//
// mnuPresetMonochrome
//
this.mnuPresetMonochrome.Name = "mnuPresetMonochrome";
this.mnuPresetMonochrome.Size = new System.Drawing.Size(147, 22);
this.mnuPresetMonochrome.Text = "Monochrome";
this.mnuPresetMonochrome.Click += new System.EventHandler(this.mnuPresetMonochrome_Click);
//
// frmVideoConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1208,8 +1208,8 @@
this.Name = "frmVideoConfig";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "frmVideoConfig";
this.Controls.SetChildIndex(this.tabMain, 0);
this.Controls.SetChildIndex(this.baseConfigPanel, 0);
this.Controls.SetChildIndex(this.tabMain, 0);
this.tabMain.ResumeLayout(false);
this.tpgGeneral.ResumeLayout(false);
this.tlpMain.ResumeLayout(false);
@ -1242,9 +1242,9 @@
this.tableLayoutPanel13.PerformLayout();
this.tableLayoutPanel14.ResumeLayout(false);
this.tableLayoutPanel14.PerformLayout();
this.ctxPicturePresets.ResumeLayout(false);
this.tpgAdvanced.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.ctxPicturePresets.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();