OpenShot Library | libopenshot 0.3.3
Loading...
Searching...
No Matches
ClipProcessingJobs.cpp
Go to the documentation of this file.
1
10// Copyright (c) 2008-2019 OpenShot Studios, LLC
11//
12// SPDX-License-Identifier: LGPL-3.0-or-later
13
14#include "ClipProcessingJobs.h"
15
16namespace openshot {
17
18// Constructor responsible to choose processing type and apply to clip
19ClipProcessingJobs::ClipProcessingJobs(std::string processingType, std::string processInfoJson) :
20processingType(processingType), processInfoJson(processInfoJson){
21}
22
23void ClipProcessingJobs::processClip(Clip& clip, std::string json){
24 processInfoJson = json;
25
26 // Process clip and save processed data
27 if(processingType == "Stabilizer"){
28 t = std::thread(&ClipProcessingJobs::stabilizeClip, this, std::ref(clip), std::ref(this->processingController));
29 }
30 if(processingType == "Tracker"){
31 t = std::thread(&ClipProcessingJobs::trackClip, this, std::ref(clip), std::ref(this->processingController));
32 }
33 if(processingType == "ObjectDetection"){
34 t = std::thread(&ClipProcessingJobs::detectObjectsClip, this, std::ref(clip), std::ref(this->processingController));
35 }
36}
37
38// Apply object tracking to clip
39void ClipProcessingJobs::trackClip(Clip& clip, ProcessingController& controller){
40
41 // Create CVTracker object
42 CVTracker tracker(processInfoJson, controller);
43 // Start tracking
44 tracker.trackClip(clip);
45
46 // Thread controller. If effect processing is done, save data
47 // Else, kill thread
48 if(controller.ShouldStop()){
49 controller.SetFinished(true);
50 return;
51 }
52 else{
53 // Save stabilization data
54 tracker.SaveTrackedData();
55 // tells to UI that the processing finished
56 controller.SetFinished(true);
57 }
58
59}
60
61// Apply object detection to clip
62void ClipProcessingJobs::detectObjectsClip(Clip& clip, ProcessingController& controller){
63 // create CVObjectDetection object
64 CVObjectDetection objDetector(processInfoJson, controller);
65 // Start object detection process
66 objDetector.detectObjectsClip(clip);
67
68 // Thread controller. If effect processing is done, save data
69 // Else, kill thread
70 if(controller.ShouldStop()){
71 controller.SetFinished(true);
72 return;
73 }
74 else{
75 // Save object detection data
76 objDetector.SaveObjDetectedData();
77 // tells to UI that the processing finished
78 controller.SetFinished(true);
79 }
80}
81
82void ClipProcessingJobs::stabilizeClip(Clip& clip, ProcessingController& controller){
83 // create CVStabilization object
84 CVStabilization stabilizer(processInfoJson, controller);
85 // Start stabilization process
86 stabilizer.stabilizeClip(clip);
87
88 // Thread controller. If effect processing is done, save data
89 // Else, kill thread
90 if(controller.ShouldStop()){
91 controller.SetFinished(true);
92 return;
93 }
94 else{
95 // Save stabilization data
96 stabilizer.SaveStabilizedData();
97 // tells to UI that the processing finished
98 controller.SetFinished(true);
99 }
100}
101
102// Get processing progress while iterating on the clip
104
105 return (int)processingController.GetProgress();
106}
107
108// Check if processing finished
110
111 if(processingController.GetFinished()){
112 t.join();
113 }
114 return processingController.GetFinished();
115}
116
117// stop preprocessing before finishing it
119 processingController.CancelProcessing();
120}
121
122// check if there is an error with the config
124 return processingController.GetError();
125}
126
127// get the error message
129 return processingController.GetErrorMessage();
130}
131
132} // namespace openshot
Header for ClipProcessingJobs class.
This class stabilizes a video frame using optical flow.
The tracker class will receive one bounding box provided by the user and then iterate over the clip f...
Definition CVTracker.h:75
void processClip(Clip &clip, std::string json)
ClipProcessingJobs(std::string processingType, std::string processInfoJson)
This class represents a clip (used to arrange readers on the timeline)
Definition Clip.h:89
This namespace is the default namespace for all code in the openshot library.
Definition Compressor.h:29