18#ifndef FIND_ANALYSIS_FILTER_PARSER_H
19#define FIND_ANALYSIS_FILTER_PARSER_H
21#include "qmltypes/qmlapplication.h"
28class FindAnalysisFilterParser :
public Mlt::Parser
31 QList<Mlt::Filter> m_filters;
35 FindAnalysisFilterParser()
37 , m_skipAnalyzed(true)
40 QList<Mlt::Filter> &filters() {
return m_filters; }
42 void skipAnalyzed(
bool skip) { m_skipAnalyzed = skip; }
44 int on_start_filter(Mlt::Filter *filter)
46 QString serviceName = filter->get(
"mlt_service");
47 if (serviceName ==
"loudness" || serviceName ==
"vidstab") {
49 QString results = filter->get(
"results");
50 if (results.isEmpty() || !m_skipAnalyzed) {
51 if (serviceName ==
"vidstab") {
53 QString filename = filter->get(
"filename");
54 if (filename.isEmpty() || filename.endsWith(
"vidstab.trf")) {
55 filename = QmlApplication::getNextProjectFile(
"stab");
57 if (!filename.isEmpty()) {
58 filter->set(
"filename", filename.toUtf8().constData());
59 m_filters << Mlt::Filter(*filter);
63 file.open(QIODevice::WriteOnly);
68 m_filters << Mlt::Filter(*filter);
74 int on_start_producer(Mlt::Producer *) {
return 0; }
75 int on_end_producer(Mlt::Producer *) {
return 0; }
76 int on_start_playlist(Mlt::Playlist *) {
return 0; }
77 int on_end_playlist(Mlt::Playlist *) {
return 0; }
78 int on_start_tractor(Mlt::Tractor *) {
return 0; }
79 int on_end_tractor(Mlt::Tractor *) {
return 0; }
80 int on_start_multitrack(Mlt::Multitrack *) {
return 0; }
81 int on_end_multitrack(Mlt::Multitrack *) {
return 0; }
82 int on_start_track() {
return 0; }
83 int on_end_track() {
return 0; }
84 int on_end_filter(Mlt::Filter *) {
return 0; }
85 int on_start_transition(Mlt::Transition *) {
return 0; }
86 int on_end_transition(Mlt::Transition *) {
return 0; }
87 int on_start_chain(Mlt::Chain *) {
return 0; }
88 int on_end_chain(Mlt::Chain *) {
return 0; }
89 int on_start_link(Mlt::Link *) {
return 0; }
90 int on_end_link(Mlt::Link *) {
return 0; }