예제 #1
0
	VOID DoEncodeBuffer(CPacket* pckt, BOOL bHidden, std::vector<BYTE>& vb)
	{
		if (!bHidden)
			EncodeBuffer(pckt, 0, &vb[0], vb.size());
		else
			_EncodeBuffer(pckt, &vb[0], vb.size());
	}
예제 #2
0
파일: Encoder.cpp 프로젝트: KDE/digikam
/////////////////////////////////////////////////////////////////////
// Stores band value from given position bandPos into buffer m_value at position m_valuePos
// If buffer is full encode it to file
// It might throw an IOException.
void CEncoder::WriteValue(CSubband* band, int bandPos) {
	if (m_currentBlock->m_valuePos == BufferSize) {
		EncodeBuffer(ROIBlockHeader(BufferSize, false));
	}
	DataT val = m_currentBlock->m_value[m_currentBlock->m_valuePos++] = band->GetData(bandPos);
	UINT32 v = abs(val);
	if (v > m_currentBlock->m_maxAbsValue) m_currentBlock->m_maxAbsValue = v;
}
예제 #3
0
파일: Encoder.cpp 프로젝트: KDE/digikam
//////////////////////////////////////////////////////
/// Pad buffer with zeros and encode buffer.
/// It might throw an IOException.
void CEncoder::Flush() {
	if (m_currentBlock->m_valuePos > 0) {
		// pad buffer with zeros
		memset(&(m_currentBlock->m_value[m_currentBlock->m_valuePos]), 0, (BufferSize - m_currentBlock->m_valuePos)*DataTSize);
		m_currentBlock->m_valuePos = BufferSize;

		// encode buffer
		m_forceWriting = true;	// makes sure that the following EncodeBuffer is really written into the stream
		EncodeBuffer(ROIBlockHeader(m_currentBlock->m_valuePos, true));
	}
}
예제 #4
0
status_t
MP3Encoder::Flush()
{
	if (m_cookie == 0) return B_OK;
	if (m_bufAvail > 0) 
	{
		memset(m_buffer+m_bufAvail, 0, m_chunkSize-m_bufAvail);
		status_t err = EncodeBuffer(m_buffer, m_chunkSize);
		if (err < B_OK) return err;	
	}
	
	return WriteChunk(m_buffer, mp3_encode(m_cookie, NULL, 0, m_buffer), m_LastEncodeInfo);
}
예제 #5
0
파일: replay.cpp 프로젝트: ernestd/fbarr
int RecordInput()
{
	struct BurnInputInfo bii;
	memset(&bii, 0, sizeof(bii));

	for (unsigned int i = 0; i < nGameInpCount; i++) {
		BurnDrvGetInputInfo(&bii, i);
		if (bii.pVal) {
			if (bii.nType & BIT_GROUP_ANALOG) {
				if (*bii.pShortVal != nPrevInputs[i]) {
					EncodeBuffer(i);
					EncodeBuffer(*bii.pShortVal >> 8);
					EncodeBuffer(*bii.pShortVal & 0xFF);
					nPrevInputs[i] = *bii.pShortVal;
				}
			} else {
				if (*bii.pVal != nPrevInputs[i]) {
					EncodeBuffer(i);
					EncodeBuffer(*bii.pVal);
					nPrevInputs[i] = *bii.pVal;
				}
			}
		}
예제 #6
0
status_t MP3Encoder::Encode( const void *in_buffer, int64 num_frames, media_encode_info *info)
{
	char *buf = (char *)in_buffer;
	size_t src_length = num_frames * m_format.channel_count * (m_format.format & 0xf);
	status_t err;

	m_LastEncodeInfo = info;

	if (!m_cookie) 
	{
		return B_NO_INIT;
	}

	if (m_bufAvail > 0) 
	{
		if (m_bufAvail + xform(src_length) < m_chunkSize) 
		{
			//	just copy into FIFO
			char *buf = (char *)in_buffer;
			convert(buf, src_length);
			return B_OK;
		}
		
		//	copy part into FIFO
		convert(buf, src_length);
		
		//	encode FIFO
		err = EncodeBuffer(m_buffer, m_chunkSize);
		
		//	update variables
		m_bufAvail = 0;
		if (err < 0) 
		{
			return err;
		}
	}

	while (xform(src_length) >= m_chunkSize) 
	{
		//	encode from buffer
		if (m_format.format == 0x2) 
		{
			err = EncodeBuffer(buf, m_chunkSize);
			buf += m_chunkSize;
			src_length -= m_chunkSize;
		}
		else 
		{
			convert(buf, src_length);
			err = EncodeBuffer(m_buffer, m_chunkSize);
			m_bufAvail = 0;
		}
		if (err < 0) 
		{
			return err;
		}
	}
	
	convert(buf, src_length);
	
	return B_OK;
}