Variant BaseAssetObjectItem::getData(int column, ItemRole::Id roleId) const { if (column != 0) { return Variant(); } if (roleId == ValueRole::roleId_) { return getDisplayText(0); } else if (roleId == IndexPathRole::roleId_) { return getFullPath(); } else if (roleId == ThumbnailRole::roleId_) { return getThumbnail(0); } else if (roleId == TypeIconRole::roleId_) { return getTypeIconResourceString(); } else if (roleId == SizeRole::roleId_) { return getSize(); } else if (roleId == CreatedTimeRole::roleId_) { return getCreatedTime(); } else if (roleId == ModifiedTimeRole::roleId_) { return getModifiedTime(); } else if (roleId == AccessedTimeRole::roleId_) { return getAccessedTime(); } else if (roleId == IsDirectoryRole::roleId_) { return isDirectory(); } else if (roleId == IsReadOnlyRole::roleId_) { return isReadOnly(); } else if (roleId == IsCompressedRole::roleId_) { return isCompressed(); } else if (roleId == ItemRole::itemIdId) { return intptr_t(this); } return Variant(); }
int createThumbnailPhoto(const char *path, char **attr2) { IXML_Document *doc = NULL; char reqXML[2048] = {0}; char thumbnail[1024] = {0}; char respondBuf[2048] = {0}; char *errNum = NULL; char *errMsg = NULL; int respondLen = 2048; getThumbnail(path, thumbnail); if(fileExists(thumbnail) == 1) remove(thumbnail); sprintf (reqXML, "<?xml version=\"1.0\" encoding=\"utf-8\"?>" "<cmd>" "<InputLocation>%s</InputLocation>" "<OutputLocation>%s</OutputLocation>" "<Size>128</Size>" "</cmd>", path, thumbnail); if(processTCPReqRsp(ZAPP_ZSCALE_SOCKET, reqXML, strlen(reqXML), respondBuf, &respondLen, 3) == 0){ if((doc = ixmlParseBuffer(respondBuf)) != NULL){ errNum = ixmlGetFirstDocumentItem(doc, "err"); if(strcmp(errNum, "0") != 0){ errMsg = ixmlGetFirstDocumentItem(doc, "msg"); ZError(DBG_MISC, "create thumbnail failed. errNum->%s, errMsg-> %s", errNum, errMsg); free(errMsg); } else *attr2 = strdup(thumbnail); free(errNum); ixmlDocument_free(doc); } else ZError(DBG_MISC, "zscale respond is NULL"); } else ZError(DBG_MISC, "call zscale failed."); return 0; }
void CmaEvent::vitaEventSendObjectThumb(vita_event_t *event, int eventId) { qDebug("Event recieved in %s, code: 0x%x, id: %d", Q_FUNC_INFO, event->Code, eventId); QMutexLocker locker(&m_db->mutex); int ohfi = event->Param2; metadata_t metadata; if(!m_db->getObjectMetadata(ohfi, metadata)) { qWarning("Cannot find OHFI %d in database.", ohfi); VitaMTP_ReportResult(device, eventId, PTP_RC_VITA_Invalid_OHFI); return; } QString fullpath = m_db->getAbsolutePath(ohfi); QByteArray data = getThumbnail(fullpath, metadata.dataType, &g_thumbmeta); if(data.size() == 0) { qWarning() << "Cannot find/read thumbnail for" << fullpath; VitaMTP_ReportResult(device, eventId, PTP_RC_VITA_Invalid_Data); return; } //FIXME: remove this after fixing vitamtp // workaround for the vitamtp locale bug char *locale = strdup(setlocale(LC_ALL, NULL)); setlocale(LC_ALL, "C"); if(VitaMTP_SendObjectThumb(device, eventId, (metadata_t *)&g_thumbmeta, (uchar *)data.data(), data.size()) != PTP_RC_OK) { qWarning("Error sending thumbnail"); } else { VitaMTP_ReportResult(device, eventId, PTP_RC_OK); } // restore locale setlocale(LC_ALL, locale); free(locale); }
TImage getThumbnail(const boost::filesystem::path& imagePath) { KeyType ignoreKey; return getThumbnail(ignoreKey, imagePath); }
TImage getThumbnail(const std::string& imagePath) { return getThumbnail(boost::filesystem::path(imagePath)); }
int getFrameAt(int64_t timeUs, int width, int height) { int ret = -1; AVFrame* pFrame = NULL; ret = avformat_seek_file(m_pFormatContext, -1, INT16_MIN, timeUs, INT16_MAX, 0); pFrame = av_frame_alloc(); m_pThumbFrame = av_frame_alloc(); ret = openDecoder(); if (ret != 0) { av_frame_free(&pFrame); av_frame_free(&m_pThumbFrame); return ret; } #ifdef DEBUG_SPEND_TIME #ifdef _WIN32 DWORD start_time = timeGetTime(); #else struct timeval start, end; gettimeofday(&start, NULL); #endif #endif ret = decodeOneFrame(pFrame); if (ret < 0) { av_frame_free(&pFrame); av_frame_free(&m_pThumbFrame); return ret; } #ifdef DEBUG_SPEND_TIME #ifdef _WIN32 DWORD end_time = timeGetTime(); printf("decodeOneFrame spend time = %d ms\n", end_time - start_time); #else gettimeofday(&end, NULL); int spend_time = (end.tv_sec - start.tv_sec) * 1000 + (end.tv_usec - start.tv_usec) / 1000; printf("spend_time = %d ms\n", spend_time); #endif #endif ret = getThumbnail(pFrame, m_pThumbFrame, width, height); if (ret < 0) { av_frame_free(&pFrame); av_frame_free(&m_pThumbFrame); return ret; } // save the rgb565 FILE *pFile = fopen(strThumbFileName, "ab"); if (pFile) { fwrite(m_pThumbFrame->data[0], 1, m_pThumbFrame->width * m_pThumbFrame->height * 2, pFile); fclose(pFile); } av_frame_free(&pFrame); av_frame_free(&m_pThumbFrame); closeDecoder(); return ret; }