From 1d85c4220f7b1ee25a76c83885065a58f4a67f35 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 23 Jan 2019 02:28:05 +1100 Subject: [PATCH] fixed nesting regression and audio static regression --- playback/audio.cpp | 21 +++++++++++---------- playback/audio.h | 6 +++--- playback/cacher.cpp | 2 +- project/clip.h | 2 +- ui/renderfunctions.cpp | 3 --- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/playback/audio.cpp b/playback/audio.cpp index f007416eb..eef32402c 100644 --- a/playback/audio.cpp +++ b/playback/audio.cpp @@ -33,7 +33,7 @@ bool audio_rendering = false; bool recording = false; qint8 audio_ibuffer[audio_ibuffer_size]; -unsigned long audio_ibuffer_read = 0; +qint64 audio_ibuffer_read = 0; long audio_ibuffer_frame = 0; double audio_ibuffer_timecode = 0; @@ -114,9 +114,10 @@ int current_audio_freq() { return audio_rendering ? sequence->audio_frequency : audio_output->format().sampleRate(); } -unsigned long get_buffer_offset_from_frame(double framerate, long frame) { +qint64 get_buffer_offset_from_frame(double framerate, long frame) { if (frame >= audio_ibuffer_frame) { - return static_cast(((double(frame - audio_ibuffer_frame)/framerate)*current_audio_freq())*av_get_bytes_per_sample(AV_SAMPLE_FMT_S16)*av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO)); + int multiplier = av_get_bytes_per_sample(AV_SAMPLE_FMT_S16)*av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO); + return qFloor((double(frame - audio_ibuffer_frame)/framerate)*current_audio_freq())*multiplier; } else { qWarning() << "Invalid values passed to get_buffer_offset_from_frame"; return 0; @@ -164,23 +165,23 @@ void AudioSenderThread::run() { lock.unlock(); } -int AudioSenderThread::send_audio_to_output(unsigned long offset, int max) { +int AudioSenderThread::send_audio_to_output(qint64 offset, int max) { // send audio to device - unsigned long actual_write = audio_io_device->write((const char*) audio_ibuffer+offset, max); + qint64 actual_write = audio_io_device->write(reinterpret_cast(audio_ibuffer)+offset, max); - unsigned long audio_ibuffer_limit = audio_ibuffer_read + actual_write; + qint64 audio_ibuffer_limit = audio_ibuffer_read + actual_write; if (actual_write > 0) { // average values and send to audio monitor int channels = audio_output->format().channelCount(); - unsigned long lim = offset + actual_write; + qint64 lim = offset + actual_write; QVector averages; averages.resize(channels); averages.fill(0); int counter = 0; qint16 sample; - for (unsigned long i=offset;i samples; - int send_audio_to_output(unsigned long offset, int max); + int send_audio_to_output(qint64 offset, int max); }; double log_volume(double linear); @@ -39,7 +39,7 @@ extern QMutex audio_write_lock; #define audio_ibuffer_size 192000 extern qint8 audio_ibuffer[audio_ibuffer_size]; -extern unsigned long audio_ibuffer_read; +extern qint64 audio_ibuffer_read; extern long audio_ibuffer_frame; extern double audio_ibuffer_timecode; extern bool audio_scrub; @@ -53,7 +53,7 @@ bool is_audio_device_set(); void init_audio(); void stop_audio(); -unsigned long get_buffer_offset_from_frame(double framerate, long frame); +qint64 get_buffer_offset_from_frame(double framerate, long frame); bool start_recording(); void stop_recording(); diff --git a/playback/cacher.cpp b/playback/cacher.cpp index f7deb4334..915d01428 100644 --- a/playback/cacher.cpp +++ b/playback/cacher.cpp @@ -364,7 +364,7 @@ void cache_audio_worker(Clip* c, bool scrubbing, QVector& nests) { if (frame->nb_samples == 0) { break; } else { - unsigned long buffer_timeline_out = get_buffer_offset_from_frame(c->sequence->frame_rate, timeline_out); + qint64 buffer_timeline_out = get_buffer_offset_from_frame(c->sequence->frame_rate, timeline_out); audio_write_lock.lock(); diff --git a/project/clip.h b/project/clip.h index 1e5d245a5..a2f284d80 100644 --- a/project/clip.h +++ b/project/clip.h @@ -127,7 +127,7 @@ struct Clip // audio playback variables int64_t reverse_target; int frame_sample_index; - unsigned long audio_buffer_write; + qint64 audio_buffer_write; bool audio_reset; bool audio_just_reset; long audio_target_frame; diff --git a/ui/renderfunctions.cpp b/ui/renderfunctions.cpp index c881208c9..ec38146c3 100644 --- a/ui/renderfunctions.cpp +++ b/ui/renderfunctions.cpp @@ -365,9 +365,6 @@ GLuint compose_sequence(Viewer* viewer, glBegin(GL_QUADS); - GLint current_fbo = 0; - glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, ¤t_fbo); - if (coords.grid_size <= 1) { float z = 0.0f;