2016-07-29 17:35:10 +12:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#ifndef TTIO_WEBM_INCLUDED
|
|
|
|
#define TTIO_WEBM_INCLUDED
|
|
|
|
|
|
|
|
#include "tproperty.h"
|
|
|
|
#include "tlevel_io.h"
|
|
|
|
#include "tiio_ffmpeg.h"
|
2018-06-04 15:18:43 +12:00
|
|
|
#include <QCoreApplication>
|
2016-07-29 17:35:10 +12:00
|
|
|
|
|
|
|
//===========================================================
|
|
|
|
//
|
|
|
|
// TLevelWriterWebm
|
|
|
|
//
|
|
|
|
//===========================================================
|
|
|
|
|
|
|
|
class TLevelWriterWebm : public TLevelWriter {
|
|
|
|
public:
|
|
|
|
TLevelWriterWebm(const TFilePath &path, TPropertyGroup *winfo);
|
|
|
|
~TLevelWriterWebm();
|
2020-09-16 09:49:57 +12:00
|
|
|
void setFrameRate(double fps) override;
|
2016-07-29 17:35:10 +12:00
|
|
|
|
|
|
|
TImageWriterP getFrameWriter(TFrameId fid) override;
|
|
|
|
void save(const TImageP &image, int frameIndex);
|
|
|
|
|
2020-09-16 09:49:57 +12:00
|
|
|
void saveSoundTrack(TSoundTrack *st) override;
|
2016-07-29 17:35:10 +12:00
|
|
|
|
|
|
|
static TLevelWriter *create(const TFilePath &path, TPropertyGroup *winfo) {
|
|
|
|
return new TLevelWriterWebm(path, winfo);
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
Ffmpeg *ffmpegWriter;
|
|
|
|
int m_lx, m_ly;
|
|
|
|
int m_scale;
|
|
|
|
int m_vidQuality;
|
|
|
|
// void *m_buffer;
|
|
|
|
};
|
|
|
|
|
|
|
|
//===========================================================
|
|
|
|
//
|
|
|
|
// TLevelReaderWebm
|
|
|
|
//
|
|
|
|
//===========================================================
|
|
|
|
|
|
|
|
class TLevelReaderWebm final : public TLevelReader {
|
|
|
|
public:
|
|
|
|
TLevelReaderWebm(const TFilePath &path);
|
|
|
|
~TLevelReaderWebm();
|
|
|
|
TImageReaderP getFrameReader(TFrameId fid) override;
|
|
|
|
|
|
|
|
static TLevelReader *create(const TFilePath &f) {
|
|
|
|
return new TLevelReaderWebm(f);
|
|
|
|
}
|
|
|
|
|
|
|
|
TLevelP loadInfo() override;
|
|
|
|
TImageP load(int frameIndex);
|
|
|
|
TDimension getSize();
|
|
|
|
// TThread::Mutex m_mutex;
|
|
|
|
// void *m_decompressedBuffer;
|
|
|
|
private:
|
|
|
|
Ffmpeg *ffmpegReader;
|
2019-11-14 18:07:58 +13:00
|
|
|
bool ffmpegFramesCreated = false;
|
2016-07-29 17:35:10 +12:00
|
|
|
TDimension m_size;
|
|
|
|
int m_frameCount, m_lx, m_ly;
|
|
|
|
};
|
|
|
|
|
|
|
|
//===========================================================================
|
|
|
|
|
|
|
|
namespace Tiio {
|
|
|
|
|
|
|
|
//===========================================================================
|
|
|
|
|
|
|
|
class WebmWriterProperties : public TPropertyGroup {
|
2018-06-04 15:18:43 +12:00
|
|
|
Q_DECLARE_TR_FUNCTIONS(WebmWriterProperties)
|
2016-07-29 17:35:10 +12:00
|
|
|
public:
|
|
|
|
// TEnumProperty m_pixelSize;
|
|
|
|
// TBoolProperty m_matte;
|
2016-08-04 19:23:36 +12:00
|
|
|
TIntProperty m_vidQuality;
|
|
|
|
TIntProperty m_scale;
|
2016-07-29 17:35:10 +12:00
|
|
|
WebmWriterProperties();
|
2018-06-04 15:18:43 +12:00
|
|
|
void updateTranslation() override;
|
2016-07-29 17:35:10 +12:00
|
|
|
};
|
|
|
|
|
|
|
|
//===========================================================================
|
|
|
|
|
|
|
|
// Tiio::Reader *makeWebmReader();
|
|
|
|
// Tiio::Writer *makeWebmWriter();
|
|
|
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
#endif
|