code_device/hgdriver/hgdev/ImageMatQueue.cpp

62 lines
2.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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进队列