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

📄 streamout.cpp

📁 video linux conference
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            wxT("32"),            wxT("16")    };*/    static const wxString vscales_array[] =    {            wxT("0.25"),            wxT("0.5"),            wxT("0.75"),            wxT("1"),            wxT("1.25"),            wxT("1.5"),            wxT("1.75"),            wxT("2")    };    wxFlexGridSizer *video_sizer = new wxFlexGridSizer( 6, 1, 20 );#if defined( __WXMSW__ )    wxFlexGridSizer *video_sub_sizer = new wxFlexGridSizer( 4, 5, 20 );#else    wxFlexGridSizer *video_sub_sizer = new wxFlexGridSizer( 2, 5, 20 );#endif    video_transc_checkbox =        new wxCheckBox( panel, VideoTranscEnable_Event, wxU(_("Video codec")));    video_codec_combo =        new wxComboBox( panel, VideoTranscCodec_Event, wxvcodecs_array[2],                        wxPoint(20,25), wxDefaultSize,                        WXSIZEOF(wxvcodecs_array),                        wxvcodecs_array, wxCB_READONLY );    video_codec_combo->SetSelection(2);    wxStaticText *bitrate_label =        new wxStaticText( panel, -1, wxU(_("Bitrate (kb/s)")));    video_bitrate_combo =        new wxComboBox( panel, VideoTranscBitrate_Event, wxT("1024"),                        wxPoint(20,25), wxDefaultSize,                        WXSIZEOF(vbitrates_array), vbitrates_array );    wxStaticText *scale_label =        new wxStaticText( panel, -1, wxU(_("Scale")));    video_scale_combo =        new wxComboBox( panel, VideoTranscScale_Event, wxT("1"),                        wxPoint(20,25), wxDefaultSize,                        WXSIZEOF(vscales_array), vscales_array );    video_sizer->Add( video_transc_checkbox, 0,                      wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    video_sizer->Add( video_codec_combo, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    video_sub_sizer->Add( bitrate_label, 0,                      wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    video_sub_sizer->Add( video_bitrate_combo, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    video_sub_sizer->Add( scale_label, 0,                      wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    video_sub_sizer->Add( video_scale_combo, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    video_sizer->Add( video_sub_sizer, 1, wxEXPAND |                         wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL );    /* Create audio transcoding checkox */    static const wxString wxacodecs_array[] =    {        wxT("mpga"),        wxT("mp2a"),        wxT("mp3"),        wxT("mp4a"),        wxT("a52"),        wxT("vorb"),        wxT("flac"),        wxT("spx"),        wxT("s16l"),        wxT("fl32")    };    static const wxString achannels_array[] =    {        wxT("1"),        wxT("2"),        wxT("4"),        wxT("6")    };/*    static const wxString abitrates_array[] =    {            wxT("512"),            wxT("256"),            wxT("192"),            wxT("128"),            wxT("96"),            wxT("64"),            wxT("32"),            wxT("16")    };*/    wxFlexGridSizer *audio_sizer = new wxFlexGridSizer( 3, 1, 20 );    audio_transc_checkbox =        new wxCheckBox( panel, AudioTranscEnable_Event, wxU(_("Audio codec")));    audio_codec_combo =        new wxComboBox( panel, AudioTranscCodec_Event, wxacodecs_array[0],                        wxPoint(10,25), wxDefaultSize,                        WXSIZEOF(wxacodecs_array),                        wxacodecs_array, wxCB_READONLY );    audio_codec_combo->SetSelection(0);#if defined( __WXMSW__ )    wxFlexGridSizer *audio_sub_sizer = new wxFlexGridSizer( 4, 5, 20 );#else    wxFlexGridSizer *audio_sub_sizer = new wxFlexGridSizer( 2, 5, 20 );#endif    bitrate_label =        new wxStaticText( panel, -1, wxU(_("Bitrate (kb/s)")));    audio_bitrate_combo =        new wxComboBox( panel, AudioTranscBitrate_Event, wxT("192"),                        wxPoint(10,25), wxDefaultSize,                        WXSIZEOF(abitrates_array), abitrates_array );    wxStaticText *channels_label =        new wxStaticText( panel, -1, wxU(_("Channels")));    audio_channels_combo =        new wxComboBox( panel, AudioTranscChans_Event, achannels_array[1],                        wxPoint(10,25), wxDefaultSize,                        WXSIZEOF(achannels_array), achannels_array );    audio_channels_combo->SetSelection(1);    audio_sub_sizer->Add( bitrate_label, 0,                      wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    audio_sub_sizer->Add( audio_bitrate_combo, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    audio_sub_sizer->Add( channels_label, 0,                      wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    audio_sub_sizer->Add( audio_channels_combo, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    audio_sizer->Add( audio_transc_checkbox, 0,                      wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    audio_sizer->Add( audio_codec_combo, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    audio_sizer->Add( audio_sub_sizer, 1,                      wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    /* Create subtitles transcoding checkox */    static const wxString wxscodecs_array[] =    {        wxT("dvbs")    };    wxFlexGridSizer *subtitles_sizer = new wxFlexGridSizer( 3, 1, 20 );    subtitles_transc_checkbox =        new wxCheckBox( panel, SubtitlesTranscEnable_Event,                        wxU(_("Subtitles codec")));    subtitles_codec_combo =        new wxComboBox( panel, SubtitlesTranscCodec_Event, wxscodecs_array[0],                        wxPoint(10,25), wxDefaultSize,                        WXSIZEOF(wxscodecs_array),                        wxscodecs_array, wxCB_READONLY );    subtitles_codec_combo->SetSelection(0);    subtitles_overlay_checkbox =        new wxCheckBox( panel, SubtitlesOverlayEnable_Event,                        wxU(_("Subtitles overlay")));    subtitles_sizer->Add( subtitles_transc_checkbox, 0,                          wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    subtitles_sizer->Add( subtitles_codec_combo, 1,                          wxEXPAND | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    subtitles_sizer->Add( subtitles_overlay_checkbox, 0,                          wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );    /* Stuff everything into the main panel */    panel_sizer->Add( video_sizer, 0,                      wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 5 );    panel_sizer->Add( audio_sizer, 0,                      wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 5 );    panel_sizer->Add( subtitles_sizer, 0,                      wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 5 );    panel->SetSizerAndFit( panel_sizer );    /* Update transcoding panel */    wxCommandEvent event( 0, VideoTranscEnable_Event );    event.SetInt( 0 );    OnTranscodingEnable( event );    event.SetId( AudioTranscEnable_Event );    OnTranscodingEnable( event );    event.SetId( SubtitlesTranscEnable_Event );    OnTranscodingEnable( event );    return panel;}/***************************************************************************** * Events methods. *****************************************************************************/void SoutDialog::OnOk( wxCommandEvent& WXUNUSED(event) ){    mrl_combo->Append( mrl_combo->GetValue() );    EndModal( wxID_OK );}void SoutDialog::OnCancel( wxCommandEvent& WXUNUSED(event) ){    EndModal( wxID_CANCEL );}void SoutDialog::OnMRLChange( wxCommandEvent& event ){    //mrl = event.GetString();}/***************************************************************************** * Access output panel event methods. *****************************************************************************/void SoutDialog::OnAccessTypeChange( wxCommandEvent& event ){    int i;    i_access_type = event.GetId() - AccessType1_Event;    access_subpanels[i_access_type]->Enable( event.GetInt() );    switch( i_access_type )    {    case UDP_ACCESS_OUT:        misc_subpanels[ANN_MISC_SOUT]->Enable( event.GetInt() );        for( i = 1; i < ENCAPS_NUM; i++ )        {            encapsulation_radios[i]->Enable( !event.GetInt() );        }        if( event.GetInt() )        {            encapsulation_radios[TS_ENCAPSULATION]->SetValue(true);            i_encapsulation_type = TS_ENCAPSULATION;        }        break;    }    UpdateMRL();}/***************************************************************************** * AnnounceMisc panel event methods. *****************************************************************************/void SoutDialog::OnSAPMiscChange( wxCommandEvent& event ){    if( !slp_checkbox->IsChecked() )    {        announce_addr->Enable( event.GetInt() );    }    announce_group->Enable( event.GetInt() );    UpdateMRL();}void SoutDialog::OnSLPMiscChange( wxCommandEvent& event ){    if( !sap_checkbox->IsChecked() )    {        announce_addr->Enable( event.GetInt() );    }    UpdateMRL();}/***************************************************************************** * SAPAddr panel event methods. *****************************************************************************/void SoutDialog::OnAnnounceAddrChange( wxCommandEvent& WXUNUSED(event) ){    UpdateMRL();}void SoutDialog::OnAnnounceGroupChange( wxCommandEvent& WXUNUSED(event) ){    UpdateMRL();}/***************************************************************************** * File access output event methods. *****************************************************************************/void SoutDialog::OnFileChange( wxCommandEvent& WXUNUSED(event) ){    UpdateMRL();}void SoutDialog::OnFileBrowse( wxCommandEvent& WXUNUSED(event) ){    wxFileDialog dialog( this, wxU(_("Save file")), wxT(""), wxT(""), wxT("*"),                         wxSAVE | wxOVERWRITE_PROMPT );    if( dialog.ShowModal() == wxID_OK )    {        file_combo->SetValue( dialog.GetPath() );        UpdateMRL();    }}void SoutDialog::OnFileDump( wxCommandEvent& event ){    misc_panel->Enable( !event.GetInt() );    encapsulation_panel->Enable( !event.GetInt() );    transcoding_panel->Enable( !event.GetInt() );    for( int i = 0; i < ACCESS_OUT_NUM; i++ )    {        if( i != FILE_ACCESS_OUT )        {            access_checkboxes[i]->Enable( !event.GetInt() );            access_subpanels[i]->Enable( !event.GetInt() &&                                         access_checkboxes[i]->IsChecked() );        }    }    UpdateMRL();}/***************************************************************************** * Net access output event methods. *****************************************************************************/void SoutDialog::OnNetChange( wxCommandEvent& WXUNUSED(event) ){    UpdateMRL();}/***************************************************************************** * Encapsulation panel event methods. *****************************************************************************/void SoutDialog::OnEncapsulationChange( wxCommandEvent& event ){    i_encapsulation_type = event.GetId() - EncapsulationRadio1_Event;    UpdateMRL();}/***************************************************************************** * Transcoding panel event methods. *****************************************************************************/void SoutDialog::OnTranscodingEnable( wxCommandEvent& event ){    switch( event.GetId() )    {    case VideoTranscEnable_Event:        video_codec_combo->Enable( event.GetInt() );        video_bitrate_combo->Enable( event.GetInt() );        video_scale_combo->Enable( event.GetInt() );        break;    case AudioTranscEnable_Event:        audio_codec_combo->Enable( event.GetInt() );        audio_bitrate_combo->Enable( event.GetInt() );        audio_channels_combo->Enable( event.GetInt() );        break;    case SubtitlesTranscEnable_Event:        subtitles_overlay_checkbox->Enable( !event.GetInt() );        subtitles_codec_combo->Enable( event.GetInt() );        break;    case SubtitlesOverlayEnable_Event:        subtitles_transc_checkbox->Enable( !event.GetInt() );        break;    }    UpdateMRL();}void SoutDialog::OnTranscodingChange( wxCommandEvent& event ){    UpdateMRL();}

⌨️ 快捷键说明

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