62 lines
2.0 KiB
C++
62 lines
2.0 KiB
C++
#include "ImageMatQueue.h"
|
||
GRawDecode::GRawDecode(std::shared_ptr<std::vector<char>> buff)
|
||
{
|
||
m_buffs.push_back(buff);
|
||
}
|
||
|
||
GRawDecode::GRawDecode(void* data, size_t bytes)
|
||
{
|
||
std::shared_ptr<std::vector<char>> buf;
|
||
buf.reset(new std::vector<char>);
|
||
buf->resize(bytes);
|
||
memcpy(buf->data(), data, bytes);
|
||
m_buffs.push_back(buf);
|
||
}
|
||
|
||
G200Decode::G200Decode(std::shared_ptr<std::vector<char>> buff,bool is_duplex,bool is_switchFrontBack)
|
||
{
|
||
const int int_buffer_size = 1024;
|
||
int buffer_size = buff->size();
|
||
int b_buffer_size = 0;
|
||
int f_buffer_size = 0;
|
||
std::shared_ptr<std::vector<char>> buffB(new std::vector<char>(buff->size()));
|
||
std::shared_ptr<std::vector<char>> buffF(new std::vector<char>(buff->size()));
|
||
unsigned char *bbuf = (unsigned char *)(buffB->data());
|
||
unsigned char *fbuf = (unsigned char *)(buffF->data());
|
||
unsigned char *buf = (unsigned char *)(buff->data());
|
||
for (int i = 0; i < (buffer_size / int_buffer_size); i++)
|
||
{
|
||
if (buf[(i + 1) * int_buffer_size - 1] == 0)
|
||
{
|
||
memcpy(bbuf + b_buffer_size, buf + i * int_buffer_size, int_buffer_size - 1);
|
||
b_buffer_size += (int_buffer_size - 1);
|
||
}
|
||
else if (buf[(i + 1) * int_buffer_size - 1] == 255)
|
||
{
|
||
memcpy(fbuf + f_buffer_size, buf + i * int_buffer_size, int_buffer_size - 1);
|
||
f_buffer_size += (int_buffer_size - 1);
|
||
}
|
||
}
|
||
buffB->resize(b_buffer_size);
|
||
buffF->resize(f_buffer_size);
|
||
|
||
m_buffs.push_back(buffB);
|
||
m_buffs.push_back(buffF);
|
||
|
||
}
|
||
|
||
G400Decode::G400Decode(std::shared_ptr<std::vector<char>> buff,bool i)
|
||
{
|
||
/*std::shared_ptr<std::vector<char>> buf;
|
||
buf.reset(new std::vector<char>);
|
||
auto bytes = buff->size();
|
||
buf->resize(bytes);
|
||
memcpy(buf->data(), buff->data(), bytes);
|
||
m_buffs.push_back(buf);*/
|
||
m_buffs.push_back(buff);
|
||
// printf("G400 :buff->size()=%d\r\n",buff->size());
|
||
}
|
||
|
||
//出图注释:
|
||
//G100(DSP),G200(DSP),G300,G400,G302,G402.
|
||
//出图都是两张连成一张发上来,而且正面在右边,反面在左边,所以拆分之后需要先把左边的push进队列
|