Show info for ffmpeg levels (#824)

* Show info of ffmpeg level in level settings
* added frame count to filebrowser

close #811
close #812
This commit is contained in:
Jeremy Bullock 2016-10-07 03:59:06 -06:00 committed by shun-iwasawa
parent 3b0af2f782
commit 2b9d8f3cc8
4 changed files with 30 additions and 12 deletions

View file

@ -3,6 +3,7 @@
#include "tiio_gif.h" #include "tiio_gif.h"
#include "trasterimage.h" #include "trasterimage.h"
#include "timageinfo.h" #include "timageinfo.h"
#include "toonz/stage.h"
#include <QStringList> #include <QStringList>
//=========================================================== //===========================================================
@ -151,8 +152,9 @@ class TImageReaderGif final : public TImageReader {
public: public:
int m_frameIndex; int m_frameIndex;
TImageReaderGif(const TFilePath &path, int index, TLevelReaderGif *lra) TImageReaderGif(const TFilePath &path, int index, TLevelReaderGif *lra,
: TImageReader(path), m_lra(lra), m_frameIndex(index) { TImageInfo *info)
: TImageReader(path), m_lra(lra), m_frameIndex(index), m_info(info) {
m_lra->addRef(); m_lra->addRef();
} }
~TImageReaderGif() { m_lra->release(); } ~TImageReaderGif() { m_lra->release(); }
@ -160,9 +162,11 @@ public:
TImageP load() override { return m_lra->load(m_frameIndex); } TImageP load() override { return m_lra->load(m_frameIndex); }
TDimension getSize() const { return m_lra->getSize(); } TDimension getSize() const { return m_lra->getSize(); }
TRect getBBox() const { return TRect(); } TRect getBBox() const { return TRect(); }
const TImageInfo *getImageInfo() const override { return m_info; }
private: private:
TLevelReaderGif *m_lra; TLevelReaderGif *m_lra;
TImageInfo *m_info;
// not implemented // not implemented
TImageReaderGif(const TImageReaderGif &); TImageReaderGif(const TImageReaderGif &);
@ -198,6 +202,8 @@ TLevelReaderGif::TLevelReaderGif(const TFilePath &path)
m_info->m_ly = m_ly; m_info->m_ly = m_ly;
m_info->m_bitsPerSample = 8; m_info->m_bitsPerSample = 8;
m_info->m_samplePerPixel = 4; m_info->m_samplePerPixel = 4;
m_info->m_dpix = Stage::standardDpi;
m_info->m_dpiy = Stage::standardDpi;
} }
//----------------------------------------------------------- //-----------------------------------------------------------
@ -220,9 +226,8 @@ TImageReaderP TLevelReaderGif::getFrameReader(TFrameId fid) {
// if (IOError != 0) // if (IOError != 0)
// throw TImageException(m_path, buildAVIExceptionString(IOError)); // throw TImageException(m_path, buildAVIExceptionString(IOError));
if (fid.getLetter() != 0) return TImageReaderP(0); if (fid.getLetter() != 0) return TImageReaderP(0);
int index = fid.getNumber(); int index = fid.getNumber();
TImageReaderGif *irm = new TImageReaderGif(m_path, index, this, m_info);
TImageReaderGif *irm = new TImageReaderGif(m_path, index, this);
return TImageReaderP(irm); return TImageReaderP(irm);
} }

View file

@ -4,6 +4,7 @@
#include "trasterimage.h" #include "trasterimage.h"
#include "timageinfo.h" #include "timageinfo.h"
#include "tsound.h" #include "tsound.h"
#include "toonz/stage.h"
#include <QStringList> #include <QStringList>
//=========================================================== //===========================================================
@ -129,8 +130,9 @@ class TImageReaderMp4 final : public TImageReader {
public: public:
int m_frameIndex; int m_frameIndex;
TImageReaderMp4(const TFilePath &path, int index, TLevelReaderMp4 *lra) TImageReaderMp4(const TFilePath &path, int index, TLevelReaderMp4 *lra,
: TImageReader(path), m_lra(lra), m_frameIndex(index) { TImageInfo *info)
: TImageReader(path), m_lra(lra), m_frameIndex(index), m_info(info) {
m_lra->addRef(); m_lra->addRef();
} }
~TImageReaderMp4() { m_lra->release(); } ~TImageReaderMp4() { m_lra->release(); }
@ -138,9 +140,11 @@ public:
TImageP load() override { return m_lra->load(m_frameIndex); } TImageP load() override { return m_lra->load(m_frameIndex); }
TDimension getSize() const { return m_lra->getSize(); } TDimension getSize() const { return m_lra->getSize(); }
TRect getBBox() const { return TRect(); } TRect getBBox() const { return TRect(); }
const TImageInfo *getImageInfo() const override { return m_info; }
private: private:
TLevelReaderMp4 *m_lra; TLevelReaderMp4 *m_lra;
TImageInfo *m_info;
// not implemented // not implemented
TImageReaderMp4(const TImageReaderMp4 &); TImageReaderMp4(const TImageReaderMp4 &);
@ -173,6 +177,8 @@ TLevelReaderMp4::TLevelReaderMp4(const TFilePath &path) : TLevelReader(path) {
m_info->m_ly = m_ly; m_info->m_ly = m_ly;
m_info->m_bitsPerSample = 8; m_info->m_bitsPerSample = 8;
m_info->m_samplePerPixel = 4; m_info->m_samplePerPixel = 4;
m_info->m_dpix = Stage::standardDpi;
m_info->m_dpiy = Stage::standardDpi;
} }
//----------------------------------------------------------- //-----------------------------------------------------------
@ -197,7 +203,7 @@ TImageReaderP TLevelReaderMp4::getFrameReader(TFrameId fid) {
if (fid.getLetter() != 0) return TImageReaderP(0); if (fid.getLetter() != 0) return TImageReaderP(0);
int index = fid.getNumber(); int index = fid.getNumber();
TImageReaderMp4 *irm = new TImageReaderMp4(m_path, index, this); TImageReaderMp4 *irm = new TImageReaderMp4(m_path, index, this, m_info);
return TImageReaderP(irm); return TImageReaderP(irm);
} }

View file

@ -4,6 +4,7 @@
#include "trasterimage.h" #include "trasterimage.h"
#include "tsound.h" #include "tsound.h"
#include "timageinfo.h" #include "timageinfo.h"
#include "toonz/stage.h"
#include <QStringList> #include <QStringList>
//=========================================================== //===========================================================
@ -133,8 +134,9 @@ class TImageReaderWebm final : public TImageReader {
public: public:
int m_frameIndex; int m_frameIndex;
TImageReaderWebm(const TFilePath &path, int index, TLevelReaderWebm *lra) TImageReaderWebm(const TFilePath &path, int index, TLevelReaderWebm *lra,
: TImageReader(path), m_lra(lra), m_frameIndex(index) { TImageInfo *info)
: TImageReader(path), m_lra(lra), m_frameIndex(index), m_info(info) {
m_lra->addRef(); m_lra->addRef();
} }
~TImageReaderWebm() { m_lra->release(); } ~TImageReaderWebm() { m_lra->release(); }
@ -142,9 +144,11 @@ public:
TImageP load() override { return m_lra->load(m_frameIndex); } TImageP load() override { return m_lra->load(m_frameIndex); }
TDimension getSize() const { return m_lra->getSize(); } TDimension getSize() const { return m_lra->getSize(); }
TRect getBBox() const { return TRect(); } TRect getBBox() const { return TRect(); }
const TImageInfo *getImageInfo() const override { return m_info; }
private: private:
TLevelReaderWebm *m_lra; TLevelReaderWebm *m_lra;
TImageInfo *m_info;
// not implemented // not implemented
TImageReaderWebm(const TImageReaderWebm &); TImageReaderWebm(const TImageReaderWebm &);
@ -177,6 +181,8 @@ TLevelReaderWebm::TLevelReaderWebm(const TFilePath &path) : TLevelReader(path) {
m_info->m_ly = m_ly; m_info->m_ly = m_ly;
m_info->m_bitsPerSample = 8; m_info->m_bitsPerSample = 8;
m_info->m_samplePerPixel = 4; m_info->m_samplePerPixel = 4;
m_info->m_dpix = Stage::standardDpi;
m_info->m_dpiy = Stage::standardDpi;
} }
//----------------------------------------------------------- //-----------------------------------------------------------
@ -201,7 +207,7 @@ TImageReaderP TLevelReaderWebm::getFrameReader(TFrameId fid) {
if (fid.getLetter() != 0) return TImageReaderP(0); if (fid.getLetter() != 0) return TImageReaderP(0);
int index = fid.getNumber(); int index = fid.getNumber();
TImageReaderWebm *irm = new TImageReaderWebm(m_path, index, this); TImageReaderWebm *irm = new TImageReaderWebm(m_path, index, this, m_info);
return TImageReaderP(irm); return TImageReaderP(irm);
} }

View file

@ -148,7 +148,8 @@ QMutex levelFileMutex;
inline bool isMultipleFrameType(std::string type) { inline bool isMultipleFrameType(std::string type) {
return (type == "tlv" || type == "tzl" || type == "pli" || type == "mov" || return (type == "tlv" || type == "tzl" || type == "pli" || type == "mov" ||
type == "avi" || type == "3gp"); type == "avi" || type == "3gp" || type == "gif" || type == "mp4" ||
type == "webm");
} }
//============================================================================= //=============================================================================