#include "bcwindowbase.h"
#include "bctitle.h"
#include "cstrdup.h"
+#include "keys.h"
#include "language.h"
#include "mwindow.h"
#include "pluginfclient.h"
int PluginFClientText::handle_event()
{
+ if( get_keypress() == RETURN ) {
+ fwin->update();
+ activate();
+ }
return 0;
}
}
PluginFClientSlider::PluginFClientSlider(PluginFClientWindow *fwin, int x, int y)
- : BC_FSlider(x, y, 0, fwin->get_w()-x-20, fwin->get_w()-x-20, 0.f, 0.f, 0.f)
+ : BC_FSlider(x, y, 0, fwin->get_w()-x-xS(20), fwin->get_w()-x-xS(20), 0.f, 0.f, 0.f)
{
this->fwin = fwin;
}
int PluginFClient_OptPanel::update()
{
const char *cols[] = { "option", "value", };
- const int col1_w = 150;
+ const int col1_w = xS(150);
int wids[] = { col1_w, get_w()-col1_w };
BC_ListBox::update(&items[0], &cols[0], &wids[0], sizeof(items)/sizeof(items[0]),
get_xposition(), get_yposition(), get_highlighted_item());
PluginFClientWindow::PluginFClientWindow(PluginFClient *ffmpeg)
- : PluginClientWindow(ffmpeg->plugin, 600, 300, 600, 300, 1)
+ : PluginClientWindow(ffmpeg->plugin, xS(600), yS(300), xS(600), yS(300), 1)
{
this->ffmpeg = ffmpeg;
this->selected = 0;
void PluginFClientWindow::create_objects()
{
+ int xs8 = xS(8), xs10 = xS(10), ys10 = yS(10);
char string[BCTEXTLEN];
BC_Title *title;
- int x = 10, y = 10;
+ int x = xs10, y = ys10;
const char *descr = ffmpeg->config.ffilt->description();
if( !descr ) descr = ffmpeg->config.ffilt->filter_name();
add_subwindow(title = new BC_Title(x, y, descr));
- y += title->get_h() + 10;
+ y += title->get_h() + ys10;
int x0 = x;
sprintf(string, _("Type: "));
add_subwindow(title = new BC_Title(x0, y, string));
- x0 += title->get_w() + 8;
+ x0 += title->get_w() + xs8;
add_subwindow(type = new BC_Title(x0, y, (char *)""));
- x0 = x + 150;
+ x0 = x + xS(150);
sprintf(string, _("Range: "));
add_subwindow(title = new BC_Title(x0, y, string));
- x0 += title->get_w() + 8;
+ x0 += title->get_w() + xs8;
add_subwindow(range = new BC_Title(x0, y, (char *)""));
- int x1 = get_w() - BC_GenericButton::calculate_w(this, _("Reset")) - 8;
+ int x1 = get_w() - BC_GenericButton::calculate_w(this, _("Reset")) - xs8;
add_subwindow(reset = new PluginFClientReset(this, x1, y));
- y += title->get_h() + 10;
+ y += title->get_h() + ys10;
x0 = x;
- add_subwindow(units = new PluginFClientUnits(this, x0, y, 120));
- x0 += units->get_w() + 8;
- x1 = get_w() - BC_GenericButton::calculate_w(this, _("Apply")) - 8;
+ add_subwindow(units = new PluginFClientUnits(this, x0, y, xS(120)));
+ x0 += units->get_w() + xs8;
+ x1 = get_w() - BC_GenericButton::calculate_w(this, _("Apply")) - xs8;
add_subwindow(apply = new PluginFClientApply(this, x1, y));
- add_subwindow(text = new PluginFClientText(this, x0, y, x1-x0 - 8));
- y += title->get_h() + 10;
+ add_subwindow(text = new PluginFClientText(this, x0, y, x1-x0 - xs8));
+ y += title->get_h() + ys10;
add_subwindow(pot = new PluginFClientPot(this, x, y));
- x1 = x + pot->get_w() + 10;
- add_subwindow(slider = new PluginFClientSlider(this, x1, y+10));
- y += pot->get_h() + 10;
+ x1 = x + pot->get_w() + xs10;
+ add_subwindow(slider = new PluginFClientSlider(this, x1, y+ys10));
+ y += pot->get_h() + ys10;
panel_x = x; panel_y = y;
- panel_w = get_w()-10 - panel_x;
- panel_h = get_h()-10 - panel_y;
+ panel_w = get_w()-xs10 - panel_x;
+ panel_h = get_h()-ys10 - panel_y;
panel = new PluginFClient_OptPanel(this, panel_x, panel_y, panel_w, panel_h);
add_subwindow(panel);
panel->create_objects();
int PluginFClientWindow::resize_event(int w, int h)
{
- int x = get_w() - BC_GenericButton::calculate_w(this, _("Reset")) - 8;
+ int xs8 = xS(8), xs10 = xS(10), ys10 = yS(10);
+ int x = get_w() - BC_GenericButton::calculate_w(this, _("Reset")) - xs8;
int y = reset->get_y();
reset->reposition_window(x, y);
- int x1 = get_w() - BC_GenericButton::calculate_w(this, _("Apply")) - 8;
+ int x1 = get_w() - BC_GenericButton::calculate_w(this, _("Apply")) - xs8;
int y1 = units->get_y();
apply->reposition_window(x1, y1);
- int x0 = units->get_x() + units->get_w() + 8;
+ int x0 = units->get_x() + units->get_w() + xs8;
int y0 = units->get_y();
- text->reposition_window(x0,y0, x1-x0-8);
- x1 = pot->get_x() + pot->get_w() + 10;
- int w1 = w - slider->get_x() - 20;
+ text->reposition_window(x0,y0, x1-x0-xs8);
+ x1 = pot->get_x() + pot->get_w() + xs10;
+ int w1 = w - slider->get_x() - xS(20);
slider->set_pointer_motion_range(w1);
slider->reposition_window(x1, slider->get_y(), w1, slider->get_h());
- panel_w = get_w()-10 - panel_x;
- panel_h = get_h()-10 - panel_y;
+ panel_w = get_w()-xs10 - panel_x;
+ panel_h = get_h()-ys10 - panel_y;
panel->reposition_window(panel_x,panel_y, panel_w, panel_h);
return 1;
}
static const int m1 = 1001*12, m2 = 1000*12;
static const int freqs[] = {
40*m1, 48*m1, 50*m1, 60*m1, 80*m1,120*m1, 240*m1,
- 24*m2, 30*m2, 60*m2, 12*m2, 15*m2, 48*m2, 0,
+ 24*m2, 30*m2, 60*m2, 12*m2, 15*m2, 48*m2, 90*m2,
+ 100*m2, 120*m2, 144*m2, 72*m2, 0,
};
double max_err = 1.;
int freq, best_freq = 0;
char args[BCTEXTLEN];
snprintf(args, sizeof(args),
"video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
- width, height, pix_fmt, best_rate.num, best_rate.den, aspect_w, aspect_h);
+ width, height, pix_fmt, best_rate.den, best_rate.num, aspect_w, aspect_h);
ret = avfilter_graph_create_filter(&fsrc, avfilter_get_by_name("buffer"),
"in", args, NULL, graph);
}
frame->format = AV_SAMPLE_FMT_FLTP;
frame->channel_layout = (1<<in_channels)-1;
frame->sample_rate = sample_rate;
- frame->pts = local_to_edl(filter_position);
+ frame->pts = filter_position;
}
int retry = 10;
PluginFVClient::PluginFVClient(PluginServer *server, const char *name)
- : PluginVClient(server), PluginFClient(this, name)
+ : PluginVClient(server),
+ PluginFClient(this, name),
+ FFVideoConvert(server->preferences)
{
}
ret = av_buffersink_get_frame(fsink, frame);
if( ret >= 0 || ret != AVERROR(EAGAIN) ) break;
if( !fsrc ) { ret = AVERROR(EIO); break; }
- read_frame(vframe, 0, filter_position++, frame_rate, 0);
+ read_frame(vframe, 0, filter_position, frame_rate, 0);
frame->format = pix_fmt;
frame->width = width;
frame->height = height;
- frame->pts = local_to_edl(position);
+ frame->pts = filter_position++;
ret = av_frame_get_buffer(frame, 32);
if( ret < 0 ) break;
ret = transfer_pixfmt(vframe, frame);