void PVMFFileOutputNode::setParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, int aNumElements, PvmiKvp* &aRetKVP) { PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE, (0, "PVMFFileOutputNode::setParametersSync()")); OSCL_UNUSED_ARG(aSession); // Complete the request synchronously if (NULL == aParameters || aNumElements < 1) { if (aParameters) { aRetKVP = aParameters; } PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMFFileOutputNode::setParametersSync() Passed in parameter invalid")); return; } // Go through each parameter for (int32 paramind = 0; paramind < aNumElements; ++paramind) { // Count the number of components and parameters in the key int compcount = pv_mime_string_compcnt(aParameters[paramind].key); // Retrieve the first component from the key string char* compstr = NULL; pv_mime_string_extract_type(0, aParameters[paramind].key, compstr); if ((pv_mime_strcmp(compstr, _STRLIT_CHAR("x-pvmf/file/output")) < 0) || compcount < 4) { // First 3 components should be "x-pvmf/file/output" and there must // be at least four components aRetKVP = &aParameters[paramind]; PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMFFileOutputNode::setParametersSync() Unsupported key")); return; } if (4 == compcount) { // Verify and set the passed-in mp4 file output node setting PVMFStatus retval = VerifyAndSetConfigParameter(aParameters[paramind], true); if (PVMFSuccess != retval) { aRetKVP = &aParameters[paramind]; PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMFFileOutputNode::setParametersSync() Setting parameter %d failed", paramind)); return; } } else { // Do not support more than 5 components right now aRetKVP = &aParameters[paramind]; PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMFFileOutputNode::setParametersSync() Unsupported key")); return; } } PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE, (0, "PVMFFileOutputNode::setParametersSync() Out")); }
PVMFStatus PVMp4FFComposerNode::verifyParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, int aNumElements) { PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE, (0, "PVMp4FFComposerNode::verifyParametersSync()")); OSCL_UNUSED_ARG(aSession); if (NULL == aParameters || aNumElements < 1) { PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMp4FFComposerNode::verifyParametersSync() Passed in parameter invalid")); return PVMFErrArgument; } // Go through each parameter for (int32 paramind = 0; paramind < aNumElements; ++paramind) { // Count the number of components and parameters in the key int compcount = pv_mime_string_compcnt(aParameters[paramind].key); // Retrieve the first component from the key string char* compstr = NULL; pv_mime_string_extract_type(0, aParameters[paramind].key, compstr); if ((pv_mime_strcmp(compstr, _STRLIT_CHAR("x-pvmf/composer/mp4")) < 0) || compcount < 2) { // First 2 components should be "x-pvmf/composer/mp4" and there must // be at least four components PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMp4FFComposerNode::verifyParametersSync() Unsupported key")); return PVMFErrNotSupported; } if (2 == compcount) { // Verify and set the passed-in composer node setting // PVMFStatus retval = VerifyAndSetConfigParameter(aParameters[paramind], false); PVMFStatus retval = VerifyAndSetConfigParameter(aParameters[paramind], false); if (retval != PVMFSuccess) { PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMp4FFComposerNode::verifyParametersSync() Setting parameter %d failed", paramind)); return retval; } } else { // Do not support more than 2 components right now PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PVMp4FFComposerNode::verifyParametersSync() Unsupported key")); return PVMFErrNotSupported; } } PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE, (0, "PVMp4FFComposerNode::verifyParametersSync() Out")); return PVMFSuccess; }
void PvmfMediaInputNode::setParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, int aNumElements, PvmiKvp* &aRetKVP) { PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE, (0, "PvmfMediaInputNode::setParametersSync()")); OSCL_UNUSED_ARG(aSession); // Complete the request synchronously if (NULL == aParameters || aNumElements < 1) { if (aParameters) { aRetKVP = aParameters; } PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PvmfMediaInputNode::setParametersSync() Passed in parameter invalid")); return; } // Go through each parameter for (int32 paramind = 0; paramind < aNumElements; ++paramind) { // Count the number of components and parameters in the key int compcount = pv_mime_string_compcnt(aParameters[paramind].key); // Retrieve the first component from the key string char* compstr = NULL; pv_mime_string_extract_type(0, aParameters[paramind].key, compstr); if ((compcount == 3) && (pv_mime_strcmp(compstr, _STRLIT_CHAR("x-pvmf/datasource")) == 0)) { // There must be exactly 3 components and // First 2 components should be "x-pvmf/datasource". // Verify and set the passed-in media input setting PVMFStatus retval = VerifyAndSetConfigParameter(aParameters[paramind], true); if (PVMFSuccess != retval) { aRetKVP = &aParameters[paramind]; PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_ERR, (0, "PvmfMediaInputNode::setParametersSync() Setting parameter %d failed", paramind)); return; } } else if ((compcount == 2) && (pv_mime_strcmp(compstr, PVMF_AUTHORING_CLOCK_KEY) == 0)) { //pass the clock to media input comp if (iMediaIOConfig != NULL) { iMediaIOConfig->setParametersSync(NULL, aParameters, aNumElements, aRetKVP); } } else { //pass it on to port to be sent upstream //assume just one output port for now if (iOutPortVector.size() == 1) { PvmfMediaInputNodeOutPort* outPort = iOutPortVector[0]; if (outPort != NULL) { PVMFPortInterface* connectedPort = outPort->getConnectedPort(); if (connectedPort != NULL) { OsclAny* temp = NULL; connectedPort->QueryInterface(PVMI_CAPABILITY_AND_CONFIG_PVUUID, temp); PvmiCapabilityAndConfig *config = OSCL_STATIC_CAST(PvmiCapabilityAndConfig*, temp); config->setParametersSync(aSession, aParameters, aNumElements, aRetKVP); return; } } }