* v4l.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: v4l.cpp,v 1.1 2003/08/19 21:16:09 adn Exp $
+ * $Id: v4l.cpp,v 1.2 2003/08/20 19:17:29 adn Exp $
*
* Authors: Mohammed Adnène Trojette <adn@via.ecp.fr>
*
# define wxRB_SINGLE 0
#endif
-enum
-{
- AUDIO_DEV=0,
- AUDIO_CHAN,
- SIZE,
- NORM,
- FREQUENCY
-};
-
/*****************************************************************************
* Event Table.
*****************************************************************************/
{
MRL_Event,
- AudioDevice_Event, ADevLocation, AudioChannel_Event,
-
Size_Event,
Norm_Event,
- Frequency_Event
+ Frequency_Event,
+
+ AudioDevice_Event, ADevLocation, AudioChannel_Event,
+
+ Bitrate_Event, MaxBitrate_Event
};
BEGIN_EVENT_TABLE(V4LDialog, wxDialog)
EVT_BUTTON(wxID_OK, V4LDialog::OnOk)
EVT_BUTTON(wxID_CANCEL, V4LDialog::OnCancel)
- /* Events generated by the audio panel */
- EVT_CHECKBOX(AudioDevice_Event, V4LDialog::OnAudioEnable)
- EVT_TEXT(ADevLocation, V4LDialog::OnAudioEnable)
- EVT_SPINCTRL(AudioChannel_Event, V4LDialog::OnAudioChannel)
-
- /* Events generated by the audio panel */
+ /* Events generated by the common panel */
EVT_CHECKBOX(Size_Event, V4LDialog::OnSizeEnable)
EVT_COMBOBOX(Size_Event, V4LDialog::OnSize)
EVT_CHECKBOX(Norm_Event, V4LDialog::OnNormEnable)
EVT_CHECKBOX(Frequency_Event, V4LDialog::OnFrequencyEnable)
EVT_COMBOBOX(Frequency_Event, V4LDialog::OnFrequency)
+ /* Events generated by the audio panel */
+ EVT_CHECKBOX(AudioDevice_Event, V4LDialog::OnAudioEnable)
+ EVT_TEXT(ADevLocation, V4LDialog::OnAudioEnable)
+ EVT_SPINCTRL(AudioChannel_Event, V4LDialog::OnAudioChannel)
+
+ /* Events generated by the bitrate panel */
+ EVT_CHECKBOX(Bitrate_Event, V4LDialog::OnBitrateEnable)
+ EVT_SPINCTRL(Bitrate_Event, V4LDialog::OnBitrate)
+ EVT_CHECKBOX(MaxBitrate_Event, V4LDialog::OnMaxBitrateEnable)
+ EVT_SPINCTRL(MaxBitrate_Event, V4LDialog::OnMaxBitrate)
+
END_EVENT_TABLE()
/*****************************************************************************
mrl_sizer->Add( mrl_combo, 1, wxALL | wxALIGN_CENTER, 5 );
mrl_sizer_sizer->Add( mrl_sizer, 1, wxEXPAND | wxALL, 5 );
+ /* Create the common panel */
+ wxPanel *common_panel = CommonPanel( panel );
+
/* Create the audio panel */
wxPanel *audio_panel = AudioPanel( panel );
- /* Create the size panel */
- wxPanel *common_panel = CommonPanel( panel );
+ /* Create the bitrate panel */
+ wxPanel *bitrate_panel = BitratePanel( panel );
/* Separation */
wxStaticLine *static_line = new wxStaticLine( panel, wxID_OK );
panel_sizer->Add( mrl_sizer_sizer, 0, wxEXPAND, 5 );
panel_sizer->Add( common_panel, 1, wxEXPAND | wxALL, 5 );
panel_sizer->Add( audio_panel, 1, wxEXPAND | wxALL, 5 );
+ panel_sizer->Add( bitrate_panel, 1, wxEXPAND | wxALL, 5 );
panel_sizer->Add( static_line, 0, wxEXPAND | wxALL, 5 );
panel_sizer->Add( button_sizer, 0, wxALIGN_LEFT | wxALIGN_BOTTOM |
wxALL, 5 );
{
if( size_checkbox->IsChecked() )
{
- common += wxT(":size=")
+ common += wxT(":size=")
+ size_combo->GetValue();
}
}
- if( !audio.IsEmpty() || !common.IsEmpty() )
- mrl_combo->SetValue( audio + common );
+ wxString rate;
+ {
+ if( bitrate_checkbox->IsChecked() )
+ {
+ rate += wxString::Format( wxT(":bitrate=%d"),
+ bitrate->GetValue() );
+ }
+
+ if( maxbitrate_checkbox->IsChecked() )
+ {
+ rate += wxString::Format( wxT(":maxbitrate=%d"),
+ maxbitrate->GetValue() );
+ }
+ }
+
+ if( !audio.IsEmpty() || !common.IsEmpty() || !rate.IsEmpty() )
+ mrl_combo->SetValue( audio + common + rate);
else
mrl_combo->SetValue( wxT("") );
}
wxT("qcif"),
wxT("sif"),
wxT("cif"),
- wxT("vga")
+ wxT("vga"),
};
size_checkbox = new wxCheckBox( common_subpanel,
return panel;
}
+wxPanel *V4LDialog::BitratePanel( wxWindow* parent )
+{
+ wxPanel *panel = new wxPanel( parent, -1, wxDefaultPosition,
+ wxSize(200, 200) );
+
+ wxStaticBox *panel_box = new wxStaticBox( panel, -1,
+ wxU(_("Bitrate Options")) );
+ wxStaticBoxSizer *panel_sizer = new wxStaticBoxSizer( panel_box,
+ wxVERTICAL );
+
+ wxFlexGridSizer *subpanel_sizer;
+
+ bitrate_subpanel = new wxPanel( panel, -1 );
+
+ subpanel_sizer = new wxFlexGridSizer( 2, 2, 20 );
+
+ bitrate_checkbox = new wxCheckBox( bitrate_subpanel,
+ Bitrate_Event,
+ wxU(_("Bitrate")) );
+ bitrate = new wxSpinCtrl( bitrate_subpanel, Bitrate_Event );
+
+ subpanel_sizer->Add( bitrate_checkbox, 0, wxALIGN_LEFT |
+ wxALIGN_CENTER_VERTICAL );
+ subpanel_sizer->Add( bitrate, 0, wxALIGN_RIGHT |
+ wxALIGN_CENTER_VERTICAL );
+
+ maxbitrate_checkbox = new wxCheckBox( bitrate_subpanel,
+ MaxBitrate_Event,
+ wxU(_("Maximum Bitrate")) );
+ maxbitrate = new wxSpinCtrl( bitrate_subpanel, MaxBitrate_Event );
+
+ subpanel_sizer->Add( maxbitrate_checkbox, 0, wxALIGN_LEFT |
+ wxALIGN_CENTER_VERTICAL );
+ subpanel_sizer->Add( maxbitrate, 0, wxALIGN_RIGHT |
+ wxALIGN_CENTER_VERTICAL );
+
+ bitrate_subpanel->SetSizerAndFit( subpanel_sizer );
+
+ /* Stuff everything into the main panel */
+ panel_sizer->Add( bitrate_subpanel, 1,
+ wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, 5 );
+
+ panel->SetSizerAndFit( panel_sizer );
+
+ /* Update panel */
+ bitrate->Disable();
+ maxbitrate->Disable();
+
+ return panel;
+}
+
/*****************************************************************************
* Events methods.
//mrl = event.GetString();
}
-/*****************************************************************************
- * Audio panel event methods.
- *****************************************************************************/
-void V4LDialog::OnAudioEnable( wxCommandEvent& event )
-{
- audio_device->SetValue( wxU( "/dev/dsp" ) );
- audio_channel->SetRange( 0, 255 );
- audio_channel->SetValue( 0 );
-
- audio_device->Enable( event.GetInt() );
- audio_channel->Enable( event.GetInt() );
- UpdateMRL();
-}
-
-void V4LDialog::OnAudioChannel( wxCommandEvent& event )
-{
- UpdateMRL();
-}
-
/******************************************************************************
* Common panel event methods.
******************************************************************************/
void V4LDialog::OnFrequencyEnable( wxCommandEvent& event )
{
- frequency->SetRange( 0, 42000 );
- frequency->SetValue( 7668 );
+ frequency->SetRange( 0, 1200000 );
+ frequency->SetValue( 479250 );
frequency->Enable( event.GetInt() );
UpdateMRL();
}
UpdateMRL();
}
+/*****************************************************************************
+ * Audio panel event methods.
+ *****************************************************************************/
+void V4LDialog::OnAudioEnable( wxCommandEvent& event )
+{
+ audio_device->SetValue( wxU( "/dev/dsp" ) );
+ audio_channel->SetRange( 0, 255 );
+ audio_channel->SetValue( 0 );
+
+ audio_device->Enable( event.GetInt() );
+ audio_channel->Enable( event.GetInt() );
+ UpdateMRL();
+}
+
+void V4LDialog::OnAudioChannel( wxCommandEvent& event )
+{
+ UpdateMRL();
+}
+
+/******************************************************************************
+ * Bitrate panel event methods.
+ ******************************************************************************/
+void V4LDialog::OnBitrateEnable( wxCommandEvent& event )
+{
+ bitrate->SetRange( 0, 10000 );
+ bitrate->SetValue( 3000 );
+ bitrate->Enable( event.GetInt() );
+ UpdateMRL();
+}
+
+void V4LDialog::OnBitrate( wxCommandEvent& event )
+{
+ UpdateMRL();
+}
+
+void V4LDialog::OnMaxBitrateEnable( wxCommandEvent& event )
+{
+ maxbitrate->SetRange( 0, 10000 );
+ maxbitrate->SetValue( 3000 );
+ maxbitrate->Enable( event.GetInt() );
+ UpdateMRL();
+}
+
+void V4LDialog::OnMaxBitrate( wxCommandEvent& event )
+{
+ UpdateMRL();
+}