31 #ifndef OPENSHOT_FRAMEMAPPER_H
32 #define OPENSHOT_FRAMEMAPPER_H
78 Field() : Frame(0), isOdd(true) { };
80 Field(int64_t frame,
bool isodd)
152 void AddField(int64_t frame);
153 void AddField(
Field field);
156 std::shared_ptr<Frame> GetOrCreateFrame(int64_t number);
193 std::shared_ptr<Frame>
GetFrame(int64_t requested_frame);
199 std::string
Name() {
return "FrameMapper"; };
202 std::string
Json()
const override;
203 void SetJson(
const std::string value);
Classic 2:3:2:3 pull-down.
Header file for Fraction class.
ReaderBase * Reader()
Get the current reader.
Header file for ReaderBase class.
std::string Json() const override
Get and Set JSON methods.
Header file for OpenMPUtilities (set some common macros)
virtual ~FrameMapper()
Destructor.
std::vector< MappedFrame > frames
std::vector< Field > fields
void Close()
Close the openshot::FrameMapper and internal reader.
This abstract class is the base class, used by all readers in libopenshot.
std::string Name()
Return the type name of the class.
Header file for the Keyframe class.
This struct holds a single field (half a frame).
Header file for CacheMemory class.
std::shared_ptr< Frame > GetFrame(int64_t requested_frame)
This method is required for all derived classes of ReaderBase, and return the openshot::Frame object...
This struct holds a the range of samples needed by this frame.
Header file for all Exception classes.
void ChangeMapping(Fraction target_fps, PulldownType pulldown, int target_sample_rate, int target_channels, ChannelLayout target_channel_layout)
Change frame rate or audio mapping details.
Header file for Frame class.
Json::Value JsonValue() const override
Generate Json::Value for this object.
bool IsOpen()
Determine if reader is open or closed.
Field(int64_t frame, bool isodd)
void SetJsonValue(const Json::Value root)
Load Json::Value into this object.
This class represents a fraction.
ChannelLayout
This enumeration determines the audio channel layout (such as stereo, mono, 5 point surround...
void Reader(ReaderBase *new_reader)
Set the current reader.
This struct holds two fields which together make up a complete video frame.
This class creates a mapping between 2 different frame rates, applying a specific pull-down technique...
CacheMemory * GetCache()
Get the cache object used by this reader.
This namespace is the default namespace for all code in the openshot library.
Do not apply pull-down techniques, just repeat or skip entire frames.
void PrintMapping()
Print all of the original frames and which new frames they map to.
FrameMapper(ReaderBase *reader, Fraction target_fps, PulldownType target_pulldown, int target_sample_rate, int target_channels, ChannelLayout target_channel_layout)
Default constructor for openshot::FrameMapper class.
void ResampleMappedAudio(std::shared_ptr< Frame > frame, int64_t original_frame_number)
Resample audio and map channels (if needed)
MappedFrame GetMappedFrame(int64_t TargetFrameNumber)
Get a frame based on the target frame rate and the new frame number of a frame.
PulldownType
This enumeration determines how frame rates are increased or decreased.
Header file for FFmpegUtilities.
void SetJson(const std::string value)
Load JSON string into this object.
This class is a memory-based cache manager for Frame objects.
Advanced 2:3:3:2 pull-down (minimal dirty frames)
void Open()
Open the internal reader.