Beispiel #1
0
//!xerces start element event
void amis::io::NccFileReader::startElement(const   XMLCh* const    uri,
        const   XMLCh* const    localname,
        const   XMLCh* const    qname,
        const   Attributes&	attributes)
{
    //get the name of the node from xerces
    char *node_name_ = XMLString::transcode(qname);
    string node_name;
    node_name.assign(node_name_);
    XMLString::release(&node_name_);

    int lvl = isHeading(node_name);
    //if this is a heading node
    if (lvl > 0)
    {
        processHeading(lvl, &attributes);
    }
    else if(node_name.compare("span") == 0)
    {
        processSpan(&attributes);
    }
    else if(node_name.compare("div") == 0)
    {
        processDiv(&attributes);
    }
    else if(node_name.compare("meta") == 0 ||
            node_name.substr(0, 3).compare("dc:") == 0)
    {
        processMetadata(node_name, &attributes);
    }

    //special condition for links due to the nested <a> element
    else if (node_name.compare("a") == 0)
    {
        string href;
        href.assign(SimpleAttrs::get("href", &attributes));

        mbFlag_GetChars = true;
        mTempChars.erase();

        if (mListType == 0)
        {
            mpCurrentNavPoint->setContent(href);
        }
        else if (mListType == 1)
        {
            //nav list
            mpCurrentNavTarget->setContent(href);
        }
        else if (mListType == 2)
        {
            //page list
            mpCurrentPageTarget->setContent(href);
        }
    }

}
/*==============================================================================
* Function : writeExifData
* Parameters: QImage *aThumbnail - The thumbnail buffer after encoding. Null
* when thumbnail is not encoded.
* Return Value : OMX_ERRORTYPE
* Description: Add the exif data and encoded thumbnail to the o/p buffer
==============================================================================*/
OMX_ERRORTYPE OMXJpegEncoder::writeExifData(QImage *aThumbnail,
  QIBuffer *aOutputBuffer)
{
  OMX_ERRORTYPE lret = OMX_ErrorNone;
  int lrc = 0;
  int enable_mobicat = 0;

#ifdef PROCESS_METADATA
  lret = processMetadata();

  if (OMX_ErrorNone != lret) {
    QIDBG_ERROR("%s:%d] processMetadata failed", __func__, __LINE__);
    return lret;
  }
#endif

  char value [32];
  property_get("persist.camera.mobicat", value, "0");
  enable_mobicat = atoi(value);

  //enable mobicat
  if (enable_mobicat > 0) {
    m_mobicatComposer = new QMobicatComposer();
    if (m_mobicatComposer == NULL) {
      QIDBG_ERROR("%s:%d] failed to create mobicat composer", __func__,
        __LINE__);
      return OMX_ErrorInsufficientResources;
    }

    if (enable_mobicat == PARSE_MOBICAT_DATA ||
      enable_mobicat == PARSE_MOBICAT_AND_3A_DATA) {
      char* mobicatStr = m_mobicatComposer->
        ParseMobicatData(m_Metadata.metadata);
      if (mobicatStr == 0) {
        QIDBG_ERROR("%s:%d] Error in composing mobicat string",
          __func__, __LINE__);
        return OMX_ErrorUndefined;
      }
      QIDBG_ERROR("%s:%d] m_mobicat.size %d", __func__, __LINE__,
        (int) strlen(mobicatStr));

      m_exifParams.SetMobicatFlag(true);
      m_exifParams.SetMobicat(mobicatStr);
    }
    if (enable_mobicat == PARSE_3A_DATA ||
      enable_mobicat == PARSE_MOBICAT_AND_3A_DATA) {
      char* stats_payload = m_mobicatComposer->
        Compose3AStatsPayload(m_Metadata.metadata);
      uint32_t stats_payload_size =
        m_mobicatComposer->Get3AStatsSize();

      if (stats_payload_size == 0) {
        QIDBG_ERROR("%s:%d] [MOBICAT_DBG] Stats debug payload size is 0",
          __func__, __LINE__);
      } else {
         m_exifParams.Set3AFlag(true);
         m_exifParams.Set3A(stats_payload, stats_payload_size);
      }
    }
  }

  lrc = m_composer->addBuffer(aOutputBuffer);

  if (lrc) {
    QIDBG_ERROR("%s:%d] failed", __func__, __LINE__);
    return OMX_ErrorUndefined;
  }
  m_exifParams.SetAppHeaderLen(0);
  if (aThumbnail) {
    m_exifParams.SetEncodeParams(m_thumbEncodeParams, true);
    m_exifParams.SetSubSampling(m_thumbSubsampling, true);
  }
  m_exifParams.SetEncodeParams(m_mainEncodeParams);
  m_exifParams.SetExif(&m_exifInfoObj);
  m_exifParams.SetSubSampling(m_subsampling);

  lrc = m_composer->SetParams(m_exifParams);
  if (lrc) {
    QIDBG_ERROR("%s:%d] failed", __func__, __LINE__);
    return OMX_ErrorUndefined;
  }

  lrc = m_composer->Start(aThumbnail);
  if (lrc) {
    QIDBG_ERROR("%s:%d] failed", __func__, __LINE__);
    return OMX_ErrorUndefined;
  }
  return lret;
}