[vlmc-devel] [PATCH 08/10] Workflow::Frame: Don't remember VideoTrack-specific data
Yikai Lu
luyikei.qmltu at gmail.com
Wed May 4 16:18:39 CEST 2016
---
src/EffectsEngine/EffectUser.cpp | 2 +-
src/Workflow/Types.cpp | 69 ++++------------------------------------
src/Workflow/Types.h | 23 --------------
3 files changed, 7 insertions(+), 87 deletions(-)
diff --git a/src/EffectsEngine/EffectUser.cpp b/src/EffectsEngine/EffectUser.cpp
index e9ebb75..8816481 100644
--- a/src/EffectsEngine/EffectUser.cpp
+++ b/src/EffectsEngine/EffectUser.cpp
@@ -99,7 +99,7 @@ EffectUser::applyFilters( const Workflow::Frame* frame, qint64 currentFrame )
else
buff = &buff2;
if ( *buff == nullptr )
- *buff = new quint32[frame->nbPixels()];
+ *buff = new quint32[ m_width * m_height * Workflow::Depth ];
EffectInstance *effect = (*it)->effectInstance();
effect->process( input, *buff );
input = *buff;
diff --git a/src/Workflow/Types.cpp b/src/Workflow/Types.cpp
index 74b5ff6..94efd18 100644
--- a/src/Workflow/Types.cpp
+++ b/src/Workflow/Types.cpp
@@ -29,11 +29,8 @@ using namespace Workflow;
Frame::Frame() :
OutputBuffer( VideoTrack ),
ptsDiff( 0 ),
- m_width( 0 ),
- m_height( 0 ),
m_buffer( 0 ),
m_size( 0 ),
- m_nbPixels( 0 ),
m_pts( 0 )
{
}
@@ -41,38 +38,19 @@ Frame::Frame() :
Frame::Frame( quint32 width, quint32 height ) :
OutputBuffer( VideoTrack ),
ptsDiff( 0 ),
- m_width( width ),
- m_height( height ),
m_pts( 0 )
{
- m_nbPixels = width * height;
- m_size = m_nbPixels * Depth;
- m_buffer = new quint32[m_nbPixels];
+ m_size = width * height * Depth;
+ m_buffer = new quint32[width * height];
}
Frame::Frame( size_t forcedSize ) :
OutputBuffer( VideoTrack ),
ptsDiff( 0 ),
- m_width( 0 ),
- m_height( 0 ),
- m_size( forcedSize ),
- m_nbPixels( 0 ),
m_pts( 0 )
{
- m_buffer = new quint32[ ( forcedSize % 4 ) ? forcedSize / 4 + 1 : forcedSize / 4 ];
-}
-
-Frame::Frame(quint32 width, quint32 height, size_t forcedSize) :
- OutputBuffer( VideoTrack ),
- ptsDiff( 0 ),
- m_width( width ),
- m_height( height ),
- m_pts( 0 )
-{
- m_nbPixels = width * height;
m_size = forcedSize;
- Q_ASSERT(forcedSize % 4 == 0);
- m_buffer = new quint32[forcedSize / 4];
+ m_buffer = new quint32[ ( forcedSize % 4 ) ? forcedSize / 4 + 1 : forcedSize / 4 ];
}
Frame::~Frame()
@@ -91,29 +69,11 @@ const quint32 *Frame::buffer() const
return m_buffer;
}
-quint32
-Frame::width() const
-{
- return m_width;
-}
-
-quint32
-Frame::height() const
-{
- return m_height;
-}
-
size_t Frame::size() const
{
return m_size;
}
-quint32
-Frame::nbPixels() const
-{
- return m_nbPixels;
-}
-
qint64
Frame::pts() const
{
@@ -126,11 +86,6 @@ Frame::setPts( qint64 pts )
m_pts = pts;
}
-size_t Frame::Size(quint32 width, quint32 height)
-{
- return width * height * Depth;
-}
-
void
Frame::setBuffer( quint32 *buff )
{
@@ -139,23 +94,11 @@ Frame::setBuffer( quint32 *buff )
}
void
-Frame::resize( quint32 width, quint32 height )
-{
- if ( width != m_width || height != m_height )
- {
- delete[] m_buffer;
- m_width = width;
- m_height = height;
- m_nbPixels = width * height;
- m_size = m_nbPixels * Depth;
- m_buffer = new quint32[m_nbPixels];
- }
-}
-
-void Frame::resize(size_t size)
+Frame::resize( size_t size )
{
if ( size == m_size )
return ;
delete[] m_buffer;
- m_buffer = new quint32[size / sizeof(quint32)];
+ m_size = size;
+ m_buffer = new quint32[ ( size % 4 ) ? size / 4 + 1 : size / 4 ];
}
diff --git a/src/Workflow/Types.h b/src/Workflow/Types.h
index 3baeab3..1b289a0 100644
--- a/src/Workflow/Types.h
+++ b/src/Workflow/Types.h
@@ -53,20 +53,11 @@ namespace Workflow
explicit Frame();
Frame( quint32 width, quint32 height );
Frame( size_t forcedSize );
- Frame( quint32 width, quint32 height, size_t forcedSize );
~Frame();
- quint32 width() const;
- quint32 height() const;
quint32 *buffer();
const quint32 *buffer() const;
void setBuffer( quint32 *buff );
/**
- * \brief Resize the buffer.
- *
- * \warning This will not resize what's in the frame but drop it instead!
- */
- void resize( quint32 width, quint32 height );
- /**
* \brief Resize the buffer
*
* This will allocate a new buffer and drop the old one.
@@ -80,12 +71,6 @@ namespace Workflow
*/
size_t size() const;
/**
- * \returns The frame size in pixels
- *
- * This is equal to width * height
- */
- quint32 nbPixels() const;
- /**
* \brief Get pts.
*
*/
@@ -103,15 +88,7 @@ namespace Workflow
//FIXME
qint64 ptsDiff;
- public:
- /**
- * @brief Size Computes the size, in bytes, a frame with given dimension would use.
- */
- static size_t Size( quint32 width, quint32 height );
-
private:
- quint32 m_width;
- quint32 m_height;
// frei0r uses 32bits only pixels, and expects its buffers as uint32
quint32 *m_buffer;
size_t m_size;
--
1.9.1
More information about the Vlmc-devel
mailing list