//!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; }