summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Redfern <tim@herge.(none)>2013-04-29 18:05:08 +0100
committerTim Redfern <tim@herge.(none)>2013-04-29 18:05:08 +0100
commitcaf495afbda7c12da090a9fc7b08c4e7d44420ff (patch)
tree823348387c8b459b2fadd2cb44f99a866a4ab0a7
parent3f0a068075e0a668ea105776e3de4625aef1a34a (diff)
reading all frames but dropping frames
-rwxr-xr-xrotord/rotor.cpp23
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;