OpenShot Library | libopenshot 1.1.1
Loading...
Searching...
No Matches
ReaderBase.h
Go to the documentation of this file.
1
9// Copyright (c) 2008-2019 OpenShot Studios, LLC
10//
11// SPDX-License-Identifier: LGPL-3.0-or-later
12
13#ifndef OPENSHOT_READER_BASE_H
14#define OPENSHOT_READER_BASE_H
15
16#include <map>
17#include <memory>
18#include <mutex>
19#include <iostream>
20#include <string>
21#include <vector>
22
23#include "ChannelLayouts.h"
24#include "Fraction.h"
25#include "Json.h"
26
27namespace openshot
28{
29 class CacheBase;
30 class ClipBase;
31 class Frame;
67
76 {
77 protected:
79 std::recursive_mutex getFrameMutex;
84
85 public:
86
88 ReaderBase();
89
92
95
97 void ParentClip(openshot::ClipBase* new_clip);
98
101 void SetMaxDecodeSize(int width, int height);
102
104 int MaxDecodeWidth() const;
105
107 int MaxDecodeHeight() const;
108
110 bool HasMaxDecodeSize() const;
111
113 void ApplyOrientationMetadata(bool value);
114
116 bool ApplyOrientationMetadata() const;
117
119 virtual void Close() = 0;
120
122 void DisplayInfo(std::ostream* out=&std::cout);
123
126
133 virtual std::shared_ptr<openshot::Frame> GetFrame(int64_t number) = 0;
134
136 virtual bool IsOpen() = 0;
137
140 virtual bool HardwareDecodeSuccessful() const { return false; }
141
143 virtual std::string Name() = 0;
144
145 // Get and Set JSON methods
146 virtual std::string Json() const = 0;
147 virtual void SetJson(const std::string value) = 0;
148 virtual Json::Value JsonValue() const = 0;
149 virtual void SetJsonValue(const Json::Value root) = 0;
150
152 virtual void Open() = 0;
153
154 virtual ~ReaderBase() = default;
155 };
156
157}
158
159#endif
Header file for ChannelLayout class.
Header file for Fraction class.
Header file for JSON class.
All cache managers in libopenshot are based on this CacheBase class.
Definition CacheBase.h:35
This abstract class is the base class, used by all clips in libopenshot.
Definition ClipBase.h:32
This class represents a fraction.
Definition Fraction.h:30
This abstract class is the base class, used by all readers in libopenshot.
Definition ReaderBase.h:76
int max_decode_height
Optional maximum decoded frame height (0 disables the limit)
Definition ReaderBase.h:82
bool apply_orientation_metadata
Apply source orientation metadata while reading frames.
Definition ReaderBase.h:83
virtual bool IsOpen()=0
Determine if reader is open or closed.
virtual std::string Name()=0
Return the type name of the class.
openshot::ReaderInfo info
Information about the current media file.
Definition ReaderBase.h:91
virtual std::string Json() const =0
Generate JSON string of this object.
void SetMaxDecodeSize(int width, int height)
int max_decode_width
Optional maximum decoded frame width (0 disables the limit)
Definition ReaderBase.h:81
virtual ~ReaderBase()=default
int MaxDecodeWidth() const
Return the current maximum decoded frame width (0 when unlimited).
virtual void SetJsonValue(const Json::Value root)=0
Load Json::Value into this object.
virtual Json::Value JsonValue() const =0
Generate Json::Value for this object.
int MaxDecodeHeight() const
Return the current maximum decoded frame height (0 when unlimited).
bool ApplyOrientationMetadata() const
Return whether readers apply source orientation metadata to returned frames.
std::recursive_mutex getFrameMutex
Mutex for multiple threads.
Definition ReaderBase.h:79
virtual void SetJson(const std::string value)=0
Load JSON string into this object.
void DisplayInfo(std::ostream *out=&std::cout)
Display file information in the standard output stream (stdout)
virtual void Open()=0
Open the reader (and start consuming resources, such as images or video files)
virtual std::shared_ptr< openshot::Frame > GetFrame(int64_t number)=0
virtual openshot::CacheBase * GetCache()=0
Get the cache object used by this reader (note: not all readers use cache)
bool HasMaxDecodeSize() const
Return true when a maximum decoded frame size is active.
openshot::ClipBase * clip
Pointer to the parent clip instance (if any)
Definition ReaderBase.h:80
openshot::ClipBase * ParentClip()
Parent clip object of this reader (which can be unparented and NULL)
virtual bool HardwareDecodeSuccessful() const
Definition ReaderBase.h:140
ReaderBase()
Constructor for the base reader, where many things are initialized.
virtual void Close()=0
Close the reader (and any resources it was consuming)
This namespace is the default namespace for all code in the openshot library.
ChannelLayout
This enumeration determines the audio channel layout (such as stereo, mono, 5 point surround,...
This struct contains info about a media file, such as height, width, frames per second,...
Definition ReaderBase.h:39
int audio_bit_rate
The bit rate of the audio stream (in bytes)
Definition ReaderBase.h:59
int video_bit_rate
The bit rate of the video stream (in bytes)
Definition ReaderBase.h:49
bool has_single_image
Determines if this file only contains a single image.
Definition ReaderBase.h:42
float duration
Length of time (in seconds)
Definition ReaderBase.h:43
openshot::Fraction audio_timebase
The audio timebase determines how long each audio packet should be played.
Definition ReaderBase.h:64
int width
The width of the video (in pixesl)
Definition ReaderBase.h:46
int channels
The number of audio channels used in the audio stream.
Definition ReaderBase.h:61
openshot::Fraction fps
Frames per second, as a fraction (i.e. 24/1 = 24 fps)
Definition ReaderBase.h:48
openshot::Fraction display_ratio
The ratio of width to height of the video stream (i.e. 640x480 has a ratio of 4/3)
Definition ReaderBase.h:51
int height
The height of the video (in pixels)
Definition ReaderBase.h:45
int pixel_format
The pixel format (i.e. YUV420P, RGB24, etc...)
Definition ReaderBase.h:47
int64_t video_length
The number of frames in the video stream.
Definition ReaderBase.h:53
std::string acodec
The name of the audio codec used to encode / decode the video stream.
Definition ReaderBase.h:58
std::map< std::string, std::string > metadata
An optional map/dictionary of metadata for this reader.
Definition ReaderBase.h:65
std::string vcodec
The name of the video codec used to encode / decode the video stream.
Definition ReaderBase.h:52
openshot::Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square)
Definition ReaderBase.h:50
openshot::ChannelLayout channel_layout
The channel layout (mono, stereo, 5 point surround, etc...)
Definition ReaderBase.h:62
bool has_video
Determines if this file has a video stream.
Definition ReaderBase.h:40
bool has_audio
Determines if this file has an audio stream.
Definition ReaderBase.h:41
openshot::Fraction video_timebase
The video timebase determines how long each frame stays on the screen.
Definition ReaderBase.h:55
int video_stream_index
The index of the video stream.
Definition ReaderBase.h:54
int sample_rate
The number of audio samples per second (44100 is a common sample rate)
Definition ReaderBase.h:60
int audio_stream_index
The index of the audio stream.
Definition ReaderBase.h:63
int64_t file_size
Size of file (in bytes)
Definition ReaderBase.h:44