@@ -164,9 +164,9 @@ Clip::Clip(std::string path) : resampler(NULL), reader(NULL), allocated_reader(N
164164 std::string ext = get_file_extension (path);
165165 std::transform (ext.begin (), ext.end (), ext.begin (), ::tolower);
166166
167- // Determine if common video formats
167+ // Determine if common video formats (or image sequences)
168168 if (ext==" avi" || ext==" mov" || ext==" mkv" || ext==" mpg" || ext==" mpeg" || ext==" mp3" || ext==" mp4" || ext==" mts" ||
169- ext==" ogg" || ext==" wav" || ext==" wmv" || ext==" webm" || ext==" vob" )
169+ ext==" ogg" || ext==" wav" || ext==" wmv" || ext==" webm" || ext==" vob" || path. find ( " % " ) != std::string::npos )
170170 {
171171 try
172172 {
@@ -443,6 +443,11 @@ std::shared_ptr<Frame> Clip::GetFrame(std::shared_ptr<openshot::Frame> backgroun
443443 // Return the frame's number so the correct keyframes are applied.
444444 original_frame->number = frame_number;
445445
446+ // Apply waveform image (if any)
447+ if (Waveform ()) {
448+ apply_waveform (original_frame, background_frame->GetImage ());
449+ }
450+
446451 // Apply local effects to the frame (if any)
447452 apply_effects (original_frame);
448453
@@ -1265,36 +1270,14 @@ bool Clip::isEqual(double a, double b)
12651270// Apply keyframes to the source frame (if any)
12661271void Clip::apply_keyframes (std::shared_ptr<Frame> frame, std::shared_ptr<QImage> background_canvas) {
12671272 // Skip out if video was disabled or only an audio frame (no visualisation in use)
1268- if (!Waveform () && ! Reader ()-> info . has_video ) {
1273+ if (!frame-> has_image_data ) {
12691274 // Skip the rest of the image processing for performance reasons
12701275 return ;
12711276 }
12721277
12731278 // Get image from clip
12741279 std::shared_ptr<QImage> source_image = frame->GetImage ();
12751280
1276- /* REPLACE IMAGE WITH WAVEFORM IMAGE (IF NEEDED) */
1277- if (Waveform ())
1278- {
1279- // Debug output
1280- ZmqLogger::Instance ()->AppendDebugMethod (
1281- " Clip::get_transform (Generate Waveform Image)" ,
1282- " frame->number" , frame->number ,
1283- " Waveform()" , Waveform (),
1284- " background_canvas->width()" , background_canvas->width (),
1285- " background_canvas->height()" , background_canvas->height ());
1286-
1287- // Get the color of the waveform
1288- int red = wave_color.red .GetInt (frame->number );
1289- int green = wave_color.green .GetInt (frame->number );
1290- int blue = wave_color.blue .GetInt (frame->number );
1291- int alpha = wave_color.alpha .GetInt (frame->number );
1292-
1293- // Generate Waveform Dynamically (the size of the timeline)
1294- source_image = frame->GetWaveform (background_canvas->width (), background_canvas->height (), red, green, blue, alpha);
1295- frame->AddImage (source_image);
1296- }
1297-
12981281 // Get transform from clip's keyframes
12991282 QTransform transform = get_transform (frame, background_canvas->width (), background_canvas->height ());
13001283
@@ -1351,6 +1334,30 @@ void Clip::apply_keyframes(std::shared_ptr<Frame> frame, std::shared_ptr<QImage>
13511334 frame->AddImage (background_canvas);
13521335}
13531336
1337+ // Apply apply_waveform image to the source frame (if any)
1338+ void Clip::apply_waveform (std::shared_ptr<Frame> frame, std::shared_ptr<QImage> background_canvas) {
1339+ // Get image from clip
1340+ std::shared_ptr<QImage> source_image = frame->GetImage ();
1341+
1342+ // Debug output
1343+ ZmqLogger::Instance ()->AppendDebugMethod (
1344+ " Clip::apply_waveform (Generate Waveform Image)" ,
1345+ " frame->number" , frame->number ,
1346+ " Waveform()" , Waveform (),
1347+ " background_canvas->width()" , background_canvas->width (),
1348+ " background_canvas->height()" , background_canvas->height ());
1349+
1350+ // Get the color of the waveform
1351+ int red = wave_color.red .GetInt (frame->number );
1352+ int green = wave_color.green .GetInt (frame->number );
1353+ int blue = wave_color.blue .GetInt (frame->number );
1354+ int alpha = wave_color.alpha .GetInt (frame->number );
1355+
1356+ // Generate Waveform Dynamically (the size of the timeline)
1357+ source_image = frame->GetWaveform (background_canvas->width (), background_canvas->height (), red, green, blue, alpha);
1358+ frame->AddImage (source_image);
1359+ }
1360+
13541361// Apply keyframes to the source frame (if any)
13551362QTransform Clip::get_transform (std::shared_ptr<Frame> frame, int width, int height)
13561363{
0 commit comments