#include #include #include #include "librascontrolmessage.h" namespace Codificador { LibrasControlMessage::LibrasControlMessage() : LibrasControlSection() { type = LIBRAS_MGM_TYPE; messagelength = 11; //resolution = 1; timecontrolflag = 0; //dictionaryversion = 1; privatedatalength = 0; privateDataBytes = NULL; //dph = 0; //dfh = 0; //dfw = 0; //dpv = 0; } LibrasControlMessage::~LibrasControlMessage() { } unsigned short LibrasControlMessage::getMessageLength() { return messagelength; } unsigned char LibrasControlMessage::getResolution() { return resolution; } unsigned char LibrasControlMessage::getDictionaryVersion() { return dictionaryversion; } unsigned short LibrasControlMessage::getDPH() { return dph; } unsigned short LibrasControlMessage::getDPV() { return dpv; } unsigned short LibrasControlMessage::getDFW() { return dfw; } unsigned short LibrasControlMessage::getDFH() { return dfh; } unsigned char LibrasControlMessage::getPrivateDataLength() { return privatedatalength; } unsigned char *LibrasControlMessage::getPrivateDataBytes() { return privateDataBytes; } void LibrasControlMessage::setMessageLength(unsigned short messagelength) { this->messagelength = messagelength; } void LibrasControlMessage::setResolution(string resolution) { if(resolution.compare("1920x1080") == 0) this->resolution = 0; if(resolution.compare("1280x720") == 0) this->resolution = 1; if(resolution.compare("640x480") == 0) this->resolution = 2; if(resolution.compare("960x540") == 0) this->resolution = 3; if(resolution.compare("720x480") == 0) this->resolution = 4; } void LibrasControlMessage::setDictionaryVersion(unsigned char dictionaryversion) { this->dictionaryversion = dictionaryversion; } void LibrasControlMessage::setDPH(unsigned short dph) { this->dph = dph; } void LibrasControlMessage::setDPV(unsigned short dpv) { this->dpv = dpv; } void LibrasControlMessage::setDFW(unsigned short dfw) { this->dfw = dfw; } void LibrasControlMessage::setDFH(unsigned short dfh) { this->dfh = dfh; } void LibrasControlMessage::setPrivateDataLength(unsigned char privatedatalength) { this->privatedatalength = privatedatalength; } void LibrasControlMessage::setPrivateDataBytes(unsigned char *privateDataBytes, int len) { if (this->privateDataBytes) { delete (this->privateDataBytes); } this->privateDataBytes = new unsigned char[len]; memcpy(this->privateDataBytes, privateDataBytes, len); } unsigned char *LibrasControlMessage::generateBytes(unsigned short *librasLen) { unsigned char *librasDataBytes; *librasLen = privatedatalength + messagelength + 3; librasDataBytes = new unsigned char[*librasLen]; messageid = MESSAGE_ID_CONTROL; messagelength += privatedatalength; librasDataBytes[0] = messageid & 0xFF; librasDataBytes[1] = (messagelength >> 8) & 0xFF; librasDataBytes[2] = messagelength & 0xFF; librasDataBytes[3] = ((resolution << 1) & 0x1E) | (timecontrolflag & 0x01); librasDataBytes[4] = dictionaryversion & 0xFF; librasDataBytes[5] = (dph >> 8) & 0xFF; librasDataBytes[6] = dph & 0xFF; librasDataBytes[7] = (dpv >> 8) & 0xFF; librasDataBytes[8] = dpv & 0xFF; librasDataBytes[9] = (dfw >> 8) & 0xFF; librasDataBytes[10] = dfw & 0xFF; librasDataBytes[11] = (dfh >> 8) & 0xFF; librasDataBytes[12] = dfh & 0xFF; librasDataBytes[13] = privatedatalength & 0xFF; memcpy(librasDataBytes + 11, privateDataBytes, privatedatalength); return librasDataBytes; } }