⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 streamout.cpp

📁 video linux conference
💻 CPP
📖 第 1 页 / 共 3 页
字号:
        if( !dup_opts.IsEmpty() ) dup_opts += wxT(",");        dup_opts += wxT("dst=std{access=mmsh,mux=");        dup_opts += encapsulation;        if( i_encapsulation_type == ASF_ENCAPSULATION ) dup_opts += wxT("h");        dup_opts += wxT(",url=");        dup_opts += net_addrs[HTTP_ACCESS_OUT]->GetLineText(0);        dup_opts += wxString::Format( wxT(":%d"),                                      net_ports[MMSH_ACCESS_OUT]->GetValue() );        dup_opts += wxT("}");    }    if( access_checkboxes[UDP_ACCESS_OUT]->IsChecked() )    {        if( !dup_opts.IsEmpty() ) dup_opts += wxT(",");        dup_opts += wxT("dst=std{access=udp,mux=");        dup_opts += encapsulation + wxT(",url=");        wxString udp_addr = net_addrs[UDP_ACCESS_OUT]->GetLineText(0);        if ((udp_addr[0u] != '[') && (udp_addr.Find(':') != -1))        {            dup_opts += wxT ("[") + udp_addr + wxT ("]");        }        else        {            dup_opts += udp_addr;        }        dup_opts += wxString::Format( wxT(":%d"),                                      net_ports[UDP_ACCESS_OUT]->GetValue() );        /* SAP only if UDP */        if( sap_checkbox->IsChecked() )        {            dup_opts += wxT(",sap");            if( ! announce_group->GetLineText(0).IsEmpty() )            {                dup_opts += wxT(",group=\"");                dup_opts += announce_group->GetLineText(0);                dup_opts += wxT("\"");            }            if( ! announce_addr->GetLineText(0).IsEmpty() )            {                dup_opts += wxT(",name=\"");                dup_opts += announce_addr->GetLineText(0);                dup_opts += wxT("\"");            }        }        /* SLP only if UDP */        if( slp_checkbox->IsChecked() )        {            dup_opts += wxT(",slp");            if( ! sap_checkbox->IsChecked() &&                ! announce_addr->GetLineText(0).IsEmpty() )            {                dup_opts += wxT(",name=\"");                dup_opts += announce_addr->GetLineText(0);                dup_opts += wxT("\"");            }        }        dup_opts += wxT("}");    }    wxString duplicate;    if( !dup_opts.IsEmpty() )    {        if( !transcode.IsEmpty() ) duplicate = wxT(":");        duplicate += wxT("duplicate{") + dup_opts + wxT("}");    }    wxString misc;    if( (!transcode.IsEmpty() || !duplicate.IsEmpty()) &&        sout_all_checkbox->IsChecked() )    {        misc = wxT(" :sout-all");    }    if( !transcode.IsEmpty() || !duplicate.IsEmpty() )        mrl_combo->SetValue( wxT(":sout=#") + transcode + duplicate + misc );    else        mrl_combo->SetValue( wxT("") );}wxPanel *SoutDialog::AccessPanel( wxWindow* parent ){    int i;    wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition,                                  wxSize(200, 200) );    wxStaticBox *panel_box = new wxStaticBox( panel, -1,                                              wxU(_("Output methods")) );    wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box,                                                          wxVERTICAL );    wxFlexGridSizer *sizer = new wxFlexGridSizer( 2, 4, 20 );    static const wxString access_output_array[] =    {        wxU(_("Play locally")),        wxU(_("File")),        wxU(_("HTTP")),        wxU(_("MMSH")),        wxU(_("UDP")),    };    for( i=0; i < ACCESS_OUT_NUM; i++ )    {        access_checkboxes[i] = new wxCheckBox( panel, AccessType1_Event + i,                                               access_output_array[i] );        access_subpanels[i] = new wxPanel( panel, -1 );    }    /* Play locally row */    wxFlexGridSizer *subpanel_sizer;    wxStaticText *label;    label = new wxStaticText( access_subpanels[0], -1, wxT("") );    subpanel_sizer = new wxFlexGridSizer( 1, 1, 20 );    subpanel_sizer->Add( label, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    access_subpanels[0]->SetSizerAndFit( subpanel_sizer );    access_subpanels[0]->Hide();    /* File row */    subpanel_sizer = new wxFlexGridSizer( 3, 2, 20 );    label = new wxStaticText( access_subpanels[1], -1, wxU(_("Filename")) );    file_combo = new wxComboBox( access_subpanels[1], FileName_Event, wxT(""),                                 wxPoint(20,25), wxSize(200, -1) );    wxButton *browse_button = new wxButton( access_subpanels[1],                                  FileBrowse_Event, wxU(_("Browse...")) );    subpanel_sizer->Add( label, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    subpanel_sizer->Add( file_combo, 1,                         wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    subpanel_sizer->Add( browse_button, 0,                         wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );    subpanel_sizer->Add( new wxPanel(access_subpanels[1], -1), 0,                         wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    dump_checkbox = new wxCheckBox( access_subpanels[1], FileDump_Event,                                    wxU(_("Dump raw input")) );    subpanel_sizer->Add( dump_checkbox, 0,                         wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxTOP, 5 );    access_subpanels[1]->SetSizerAndFit( subpanel_sizer );    /* Net rows */    for( i = HTTP_ACCESS_OUT; i < ACCESS_OUT_NUM; i++ )    {        subpanel_sizer = new wxFlexGridSizer( 4, 1, 20 );        label = new wxStaticText( access_subpanels[i], -1, wxU(_("Address")) );        net_addrs[i] = new wxTextCtrl( access_subpanels[i],                                   NetAddr1_Event + i - HTTP_ACCESS_OUT,                                   wxT(""), wxDefaultPosition,                                   wxSize( 200, -1 ), wxTE_PROCESS_ENTER);        subpanel_sizer->Add( label, 0,                             wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );        subpanel_sizer->Add( net_addrs[i], 1, wxEXPAND |                             wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );        int val = config_GetInt( p_intf, "server-port" );        label = new wxStaticText( access_subpanels[i], -1, wxU(_("Port")) );        net_ports[i] = new wxSpinCtrl( access_subpanels[i],                                   NetPort1_Event + i - HTTP_ACCESS_OUT,                                   wxString::Format(wxT("%d"), val),                                   wxDefaultPosition, wxDefaultSize,                                   wxSP_ARROW_KEYS,                                   0, 65535, val );        subpanel_sizer->Add( label, 0,                             wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );        subpanel_sizer->Add( net_ports[i], 0,                             wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );        access_subpanels[i]->SetSizerAndFit( subpanel_sizer );    }    /* Stuff everything into the main panel */    for( i=1; i < ACCESS_OUT_NUM; i++ )    {        sizer->Add( access_checkboxes[i], 0,                    wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL  | wxALL, 5 );        sizer->Add( access_subpanels[i], 1, wxEXPAND | wxALIGN_CENTER_VERTICAL                    | wxALIGN_LEFT  | wxALL, 5 );    }    panel_sizer->Add( access_checkboxes[0], 0,                      wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL  | wxALL, 5 );    panel_sizer->Add( sizer, 1, wxEXPAND | wxTOP, 3 );    panel->SetSizerAndFit( panel_sizer );    /* Update access type panel */    for( i=1; i < ACCESS_OUT_NUM; i++ )    {        access_subpanels[i]->Disable();    }    return panel;}wxPanel *SoutDialog::MiscPanel( wxWindow* parent ){    wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition,                                  wxSize(200, 200) );    wxStaticBox *panel_box = new wxStaticBox( panel, -1,                                   wxU(_("Miscellaneous options")) );    wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box,                                                          wxVERTICAL );    /* Announce Row */    misc_subpanels[ANN_MISC_SOUT] = new wxPanel( panel, -1 );    wxFlexGridSizer *subpanel_sizer = new wxFlexGridSizer( 3, 4, 20 );    wxFlexGridSizer *subpanel_sub_sizer = new wxFlexGridSizer( 2, 4, 20 );    sap_checkbox = new wxCheckBox( misc_subpanels[ANN_MISC_SOUT],SAPMisc_Event,                                   wxU(_("SAP announce")) );    slp_checkbox = new wxCheckBox( misc_subpanels[ANN_MISC_SOUT],SLPMisc_Event,                                   wxU(_("SLP announce")) );    wxStaticText *label_g = new wxStaticText( misc_subpanels[ANN_MISC_SOUT], -1,                                            wxU(_("Group name")) );    announce_group = new wxTextCtrl( misc_subpanels[ANN_MISC_SOUT],                                    AnnounceGroup_Event,                                    wxT(""), wxDefaultPosition,                                    wxSize( 200, -1 ), wxTE_PROCESS_ENTER);    wxStaticText *label = new wxStaticText( misc_subpanels[ANN_MISC_SOUT], -1,                                            wxU(_("Channel name")) );    announce_addr = new wxTextCtrl( misc_subpanels[ANN_MISC_SOUT],                                    AnnounceAddr_Event,                                    wxT(""), wxDefaultPosition,                                    wxSize( 200, -1 ), wxTE_PROCESS_ENTER);    subpanel_sizer->Add( sap_checkbox, 0,                         wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    subpanel_sizer->Add( slp_checkbox, 0,                         wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    subpanel_sub_sizer->Add( label_g, 0, wxALIGN_RIGHT |                             wxALIGN_CENTER_VERTICAL );    subpanel_sub_sizer->Add( announce_group, 1, wxEXPAND |                             wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );    subpanel_sub_sizer->Add( label, 0, wxALIGN_RIGHT |                             wxALIGN_CENTER_VERTICAL );    subpanel_sub_sizer->Add( announce_addr, 1, wxEXPAND |                             wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );    subpanel_sizer->Add( subpanel_sub_sizer, 1, wxEXPAND |                         wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );    misc_subpanels[ANN_MISC_SOUT]->SetSizerAndFit( subpanel_sizer );    /* Stuff everything into the main panel */    panel_sizer->Add( misc_subpanels[ANN_MISC_SOUT], 1,                      wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );    sout_all_checkbox = new wxCheckBox( panel, SoutAll_Event,                            wxU(_("Select all elementary streams")) );    panel_sizer->Add( sout_all_checkbox, 1,                      wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxLEFT, 5 );    panel->SetSizerAndFit( panel_sizer );    /* Update misc panel */    misc_subpanels[ANN_MISC_SOUT]->Disable();    announce_group->Disable();    announce_addr->Disable();    return panel;}wxPanel *SoutDialog::EncapsulationPanel( wxWindow* parent ){    unsigned int i;    wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition,                                  wxSize(200, 200) );    wxStaticBox *panel_box = new wxStaticBox( panel, -1,                                              wxU(_("Encapsulation Method")) );    wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box,                                                          wxHORIZONTAL );    static const wxString encapsulation_array[] =    {        wxT("MPEG TS"),        wxT("MPEG PS"),        wxT("MPEG 1"),        wxT("Ogg"),        wxT("ASF"),        wxT("MP4"),        wxT("MOV"),        wxT("WAV"),        wxT("Raw")    };    /* Stuff everything into the main panel */    for( i = 0; i < WXSIZEOF(encapsulation_array); i++ )    {        encapsulation_radios[i] =            new wxRadioButton( panel, EncapsulationRadio1_Event + i,                               encapsulation_array[i] );        panel_sizer->Add( encapsulation_radios[i], 0,                          wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL |                          wxALL, 4 );    }    /* Hide avi one */    for( i = WXSIZEOF(encapsulation_array); i < ENCAPS_NUM; i++ )    {        encapsulation_radios[i] =            new wxRadioButton( panel, EncapsulationRadio1_Event + i, wxT("") );        encapsulation_radios[i]->Hide();    }    panel->SetSizerAndFit( panel_sizer );    /* Update encapsulation panel */    encapsulation_radios[TS_ENCAPSULATION]->SetValue(true);    i_encapsulation_type = TS_ENCAPSULATION;    return panel;}wxPanel *SoutDialog::TranscodingPanel( wxWindow* parent ){    wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition,                                  wxSize(200, 200) );    wxStaticBox *panel_box = new wxStaticBox( panel, -1,                                              wxU(_("Transcoding options")) );    wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box,                                                          wxVERTICAL );    /* Create video transcoding checkox */    static const wxString wxvcodecs_array[] =    {        wxT("mp1v"),        wxT("mp2v"),        wxT("mp4v"),        wxT("DIV1"),        wxT("DIV2"),        wxT("DIV3"),        wxT("H263"),        wxT("h264"),        wxT("I263"),        wxT("WMV1"),        wxT("WMV2"),        wxT("MJPG"),        wxT("theo")    };    /*    static const wxString vbitrates_array[] =    {            wxT("3072"),            wxT("2048"),            wxT("1024"),            wxT("768"),            wxT("512"),            wxT("384"),            wxT("256"),            wxT("192"),            wxT("128"),            wxT("96"),            wxT("64"),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -