thumbnail/waveform generation

This commit is contained in:
itsmattkc
2018-06-15 20:17:05 -07:00
parent f8ce6c08f8
commit dc8d4728fc
29 changed files with 849 additions and 479 deletions
+2 -2
View File
@@ -51,7 +51,7 @@ private:
class VolumeEffect : public Effect {
public:
VolumeEffect(Clip* c);
void process_audio(uint8_t* samples, int nb_bytes);
void process_audio(quint8* samples, int nb_bytes);
Effect* copy(Clip* c);
void load(QXmlStreamReader* stream);
void save(QXmlStreamWriter* stream);
@@ -62,7 +62,7 @@ public:
class PanEffect : public Effect {
public:
PanEffect(Clip* c);
void process_audio(uint8_t* samples, int nb_bytes);
void process_audio(quint8* samples, int nb_bytes);
Effect* copy(Clip* c);
void load(QXmlStreamReader* stream);
void save(QXmlStreamWriter* stream);
+7 -7
View File
@@ -45,10 +45,10 @@ void PanEffect::save(QXmlStreamWriter *stream) {
stream->writeTextElement("pan", QString::number(pan_val->value()));
}
void PanEffect::process_audio(uint8_t *samples, int nb_bytes) {
void PanEffect::process_audio(quint8 *samples, int nb_bytes) {
for (int i=0;i<nb_bytes;i+=4) {
int16_t left_sample = (int16_t) ((samples[i+1] << 8) | samples[i]);
int16_t right_sample = (int16_t) ((samples[i+3] << 8) | samples[i+2]);
qint16 left_sample = (qint16) ((samples[i+1] << 8) | samples[i]);
qint16 right_sample = (qint16) ((samples[i+3] << 8) | samples[i+2]);
float val = pan_val->value()*0.01;
if (val < 0) {
@@ -59,9 +59,9 @@ void PanEffect::process_audio(uint8_t *samples, int nb_bytes) {
left_sample *= (1-val);
}
samples[i+3] = (uint8_t) (right_sample >> 8);
samples[i+2] = (uint8_t) right_sample;
samples[i+1] = (uint8_t) (left_sample >> 8);
samples[i] = (uint8_t) left_sample;
samples[i+3] = (quint8) (right_sample >> 8);
samples[i+2] = (quint8) right_sample;
samples[i+1] = (quint8) (left_sample >> 8);
samples[i] = (quint8) left_sample;
}
}
+4 -4
View File
@@ -45,11 +45,11 @@ void VolumeEffect::save(QXmlStreamWriter *stream) {
stream->writeTextElement("volume", QString::number(volume_val->value()));
}
void VolumeEffect::process_audio(uint8_t *samples, int nb_bytes) {
void VolumeEffect::process_audio(quint8 *samples, int nb_bytes) {
for (int i=0;i<nb_bytes;i+=2) {
int16_t full_sample = (int16_t) ((samples[i+1] << 8) | samples[i]);
qint16 full_sample = (qint16) ((samples[i+1] << 8) | samples[i]);
full_sample *= volume_val->value()*0.01;
samples[i+1] = (uint8_t) (full_sample >> 8);
samples[i] = (uint8_t) full_sample;
samples[i+1] = (quint8) (full_sample >> 8);
samples[i] = (quint8) full_sample;
}
}