Added an option to disable preview encoding

This commit is contained in:
jp9000 2013-05-21 02:58:02 -07:00
parent 2bcceb69fb
commit b3c30f9c3e
8 changed files with 61 additions and 32 deletions

50
OBS.rc
View File

@ -353,39 +353,41 @@ IDD_SETTINGS_ADVANCED DIALOGEX 0, 0, 427, 336
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
GROUPBOX "Settings.General",IDC_STATIC,4,2,413,60
GROUPBOX "Settings.General",IDC_STATIC,4,2,413,75
CONTROL "Settings.Advanced.UseMultithreadedOptimizations",IDC_USEMULTITHREADEDOPTIMIZATIONS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,15,173,10
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,15,300,10
RTEXT "Settings.Advanced.ProcessPriority",IDC_STATIC,7,29,168,8
COMBOBOX IDC_PRIORITY,177,27,150,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "Settings.Advanced.SceneBufferTime",IDC_STATIC,7,47,168,8
EDITTEXT IDC_SCENEBUFFERTIME_EDIT,177,44,40,14,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "",IDC_SCENEBUFFERTIME,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,218,44,10,14
GROUPBOX "Settings.Video",IDC_STATIC,4,67,413,98
RTEXT "Settings.Advanced.VideoEncoderCPUTradeoff",IDC_STATIC,5,79,168,8
COMBOBOX IDC_PRESET,177,77,82,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Settings.Advanced.UseCFR",IDC_USECFR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,93,292,10
CONTROL "Settings.Advanced.DisablePreviewEncoding",IDC_DISABLEPREVIEWENCODING,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,21,62,318,10
GROUPBOX "Settings.Video",IDC_STATIC,4,81,413,98
RTEXT "Settings.Advanced.VideoEncoderCPUTradeoff",IDC_STATIC,5,93,168,8
COMBOBOX IDC_PRESET,177,91,82,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Settings.Advanced.UseCFR",IDC_USECFR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,107,292,10
CONTROL "Settings.Advanced.VideoEncoderSettings",IDC_USEVIDEOENCODERSETTINGS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,106,260,10
EDITTEXT IDC_VIDEOENCODERSETTINGS,33,119,373,14,ES_AUTOHSCROLL
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,120,260,10
EDITTEXT IDC_VIDEOENCODERSETTINGS,33,133,373,14,ES_AUTOHSCROLL
CONTROL "Settings.Advanced.UnlockHigherFPS",IDC_UNLOCKHIGHFPS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,138,217,10
GROUPBOX "Settings.Audio",IDC_STATIC,4,167,413,57
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,152,217,10
GROUPBOX "Settings.Audio",IDC_STATIC,4,181,413,57
CONTROL "Settings.Advanced.SyncToVideoTime",IDC_SYNCTOVIDEOTIME,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,179,390,10
LTEXT "Settings.Advanced.GlobalAudioTimeAdjust",IDC_STATIC,5,194,168,8,0,WS_EX_RIGHT
EDITTEXT IDC_AUDIOTIMEADJUST_EDIT,176,191,40,14,ES_AUTOHSCROLL
CONTROL "",IDC_AUDIOTIMEADJUST,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,216,191,10,14
CONTROL "Settings.Audio.UseMicQPC",IDC_USEMICQPC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,208,332,10
GROUPBOX "Settings.Advanced.Network",IDC_STATIC,7,228,413,60
RTEXT "Settings.Advanced.BindToIP",IDC_STATIC,4,241,168,8
COMBOBOX IDC_BINDIP,177,239,150,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,193,390,10
LTEXT "Settings.Advanced.GlobalAudioTimeAdjust",IDC_STATIC,5,208,168,8,0,WS_EX_RIGHT
EDITTEXT IDC_AUDIOTIMEADJUST_EDIT,176,205,40,14,ES_AUTOHSCROLL
CONTROL "",IDC_AUDIOTIMEADJUST,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,216,205,10,14
CONTROL "Settings.Audio.UseMicQPC",IDC_USEMICQPC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,222,332,10
GROUPBOX "Settings.Advanced.Network",IDC_STATIC,7,242,413,60
RTEXT "Settings.Advanced.BindToIP",IDC_STATIC,4,255,168,8
COMBOBOX IDC_BINDIP,177,253,150,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Settings.Advanced.AutomaticLatency",IDC_LATENCYMETHOD,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,256,169,10,WS_EX_RIGHT
RTEXT "Settings.Advanced.LatencyTuning",IDC_STATIC,5,271,168,8
EDITTEXT IDC_LATENCYTUNE,178,268,40,14,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "Settings.Info",IDC_INFO,7,293,418,24,NOT WS_VISIBLE
CONTROL "Settings.Advanced.UseQSV",IDC_USEQSV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,151,217,10
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,270,169,10,WS_EX_RIGHT
RTEXT "Settings.Advanced.LatencyTuning",IDC_STATIC,5,285,168,8
EDITTEXT IDC_LATENCYTUNE,178,282,40,14,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "Settings.Info",IDC_INFO,7,304,418,24,NOT WS_VISIBLE
CONTROL "Settings.Advanced.UseQSV",IDC_USEQSV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,165,217,10
END
IDD_CONFIGURETRANSITIONSOURCE DIALOGEX 0, 0, 338, 216
@ -705,7 +707,7 @@ BEGIN
RIGHTMARGIN, 420
TOPMARGIN, 7
BOTTOMMARGIN, 328
HORZGUIDE, 67
HORZGUIDE, 7
END
IDD_CONFIGURETRANSITIONSOURCE, DIALOG

View File

@ -23,7 +23,7 @@
class NullVideoEncoder : public VideoEncoder
{
public:
virtual bool Encode(LPVOID picIn, List<DataPacket> &packets, List<PacketType> &packetTypes, DWORD timestamp, int &ctsOffset) {return true;}
virtual bool Encode(LPVOID picIn, List<DataPacket> &packets, List<PacketType> &packetTypes, DWORD timestamp, int &ctsOffset) {return false;}
virtual void GetHeaders(DataPacket &packet) {}
virtual int GetBitRate() const {return 0;}
virtual String GetInfoString() const {return String();}
@ -35,7 +35,7 @@ public:
class NullAudioEncoder : public AudioEncoder
{
public:
virtual bool Encode(float *input, UINT numInputFrames, DataPacket &packet, QWORD &timestamp) {return true;}
virtual bool Encode(float *input, UINT numInputFrames, DataPacket &packet, QWORD &timestamp) {return false;}
virtual void GetHeaders(DataPacket &packet) {}
virtual UINT GetFrameSize() const {return 0;}
virtual int GetBitRate() const {return 0;}

View File

@ -304,11 +304,21 @@ void OBS::Start()
//-------------------------------------------------------------
bool bDisableEncoding = false;
if (bTestStream)
bDisableEncoding = GlobalConfig->GetInt(TEXT("General"), TEXT("DisablePreviewEncoding"), false) != 0;
//-------------------------------------------------------------
UINT bitRate = (UINT)AppConfig->GetInt(TEXT("Audio Encoding"), TEXT("Bitrate"), 96);
String strEncoder = AppConfig->GetString(TEXT("Audio Encoding"), TEXT("Codec"), TEXT("AAC"));
if (bDisableEncoding)
audioEncoder = CreateNullAudioEncoder();
else
#ifdef USE_AAC
if(strEncoder.CompareI(TEXT("AAC")) && OSGetVersion() >= 7)
if(strEncoder.CompareI(TEXT("AAC")))// && OSGetVersion() >= 7)
audioEncoder = CreateAACEncoder(bitRate);
else
#endif
@ -440,8 +450,11 @@ void OBS::Start()
ctsOffset = 0;
videoEncoder = nullptr;
if(AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0)
if (bDisableEncoding)
videoEncoder = CreateNullVideoEncoder();
else if(GlobalConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0)
videoEncoder = CreateQSVEncoder(fps, outputCX, outputCY, quality, preset, bUsing444, maxBitRate, bufferSize, bUseCFR, bDupeFrames);
if(!videoEncoder)
videoEncoder = CreateX264Encoder(fps, outputCX, outputCY, quality, preset, bUsing444, maxBitRate, bufferSize, bUseCFR, bDupeFrames);

View File

@ -291,7 +291,7 @@ void OBS::MainCaptureLoop()
int curOutBuffer = 0;
bool bUsingQSV = videoEncoder->isQSV();//AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0;
bool bUsingQSV = videoEncoder->isQSV();//GlobalConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0;
if(bUsingQSV)
bUsing444 = false;

View File

@ -79,6 +79,11 @@ void SettingsAdvanced::ApplySettings()
//--------------------------------------------------
bool bDisablePreviewEncoding = SendMessage(GetDlgItem(hwnd, IDC_DISABLEPREVIEWENCODING), BM_GETCHECK, 0, 0) == BST_CHECKED;
GlobalConfig->SetInt(TEXT("General"), TEXT("DisablePreviewEncoding"), bDisablePreviewEncoding);
//--------------------------------------------------
bool bUseCFR = SendMessage(GetDlgItem(hwnd, IDC_USECFR), BM_GETCHECK, 0, 0) == BST_CHECKED;
AppConfig->SetInt (TEXT("Video Encoding"), TEXT("UseCFR"), bUseCFR);
@ -98,7 +103,7 @@ void SettingsAdvanced::ApplySettings()
//------------------------------------
BOOL bUseQSV = SendMessage(GetDlgItem(hwnd, IDC_USEQSV), BM_GETCHECK, 0, 0) == BST_CHECKED;
AppConfig->SetInt (TEXT("Video Encoding"), TEXT("UseQSV"), bUseQSV);
GlobalConfig->SetInt(TEXT("Video Encoding"), TEXT("UseQSV"), bUseQSV);
//------------------------------------
@ -210,6 +215,11 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
else //Normal
SendMessage(hwndTemp, CB_SETCURSEL, 2, 0);
//------------------------------------
bool bDisablePreviewEncoding = GlobalConfig->GetInt(TEXT("General"), TEXT("DisablePreviewEncoding"), false) != 0;
SendMessage(GetDlgItem(hwnd, IDC_DISABLEPREVIEWENCODING), BM_SETCHECK, bDisablePreviewEncoding ? BST_CHECKED : BST_UNCHECKED, 0);
//--------------------------------------------
hwndTemp = GetDlgItem(hwnd, IDC_PRESET);
@ -252,7 +262,7 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
//------------------------------------
bool bUseQSV = AppConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0;
bool bUseQSV = GlobalConfig->GetInt(TEXT("Video Encoding"), TEXT("UseQSV")) != 0;
SendMessage(GetDlgItem(hwnd, IDC_USEQSV), BM_SETCHECK, bUseQSV ? BST_CHECKED : BST_UNCHECKED, 0);
//------------------------------------
@ -412,6 +422,7 @@ INT_PTR SettingsAdvanced::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
}
break;
case IDC_DISABLEPREVIEWENCODING:
case IDC_USEMICQPC:
case IDC_SYNCTOVIDEOTIME:
case IDC_USECFR:

View File

@ -163,7 +163,7 @@ INT_PTR SettingsEncoding::ProcMessage(UINT message, WPARAM wParam, LPARAM lParam
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("MP3"));
#ifdef USE_AAC
if(OSGetVersion() >= 7)
if(1)//OSGetVersion() >= 7)
{
SendMessage(hwndTemp, CB_ADDSTRING, 0, (LPARAM)TEXT("AAC"));
LoadSettingComboString(hwndTemp, TEXT("Audio Encoding"), TEXT("Codec"), TEXT("AAC"));

View File

@ -206,6 +206,8 @@
#define IDC_TIMER1 1100
#define IDC_CAPTURERAM 1100
#define IDC_COMPATIBILITYMODE 1100
#define IDC_USEMULTITHREADEDOPTIMIZATIONS2 1100
#define IDC_DISABLEPREVIEWENCODING 1100
#define IDC_PROGRESS1 1101
#define IDC_DASHBOARDLINK_STATIC 1102
#define IDC_DASHBOARDLINK 1103

View File

@ -120,6 +120,7 @@ Settings.Video "Video"
Settings.Advanced.AutomaticLatency "Automatic low latency mode:"
Settings.Advanced.BindToIP "Bind To Interface:"
Settings.Advanced.DisablePreviewEncoding "Disable encoding while previewing"
Settings.Advanced.GlobalAudioTimeAdjust "Global Audio Time Offset (milliseconds):"
Settings.Advanced.LatencyTuning "Latency tuning factor:"
Settings.Advanced.Network "Network"