MainWindow::MainWindow(EventsModel *events, PlayersModel *players) : events(events), players(players)
{
- player = new QMediaPlayer;
- //player->setSource(QUrl::fromLocalFile("/home/sesse/dev/stats/ultimate.mkv"));
- player->setSource(QUrl::fromLocalFile("/home/sesse/dev/stats/ultimate-prores.mkv"));
- player->play();
+ video = new QMediaPlayer;
+ //video->setSource(QUrl::fromLocalFile("/home/sesse/dev/stats/ultimate.mkv"));
+ video->setSource(QUrl::fromLocalFile("/home/sesse/dev/stats/ultimate-prores.mkv"));
+ video->play();
ui = new Ui::MainWindow;
ui->setupUi(this);
ui->event_view->setModel(events);
connect(ui->event_view->selectionModel(), &QItemSelectionModel::currentRowChanged,
[this, events](const QModelIndex ¤t, const QModelIndex &previous) {
- player->setPosition(events->get_time(current.row()));
+ video->setPosition(events->get_time(current.row()));
});
ui->player_view->setModel(players);
- connect(player, &QMediaPlayer::positionChanged, [this](uint64_t pos) {
+ connect(video, &QMediaPlayer::positionChanged, [this](uint64_t pos) {
position_changed(pos);
});
- player->setVideoOutput(ui->video);
+ video->setVideoOutput(ui->video);
connect(ui->minus10s, &QPushButton::clicked, [this]() { seek(-10000); });
connect(ui->plus10s, &QPushButton::clicked, [this]() { seek(10000); });
connect(ui->play_pause, &QPushButton::clicked, [this]() {
if (playing) {
- player->pause();
+ video->pause();
ui->play_pause->setText("Play (space)");
} else {
- player->setPlaybackRate(1.0);
- player->play();
+ video->setPlaybackRate(1.0);
+ video->play();
ui->play_pause->setText("Pause (space)");
}
playing = !playing;
{
ui->timestamp->setText(QString::fromUtf8(format_timestamp(pos)));
if (buffered_seek) {
- player->setPosition(*buffered_seek);
+ video->setPosition(*buffered_seek);
buffered_seek.reset();
}
if (!playing) {
- player->pause(); // We only played to get a picture.
+ video->pause(); // We only played to get a picture.
}
update_status();
}
void MainWindow::seek(int64_t delta_ms)
{
- int64_t current_pos = buffered_seek ? *buffered_seek : player->position();
+ int64_t current_pos = buffered_seek ? *buffered_seek : video->position();
uint64_t pos = max<int64_t>(current_pos + delta_ms, 0);
buffered_seek = pos;
if (!playing) {
- player->setPlaybackRate(0.01);
- player->play(); // Or Qt won't show the seek.
+ video->setPlaybackRate(0.01);
+ video->play(); // Or Qt won't show the seek.
}
}
void MainWindow::insert_event(int button_id)
{
ui->event_view->selectionModel()->blockSignals(true);
- ui->event_view->selectRow(events->insert_event(player->position(), button_id));
+ ui->event_view->selectRow(events->insert_event(video->position(), button_id));
ui->event_view->selectionModel()->blockSignals(false);
}
//
// ...but if so, we might need to modify in/out events that are already there
// (perhaps just overwrite them all?)
- uint64_t t = player->position();
+ uint64_t t = video->position();
set<int> old_team = events->get_team_at(t);
set<int> new_team;
void MainWindow::update_status()
{
- EventsModel::Status s = events->get_status_at(player->position());
+ EventsModel::Status s = events->get_status_at(video->position());
char buf[256];
snprintf(buf, sizeof(buf), "%d–%d | %s | %d passes, %d sec possession",
s.our_score, s.their_score, s.offense ? "offense" : "defense", s.num_passes, s.possession_sec);