#include "ImageMatQueue.h" GRawDecode::GRawDecode(std::shared_ptr> buff) { m_buffs.push_back(buff); } GRawDecode::GRawDecode(void* data, size_t bytes) { std::shared_ptr> buf; buf.reset(new std::vector); buf->resize(bytes); memcpy(buf->data(), data, bytes); m_buffs.push_back(buf); } G200Decode::G200Decode(std::shared_ptr> 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> buffB(new std::vector(buff->size())); std::shared_ptr> buffF(new std::vector(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> buff,bool i) { /*std::shared_ptr> buf; buf.reset(new std::vector); 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进队列