bool PVMFOMXEncPort::pvmiSetPortFormatSpecificInfoSync(OsclRefCounterMemFrag& aMemFrag) { if ((iConnectedPort) && (iTag == PVMF_OMX_ENC_NODE_PORT_TYPE_OUTPUT)) { OsclAny* temp = NULL; iConnectedPort->QueryInterface(PVMI_CAPABILITY_AND_CONFIG_PVUUID, temp); PvmiCapabilityAndConfig *config = (PvmiCapabilityAndConfig*) temp; /* * Create PvmiKvp for capability settings */ if ((config) && (aMemFrag.getMemFragSize() > 0)) { OsclMemAllocator alloc; PvmiKvp kvp; kvp.key = NULL; kvp.length = oscl_strlen(PVMF_FORMAT_SPECIFIC_INFO_KEY) + 1; // +1 for \0 kvp.key = (PvmiKeyType)alloc.ALLOCATE(kvp.length); if (kvp.key == NULL) { return false; } oscl_strncpy(kvp.key, PVMF_FORMAT_SPECIFIC_INFO_KEY, kvp.length); kvp.value.key_specific_value = (OsclAny*)(aMemFrag.getMemFragPtr()); kvp.capacity = aMemFrag.getMemFragSize(); kvp.length = aMemFrag.getMemFragSize(); PvmiKvp* retKvp = NULL; // for return value int32 err; OSCL_TRY(err, config->setParametersSync(NULL, &kvp, 1, retKvp););
OSCL_EXPORT_REF bool PVMFOMXDecPort::pvmiSetPortFormatSpecificInfoSync(OsclRefCounterMemFrag& aMemFrag, PvmiKeyType KvpKey) { if ((iConnectedPort) && (iTag == PVMF_OMX_DEC_NODE_PORT_TYPE_OUTPUT)) { OsclAny* temp = NULL; iConnectedPort->QueryInterface(PVMI_CAPABILITY_AND_CONFIG_PVUUID, temp); PvmiCapabilityAndConfig *config = (PvmiCapabilityAndConfig*)temp; /* * Create PvmiKvp for capability settings */ if ((config) && (aMemFrag.getMemFragSize() > 0)) { PvmiKvp kvp; kvp.length = oscl_strlen(KvpKey) + 1; // +1 for \0 kvp.key = KvpKey; if (kvp.key == NULL) { return false; } kvp.value.key_specific_value = (OsclAny*)(aMemFrag.getMemFragPtr()); kvp.capacity = aMemFrag.getMemFragSize(); PvmiKvp* retKvp = NULL; // for return value int32 err; OSCL_TRY(err, config->setParametersSync(NULL, &kvp, 1, retKvp););
void PVMFBufferDataSource::TimeoutOccurred(int32 timerID, int32 timeoutInfo) { OSCL_UNUSED_ARG(timerID); unsigned bytesToSend = timeoutInfo; if (bytesToSend <= 0) return; if (!IsConnected()) return; // Create new media data buffer OsclSharedPtr<PVMFMediaDataImpl> mediaDataImpl = iMediaDataAlloc->allocate(bytesToSend); PVMFSharedMediaDataPtr mediaData; int leavecode = 0; OSCL_TRY(leavecode, mediaData = PVMFMediaData::createMediaData(mediaDataImpl)); OSCL_FIRST_CATCH_ANY(leavecode, return); // Send FSI if available if (iFsi) { OsclSharedPtr<PVMFMediaDataImpl> fsiMediaDataImpl = iMediaDataAlloc->allocate(iFsiLen); PVMFSharedMediaDataPtr fsiMediaData; OSCL_TRY(leavecode, fsiMediaData = PVMFMediaData::createMediaData(fsiMediaDataImpl)); OSCL_FIRST_CATCH_ANY(leavecode, return); OsclRefCounterMemFrag fsi_frag; fsiMediaData->getMediaFragment(0, fsi_frag); oscl_memcpy((uint8*)fsi_frag.getMemFragPtr(), iFsi, iFsiLen); fsi_frag.getMemFrag().len = iFsiLen; mediaData->setFormatSpecificInfo(fsi_frag); OSCL_DEFAULT_FREE(iFsi); iFsi = NULL; iFsiLen = 0; } // Retrieve memory fragment to write to OsclRefCounterMemFrag refCtrMemFrag; mediaData->getMediaFragment(0, refCtrMemFrag); if (refCtrMemFrag.getCapacity() < bytesToSend) return; oscl_memset((uint8*)refCtrMemFrag.getMemFragPtr(), 7, bytesToSend); mediaDataImpl->setMediaFragFilledLen(0, bytesToSend); mediaData->setTimestamp(iTimestamp); iTimestamp += iSampleInterval; // Send frame to downstream node PVMFSharedMediaMsgPtr mediaMsg; convertToPVMFMediaMsg(mediaMsg, mediaData); QueueOutgoingMsg(mediaMsg); }