示例#1
0
WaveHeader::WaveHeader( int sampleRate,
					    int numSamples,
						int bytesPerSample,
						int bitsPerSample,
						int numChannels )
: _headerSize( HEADER_SIZE ),
  _sampleRate( sampleRate ),
  _numSamples( numSamples ),
  _bytesPerSample( bytesPerSample ),
  _bitsPerSample( bitsPerSample ),
  _numChannels( numChannels )
{
	memset( &_header, 0, sizeof(_header) );

	// Chunk id is four characters: "RIFF"
	SetStr4( CHUNK_ID_IDX, "RIFF" );
	
	// Chunk size is a 32 bit integer that stores size of the entire chunk of wave
	// data, i.e., the header plus samples.
	SetInt32(CHUNK_SIZE_IDX, CHUNK1_SIZE +
				   CHUNK_PREFIX_SIZE +
				   GetAudioDataSizeInBytes() );

    // Format contains the letters "WAVE"
	SetStr4( FORMAT_IDX, "WAVE" );

	// SubchunkID1 contains the letters "fmt ";
	SetStr4( SUB_CHUNK1_ID_IDX, "fmt " );

	// Subchunk size is a 32 bit integer that stores the number of
	// bytes following this number for this sub chunk.  (16 for PCM)
	SetInt16( SUB_CHUNK1_SIZE_IDX, 16 );

	// AudioFormat is PCM - indicated by the value 1
	SetInt16( AUDIO_FORMAT_IDX, 1 );

	// Set num channels as a 16 bit value;
	SetInt16( NUM_CHANNELS_IDX, _numChannels );

	// Sample rate
	SetInt32( SAMPLE_RATE_IDX, _sampleRate );

	// Byte rate
	SetInt32( BYTE_RATE_IDX, _sampleRate * _bytesPerSample * _numChannels );

	// Block alignment i.e. size of a frame of audio data.
	SetInt16( BLOCK_ALIGN_IDX, _numChannels * _bytesPerSample );

	// Bits per sample
	SetInt16( BITS_PER_SAMPLE, _bitsPerSample );

	// SUB_CHUNK2_ID_IDX - The letters "data".
	SetStr4( SUB_CHUNK2_ID_IDX, "data" );

	// SUB_CHUNK2_ID_SIZE_ID - Size, in bytes, of the audio data.
	SetInt32( SUB_CHUNK2_ID_SIZE_IDX, GetAudioDataSizeInBytes() );
}
示例#2
0
void CMdbPara::SetNumber(register uint32 nFieldNo, register void* pVal, register uint32 nOperator)
{
	switch(GetType(nFieldNo))
	{
	case MDB_INT8_FIELD:
		SetInt8(nFieldNo, *(int8*)pVal, nOperator);
		break;
	case MDB_INT16_FIELD:
		SetInt16(nFieldNo, *(int16*)pVal, nOperator);
		break;
	case MDB_INT32_FIELD:
		SetInt32(nFieldNo, *(int32*)pVal, nOperator);
		break;
	case MDB_INT64_FIELD:
		SetInt64(nFieldNo, *(int64*)pVal, nOperator);
		break;
	case MDB_UINT8_FIELD:
		SetUInt8(nFieldNo, *(uint8*)pVal, nOperator);
		break;
	case MDB_UINT16_FIELD:
		SetUInt16(nFieldNo, *(uint16*)pVal, nOperator);
		break;
	case MDB_UINT32_FIELD:
		SetUInt32(nFieldNo, *(uint32*)pVal, nOperator);
		break;
	case MDB_UINT64_FIELD:
		SetUInt64(nFieldNo, *(uint64*)pVal, nOperator);
		break;
	case MDB_FLOAT_FIELD:
		SetFloat(nFieldNo, *(float*)pVal, nOperator);
		break;
	case MDB_DOUBLE_FIELD:
		SetDouble(nFieldNo, *(double*)pVal, nOperator);
		break;
	case MDB_DATE_FIELD:
		SetDate(nFieldNo, *(CDate*)pVal, nOperator);
		break;
	case MDB_TIME_FIELD:
		SetTime(nFieldNo, *(CTime*)pVal, nOperator);
		break;
	case MDB_DATETIME_FIELD:
		SetDateTime(nFieldNo, *(CDateTime*)pVal, nOperator);
		break;
	}
}
示例#3
0
文件: NNumber.cpp 项目: refnum/nano
//============================================================================
//		NNumber::SetValue : Set the value.
//----------------------------------------------------------------------------
bool NNumber::SetValue(const NVariant &theValue)
{	uint8_t					valueUInt8;
	uint16_t				valueUInt16;
	uint32_t				valueUInt32;
	uint64_t				valueUInt64;
	int8_t					valueSInt8;
	int16_t					valueSInt16;
	int32_t					valueSInt32;
	int64_t					valueSInt64;
	float32_t				valueFloat32;
	float64_t				valueFloat64;
	int						valueInt;
	long					valueLong;
	NString					valueString;



	// Set the value
	//
	// NVariant treats some unsized types as numeric, to support literal constants.
	if (theValue.GetValue(*this))
		; // Assigned to this

	else if (theValue.GetValue(valueUInt8))
		SetUInt8(valueUInt8);

	else if (theValue.GetValue(valueUInt16))
		SetUInt16(valueUInt16);
	
	else if (theValue.GetValue(valueUInt32))
		SetUInt32(valueUInt32);
	
	else if (theValue.GetValue(valueUInt64))
		SetUInt64(valueUInt64);
	
	else if (theValue.GetValue(valueSInt8))
		SetInt8(valueSInt8);
	
	else if (theValue.GetValue(valueSInt16))
		SetInt16(valueSInt16);
	
	else if (theValue.GetValue(valueSInt32))
		SetInt32(valueSInt32);
	
	else if (theValue.GetValue(valueSInt64))
		SetInt64(valueSInt64);
	
	else if (theValue.GetValue(valueFloat32))
		SetFloat32(valueFloat32);
	
	else if (theValue.GetValue(valueFloat64))
		SetFloat64(valueFloat64);
	
	else if (theValue.GetValue(valueInt))
		SetInt64(valueInt);
	
	else if (theValue.GetValue(valueLong))
		SetInt64(valueLong);
	
	else if (theValue.GetValue(valueString))
		return(SetValue(valueString));

	else
		return(false);

	return(true);
}