This is the code:
/* The QTimeLine slot called every 40 ms */
void VideoItem::goToFrame(int frameNumber)
{
m_currentFrameNumber = frameNumber;
updateFrame();
}
void VideoItem::updateFrame()
{
if ( m_file )
{
bool finished;
if ( ( m_currentFrameNumber - m_previousFrameNumber ) == 1 )
{
im = m_file->getNextFrame(finished);
}
else
{
for ( int i = 0 ; i < ( m_currentFrameNumber - ( m_previousFrameNumber + 1 ) ) ; i++ )
m_file->getNextFrame(finished,false);
if ( !finished )
im = m_file->getNextFrame(finished);
}
m_previousFrameNumber = m_currentFrameNumber;
if ( !im.isNull() && !finished)
{
m_counter++;
m_frameCount = m_currentFrameNumber;
setCurrentImage(im);
}
else
{
stop();
emit videoFinished();
}
}
}
void VideoItem
::setCurrentImage(QImage im
) {
m_currentImage = im;
update();
}
/* The QTimeLine slot called every 40 ms */
void VideoItem::goToFrame(int frameNumber)
{
m_currentFrameNumber = frameNumber;
updateFrame();
}
void VideoItem::updateFrame()
{
if ( m_file )
{
QImage im;
bool finished;
if ( ( m_currentFrameNumber - m_previousFrameNumber ) == 1 )
{
im = m_file->getNextFrame(finished);
}
else
{
for ( int i = 0 ; i < ( m_currentFrameNumber - ( m_previousFrameNumber + 1 ) ) ; i++ )
m_file->getNextFrame(finished,false);
if ( !finished )
im = m_file->getNextFrame(finished);
}
m_previousFrameNumber = m_currentFrameNumber;
if ( !im.isNull() && !finished)
{
m_counter++;
m_frameCount = m_currentFrameNumber;
setCurrentImage(im);
}
else
{
stop();
emit videoFinished();
}
}
}
void VideoItem::setCurrentImage(QImage im)
{
m_currentImage = im;
update();
}
To copy to clipboard, switch view to plain text mode
Bookmarks