38typedef uint16_t shifted_huv_t;
42 unsigned int first : 12;
43 unsigned int second : 12;
46const std::streamsize BUFFER_LENGTH = 3;
57 Writer( std::ostream& out )
67 void write(
signed short huv )
69 const signed short shifted_huv = huv + 1024;
70 buffered_shifted_huv.push(
static_cast< shifted_huv_t
>( shifted_huv ) );
71 if( buffered_shifted_huv.size() % 2 == 0 )
81 std::queue< shifted_huv_t > buffered_shifted_huv;
86 if( buffered_shifted_huv.empty() )
91 buffer.first = buffered_shifted_huv.front();
92 buffered_shifted_huv.pop();
94 if( buffered_shifted_huv.empty() )
100 buffer.second = buffered_shifted_huv.front();
101 buffered_shifted_huv.pop();
104 out.write(
reinterpret_cast< const char*
>( &buffer ), BUFFER_LENGTH );
118 Reader( std::istream& in )
125 if( read_values.empty() )
129 const shifted_huv_t shifted_huv = read_values.front();
131 const signed short huv =
static_cast< signed short >( shifted_huv ) - 1024;
140 std::queue< shifted_huv_t > read_values;
144 in.read(
reinterpret_cast< char*
>( &buffer ), BUFFER_LENGTH );
145 read_values.push( buffer.first );
146 read_values.push( buffer.second );
Contains forward-declarations.