MCPcopy Create free account
hub / github.com/OpenShot/libopenshot / GetMappedFrame

Method GetMappedFrame

src/FrameMapper.cpp:350–390  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

348}
349
350MappedFrame FrameMapper::GetMappedFrame(int64_t TargetFrameNumber)
351{
352 // Check if mappings are dirty (and need to be recalculated)
353 if (is_dirty)
354 // Recalculate mappings
355 Init();
356
357 // Ignore mapping on single image readers
358 if (info.has_video and !info.has_audio and info.has_single_image) {
359 // Return the same number
360 MappedFrame frame;
361 frame.Even.Frame = TargetFrameNumber;
362 frame.Odd.Frame = TargetFrameNumber;
363 frame.Samples.frame_start = 0;
364 frame.Samples.frame_end = 0;
365 frame.Samples.sample_start = 0;
366 frame.Samples.sample_end = 0;
367 frame.Samples.total = 0;
368 return frame;
369 }
370
371 // Check if frame number is valid
372 if(TargetFrameNumber < 1 || frames.size() == 0)
373 // frame too small, return error
374 throw OutOfBoundsFrame("An invalid frame was requested.", TargetFrameNumber, frames.size());
375
376 else if (TargetFrameNumber > (int64_t)frames.size())
377 // frame too large, set to end frame
378 TargetFrameNumber = frames.size();
379
380 // Debug output
381 ZmqLogger::Instance()->AppendDebugMethod(
382 "FrameMapper::GetMappedFrame",
383 "TargetFrameNumber", TargetFrameNumber,
384 "frames.size()", frames.size(),
385 "frames[...].Odd", frames[TargetFrameNumber - 1].Odd.Frame,
386 "frames[...].Even", frames[TargetFrameNumber - 1].Even.Frame);
387
388 // Return frame
389 return frames[TargetFrameNumber - 1];
390}
391
392// Get or generate a blank frame
393std::shared_ptr<Frame> FrameMapper::GetOrCreateFrame(int64_t number)

Callers 1

FrameMapper.cppFile · 0.80

Calls 2

OutOfBoundsFrameClass · 0.85
AppendDebugMethodMethod · 0.80

Tested by

no test coverage detected