libsndfile-devel libtheora-devel linux-firmware ivtv-firmware \
libvorbis-devel texinfo xz-devel lzma-devel cmake udftools git \
autoconf automake rpm-build jbigkit-devel libvdpau-devel libva-devel \
- alsa-lib-devel gtk2-devel pulseaudio-libs-devel libtool
+ alsa-lib-devel gtk2-devel pulseaudio-libs-devel libtool python
yasm=yasm-1.3.0-3.fc24.x86_64.rpm
release=http://archives.fedoraproject.org/pub/fedora/linux/releases/24
url=$release/Everything/x86_64/os/Packages/y/$yasm
ilmbase-devel fftw3-devel libsndfile-devel libtheora-devel flac-devel \
libtiff-devel inkscape cmake patch libnuma-devel lzma-devel udftools git \
yasm autoconf automake rpm-build libjbig-devel libvdpau-devel libva-devel \
- gtk2-devel libusb-1_0-devel libpulse-devel libtool
+ gtk2-devel libusb-1_0-devel libpulse-devel libtool python
if [ ! -f /usr/lib64/libtermcap.so ]; then
ln -s libtermcap.so.2 /usr/lib64/libtermcap.so
fi
fonts-dejavu libopenexr-dev festival libfftw3-dev gdb libusb-1.0-0-dev \
libdc1394-22-dev libflac-dev libjbig-dev libvdpau-dev libva-dev \
inkscape libsndfile1-dev libtheora-dev cmake udftools libxml2-utils git \
- autoconf automake debhelper libgtk2.0-dev libpulse-dev
+ autoconf automake debhelper libgtk2.0-dev libpulse-dev python
;;
#"ub16-10")
# apt-get -y install libx264-dev libx265-dev libvpx-dev libmjpegtools-dev
libdc1394-22-dev libiec61883-dev libflac-dev libjbig-dev libusb-1.0-0-dev \
libvdpau-dev libva-dev libsndfile1-dev libtheora-dev cmake udftools \
libxml2-utils git inkscape autoconf automake debhelper libgtk2.0-dev \
- libpulse-dev libtool
+ libpulse-dev libtool python
;;
*)
echo "unknown os: $dir"
ArrayList<char*> *alsa_titles = new ArrayList<char*>;
alsa_titles->set_array_delete();
AudioALSA::list_devices(alsa_titles, 0, mode);
+ AudioALSA::add_pulse_devices(mode, alsa_titles, 0);
alsa_drivers = new ArrayList<BC_ListBoxItem*>;
for(int i = 0; i < alsa_titles->total; i++)
}
else
refresh_frame->transfer_from(output_frame, -1);
+ draw_scope(refresh_frame, 1);
}
void Canvas::process_scope(VideoDevice *video, VFrame *frame)
frame = refresh_frame;
}
if( frame )
- draw_scope(frame);
+ draw_scope(frame, 0);
}
void Canvas::clear(int flash)
virtual void clear(int flash=1);
// draw scope
virtual int scope_on() { return 0; }
- virtual void draw_scope(VFrame *frame) {}
+ virtual void draw_scope(VFrame *frame, int refresh) {}
void process_scope(VideoDevice *video, VFrame *frame);
// Get top left offset of canvas relative to output.
int ColorButtonPicker::handle_new_color(int color, int alpha)
{
color_button->lock_window("ColorButtonPicker::handle_new_color");
- color_button->update_gui(color, alpha);
+ color_button->update_gui(color);
color_button->unlock_window();
return color_button->handle_new_color(color, alpha);
}
int CWindowCanvas::scope_on()
{
- return !gui->edit_panel->scope_dialog ? 0 :
- gui->edit_panel->scope_dialog->running();
+ EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+ if( !scope_dialog || !scope_dialog->scope_gui ) return 0;
+ if( scope_dialog->scope_gui->use_refresh ) return 0;
+ return scope_dialog->running();
}
-void CWindowCanvas::draw_scope(VFrame *output)
+void CWindowCanvas::draw_scope(VFrame *output, int refresh)
{
- if( gui->edit_panel->scope_dialog && output )
- gui->edit_panel->scope_dialog->process(output);
+ if( !output ) return;
+ EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+ if( !scope_dialog || !scope_dialog->scope_gui ) return;
+ if( scope_dialog->scope_gui->use_refresh && !refresh ) return;
+ scope_dialog->process(output);
}
void CWindowCanvas::draw_refresh(int flush)
void draw_crophandle(int x, int y);
int set_fullscreen(int on, int unlock);
int scope_on();
- void draw_scope(VFrame *output);
+ void draw_scope(VFrame *output, int refresh);
// Draw the camera/projector overlay in different colors.
void draw_outlines(int do_camera);
use_wave_gain = session->use_wave_gain;
use_vect_gain = session->use_vect_gain;
use_smooth = session->use_smooth;
+ use_refresh = session->use_refresh;
use_graticule = session->use_graticule;
ScopeGUI::create_objects();
}
session->use_wave_gain = use_wave_gain;
session->use_vect_gain = use_vect_gain;
session->use_smooth = use_smooth;
+ session->use_refresh = use_refresh;
session->use_graticule = use_graticule;
}
use_wave_gain = 5;
use_vect_gain = 5;
use_smooth = 0;
+ use_refresh = 0;
use_graticule = 0;
afolders_w = 0;
show_vwindow = show_awindow = show_cwindow = show_gwindow = show_lwindow = 0;
use_wave_gain = 5;
use_vect_gain = 5;
use_smooth = 1;
+ use_refresh = 0;
use_graticule = 0;
if(mwindow->edl)
use_wave_gain = defaults->get("USE_WAVE_GAIN", use_wave_gain);
use_vect_gain = defaults->get("USE_VECT_GAIN", use_vect_gain);
use_smooth = defaults->get("USE_SMOOTH", use_smooth);
+ use_refresh = defaults->get("USE_REFRESH", use_refresh);
use_graticule = defaults->get("USE_GRATICULE", use_graticule);
//printf("MainSession::load_defaults 1\n");
defaults->update("USE_WAVE_GAIN", use_wave_gain);
defaults->update("USE_VECT_GAIN", use_vect_gain);
defaults->update("USE_SMOOTH", use_smooth);
+ defaults->update("USE_REFRESH", use_refresh);
defaults->update("USE_GRATICULE", use_graticule);
defaults->update("ABINS_W", afolders_w);
int use_wave_gain;
int use_vect_gain;
int use_smooth;
+ int use_refresh;
int use_graticule;
int afolders_w;
use_wave_gain = mwindow->session->use_wave_gain;
use_vect_gain = mwindow->session->use_vect_gain;
use_smooth = mwindow->session->use_smooth;
+ use_refresh = -1;
use_graticule = mwindow->session->use_graticule;
ScopeGUI::create_objects();
}
mwindow->session->use_wave_gain = use_wave_gain;
mwindow->session->use_vect_gain = use_vect_gain;
mwindow->session->use_smooth = use_smooth;
+ mwindow->session->use_refresh = 0;
mwindow->session->use_graticule = use_graticule;
}
data_frame = 0;
frame_w = 1;
use_smooth = 1;
+ use_refresh = 0;
use_wave_gain = 5;
use_vect_gain = 5;
use_hist = 0;
scope_menu->create_objects();
int x1 = x + scope_menu->get_w() + 2*margin;
add_subwindow(smooth = new ScopeSmooth(this, x1, y));
-
+ if( use_refresh >= 0 ) {
+ y += smooth->get_h() + margin;
+ add_subwindow(refresh = new ScopeRefresh(this, x, y));
+ }
create_panels();
update_toggles();
show_window();
return 1;
}
+ScopeRefresh::ScopeRefresh(ScopeGUI *gui, int x, int y)
+ : BC_CheckBox(x, y, gui->use_refresh, _("Refresh only"))
+{
+ this->gui = gui;
+}
+
+int ScopeRefresh::handle_event()
+{
+ gui->use_refresh = get_value();
+ gui->toggle_event();
+ return 1;
+}
+
ScopeGUI *gui;
};
+class ScopeRefresh : public BC_CheckBox
+{
+public:
+ ScopeRefresh(ScopeGUI *gui, int x, int y);
+ int handle_event();
+ ScopeGUI *gui;
+};
+
class ScopeGUI : public PluginClientWindow
{
ScopeVectSlider *vect_slider;
ScopeVectGrats *vect_grats;
ScopeSmooth *smooth;
+ ScopeRefresh *refresh;
VFrame *grat_image;
OverlayFrame *overlay;
int use_hist_parade, use_wave_parade;
int bins[HIST_SECTIONS][TOTAL_BINS];
- int frame_w, use_smooth;
+ int frame_w, use_smooth, use_refresh;
int use_wave_gain, use_vect_gain;
};
int VWindowCanvas::scope_on()
{
- return !gui->edit_panel->scope_dialog ? 0 :
- gui->edit_panel->scope_dialog->running();
+ EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+ if( !scope_dialog || !scope_dialog->scope_gui ) return 0;
+ if( scope_dialog->scope_gui->use_refresh ) return 0;
+ return scope_dialog->running();
}
-void VWindowCanvas::draw_scope(VFrame *output)
+void VWindowCanvas::draw_scope(VFrame *output, int refresh)
{
- if( gui->edit_panel->scope_dialog && output )
- gui->edit_panel->scope_dialog->process(output);
+ if( !output ) return;
+ EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+ if( !scope_dialog || !scope_dialog->scope_gui ) return;
+ if( scope_dialog->scope_gui->use_refresh && !refresh ) return;
+ scope_dialog->process(output);
}
void VWindowCanvas::draw_refresh(int flush)
void create_objects(EDL *edl);
void zoom_resize_window(float percentage);
int scope_on();
- void draw_scope(VFrame *output);
+ void draw_scope(VFrame *output, int refresh);
void draw_refresh(int flush = 1);
int need_overlays();
void draw_overlays();
use_wave_gain = plugin->use_wave_gain;
use_vect_gain = plugin->use_vect_gain;
use_smooth = plugin->use_smooth;
+ use_refresh = -1;
use_graticule = plugin->use_graticule;
ScopeGUI::create_objects();