libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
imagefile.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <promeki/namespace.h>
14#include <promeki/string.h>
15#include <promeki/error.h>
16#include <promeki/frame.h>
19#include <promeki/mediaconfig.h>
20
21PROMEKI_NAMESPACE_BEGIN
22
23class ImageFileIO;
24
38class ImageFile {
39 public:
41 enum ID {
42 Invalid = 0,
43 PNG,
44 RawYUV,
45 DPX,
46 Cineon,
47 TGA,
48 SGI,
49 PNM,
50 JPEG,
51 JpegXS
52 };
53
58 ImageFile(int id = 0);
59
64 const String &filename() const { return _filename; }
65
70 void setFilename(const String &val) {
71 _filename = val;
72 return;
73 }
74
79 const Frame &frame() const { return _frame; }
80
85 Frame &frame() { return _frame; }
86
91 void setFrame(const Frame &val) {
92 _frame = val;
93 return;
94 }
95
100 VideoPayload::Ptr videoPayload() const {
101 auto vps = _frame.videoPayloads();
102 if (vps.isEmpty()) return VideoPayload::Ptr();
103 return vps[0];
104 }
105
110 UncompressedVideoPayload::Ptr uncompressedVideoPayload() const {
111 VideoPayload::Ptr vp = videoPayload();
112 if (!vp.isValid()) return UncompressedVideoPayload::Ptr();
113 return sharedPointerCast<UncompressedVideoPayload>(vp);
114 }
115
120 void setVideoPayload(const VideoPayload::Ptr &val) {
121 _frame.payloadList().clear();
122 if (val.isValid()) _frame.addPayload(val);
123 return;
124 }
125
130 const Metadata &metadata() const { return _frame.metadata(); }
131
136 Metadata &metadata() { return _frame.metadata(); }
137
144 Error load(const MediaConfig &config = MediaConfig());
145
153 Error save(const MediaConfig &config = MediaConfig());
154
155 private:
156 String _filename;
157 Frame _frame;
158 const ImageFileIO *_io;
159};
160
161PROMEKI_NAMESPACE_END
162
163#endif // PROMEKI_ENABLE_PROAV