Olive
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
project
footage.h
Go to the documentation of this file.
1
/***
2
3
Olive - Non-Linear Video Editor
4
Copyright (C) 2019 Olive Team
5
6
This program is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
19
***/
20
21
#ifndef FOOTAGE_H
22
#define FOOTAGE_H
23
24
extern
"C"
{
25
#include <libavformat/avformat.h>
26
}
27
28
#include <memory>
29
#include <QString>
30
#include <QVector>
31
#include <QMetaType>
32
#include <QVariant>
33
#include <QMutex>
34
#include <QPixmap>
35
#include <QIcon>
36
37
#include "
timeline/marker.h
"
38
39
enum
VideoInterlacingMode
{
40
VIDEO_PROGRESSIVE
,
41
VIDEO_TOP_FIELD_FIRST
,
42
VIDEO_BOTTOM_FIELD_FIRST
43
};
44
45
class
Sequence
;
46
class
Clip
;
47
class
PreviewGenerator
;
48
49
struct
FootageStream
{
50
int
file_index
;
51
int
video_width
;
52
int
video_height
;
53
bool
infinite_length
;
54
double
video_frame_rate
;
55
int
video_interlacing
;
56
int
video_auto_interlacing
;
57
int
audio_channels
;
58
int
audio_layout
;
59
int
audio_frequency
;
60
bool
enabled
;
61
62
// preview thumbnail/waveform
63
bool
preview_done
;
64
QImage
video_preview
;
65
QVector<char>
audio_preview
;
66
};
67
68
struct
Footage
{
69
Footage
();
70
~Footage
();
71
72
// footage metadata
73
QString
url
;
74
QString
name
;
75
int64_t
length
;
76
QVector<FootageStream>
video_tracks
;
77
QVector<FootageStream>
audio_tracks
;
78
int
save_id
;
79
bool
ready
;
80
bool
invalid
;
81
double
speed
;
82
bool
alpha_is_premultiplied
;
83
int
start_number
;
84
85
// proxy config
86
bool
proxy
;
87
QString
proxy_path
;
88
89
// thumbnail/waveform generation
90
PreviewGenerator
*
preview_gen
;
91
QMutex
ready_lock
;
92
93
// in/out points
94
bool
using_inout
;
95
long
in
;
96
long
out
;
97
98
// markers
99
QVector<Marker>
markers
;
100
101
// functions
102
long
get_length_in_frames
(
double
frame_rate);
103
FootageStream
*
get_stream_from_file_index
(
bool
video,
int
index);
104
void
reset
();
105
};
106
107
using
FootagePtr
= std::shared_ptr<Footage>;
108
109
#endif // FOOTAGE_H
FootageStream::video_auto_interlacing
int video_auto_interlacing
Definition:
footage.h:56
Footage::proxy_path
QString proxy_path
Definition:
footage.h:87
FootageStream::enabled
bool enabled
Definition:
footage.h:60
FootageStream::audio_layout
int audio_layout
Definition:
footage.h:58
Footage::alpha_is_premultiplied
bool alpha_is_premultiplied
Definition:
footage.h:82
Footage::name
QString name
Definition:
footage.h:74
Footage::speed
double speed
Definition:
footage.h:81
Footage::url
QString url
Definition:
footage.h:73
Footage::ready
bool ready
Definition:
footage.h:79
Footage::out
long out
Definition:
footage.h:96
VIDEO_PROGRESSIVE
Definition:
footage.h:40
Footage::save_id
int save_id
Definition:
footage.h:78
PreviewGenerator
Definition:
previewgenerator.h:38
Footage::Footage
Footage()
Definition:
footage.cpp:30
FootagePtr
std::shared_ptr< Footage > FootagePtr
Definition:
footage.h:107
VideoInterlacingMode
VideoInterlacingMode
Definition:
footage.h:39
Footage::ready_lock
QMutex ready_lock
Definition:
footage.h:91
Footage::invalid
bool invalid
Definition:
footage.h:80
FootageStream
Definition:
footage.h:49
Clip
Definition:
clip.h:56
Footage::length
int64_t length
Definition:
footage.h:75
FootageStream::preview_done
bool preview_done
Definition:
footage.h:63
Footage::~Footage
~Footage()
Definition:
footage.cpp:44
Footage::proxy
bool proxy
Definition:
footage.h:86
Footage::audio_tracks
QVector< FootageStream > audio_tracks
Definition:
footage.h:77
FootageStream::video_width
int video_width
Definition:
footage.h:51
FootageStream::file_index
int file_index
Definition:
footage.h:50
Footage::start_number
int start_number
Definition:
footage.h:83
Footage::preview_gen
PreviewGenerator * preview_gen
Definition:
footage.h:90
FootageStream::audio_preview
QVector< char > audio_preview
Definition:
footage.h:65
FootageStream::video_interlacing
int video_interlacing
Definition:
footage.h:55
VIDEO_TOP_FIELD_FIRST
Definition:
footage.h:41
Footage::get_stream_from_file_index
FootageStream * get_stream_from_file_index(bool video, int index)
Definition:
footage.cpp:64
FootageStream::video_preview
QImage video_preview
Definition:
footage.h:64
FootageStream::infinite_length
bool infinite_length
Definition:
footage.h:53
Footage::get_length_in_frames
long get_length_in_frames(double frame_rate)
Definition:
footage.cpp:57
FootageStream::video_frame_rate
double video_frame_rate
Definition:
footage.h:54
Footage::reset
void reset()
Definition:
footage.cpp:48
Footage::video_tracks
QVector< FootageStream > video_tracks
Definition:
footage.h:76
FootageStream::audio_frequency
int audio_frequency
Definition:
footage.h:59
VIDEO_BOTTOM_FIELD_FIRST
Definition:
footage.h:42
FootageStream::video_height
int video_height
Definition:
footage.h:52
Sequence
Definition:
sequence.h:31
Footage::in
long in
Definition:
footage.h:95
Footage
Definition:
footage.h:68
FootageStream::audio_channels
int audio_channels
Definition:
footage.h:57
Footage::markers
QVector< Marker > markers
Definition:
footage.h:99
marker.h
Footage::using_inout
bool using_inout
Definition:
footage.h:94
Generated by
1.8.5