11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
23PROMEKI_NAMESPACE_BEGIN
93 static inline const char *TypeTag =
"imgseq";
111 static ImgSeq load(
const FilePath &path, Error *err =
nullptr);
119 static ImgSeq fromJson(
const JsonObject &json, Error *err =
nullptr);
132 static bool isImgSeqJson(
const String &jsonText);
145 Error save(
const FilePath &path)
const;
151 JsonObject toJson()
const;
167 Error detectRange(
const FilePath &dir);
170 bool isValid()
const {
return _name.isValid(); }
181 const FilePath &dir()
const {
return _dir; }
184 void setDir(
const FilePath &val) { _dir = val; }
187 const NumName &name()
const {
return _name; }
190 void setName(
const NumName &val) { _name = val; }
193 size_t head()
const {
return _head; }
196 void setHead(
size_t val) { _head = val; }
199 size_t tail()
const {
return _tail; }
202 void setTail(
size_t val) { _tail = val; }
213 size_t length()
const {
214 if (!isValid())
return 0;
215 return (_tail >= _head) ? (_tail - _head + 1) : 0;
219 const FrameRate &frameRate()
const {
return _frameRate; }
222 void setFrameRate(
const FrameRate &val) { _frameRate = val; }
225 const Size2Du32 &videoSize()
const {
return _videoSize; }
228 void setVideoSize(
const Size2Du32 &val) { _videoSize = val; }
231 const PixelFormat &pixelFormat()
const {
return _pixelFormat; }
234 void setPixelFormat(
const PixelFormat &val) { _pixelFormat = val; }
245 const String &audioFile()
const {
return _audioFile; }
248 void setAudioFile(
const String &val) { _audioFile = val; }
251 const Metadata &metadata()
const {
return _metadata; }
254 Metadata &metadata() {
return _metadata; }
257 void setMetadata(
const Metadata &val) { _metadata = val; }
269 const FilePath &sidecarPath()
const {
return _sidecarPath; }
272 void setSidecarPath(
const FilePath &val) { _sidecarPath = val; }
284 String frameFileName(
size_t idx)
const {
return _name.name(
static_cast<int>(_head + idx)); }
291 FrameRate _frameRate;
292 Size2Du32 _videoSize;
293 PixelFormat _pixelFormat;
296 FilePath _sidecarPath;