freebsd-ports/audio/quelcom/files/patch-lib::qwavheader.hh
Kirill Ponomarev 51505fe871 - Update to version 0.4.0
PR:		ports/62813
Submitted by:	Ports Fury
2004-02-14 12:54:17 +00:00

66 lines
1.9 KiB
C++

--- lib/qwavheader.hh.orig Fri Feb 23 21:29:12 2001
+++ lib/qwavheader.hh Fri Feb 13 19:17:38 2004
@@ -20,9 +20,11 @@
/*!
* \brief struct for wav headers
*
- * this struct is defined to match exactly with a 'canonical' wav header with no change on a little-endian machine
+ * this struct is defined to match exactly with a 'canonical' wav header with no
+ * change on a little-endian machine; on other architectures the alignment will
+ * match but int values will need conversion
*/
- struct header {
+ struct wavheader {
// riff chunk
char riff[4]; /*!< should be 'RIFF' */
@@ -41,10 +43,19 @@
char data[4]; /*!< should be 'data' */
u_int32_t datalength; /*!< data block length (file size - 44) */
- };
+
+ wavheader(caddr_t p) { headerCopy(p); }
+
+ /*!
+ * Copies WAV header from little-endian to host order
+ * \param p the memory address where the header is located
+ * \param nativeendian whether the struct is already in native byte ordering
+ */
+ void headerCopy(caddr_t p);
+ } __attribute__ ((__packed__));
//! pointer to the header (memory location where it is located)
- struct header *header;
+ wavheader *header, *mappedheader;
public:
@@ -58,6 +69,15 @@
*/
qwavheader (caddr_t p, u_int32_t length=0);
+ /*! deep-copy */
+ qwavheader (const qwavheader& qwh)
+ :header(new wavheader(*qwh.header)), mappedheader(qwh.mappedheader) {}
+
+ /*!
+ * releases storage allocated for header
+ */
+ ~qwavheader();
+
/*!
* \brief gets the number of samples
* \return the number of samples
@@ -147,11 +167,6 @@
* \return whether is valid or not
*/
bool validLength(u_int32_t length);
- /*!
- * \brief write (copy) the header to the given address
- * \param a the memory address where to write the header
- */
- void write(caddr_t );
};
# endif