📄 mjpeg_drv.cpp
字号:
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/ioctl.h>#include <string.h>#include <unistd.h>#include "def.h"#include "mjpeg_drv.h"//#include "ioc_cmd.h"#include "ncplus_mjpeg.h"#include "debug.h"CMjpegDriver::CMjpegDriver(){ m_iDriverFd = -1; m_JpegMode = _c0; m_ImageQuality = _normal;}CMjpegDriver::~CMjpegDriver(){ Stop(); Close();}bool CMjpegDriver::Open(char * pszPath, int iFlag){ m_iDriverFd = open(pszPath, iFlag); if(m_iDriverFd == -1) return false; return true;}bool CMjpegDriver::Close(){ if(!close(m_iDriverFd)) return true; else return false;}int CMjpegDriver::Read(char * pBuff, int iSize){ int iReadSize = 0; do{ iReadSize = read(m_iDriverFd, pBuff, iSize); }while(iReadSize <= 0); return iReadSize;}int CMjpegDriver::Reset(){ return ioctl(m_iDriverFd, MJPEG_IOCRESET);}int CMjpegDriver::Stop(){ return ioctl(m_iDriverFd, MJPEG_IOCSTOP);}int CMjpegDriver::YuvFormat(int iMode){ if(iMode < _q0 || iMode > _v2) return 0; m_JpegMode = (JPEG_MODE)iMode; return ioctl(m_iDriverFd, MJPEG_IOCTRESOL, m_JpegMode);}int CMjpegDriver::YuvFormat(char * pszSize, char * pszColorMode){ int iMode = -1; if(strcmp(pszSize, "160*120") == 0){ if(strcmp(pszColorMode, "yuv420") == 0) iMode = 0; else iMode = 1; } else if(strcmp(pszSize, "320*240") == 0){ if(strcmp(pszColorMode, "yuv420") == 0) iMode = 2; else iMode = 3; } else if(strcmp(pszSize, "640*480") == 0){ if(strcmp(pszColorMode, "yuv420") == 0) iMode = 4; else iMode = 5; } return YuvFormat(iMode);}int CMjpegDriver::Quality(int iAlpha){ m_ImageQuality = (IMAGE_QUALITY)iAlpha; OutputDebugString("quality : ", m_ImageQuality); return ioctl(m_iDriverFd, MJPEG_IOCTALPHA, m_ImageQuality);// return 0;}int CMjpegDriver::Quality(char * pszAlpha){ int iAlpha = 0; if(strcmp(pszAlpha, "better") == 0) iAlpha = 32; else if(strcmp(pszAlpha, "normal") == 0) iAlpha = 64; else if(strcmp(pszAlpha, "lower") == 0) iAlpha = 128; else if(strcmp(pszAlpha, "fast") == 0) iAlpha = 256; else if(strcmp(pszAlpha, "fastest") == 0) iAlpha = 512; return Quality(iAlpha);}int CMjpegDriver::JpegRotate(int iRotate) { m_JpegRotate = iRotate; return ioctl(m_iDriverFd, MJPEG_IOCTROTATE, m_JpegRotate);}int CMjpegDriver::GetJpegMode(){ m_JpegMode = (JPEG_MODE)ioctl(m_iDriverFd, MJPEG_IOCQRESOL); return (int)m_JpegMode;}int CMjpegDriver::GetImageQuality(){ m_ImageQuality = (IMAGE_QUALITY)ioctl(m_iDriverFd, MJPEG_IOCQALPHA); return (int)m_ImageQuality;}int CMjpegDriver::GetJpegRotate(){ m_JpegRotate = ioctl(m_iDriverFd, MJPEG_IOCQROTATE); return (int)m_JpegRotate;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -