Пример #1
0
void
VideoClipWorkflow::initializeInternals()
{
    initFilters();
    m_renderer->setName( qPrintable( QString("VideoClipWorkflow " % m_clipHelper->uuid().toString() ) ) );
    m_renderer->enableVideoOutputToMemory( this, &lock, &unlock, m_fullSpeedRender );
    m_renderer->setOutputWidth( m_width );
    m_renderer->setOutputHeight( m_height );
    m_renderer->setOutputFps( (float)VLMC_PROJECT_GET_DOUBLE( "video/VLMCOutputFPS" ) );
    m_renderer->setOutputVideoCodec( "RV32" );
}
Пример #2
0
void
MetaDataWorker::metaDataAvailable()
{
    m_mediaIsPlaying = false;
    m_lengthHasChanged = false;

    //In order to wait for the VOUT to be ready:
    //Until we have a way of knowing when it is, both getWidth and getHeight method
    //will trigger exception... so we shut it up.
    if ( m_media->fileType() != Media::Audio )
    {
        m_timer.restart();
        while ( m_mediaPlayer->hasVout() == false &&
                m_timer.elapsed() < 3000 )
        {
            SleepMS( 10 ); //Ugly isn't it :)
        }
        if ( m_mediaPlayer->hasVout() == false )
        {
            emit failed( m_media );
            return ;
        }

        quint32     width, height;
        m_mediaPlayer->getSize( &width, &height );
        m_media->setWidth( width );
        m_media->setHeight( height );
        m_media->setFps( m_mediaPlayer->getFps() );
        if ( m_media->fps() == .0f )
        {
            qWarning() << "Invalid FPS for media:" << m_media->fileInfo()->absoluteFilePath();
            m_media->setFps( Clip::DefaultFPS );
        }
    }
    else
    {
        double fps = VLMC_PROJECT_GET_DOUBLE( "video/VLMCOutputFPS" );
        m_media->setFps( fps );
    }
    m_media->setLength( m_mediaPlayer->getLength() );

    m_media->setNbAudioTrack( m_mediaPlayer->getNbAudioTrack() );
    m_media->setNbVideoTrack( m_mediaPlayer->getNbVideoTrack() );
    m_media->setNbFrames( (m_media->lengthMS() / 1000) * m_media->fps() );

    m_media->emitMetaDataComputed();
    //Setting time for snapshot :
    if ( m_media->fileType() == Media::Video ||
         m_media->fileType() == Media::Image )
    {
        connect( m_mediaPlayer, SIGNAL( positionChanged( float ) ), this, SLOT( renderSnapshot() ) );
        m_mediaPlayer->setTime( m_mediaPlayer->getLength() / 3 );
    }
Пример #3
0
TracksRuler::TracksRuler( TracksView* tracksView, QWidget* parent )
    : QWidget( parent ), m_tracksView( tracksView ), m_duration ( 0 ), m_offset( 0 )
{

    //TODO We should really get that from the
    // workflow and not directly from the settings.
    m_fps = qRound( VLMC_PROJECT_GET_DOUBLE( "video/VLMCOutputFPS" ) );

    m_factor = 1;
    m_scale = 3;
    m_littleMarkDistance = FRAME_SIZE;
    m_mediumMarkDistance = FRAME_SIZE * m_fps;
    m_bigMarkDistance = FRAME_SIZE * m_fps * 60;
    setMinimumHeight( 30 );
    setPixelPerMark( 5 );

    // Redraw the ruler when the cursor position change
    connect( tracksView->tracksCursor(), SIGNAL( cursorPositionChanged(qint64) ),
             this, SLOT( update() ) );
}
Пример #4
0
QString
VideoClipWorkflow::createSoutChain() const
{
    QString chain = ":sout=#transcode{vcodec=RV32,fps=";

    chain += QString::number( VLMC_PROJECT_GET_DOUBLE( "video/VLMCOutputFPS" ) )
            % ",width=" % QString::number( m_width ) % ",height="
            % QString::number( m_height )
            % "}:smem{";
    if ( m_fullSpeedRender == false )
        chain += "time-sync";
    else
        chain += "no-time-sync";
    chain += ",video-data=" % QString::number( reinterpret_cast<intptr_t>( this ) )
            % ",video-prerender-callback="
            % QString::number( reinterpret_cast<intptr_t>( getLockCallback() ) )
            % ",video-postrender-callback="
            % QString::number( reinterpret_cast<intptr_t>( getUnlockCallback() ) )
            % '}';

    return chain;
}
Пример #5
0
float
WorkflowRenderer::outputFps() const
{
    return VLMC_PROJECT_GET_DOUBLE( "video/VLMCOutputFPS" );
}