int ksymp_set_data_source(KSYMediaPlayer *mp, const char *url)
{
    assert(mp);
    assert(url);
    MPTRACE("ksymp_set_data_source(url=\"%s\")\n", url);
    pthread_mutex_lock(&mp->mutex);
    int retval = ksymp_set_data_source_l(mp, url);
    pthread_mutex_unlock(&mp->mutex);
    MPTRACE("ksymp_set_data_source(url=\"%s\")=%d\n", url, retval);
    return retval;
}
int ksymp_set_data_source(KSYMediaPlayer *mp, const char *url, const char *header)
{
//#ifdef _ARM_
//    LOGW("name=%s", name);
//    android::CallStack stack;
//    stack.update(1, 100);
//    stack.dump("");
//#endif

    assert(mp);
    assert(url);
    MPTRACE("ksymp_set_data_source(url=\"%s\")\n", url);
    pthread_mutex_lock(&mp->mutex);
    int retval = ksymp_set_data_source_l(mp, url, header);
    pthread_mutex_unlock(&mp->mutex);
    MPTRACE("ksymp_set_data_source(url=\"%s\")=%d\n", url, retval);
    return retval;
}