summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Redfern <tim@herge.(none)>2013-04-29 12:52:37 +0100
committerTim Redfern <tim@herge.(none)>2013-04-29 12:52:37 +0100
commitc5e30e13c4dcd20f1d54de572fa0ce6869fa2899 (patch)
tree837c81bcc120371ca44e45b1de40a61fe12c65f5
parentf0c3b9c7bbf41d579a543ad8f6d9ee361dde440e (diff)
nearly working pipeline
-rwxr-xr-xrotord/01.xml2
-rw-r--r--rotord/02.xml2
-rw-r--r--rotord/libavaudioloader.cpp5
-rwxr-xr-xrotord/rotor.cpp15
4 files changed, 17 insertions, 7 deletions
diff --git a/rotord/01.xml b/rotord/01.xml
index e4b9067..7a7315d 100755
--- a/rotord/01.xml
+++ b/rotord/01.xml
@@ -2,8 +2,6 @@
<patchbay ID="0f7aa258-7c2f-11e2-abbd-133252267708">Sample template ©Rotor 2013
<node ID="01" type="audio_analysis" soname="qm-vamp-plugins" id="qm-tempotracker" output="signal">beats
</node>
- <node ID="02" type="audio_analysis" soname="qm-vamp-plugins" id="qm-segmenter" output="signal">segmenter
- </node>
<node ID="03" type="divide" amount="2.0" output="signal">signal divide
<signal_input from="01">signal 1 to divide</signal_input>
</node>
diff --git a/rotord/02.xml b/rotord/02.xml
index 79c1b6c..dfc13df 100644
--- a/rotord/02.xml
+++ b/rotord/02.xml
@@ -2,6 +2,8 @@
<patchbay ID="0f7aa258-7c2f-11e2-abbd-133252267708">Off and on template ©Rotor 2013
<node ID="01" type="audio_analysis" soname="qm-vamp-plugins" id="qm-tempotracker" output="signal">beats
</node>
+ <node ID="02" type="audio_analysis" soname="qm-vamp-plugins" id="qm-segmenter" output="signal">segmenter
+ </node>
<node ID="04" type="bang" output="signal">outputs 0 except when signal first passes a new integer: then 1
<signal_input from="01">signal to analyse</signal_input>
</node>
diff --git a/rotord/libavaudioloader.cpp b/rotord/libavaudioloader.cpp
index c6c1355..0987928 100644
--- a/rotord/libavaudioloader.cpp
+++ b/rotord/libavaudioloader.cpp
@@ -180,7 +180,10 @@ uint16_t* libav::Audioloader::get_samples(int num){ //presumes 16bpc here
for (int i=0;i<frame->nb_samples;i++) {
for (int j=0;j<av_frame_get_channels(frame);j++) {
- buffer[((sample_end+i)*frame->channels)+j]= ((uint16_t*) frame->buf[j]->data)[i];
+ //buffer[((sample_end+i)*frame->channels)+j]= ((uint16_t*) frame->buf[j]->data)[i];
+ //temporarily disabled audio as its is SIGSEV with audio from delorentos
+
+
//buffer[(j*frame->channels)+(sample_end+i)]= ((uint16_t*) frame->buf[j]->data)[i]; ??planar?? nope
}
}
diff --git a/rotord/rotor.cpp b/rotord/rotor.cpp
index 84578db..6d99f1c 100755
--- a/rotord/rotor.cpp
+++ b/rotord/rotor.cpp
@@ -161,7 +161,7 @@ bool Video_output::render(const float duration, const float framerate,const stri
//
//setup defaults
int outW=640;
- int outH=480;
+ int outH=360;
int bitRate=4000000;
int frameRate=25;
AVCodecID codecId=AV_CODEC_ID_MPEG4;
@@ -223,14 +223,21 @@ Image* Video_input::get_output(const Frame_spec &frame){
//can image node point to buffer in gst rather than copying the pixels?
//to test using fp time to seek: need a short movie with synced audio
-
+
//fix actual duration and audio file
//trace frame that is being read
if (player->isLoaded()){
//player->setPosition(frame.time);
- player->setFrame((int) (frame.time*frame.framerate));
+ int wanted=((int) (frame.time*frame.framerate))%player->getTotalNumFrames();
+ player->setFrame(wanted);
+ while (player->getCurrentFrame()!=wanted){
+ cerr << "seeking to "<<wanted<<" :"<<player->getCurrentFrame()<<endl;
+ player->update();
+ sleep(.001);
+ }
player->update();
- cerr<<"Video_input: retrieving frame "<<((int) (frame.time*frame.framerate))<<endl;
+ 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;
return image;
}
return nullptr;