~noskcaj/ubuntu/saucy/sflphone/merge-1.2.3-2

« back to all changes in this revision

Viewing changes to daemon/src/audio/audioloop.cpp

  • Committer: Package Import Robot
  • Author(s): Francois Marier
  • Date: 2012-02-18 21:47:09 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20120218214709-6362d71gqdsdkrj5
Tags: 1.0.2-1
* New upstream release
  - remove logging patch (applied upstream)
  - update s390 patch since it was partially applied upstream
* Include the Evolution plugin as a separate binary package

* Fix compilation issues on SH4 (closes: #658987)
* Merge Ubuntu's binutils-gold linking fix

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 */
34
34
 
35
35
#include "audioloop.h"
36
 
#include <math.h>
 
36
#include <cmath>
 
37
#include <numeric>
37
38
#include <cstring>
38
39
#include <cassert>
39
40
 
40
41
AudioLoop::AudioLoop() : buffer_(0),  size_(0), pos_(0), sampleRate_(0)
41
 
{
42
 
}
 
42
{}
43
43
 
44
44
AudioLoop::~AudioLoop()
45
45
{
54
54
    if (size_ == 0) {
55
55
        ERROR("AudioLoop: Error: Audio loop size is 0");
56
56
        return;
 
57
    } else if (pos >= size_) {
 
58
        ERROR("AudioLoop: Error: Invalid loop position %d", pos);
 
59
        return;
57
60
    }
58
61
 
59
 
    while (total_samples) {
 
62
    while (total_samples > 0) {
60
63
        size_t samples = total_samples;
61
64
 
62
65
        if (samples > (size_ - pos))
65
68
        // short->char conversion
66
69
        memcpy(output, buffer_ + pos, samples * sizeof(SFLDataFormat));
67
70
 
 
71
        // Scaling needed
68
72
        if (volume != 100) {
69
 
            double gain = volume * 0.01;
 
73
            const double gain = volume * 0.01;
70
74
 
71
 
            for (size_t i = 0; i < samples; i++) {
 
75
            for (size_t i = 0; i < samples; ++i, ++output)
72
76
                *output *= gain;
73
 
                output++;
74
 
            }
75
77
        } else
76
78
            output += samples; // this is the destination...
77
79