OSCL_EXPORT_REF PVMFStatus PVMp4FFComposerPort::getParametersSync(PvmiMIOSession session, PvmiKeyType identifier, PvmiKvp*& parameters, int& num_parameter_elements, PvmiCapabilityContext context) { LOG_STACK_TRACE((0, "PVMp4FFComposerPort::getParametersSync")); OSCL_UNUSED_ARG(session); OSCL_UNUSED_ARG(context); parameters = NULL; num_parameter_elements = 0; PVMFStatus status = PVMFFailure; //identifier is a key and is assumed to be null terminated if (oscl_strcmp(identifier, INPUT_FORMATS_CAP_QUERY) == 0) { num_parameter_elements = 9; status = AllocateKvp(parameters, (PvmiKeyType)INPUT_FORMATS_VALTYPE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMp4FFComposerPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); } else { parameters[0].value.pChar_value = (char*)PVMF_MIME_AMR_IETF; parameters[1].value.pChar_value = (char*)PVMF_MIME_MPEG4_AUDIO; parameters[2].value.pChar_value = (char*)PVMF_MIME_M4V; parameters[3].value.pChar_value = (char*)PVMF_MIME_H2631998; parameters[4].value.pChar_value = (char*)PVMF_MIME_H2632000; parameters[5].value.pChar_value = (char*)PVMF_MIME_H264_VIDEO_MP4; parameters[6].value.pChar_value = (char*)PVMF_MIME_3GPP_TIMEDTEXT; parameters[7].value.pChar_value = (char*)PVMF_MIME_AMRWB_IETF; parameters[8].value.pChar_value = (char*)PVMF_MIME_QCELP; } } else if (oscl_strcmp(identifier, INPUT_FORMATS_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, (PvmiKeyType)INPUT_FORMATS_VALTYPE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMp4FFComposerPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); } else { parameters[0].value.pChar_value = (char*)iFormat.getMIMEStrPtr(); } } return status; }
PVMFStatus PVMFAvcEncPort::GetInputParametersSync(PvmiKeyType identifier, PvmiKvp*& parameters, int& num_parameter_elements) { if (iTag != PVMF_AVCENC_NODE_PORT_TYPE_INPUT) return PVMFFailure; PVMFStatus status = PVMFSuccess; if (pv_mime_strcmp(identifier, INPUT_FORMATS_CAP_QUERY) == 0) { num_parameter_elements = 1;//4; status = AllocateKvp(parameters, INPUT_FORMATS_VALTYPE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetInputParametersSync: Error - AllocateKvp failed. status=%d", status)); return status; } parameters[0].value.uint32_value = PVMF_YUV420; parameters[1].value.uint32_value = PVMF_YUV422; parameters[2].value.uint32_value = PVMF_RGB12; parameters[3].value.uint32_value = PVMF_RGB24; } return status; }
PVMFStatus PVMFAvcEncPort::GetOutputParametersSync(PvmiKeyType identifier, PvmiKvp*& parameters, int& num_parameter_elements) { if (iTag != PVMF_AVCENC_NODE_PORT_TYPE_OUTPUT) return PVMFFailure; PVMFStatus status = PVMFSuccess; if (pv_mime_strcmp(identifier, OUTPUT_FORMATS_CAP_QUERY) == 0) { num_parameter_elements = 2;//3; status = AllocateKvp(parameters, OUTPUT_FORMATS_VALTYPE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); } else { parameters[0].value.uint32_value = PVMF_H264_RAW; parameters[1].value.uint32_value = PVMF_H264_MP4; //parameters[2].value.uint32_value = PVMF_H264; } } else if (pv_mime_strcmp(identifier, OUTPUT_FORMATS_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, OUTPUT_FORMATS_VALTYPE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); } else { parameters[0].value.uint32_value = iNode->GetCodecType(); } } else if (pv_mime_strcmp(identifier, VIDEO_OUTPUT_WIDTH_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, VIDEO_OUTPUT_WIDTH_CUR_VALUE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); return status; } uint32 width, height; status = iNode->GetOutputFrameSize(0, width, height); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error -iNode->GetOutputFrameSize failed. status=%d", status)); } else { parameters[0].value.uint32_value = width; } } else if (pv_mime_strcmp(identifier, VIDEO_OUTPUT_HEIGHT_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, VIDEO_OUTPUT_HEIGHT_CUR_VALUE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); return status; } else { uint32 width, height; status = iNode->GetOutputFrameSize(0, width, height); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - iNode->GetOutputFrameSize failed. status=%d", status)); } else { parameters[0].value.uint32_value = height; } } } else if (pv_mime_strcmp(identifier, VIDEO_OUTPUT_FRAME_RATE_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, VIDEO_OUTPUT_FRAME_RATE_CUR_VALUE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); return status; } else { parameters[0].value.float_value = iNode->GetOutputFrameRate(0); } } else if (pv_mime_strcmp(identifier, OUTPUT_BITRATE_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, OUTPUT_BITRATE_CUR_VALUE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); return status; } else { parameters[0].value.uint32_value = iNode->GetOutputBitRate(0); } } else if (pv_mime_strcmp(identifier, VIDEO_OUTPUT_IFRAME_INTERVAL_CUR_QUERY) == 0) { num_parameter_elements = 1; status = AllocateKvp(parameters, VIDEO_OUTPUT_IFRAME_INTERVAL_CUR_VALUE, num_parameter_elements); if (status != PVMFSuccess) { LOG_ERR((0, "PVMFAvcEncPort::GetOutputParametersSync: Error - AllocateKvp failed. status=%d", status)); return status; } else { parameters[0].value.uint32_value = iNode->GetIFrameInterval(); } } return status; }