Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}