diff options
| author | Tim Redfern <tim@herge.(none)> | 2013-04-29 18:05:08 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@herge.(none)> | 2013-04-29 18:05:08 +0100 |
| commit | caf495afbda7c12da090a9fc7b08c4e7d44420ff (patch) | |
| tree | 823348387c8b459b2fadd2cb44f99a866a4ab0a7 | |
| parent | 3f0a068075e0a668ea105776e3de4625aef1a34a (diff) | |
reading all frames but dropping frames
| -rwxr-xr-x | rotord/rotor.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/rotord/rotor.cpp b/rotord/rotor.cpp index 6d99f1c..d295c9f 100755 --- a/rotord/rotor.cpp +++ b/rotord/rotor.cpp @@ -170,6 +170,8 @@ bool Video_output::render(const float duration, const float framerate,const stri bool usingaudio=audioloader.setup(audio_filename); //at the moment it crashes if you render before audio is loaded + float spct=100.0f/duration; + if (exporter->setup(outW,outH,bitRate,frameRate,container)) { //codecId, if (exporter->record(output_filename)) { @@ -184,6 +186,13 @@ bool Video_output::render(const float duration, const float framerate,const stri cerr << "Rotor: video output failed"<<endl; break; } + else { + cerr << "Rotor: rendered "<<(f*spct)<<"%"<<endl; + if (f*spct>99.5){ + + cerr<<"stop here"<<endl; + } + } } exporter->finishRecord(); cerr << "Rotor: Video_output finished "<< endl; @@ -203,6 +212,7 @@ bool Video_input::load(const string &filename){ if (player->loadMovie(uri)){ player->play(); player->setPaused(true); + player->setFrameByFrame(true); player->update(); cerr<<"Rotor::Video_input loaded "<<filename<<", "<<player->getDuration()<<" seconds "<<", "<<player->getWidth()<<"x"<<player->getHeight()<<endl; image->setup_fromRGB(player->getWidth(),player->getHeight(),(uint8_t*) player->getPixels()); @@ -228,13 +238,14 @@ Image* Video_input::get_output(const Frame_spec &frame){ //trace frame that is being read if (player->isLoaded()){ //player->setPosition(frame.time); - int wanted=((int) (frame.time*frame.framerate))%player->getTotalNumFrames(); + int wanted=((int) (frame.time*frame.framerate))%(player->getTotalNumFrames()-1); player->setFrame(wanted); - while (player->getCurrentFrame()!=wanted){ - cerr << "seeking to "<<wanted<<" :"<<player->getCurrentFrame()<<endl; - player->update(); - sleep(.001); - } + //while (player->getCurrentFrame()!=wanted){ + // cerr << "seeking to "<<wanted<<" :"<<player->getCurrentFrame()<<endl; + //player->setFrame(wanted); + //player->update(); + // sleep(.001); + //} player->update(); image->RGBdata=player->getPixels(); //don't really know why this is needed every frame //cerr<<"Video_input: retrieving frame "<<((int) (frame.time*frame.framerate))<<endl; |
