summaryrefslogtreecommitdiff
path: root/audio/quelcom/files/patch-lib::qwavsample.cc
diff options
context:
space:
mode:
authorKirill Ponomarev <krion@FreeBSD.org>2004-02-14 12:54:17 +0000
committerKirill Ponomarev <krion@FreeBSD.org>2004-02-14 12:54:17 +0000
commit51505fe87160d96ee169096629f226ab1de71461 (patch)
tree3004c76cf66fa92cf01f8fa03dbcb9ff81517e42 /audio/quelcom/files/patch-lib::qwavsample.cc
parent- Update to version 0.99.2 (diff)
- Update to version 0.4.0
PR: ports/62813 Submitted by: Ports Fury
Notes
Notes: svn path=/head/; revision=100910
Diffstat (limited to 'audio/quelcom/files/patch-lib::qwavsample.cc')
-rw-r--r--audio/quelcom/files/patch-lib::qwavsample.cc143
1 files changed, 143 insertions, 0 deletions
diff --git a/audio/quelcom/files/patch-lib::qwavsample.cc b/audio/quelcom/files/patch-lib::qwavsample.cc
new file mode 100644
index 000000000000..e77a3cd2da75
--- /dev/null
+++ b/audio/quelcom/files/patch-lib::qwavsample.cc
@@ -0,0 +1,143 @@
+--- lib/qwavsample.cc.orig Fri Feb 23 21:29:12 2001
++++ lib/qwavsample.cc Fri Feb 13 19:17:38 2004
+@@ -4,7 +4,7 @@
+
+ # include "qwavsample.hh"
+ # include "qexception.hh"
+-
++# include "endian.hh"
+
+ #ifdef NLS
+ # include <locale.h>
+@@ -21,11 +21,14 @@
+ #endif
+
+
+-qwavsample::qwavsample (qwav *wav, u_int32_t s=1) {
++qwavsample::qwavsample (qwav *wav, u_int32_t s) {
+
+ sample = (union sample*) (wav->getMap()+wav->getOffset(s));
+
+ if (wav->getBitsPerSample()==16) {
++ if ((int)sample % sizeof(int16_t) != 0)
++ throw qexception(__PRETTY_FUNCTION__, _("misaligned 16-bit sample"));
++
+ if (wav->getChannels()==2) {
+ type = STEREO16;
+ }
+@@ -60,6 +63,8 @@
+ sample = (union sample*) pointer;
+
+ if (bitspersample==16) {
++ if ((int)sample % sizeof(int16_t) != 0)
++ throw qexception(__PRETTY_FUNCTION__, _("misaligned 16-bit sample"));
+ if (channels==2) {
+ type = STEREO16;
+ return;
+@@ -88,7 +93,7 @@
+ }
+
+
+-qwavsample::qwavsample(caddr_t pointer, enum type t=STEREO16) {
++qwavsample::qwavsample(caddr_t pointer, enum type t) {
+
+ sample = (union sample*) pointer;
+ type = t;
+@@ -99,9 +104,9 @@
+
+ switch (type) {
+ case MONO8: return sample->mono8;
+- case MONO16: return sample->mono16;
++ case MONO16: return letohs_s(sample->mono16);
+ case STEREO8: return sample->stereo8.left;
+- case STEREO16: return sample->stereo16.left;
++ case STEREO16: return letohs_s(sample->stereo16.left);
+ }
+
+ throw qexception(__PRETTY_FUNCTION__,_("quelcom internal error"));
+@@ -112,36 +117,36 @@
+
+ switch (type) {
+ case MONO8: return sample->mono8;
+- case MONO16: return sample->mono16;
++ case MONO16: return letohs_s(sample->mono16);
+ case STEREO8: return sample->stereo8.right;
+- case STEREO16: return sample->stereo16.right;
++ case STEREO16: return letohs_s(sample->stereo16.right);
+ }
+ throw qexception(__PRETTY_FUNCTION__,_("quelcom internal error"));
+ }
+
+-void qwavsample::set(int left, int right=0) {
++void qwavsample::set(int left, int right) {
+
+ switch (type) {
+ case MONO8: sample->mono8=left; break;
+- case MONO16: sample->mono16=left; break;
++ case MONO16: sample->mono16=htoles_s(left); break;
+ case STEREO8: sample->stereo8.left=left;sample->stereo8.right=right; break;
+- case STEREO16: sample->stereo16.left=left;sample->stereo16.right=right; break;
++ case STEREO16: sample->stereo16.left=htoles_s(left);sample->stereo16.right=htoles_s(right); break;
+ default:
+ throw qexception(__PRETTY_FUNCTION__,_("quelcom internal error"));
+ }
+ }
+
+-bool qwavsample::isSilence(u_int32_t threshold=0) {
++bool qwavsample::isSilence(u_int32_t threshold) {
+
+ switch (type) {
+ case MONO8: return (u_int32_t)abs(sample->mono8)<=threshold;
+- case MONO16: return (u_int32_t)abs(sample->mono16)<=threshold;
++ case MONO16: return (u_int32_t)abs(letohs_s(sample->mono16))<=threshold;
+ case STEREO8:
+ return ((u_int32_t)abs(sample->stereo8.left)<=threshold) &&
+ ((u_int32_t)abs(sample->stereo8.right)<=threshold);
+ case STEREO16:
+- return ((u_int32_t)abs(sample->stereo16.left)<=threshold) &&
+- ((u_int32_t)abs(sample->stereo16.right)<=threshold);
++ return ((u_int32_t)abs(letohs_s(sample->stereo16.left))<=threshold) &&
++ ((u_int32_t)abs(letohs_s(sample->stereo16.right))<=threshold);
+ }
+ throw qexception(__PRETTY_FUNCTION__,_("quelcom internal error"));
+ }
+@@ -173,10 +178,15 @@
+ void qwavsample::print(ostream &os) {
+
+ switch (type) {
+- case MONO8: os.form("(%d)",sample->mono8); break;
+- case MONO16: os.form("(%d)",sample->mono16); break;
+- case STEREO8: os.form("(%d,%d)",sample->stereo8.left,sample->stereo8.right); break;
+- case STEREO16: os.form("(%d,%d)",sample->stereo16.left,sample->stereo16.right); break;
++ case MONO8: os << '(' << sample->mono8 << ')'; break;
++ case MONO16: os << '(' << letohs_s(sample->mono16) << ')'; break;
++ case STEREO8:
++ os << '(' << sample->stereo8.left << ',' << sample->stereo8.right << ')';
++ break;
++ case STEREO16:
++ os << '(' << letohs_s(sample->stereo16.left) << ',' << letohs_s(sample->stereo16.right) << ')';
++ break;
++
+ default:
+ throw qexception(__PRETTY_FUNCTION__,_("quelcom internal error"));
+ }
+@@ -184,12 +194,16 @@
+
+
+ void qwavsample::prod(double d) {
+-
+ switch (type) {
+ case MONO8: sample->mono8*=d; break;
+- case MONO16: sample->mono16*=d; break;
++ case MONO16:
++ sample->mono16 = htoles_s(short(letohs_s(sample->mono16)*d));
++ break;
+ case STEREO8: sample->stereo8.left*=d; sample->stereo8.right*=d; break;
+- case STEREO16: sample->stereo16.left*=d; sample->stereo16.right*=d; break;
++ case STEREO16:
++ sample->stereo16.left = htoles_s(short(letohs_s(sample->stereo16.left)*d));
++ sample->stereo16.right = htoles_s(short(letohs_s(sample->stereo16.right)*d));
++ break;
+ default:
+ throw qexception(__PRETTY_FUNCTION__,_("quelcom internal error"));
+ }