int PlayerDriver::setupHttpStreamPost() { PvmiKvp iKVPSetAsync; OSCL_StackString<64> iKeyStringSetAsync; PvmiKvp *iErrorKVP = NULL; int error = 0; // PV will set a default user agent value. The below string will be appended to the default value. // The default value [PVPLAYER_ENGINE_SDKINFO_LABEL] can be found at device/extlibs/pv/engines/player/src/pv_player_sdkinfo.h iKVPSetAsync.key = _STRLIT_CHAR("x-pvmf/net/user-agent;valtype=wchar*"); OSCL_wHeapString<OsclMemAllocator> userAgent = _STRLIT_WCHAR("(Linux;U;Android 1.0)(AndroidMediaPlayer 1.0)"); iKVPSetAsync.value.pWChar_value=userAgent.get_str(); iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/http-timeout;valtype=uint32"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.uint32_value=20; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/num-redirect-attempts;valtype=uint32"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.uint32_value=4; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); // enable or disable HEAD request iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/http-header-request-disabled;valtype=bool"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.bool_value=false; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/max-tcp-recv-buffer-size-download;valtype=uint32"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.uint32_value=64000; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); return 0; }
OSCL_EXPORT_REF PvmiKvpType GetTypeFromKeyString(PvmiKeyType aKeyString) { if (aKeyString == NULL) { return PVMI_KVPTYPE_UNKNOWN; } // Determine the type char* paramstr = NULL; OSCL_StackString<24> typestr; OSCL_StackString<10> basestr(PVMI_KVPTYPE_STRING_CONSTCHAR); // value typestr = basestr; typestr += PVMI_KVPTYPE_VALUE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, typestr.get_str(), paramstr) > 0) { return PVMI_KVPTYPE_VALUE; } // pointer typestr = basestr; typestr += PVMI_KVPTYPE_POINTER_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, typestr.get_str(), paramstr) > 0) { return PVMI_KVPTYPE_POINTER; } // aggregate typestr = basestr; typestr += PVMI_KVPTYPE_AGGREGATE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, typestr.get_str(), paramstr) > 0) { return PVMI_KVPTYPE_AGGREGATE; } return PVMI_KVPTYPE_UNKNOWN; }
OSCL_EXPORT_REF PvmiKvpAttr GetAttrTypeFromKeyString(PvmiKeyType aKeyString) { if (aKeyString == NULL) { return PVMI_KVPATTR_UNKNOWN; } // Determine the attribute type char* paramstr = NULL; OSCL_StackString<16> attrstr; OSCL_StackString<8> basestr(PVMI_KVPATTR_STRING_CONSTCHAR); // cap attrstr = basestr; attrstr += PVMI_KVPATTR_CAP_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, attrstr.get_str(), paramstr) > 0) { return PVMI_KVPATTR_CAP; } // def attrstr = basestr; attrstr += PVMI_KVPATTR_DEF_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, attrstr.get_str(), paramstr) > 0) { return PVMI_KVPATTR_DEF; } // cur attrstr = basestr; attrstr += PVMI_KVPATTR_CUR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, attrstr.get_str(), paramstr) > 0) { return PVMI_KVPATTR_CUR; } return PVMI_KVPATTR_UNKNOWN; }
void ShoutcastControl::setProtocolInfo() { if (iSetProtocolInfo) return; if (!iProgDownloadSI || !iProtocol) return; // get all protocol info uint32 aMediaDataLength = iProtocol->getMediaDataLength(); if (aMediaDataLength == 0) return; uint32 aClipBitrate = iProtocol->getContenBitrate(); iInfoKvpVec.clear(); // media data length PvmiKvp mediaDataLengthKVP; OSCL_StackString<256> mediaDataLengthKVPString = _STRLIT_CHAR("x-pvmf/net/shoutcast-media-data-length;valtype=uint32"); mediaDataLengthKVP.key = mediaDataLengthKVPString.get_str(); mediaDataLengthKVP.value.uint32_value = aMediaDataLength; iInfoKvpVec.push_back(&mediaDataLengthKVP); // server rate PvmiKvp clipBitrateKVP; OSCL_StackString<256> clipBitrateKVPString = _STRLIT_CHAR("x-pvmf/net/shoutcast-clip-bitrate;valtype=uint32"); clipBitrateKVP.key = clipBitrateKVPString.get_str(); clipBitrateKVP.value.uint32_value = aClipBitrate; iInfoKvpVec.push_back(&clipBitrateKVP); iPlaybackByteRate = aClipBitrate >> 3; // is shoutcast session PvmiKvp shoutcastSessionKVP; OSCL_StackString<256> shoutcastSessionKVPString = _STRLIT_CHAR("x-pvmf/net/is-shoutcast-session;valtype=bool"); shoutcastSessionKVP.key = shoutcastSessionKVPString.get_str(); shoutcastSessionKVP.value.bool_value = true; iInfoKvpVec.push_back(&shoutcastSessionKVP); iProgDownloadSI->setProtocolInfo(iInfoKvpVec); iSetProtocolInfo = true; }
OSCL_EXPORT_REF PvmiKvpValueType GetValTypeFromKeyString(PvmiKeyType aKeyString) { if (aKeyString == NULL) { return PVMI_KVPVALTYPE_UNKNOWN; } // Determine the valtype char* paramstr = NULL; OSCL_StackString<64> valtypestr; OSCL_StackString<10> basestr(PVMI_KVPVALTYPE_STRING_CONSTCHAR); // bool valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_BOOL_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_BOOL; } // float valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_FLOAT_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_FLOAT; } // double valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_DOUBLE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_DOUBLE; } // uint8 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT8_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT8; } // int32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT32; } // uint32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT32; } // int64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT32; } // uint64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT32; } // wchar* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_WCHARPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_WCHARPTR; } // char* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_CHARPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_CHARPTR; } // uint8* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT8PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT8PTR; } // int32* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT32PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT32PTR; } // uint32* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT32PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT32PTR; } // int64* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_INT64PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_INT64PTR; } // uint64* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_UINT64PTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_UINT64PTR; } // float* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_FLOATPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_FLOATPTR; } // double* valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_DOUBLEPTR_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_DOUBLEPTR; } // ksv valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_KSV_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_KSV; } // pKvp valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_PKVP_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_PKVP; } // ppKvp valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_PPKVP_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_PPKVP; } // range_float valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_FLOAT_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_FLOAT; } // range_double valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_DOUBLE_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_DOUBLE; } // range_uint8 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_UINT8_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_UINT8; } // range_int32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_INT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_INT32; } // range_uint32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_UINT32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_UINT32; } // range_int64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_INT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_INT64; } // range_uint64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_RANGE_UINT64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_RANGE_UINT64; } // bitarray32 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_BITARRAY32_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_BITARRAY32; } // bitarray64 valtypestr = basestr; valtypestr += PVMI_KVPVALTYPE_BITARRAY64_STRING_CONSTCHAR; if (pv_mime_string_parse_param(aKeyString, valtypestr.get_str(), paramstr) > 0) { return PVMI_KVPVALTYPE_BITARRAY64; } return PVMI_KVPVALTYPE_UNKNOWN; }