Ciao! Dopo 3 settimane (in realtà un poco di più siccome non sono riuscito ad aggiornare ieri a causa di alcuni problemi di rete che ho dovuto affrontare) i progressi per il momento procedono al meglio – quindi diamoci da fare! Nel post della scorsa settimana, ho spiegato perché il motore di rendering è stato sviluppato come libreria anziché lavorare direttamente all’interno del framework (MLT) e il vantaggio è stato che il processo di sviluppo è divenuto molto più semplice. Questo è esattamente quello che ho fatto durante l’ultima settimana – scrivere il modulo per i test della libreria, per esempio ho scritto un test unitario ed è stato piuttosto interessante poiché mi ha dato la dimensione di come il codice potrebbe rompersi ad un certo punto. Il concetto centrale del test unitario è che deve essere in grado di fare in modo che non ci siano regressioni – questo significa che il tuo codice potrà fare alcune cose specifiche che si suppone che faccia quando sappiamo che funziona, e in quale momento futuro farà sicuramente le cose previste quando sarà in funzione – Non male, eh? Il test unitario, come suggerisce il nome è il test delle unità -noi prendiamo ogni unità funzionale (o semplicemente un a funzione/metodo) e testiamo certe caratteristiche e ci accertiamo che queste condizioni siano soddisfatte. Un esempio che posso prendere dal mio test unitario è il caso del metodo QmlRenderer::initializeRenderParams(…)

m_renderer->initialiseRenderParams(QDir::cleanPath(rootPath.currentPath()
+ "/../sampledata/test.qml"), "test_output",
QDir::cleanPath(rootPath.currentPath() + "/../sampledata/output_lib/"),
"jpg", QSize(1280,720), 1, 1000, 25);
QVERIFY2(m_renderer->getStatus() != m_renderer->Status::NotRunning, "STATUS ERROR:Not supposed to be running");
QVERIFY2(m_renderer->getActualFrames()!=0, "VALUE ERROR: Frames not supposed to be zero");
QVERIFY2(m_renderer->getSceneGraphStatus()!=false, "SCENE GRAPH ERROR: Scene graph not initialised");
QVERIFY2(m_renderer->getAnimationDriverStatus()==false, "ANIMATION DRIVER ERROR: Driver not supposed to be running");
QVERIFY2(m_renderer->getfboStatus()==true, "FRAME BUFFER OBJECT ERROR: FBO not bound");

Cosa fa questo metodo è piuttosto chiaro come il nome suggerisce – inizializza i parametri (come il framerate, la durata, ecc.) che ci servono per il rendering e cosa ho fatto è stato verificare che questi parametri vengano effettivamente inizializzati. Procedo così per ognuno dei metodi, lanciandoli in successione.
Il flusso del rendering procede in questa maniera –

 initializeRenderParams(…) -> renderQml()  ->  renderEntireQml() or renderSingleFrame()

 Ci sono test integrativi che verificano il contenuto QML che è in corso di rendering. Come ho fatto questo?
Usando una cartella con i fotogrammi calcolati correttamente che vengono comparati con quelli prodotti dalla libreria in un certo momento.

 Questo significa che adesso abbiamo una libreria completa che può fare tutti i calcoli che il producer MLT (che ho intenzione di scrivere prossimamente) necessiterà.

 In arrivo: il Producer MLT.

Puoi trovare il codice qui

 

 

 

 

 

 Traduzione dell’articolo di

 

 

 

Pin It on Pinterest