OpenShot Library | libopenshot
0.2.7
|
This class represents a single frame of video (i.e. image & audio data) More...
#include <Frame.h>
Public Member Functions | |
void | AddAudio (bool replaceSamples, int destChannel, int destStartSample, const float *source, int numSamples, float gainToApplyToSource) |
Add audio samples to a specific channel. More... | |
void | AddAudioSilence (int numSamples) |
Add audio silence. More... | |
void | AddColor (int new_width, int new_height, std::string new_color) |
Add (or replace) pixel data to the frame (based on a solid color) More... | |
void | AddImage (int new_width, int new_height, int bytes_per_pixel, QImage::Format type, const unsigned char *pixels_) |
Add (or replace) pixel data to the frame. More... | |
void | AddImage (std::shared_ptr< QImage > new_image) |
Add (or replace) pixel data to the frame. More... | |
void | AddImage (std::shared_ptr< QImage > new_image, bool only_odd_lines) |
Add (or replace) pixel data to the frame (for only the odd or even lines) More... | |
void | AddMagickImage (std::shared_ptr< Magick::Image > new_image) |
Add (or replace) pixel data to the frame from an ImageMagick Image. More... | |
void | ApplyGainRamp (int destChannel, int destStartSample, int numSamples, float initial_gain, float final_gain) |
Apply gain ramp (i.e. fading volume) More... | |
openshot::ChannelLayout | ChannelsLayout () |
void | ChannelsLayout (openshot::ChannelLayout new_channel_layout) |
bool | CheckPixel (int row, int col, int red, int green, int blue, int alpha, int threshold) |
Check a specific pixel color value (returns True/False) More... | |
void | ClearWaveform () |
Clear the waveform image (and deallocate its memory) More... | |
void | DeepCopy (const Frame &other) |
Copy data and pointers from another Frame instance. More... | |
void | Display () |
Display the frame image to the screen (primarily used for debugging reasons) More... | |
void | DisplayWaveform () |
Display the wave form. More... | |
Frame () | |
Constructor - blank frame. More... | |
Frame (int64_t number, int width, int height, std::string color) | |
Constructor - image only. More... | |
Frame (int64_t number, int samples, int channels) | |
Constructor - audio only. More... | |
Frame (int64_t number, int width, int height, std::string color, int samples, int channels) | |
Constructor - image & audio. More... | |
Frame (const Frame &other) | |
Copy constructor. More... | |
int | GetAudioChannelsCount () |
Get number of audio channels. More... | |
float | GetAudioSample (int channel, int sample, int magnitude_range) |
Get magnitude of range of samples (if channel is -1, return average of all channels for that sample) More... | |
juce::AudioSampleBuffer * | GetAudioSampleBuffer () |
float * | GetAudioSamples (int channel) |
Get an array of sample data. More... | |
int | GetAudioSamplesCount () |
Get number of audio samples. More... | |
int64_t | GetBytes () |
Get the size in bytes of this frame (rough estimate) More... | |
int | GetHeight () |
Get height of image. More... | |
std::shared_ptr< QImage > | GetImage () |
Get pointer to Qt QImage image object. More... | |
cv::Mat | GetImageCV () |
Get pointer to OpenCV Mat image object. More... | |
float * | GetInterleavedAudioSamples (int new_sample_rate, openshot::AudioResampler *resampler, int *sample_count) |
Get an array of sample data (all channels interleaved together), using any sample rate. More... | |
std::shared_ptr< Magick::Image > | GetMagickImage () |
Get pointer to ImageMagick image object. More... | |
openshot::Fraction | GetPixelRatio () |
Set Pixel Aspect Ratio. More... | |
const unsigned char * | GetPixels () |
Get pixel data (as packets) More... | |
const unsigned char * | GetPixels (int row) |
Get pixel data (for only a single scan-line) More... | |
float * | GetPlanarAudioSamples (int new_sample_rate, openshot::AudioResampler *resampler, int *sample_count) |
int | GetSamplesPerFrame (openshot::Fraction fps, int sample_rate, int channels) |
Calculate the # of samples per video frame (for the current frame number) More... | |
std::shared_ptr< QImage > | GetWaveform (int width, int height, int Red, int Green, int Blue, int Alpha) |
Get an audio waveform image. More... | |
const unsigned char * | GetWaveformPixels (int width, int height, int Red, int Green, int Blue, int Alpha) |
Get an audio waveform image pixels. More... | |
int | GetWidth () |
Get height of image. More... | |
std::shared_ptr< QImage > | Mat2Qimage (cv::Mat img) |
Convert OpenCV Mat to QImage. More... | |
Frame & | operator= (const Frame &other) |
Assignment operator. More... | |
void | Play () |
Play audio samples for this frame. More... | |
cv::Mat | Qimage2mat (std::shared_ptr< QImage > &qimage) |
Convert Qimage to Mat. More... | |
void | ResizeAudio (int channels, int length, int sample_rate, openshot::ChannelLayout channel_layout) |
Resize audio container to hold more (or less) samples and channels. More... | |
int | SampleRate () |
Get the original sample rate of this frame's audio data. More... | |
void | SampleRate (int orig_sample_rate) |
Set the original sample rate of this frame's audio data. More... | |
void | Save (std::string path, float scale, std::string format="PNG", int quality=100) |
Save the frame image to the specified path. The image format can be BMP, JPG, JPEG, PNG, PPM, XBM, XPM. More... | |
void | SetFrameNumber (int64_t number) |
Set frame number. More... | |
void | SetImageCV (cv::Mat _image) |
Set pointer to OpenCV image object. More... | |
void | SetPixelRatio (int num, int den) |
Set Pixel Aspect Ratio. More... | |
void | Thumbnail (std::string path, int new_width, int new_height, std::string mask_path, std::string overlay_path, std::string background_color, bool ignore_aspect, std::string format="png", int quality=100, float rotate=0.0) |
virtual | ~Frame () |
Destructor. More... | |
Static Public Member Functions | |
static void | cleanUpBuffer (void *info) |
Clean up buffer after QImage is deleted. More... | |
static int | GetSamplesPerFrame (int64_t frame_number, openshot::Fraction fps, int sample_rate, int channels) |
Calculate the # of samples per video frame (for a specific frame number and frame rate) More... | |
Public Attributes | |
std::shared_ptr< juce::AudioSampleBuffer > | audio |
bool | has_audio_data |
This frame has been loaded with audio data. More... | |
bool | has_image_data |
This frame has been loaded with pixel data. More... | |
int64_t | number |
This is the frame number (starting at 1) More... | |
This class represents a single frame of video (i.e. image & audio data)
FileReaders (such as FFmpegReader) use instances of this class to store the individual frames of video, which include both the image data (i.e. pixels) and audio samples. An openshot::Frame also has many debug methods, such as the ability to display the image (using X11), play the audio samples (using JUCE), or display the audio waveform as an image.
FileWriters (such as FFmpegWriter) use instances of this class to create new video files, image files, or video streams. So, think of these openshot::Frame instances as the smallest unit of work in a video editor.
There are many ways to create an instance of an openshot::Frame:
Frame::Frame | ( | int64_t | number, |
int | width, | ||
int | height, | ||
std::string | color | ||
) |
Frame::Frame | ( | int64_t | number, |
int | samples, | ||
int | channels | ||
) |
Frame::Frame | ( | int64_t | number, |
int | width, | ||
int | height, | ||
std::string | color, | ||
int | samples, | ||
int | channels | ||
) |
void Frame::AddAudio | ( | bool | replaceSamples, |
int | destChannel, | ||
int | destStartSample, | ||
const float * | source, | ||
int | numSamples, | ||
float | gainToApplyToSource = 1.0f |
||
) |
void Frame::AddAudioSilence | ( | int | numSamples | ) |
void Frame::AddColor | ( | int | new_width, |
int | new_height, | ||
std::string | new_color | ||
) |
Add (or replace) pixel data to the frame (based on a solid color)
Definition at line 737 of file Frame.cpp.
Referenced by GetImage(), GetImageCV(), GetMagickImage(), and GetPixels().
void Frame::AddImage | ( | int | new_width, |
int | new_height, | ||
int | bytes_per_pixel, | ||
QImage::Format | type, | ||
const unsigned char * | pixels_ | ||
) |
Add (or replace) pixel data to the frame.
Definition at line 756 of file Frame.cpp.
Referenced by AddImage().
void Frame::AddImage | ( | std::shared_ptr< QImage > | new_image | ) |
void Frame::AddImage | ( | std::shared_ptr< QImage > | new_image, |
bool | only_odd_lines | ||
) |
void Frame::AddMagickImage | ( | std::shared_ptr< Magick::Image > | new_image | ) |
void Frame::ApplyGainRamp | ( | int | destChannel, |
int | destStartSample, | ||
int | numSamples, | ||
float | initial_gain = 0.0f , |
||
float | final_gain = 1.0f |
||
) |
ChannelLayout Frame::ChannelsLayout | ( | ) |
|
inline |
bool Frame::CheckPixel | ( | int | row, |
int | col, | ||
int | red, | ||
int | green, | ||
int | blue, | ||
int | alpha, | ||
int | threshold | ||
) |
Check a specific pixel color value (returns True/False)
Definition at line 477 of file Frame.cpp.
Referenced by GetPixelRatio().
|
static |
Clean up buffer after QImage is deleted.
Definition at line 1085 of file Frame.cpp.
Referenced by AddImage(), AddMagickImage(), and ChannelsLayout().
void Frame::ClearWaveform | ( | ) |
Clear the waveform image (and deallocate its memory)
Definition at line 255 of file Frame.cpp.
Referenced by ChannelsLayout(), DisplayWaveform(), and GetWaveform().
void Frame::DeepCopy | ( | const Frame & | other | ) |
Copy data and pointers from another Frame instance.
Definition at line 97 of file Frame.cpp.
Referenced by ChannelsLayout(), Frame(), and operator=().
void Frame::Display | ( | ) |
Display the frame image to the screen (primarily used for debugging reasons)
Definition at line 130 of file Frame.cpp.
Referenced by ChannelsLayout().
void Frame::DisplayWaveform | ( | ) |
int Frame::GetAudioChannelsCount | ( | ) |
Get number of audio channels.
Definition at line 416 of file Frame.cpp.
Referenced by ChannelsLayout().
float Frame::GetAudioSample | ( | int | channel, |
int | sample, | ||
int | magnitude_range | ||
) |
Get magnitude of range of samples (if channel is -1, return average of all channels for that sample)
Definition at line 305 of file Frame.cpp.
Referenced by ChannelsLayout().
juce::AudioSampleBuffer * Frame::GetAudioSampleBuffer | ( | ) |
Definition at line 432 of file Frame.cpp.
Referenced by ChannelsLayout().
float * Frame::GetAudioSamples | ( | int | channel | ) |
Get an array of sample data.
Definition at line 318 of file Frame.cpp.
Referenced by ChannelsLayout().
int Frame::GetAudioSamplesCount | ( | ) |
Get number of audio samples.
Definition at line 426 of file Frame.cpp.
Referenced by ChannelsLayout(), GetInterleavedAudioSamples(), GetPlanarAudioSamples(), GetWaveform(), and Play().
int64_t Frame::GetBytes | ( | ) |
Get the size in bytes of this frame (rough estimate)
Definition at line 438 of file Frame.cpp.
Referenced by ChannelsLayout().
int Frame::GetHeight | ( | ) |
std::shared_ptr< QImage > Frame::GetImage | ( | ) |
Get pointer to Qt QImage image object.
Definition at line 900 of file Frame.cpp.
Referenced by ChannelsLayout(), Display(), Save(), and Thumbnail().
cv::Mat Frame::GetImageCV | ( | ) |
Get pointer to OpenCV Mat image object.
Definition at line 924 of file Frame.cpp.
Referenced by SampleRate().
float * Frame::GetInterleavedAudioSamples | ( | int | new_sample_rate, |
openshot::AudioResampler * | resampler, | ||
int * | sample_count | ||
) |
Get an array of sample data (all channels interleaved together), using any sample rate.
Definition at line 371 of file Frame.cpp.
Referenced by ChannelsLayout().
std::shared_ptr< Magick::Image > Frame::GetMagickImage | ( | ) |
Get pointer to ImageMagick image object.
Definition at line 961 of file Frame.cpp.
Referenced by ChannelsLayout().
|
inline |
const unsigned char * Frame::GetPixels | ( | ) |
Get pixel data (as packets)
Definition at line 453 of file Frame.cpp.
Referenced by CheckPixel(), and GetPixelRatio().
const unsigned char * Frame::GetPixels | ( | int | row | ) |
float * Frame::GetPlanarAudioSamples | ( | int | new_sample_rate, |
openshot::AudioResampler * | resampler, | ||
int * | sample_count | ||
) |
Definition at line 325 of file Frame.cpp.
Referenced by ChannelsLayout().
int Frame::GetSamplesPerFrame | ( | openshot::Fraction | fps, |
int | sample_rate, | ||
int | channels | ||
) |
Calculate the # of samples per video frame (for the current frame number)
Definition at line 536 of file Frame.cpp.
Referenced by openshot::Timeline::apply_effects(), openshot::Clip::GetEffect(), openshot::QtImageReader::GetFrame(), openshot::FrameMapper::GetFrame(), openshot::Timeline::GetFrame(), openshot::FrameMapper::GetMappedFrame(), openshot::AudioReaderSource::getNextAudioBlock(), GetPixelRatio(), and openshot::FrameMapper::Reader().
|
static |
std::shared_ptr< QImage > Frame::GetWaveform | ( | int | width, |
int | height, | ||
int | Red, | ||
int | Green, | ||
int | Blue, | ||
int | Alpha | ||
) |
Get an audio waveform image.
Definition at line 172 of file Frame.cpp.
Referenced by DisplayWaveform(), GetPixelRatio(), and GetWaveformPixels().
const unsigned char * Frame::GetWaveformPixels | ( | int | width, |
int | height, | ||
int | Red, | ||
int | Green, | ||
int | Blue, | ||
int | Alpha | ||
) |
Get an audio waveform image pixels.
Definition at line 262 of file Frame.cpp.
Referenced by GetPixelRatio().
int Frame::GetWidth | ( | ) |
std::shared_ptr< QImage > Frame::Mat2Qimage | ( | cv::Mat | img | ) |
Convert OpenCV Mat to QImage.
Definition at line 938 of file Frame.cpp.
Referenced by SampleRate(), and SetImageCV().
void Frame::Play | ( | ) |
Play audio samples for this frame.
Definition at line 1014 of file Frame.cpp.
Referenced by SampleRate().
cv::Mat Frame::Qimage2mat | ( | std::shared_ptr< QImage > & | qimage | ) |
Convert Qimage to Mat.
Definition at line 913 of file Frame.cpp.
Referenced by GetImageCV(), and SampleRate().
void Frame::ResizeAudio | ( | int | channels, |
int | length, | ||
int | sample_rate, | ||
openshot::ChannelLayout | channel_layout | ||
) |
Resize audio container to hold more (or less) samples and channels.
Definition at line 849 of file Frame.cpp.
Referenced by GetPixelRatio().
int Frame::SampleRate | ( | ) |
Get the original sample rate of this frame's audio data.
Definition at line 554 of file Frame.cpp.
Referenced by GetPixelRatio().
|
inline |
void Frame::Save | ( | std::string | path, |
float | scale, | ||
std::string | format = "PNG" , |
||
int | quality = 100 |
||
) |
Save the frame image to the specified path. The image format can be BMP, JPG, JPEG, PNG, PPM, XBM, XPM.
Definition at line 567 of file Frame.cpp.
Referenced by SampleRate().
void Frame::SetFrameNumber | ( | int64_t | number | ) |
void Frame::SetImageCV | ( | cv::Mat | _image | ) |
Set pointer to OpenCV image object.
Definition at line 952 of file Frame.cpp.
Referenced by SampleRate().
void Frame::SetPixelRatio | ( | int | num, |
int | den | ||
) |
void Frame::Thumbnail | ( | std::string | path, |
int | new_width, | ||
int | new_height, | ||
std::string | mask_path, | ||
std::string | overlay_path, | ||
std::string | background_color, | ||
bool | ignore_aspect, | ||
std::string | format = "png" , |
||
int | quality = 100 , |
||
float | rotate = 0.0 |
||
) |
Thumbnail the frame image with tons of options to the specified path. The image format is determined from the extension (i.e. image.PNG, image.JPEG). This method allows for masks, overlays, background color, and much more accurate resizing (including padding and centering)
Definition at line 602 of file Frame.cpp.
Referenced by SampleRate().
std::shared_ptr<juce::AudioSampleBuffer> openshot::Frame::audio |
Definition at line 134 of file Frame.h.
Referenced by AddAudio(), AddAudioSilence(), ApplyGainRamp(), DeepCopy(), Frame(), GetAudioChannelsCount(), GetAudioSample(), GetAudioSampleBuffer(), GetAudioSamples(), GetBytes(), GetInterleavedAudioSamples(), GetPlanarAudioSamples(), GetWaveform(), Play(), ResizeAudio(), and ~Frame().
bool openshot::Frame::has_audio_data |
This frame has been loaded with audio data.
Definition at line 136 of file Frame.h.
Referenced by AddAudio(), AddAudioSilence(), and DeepCopy().
bool openshot::Frame::has_image_data |
This frame has been loaded with pixel data.
Definition at line 137 of file Frame.h.
Referenced by AddColor(), AddImage(), AddMagickImage(), and DeepCopy().
int64_t openshot::Frame::number |
This is the frame number (starting at 1)
Definition at line 135 of file Frame.h.
Referenced by DeepCopy(), GetSamplesPerFrame(), and SetFrameNumber().