code_device/hgdriver/hgdev/ImageMatQueue.cpp

64 lines
1.9 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);
if (is_duplex)
{
m_buffs.push_back(is_switchFrontBack ? buffF : buffB);
m_buffs.push_back(is_switchFrontBack ? buffB : buffF);
}
else
m_buffs.push_back(is_switchFrontBack ? buffF : buffB);
}
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());
}