- m_format = (tmp2 & 0xFF00) >> 8;
- printf ("format=%d\n",m_format);
- printf ("tmp2=%4x\n", tmp2);
- m_nChannels = tmp2 & 0x1f;
- m_sr_denom = (tmp2 & 0x7fff) >> 5;
- m_sr_numer = (tmp2 & 0x8000) << 1;
-
- if (! read_int2 (m_fd, tmp2))
+
+ short unsigned int byte1 = (element1 & 0xFF00) >> 8;
+ short unsigned int byte2 = element1 & 0xFF;
+ if (byte1 == 0 || byte1 == 1) {
+ m_bLegacy_format = false;
+ m_sr_denom = m_sr_numer = 0;
+ } else {
+ m_sr_denom = (element1 & 0x7fff) >> 5;
+ m_sr_numer = (element1 & 0x8000) << 1;
+ m_bLegacy_format = true;
+ }
+ unsigned short int element2;
+ if (! read_int2 (m_fd, element2))
+ return false;
+
+ if (m_bLegacy_format)
+ m_sr_numer |= element2;
+
+ unsigned char element3;
+ if (! read_int1 (m_fd, element3))