// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Korean resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
#pragma code_page(949)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
    "\r\n"
    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n"
    "#ifdef _WIN32\r\n"
    "LANGUAGE 18, 1\r\n"
    "#pragma code_page(949)\r\n"
    "#endif //_WIN32\r\n"
    "#include ""res\\Capture.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
    "#include ""l.kor\\afxres.rc""          // Standard components\r\n"
    "#endif\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
END

#endif    // Korean resources
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// Swedish resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE)
#ifdef _WIN32
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_SLAVE_CHANNEL DIALOGEX 0, 0, 677, 358
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Slave channel"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    CONTROL         "",IDC_IPADDRESS1,"SysIPAddress32",WS_TABSTOP,485,18,105,15
    EDITTEXT        IDC_LOCAL_PORT1,631,18,36,16,ES_AUTOHSCROLL
    LTEXT           "IP-address",IDC_STATIC,495,7,42,9
    LTEXT           "Local Port",IDC_STATIC,633,7,37,9
    EDITTEXT        IDC_REMOTE_PORT1,593,18,36,16,ES_AUTOHSCROLL
    LTEXT           "Port",IDC_STATIC,595,7,17,9
    CONTROL         "Ext",IDC_EXTTRANSPORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,489,41,29,12
    LTEXT           "delay",IDC_STATIC,589,41,21,9
    COMBOBOX        IDC_PACKETLOSS,535,40,45,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
    COMBOBOX        IDC_DELAY,611,40,45,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO 
BEGIN
    IDD_SLAVE_CHANNEL, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 670
        TOPMARGIN, 7
        BOTTOMMARGIN, 351
    END
END
#endif    // APSTUDIO_INVOKED

#endif    // Swedish resources
/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// Neutral (Sys. Default) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUSD)
#ifdef _WIN32
LANGUAGE LANG_NEUTRAL, SUBLANG_SYS_DEFAULT
#pragma code_page(1252)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DXQUALITY_DIALOG DIALOGEX 0, 0, 699, 385
STYLE DS_ABSALIGN | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_WINDOWEDGE | WS_EX_STATICEDGE | WS_EX_APPWINDOW | WS_EX_NOINHERITLAYOUT
CAPTION "webrtc ViE test program"
FONT 9, "Arial", 400, 0, 0x0
BEGIN
    PUSHBUTTON      "Start Send",IDC_STARTSEND,589,270,50,19
    PUSHBUTTON      "Stop Send",IDC_STOPSend,639,270,50,19
    PUSHBUTTON      "Start Listen",IDC_STARTLISTEN,589,291,50,19
    PUSHBUTTON      "StopListen",IDC_STOPLISTEN,639,291,50,19
    CONTROL         "",IDC_LIVEVIDEO,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_SUNKEN,450,179,139,101
    COMBOBOX        IDC_DEVICE,487,14,185,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    CTEXT           "Select Capture Device",IDC_STATIC,485,7,78,8
    COMBOBOX        IDC_CODEC_LIST,490,90,58,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    LTEXT           "Codec",IDC_STATIC,490,82,21,8
    COMBOBOX        IDC_CODEC_SIZE,627,90,62,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    LTEXT           "Codec Size",IDC_STATIC,611,82,36,8
    CONTROL         "",IDC_IPADDRESS1,"SysIPAddress32",WS_TABSTOP,490,46,90,13
    EDITTEXT        IDC_LOCAL_PORT1,615,46,31,14,ES_AUTOHSCROLL
    LTEXT           "IP-address",IDC_STATIC,498,37,36,8
    LTEXT           "Local Port",IDC_STATIC,616,36,32,8
    LTEXT           "Start Bitrate",IDC_STATIC,553,80,37,8
    COMBOBOX        IDC_BITRATE,558,90,49,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_REMOTE_PORT1,582,46,31,14,ES_AUTOHSCROLL
    LTEXT           "Port",IDC_STATIC,584,37,14,8
    GROUPBOX        "Remote client 1",IDC_STATIC,487,27,203,50
    LTEXT           "Max FrameRate",IDC_STATIC,488,106,50,8
    COMBOBOX        IDC_MIN_FRAME_RATE,488,115,48,82,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    CONTROL         "",IDC_CAPTURE,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE,7,7,418,276
    CONTROL         "TMMBR",IDC_TMMBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,486,138,40,10
    GROUPBOX        "Standard Protection",IDC_STATIC,607,138,72,55
    CONTROL         "None",IDC_PROT_NONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,615,146,33,10
    CONTROL         "NACK",IDC_PROT_NACK,"Button",BS_AUTORADIOBUTTON,615,165,35,10
    CONTROL         "FEC",IDC_PROT_FEC,"Button",BS_AUTORADIOBUTTON,615,155,30,10
    CONTROL         "NACK & FEC",IDC_PROT_NACKFEC,"Button",BS_AUTORADIOBUTTON,615,174,52,10
    COMBOBOX        IDC_RTCPMODE,571,119,80,57,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    LTEXT           "RTCP Mode",IDC_STATIC,571,110,39,8
    LISTBOX         IDC_INFORMATION,476,309,214,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    COMBOBOX        IDC_PACKETBURST,653,118,36,57,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
    LTEXT           "Packet Burst",IDC_STATIC,649,109,40,8
    CONTROL         "Stop Log",IDC_FREEZELOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,465,292,44,10
    PUSHBUTTON      "Version",IDC_VERSION,530,291,55,16
    CONTROL         "Ext",IDC_EXTTRANSPORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,493,66,25,10
    LTEXT           "loss",IDC_STATIC,519,66,15,8
    LTEXT           "delay",IDC_STATIC,578,66,18,8
    COMBOBOX        IDC_PACKETLOSS,533,65,38,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
    COMBOBOX        IDC_DELAY,598,65,38,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
    PUSHBUTTON      "Record Incoming",IDC_BTN_RECORD_INCOMING,587,198,69,14
    PUSHBUTTON      "Record outgoing",IDC_BTN_RECORD_OUTGOING,587,212,69,14
    PUSHBUTTON      "Create Slave",IDC_BTN_CREATE_SLAVE,586,231,50,14
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO 
BEGIN
    IDD_DXQUALITY_DIALOG, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 690
        VERTGUIDE, 321
        VERTGUIDE, 372
        VERTGUIDE, 425
        VERTGUIDE, 465
        TOPMARGIN, 7
        BOTTOMMARGIN, 372
    END
END
#endif    // APSTUDIO_INVOKED

#endif    // Neutral (Sys. Default) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)
#ifdef _WIN32
LANGUAGE 18, 1
#pragma code_page(949)
#endif //_WIN32
#include "res\Capture.rc2"  // non-Microsoft Visual C++ edited resources
#include "l.kor\afxres.rc"          // Standard components
#endif

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

