bool COMXImage::ReadFile(const CStdString& inputFile) { if(!m_pFile.Open(inputFile, 0)) { CLog::Log(LOGERROR, "%s::%s %s not found\n", CLASSNAME, __func__, inputFile.c_str()); return false; } if(m_image_buffer) free(m_image_buffer); m_image_buffer = NULL; m_image_size = m_pFile.GetLength(); if(!m_image_size) return false; m_image_buffer = (uint8_t *)malloc(m_image_size); if(!m_image_buffer) return false; m_pFile.Read(m_image_buffer, m_image_size); if(GetCodingType() != OMX_IMAGE_CodingJPEG) return false; if(m_width < 1 || m_height < 1) return false; SetHardwareSizeLimits(); m_is_open = true; return true; }
bool COMXImage::CreateThumbnailFromMemory(unsigned char* buffer, unsigned int bufSize, const CStdString& destFile, unsigned int minx, unsigned int miny) { if(!bufSize || !buffer) return false; if(!m_is_open) { m_image_size = bufSize; m_image_buffer = (uint8_t *)malloc(m_image_size); if(!m_image_buffer) return false; memcpy(m_image_buffer, buffer, m_image_size); if(GetCodingType() != OMX_IMAGE_CodingJPEG) return false; SetHardwareSizeLimits(); m_is_open = true; } if(!Decode(minx, miny)) return false; return CreateThumbnailFromSurface(GetDecodedData(), GetDecodedWidth(), GetDecodedHeight(), XB_FMT_A8R8G8B8, GetDecodedWidth() * 4, destFile); }
bool COMXImage::CreateThumbnailFromMemory(unsigned char* buffer, unsigned int bufSize, const CStdString& destFile, unsigned int minx, unsigned int miny) { if(!bufSize || !buffer) return false; if(!m_is_open) { m_image_size = bufSize; m_image_buffer = (uint8_t *)malloc(m_image_size); if(!m_image_buffer) return false; memcpy(m_image_buffer, buffer, m_image_size); if(GetCodingType() != OMX_IMAGE_CodingJPEG) { CLog::Log(LOGERROR, "%s::%s : %s GetCodingType()=0x%x\n", CLASSNAME, __func__, destFile.c_str(), GetCodingType()); return false; } m_is_open = true; } if(!Decode(minx, miny)) return false; return CreateThumbnailFromSurface(GetDecodedData(), GetDecodedWidth(), GetDecodedHeight(), XB_FMT_A8R8G8B8, GetDecodedStride(), destFile); }
bool COMXImage::ReadFile(const CStdString& inputFile) { if(!m_pFile.Open(inputFile, 0)) { CLog::Log(LOGERROR, "%s::%s %s not found\n", CLASSNAME, __func__, inputFile.c_str()); return false; } if(m_image_buffer) free(m_image_buffer); m_image_buffer = NULL; m_image_size = m_pFile.GetLength(); if(!m_image_size) { CLog::Log(LOGERROR, "%s::%s %s m_image_size zero\n", CLASSNAME, __func__, inputFile.c_str()); return false; } m_image_buffer = (uint8_t *)malloc(m_image_size); if(!m_image_buffer) { CLog::Log(LOGERROR, "%s::%s %s m_image_buffer null (%lu)\n", CLASSNAME, __func__, inputFile.c_str(), m_image_size); return false; } m_pFile.Read(m_image_buffer, m_image_size); if(GetCodingType() != OMX_IMAGE_CodingJPEG) { CLog::Log(LOGERROR, "%s::%s %s GetCodingType=0x%x\n", CLASSNAME, __func__, inputFile.c_str(), GetCodingType()); return false; } if(m_width < 1 || m_height < 1) { CLog::Log(LOGERROR, "%s::%s %s m_width=%d m_height=%d\n", CLASSNAME, __func__, inputFile.c_str(), m_width, m_height); return false; } ClampLimits(m_width, m_height); m_is_open = true; return true; }