diff --git a/scripts/javascript/examples/newaudiotest.js b/scripts/javascript/examples/newaudiotest.js index f805aa51..17e614f4 100644 --- a/scripts/javascript/examples/newaudiotest.js +++ b/scripts/javascript/examples/newaudiotest.js @@ -1,13 +1,16 @@ -audio = new AudioJack("freej", 1024, 48000); +audio = new AudioJack("freej", 1024, 44100); -animation_file = "/home/rgareus/Desktop/TELESCOPERA_MPEG2.mpg"; +animation_file = "/home/jaromil/Movies/TheRevolutionWillNotBeTelevisedGilScottHeron.mp4"; anim = new MovieLayer(animation_file); -anim.set_fps(25); + +anim.activate(true); + add_layer(anim); audio.set_layer(anim); -anim.activate(true); + + diff --git a/src/audio_collector.cpp b/src/audio_collector.cpp index d9fc3cf7..400fcd01 100644 --- a/src/audio_collector.cpp +++ b/src/audio_collector.cpp @@ -94,21 +94,21 @@ m_OneOverSHRT_MAX(1/(float)SHRT_MAX), m_Processing(false), m_ProcessPos(0) { - BufferLength = n_BufferLength; - Samplerate = n_Samplerate; - m_BufferTime = BufferLength/(float)Samplerate; + buffersize = n_BufferLength; + samplerate = n_Samplerate; + m_BufferTime = buffersize/(float)samplerate; - m_Buffer = (float*) jalloc(BufferLength * sizeof(float)); - memset(m_Buffer,0,BufferLength*sizeof(float)); + m_Buffer = (float*) jalloc(buffersize * sizeof(float)); + memset(m_Buffer,0,buffersize*sizeof(float)); - m_FFTBuffer = (float*) jalloc(BufferLength*m_FFTBuffers*sizeof(float)); - memset(m_FFTBuffer,0,BufferLength*sizeof(float)); + m_FFTBuffer = (float*) jalloc(buffersize*m_FFTBuffers*sizeof(float)); + memset(m_FFTBuffer,0,buffersize*sizeof(float)); - m_JackBuffer = (float*) jalloc(BufferLength*sizeof(float)); - memset(m_JackBuffer,0,BufferLength*sizeof(float)); + m_JackBuffer = (float*) jalloc(buffersize*sizeof(float)); + memset(m_JackBuffer,0,buffersize*sizeof(float)); - m_AudioBuffer = (float*) jalloc(BufferLength*sizeof(float)); - memset(m_AudioBuffer,0,BufferLength*sizeof(float)); + m_AudioBuffer = (float*) jalloc(buffersize*sizeof(float)); + memset(m_AudioBuffer,0,buffersize*sizeof(float)); m_FFTOutput = new float[NUM_BARS]; for (int n=0; nm_SampleRate = samplerate; + Jack->m_BufferSize = buffersize; + attached = true; + } AudioCollector::~AudioCollector() @@ -154,10 +158,10 @@ float *AudioCollector::GetFFT() { if (m_Processing) { - if (m_ProcessPos+BufferLength #include +#include /// Javascript audio collector JS(js_audio_jack_constructor); @@ -151,11 +152,25 @@ JS(js_audio_jack_add_layer) { jslayer = JSVAL_TO_OBJECT(argv[0]); lay = (Layer *) JS_GetPrivate(cx, jslayer); if(!lay) JS_ERROR("Layer core data is NULL"); + + if(!lay->screen) { + error("layer %s is not added to any screen", lay->name); + *rval = JSVAL_FALSE; + return JS_TRUE; + } AudioCollector *audio = (AudioCollector*)JS_GetPrivate(cx, obj); - + if(!audio) JS_ERROR("Audio core data is NULL"); + if(!audio->attached) { + error("audio jack is not attached (jack daemon not running?)"); + *rval = JSVAL_FALSE; + return JS_TRUE; + } + lay->screen->add_audio( audio->Jack ); + *rval = JSVAL_TRUE; + return JS_TRUE; } diff --git a/src/audio_jack.cpp b/src/audio_jack.cpp index de09a5cc..5e6a0176 100644 --- a/src/audio_jack.cpp +++ b/src/audio_jack.cpp @@ -191,16 +191,16 @@ int JackClient::Process(jack_nframes_t nframes, void *self) return 0; } -int JackClient::SetRingbufferPtr(ringbuffer_t *rb, int samplerate, int channels) { +int JackClient::SetRingbufferPtr(ringbuffer_t *rb, int rate, int channels) { int i; m_ringbuffer = NULL; func ("jack-client ringbuffer set for %i channels", channels); // TODO: if samplerate doesnot match bail out - if (m_SampleRate != samplerate) { + if (m_SampleRate != rate) { // resampling is not yet implemented - func ("JACK :: JACK and layer sample-rate mismatch (%i vs %i)!!",m_SampleRate, samplerate); + func ("JACK :: JACK and layer sample-rate mismatch (%i vs %i)!!",m_SampleRate, rate); } for (i=m_NextOutputID; i m_InputPortMap; static map m_OutputPortMap; - static long unsigned int m_BufferSize; - static long unsigned int m_SampleRate; - static bool m_Attached; int m_NextInputID; int m_NextOutputID; diff --git a/src/oggtheora_encoder.cpp b/src/oggtheora_encoder.cpp index a1a5de03..66b6e5b4 100644 --- a/src/oggtheora_encoder.cpp +++ b/src/oggtheora_encoder.cpp @@ -85,11 +85,11 @@ bool OggTheoraEncoder::init (ViewPort *scr) { if(use_audio && audio) { - func("allocating encoder audio buffer of %u bytes",audio->BufferLength); - audio_buf = (float*)calloc(audio->BufferLength, sizeof(float)); + func("allocating encoder audio buffer of %u bytes",audio->buffersize); + audio_buf = (float*)calloc(audio->buffersize, sizeof(float)); oggmux.video_only = 0; - oggmux.sample_rate = audio->Samplerate; + oggmux.sample_rate = audio->samplerate; oggmux.channels = 1; // only 1 channel jack support for now oggmux.vorbis_quality = audio_quality / 100; oggmux.vorbis_bitrate = audio_bitrate; @@ -220,7 +220,7 @@ int OggTheoraEncoder::encode_audio( int end_of_stream) { #ifdef WITH_SOUND // num = env->audio->framesperbuffer*env->audio->channels*sizeof(int16_t); - func("going to encode %u bytes of audio", audio->BufferLength); + func("going to encode %u bytes of audio", audio->buffersize); ///// QUAAAA // oggmux_add_audio (oggmux_info *info, int16_t * readbuffer, int bytesread, int samplesread,int e_o_s); // oggmux_add_audio(&oggmux, env->audio->input,