#include "sys_inc.h" #include "gb28181.h" #include "live_video.h" #include "live_audio.h" #include "gb28181_cfg.h" #include "native.h" extern GB28181_CFG g_gb28181_cfg; JNIEXPORT jint JNICALL Java_com_happytime_lcc_Gb28181Device_gb28181Start(JNIEnv * env, jclass this, jstring server_ip, jint server_port, jstring server_id, jstring server_domain, jstring password, jstring device_id, jstring device_name, jstring channel_id, jstring channel_name, jint protocol, jint reg_expires, jint heartbeat_interval, jint heartbeat_count, jint log_enable, jint log_level) { const char * p_server_ip = (*env)->GetStringUTFChars(env, server_ip, 0); const char * p_server_id = (*env)->GetStringUTFChars(env, server_id, 0); const char * p_server_domain = (*env)->GetStringUTFChars(env, server_domain, 0); const char * p_password = (*env)->GetStringUTFChars(env, password, 0); const char * p_device_id = (*env)->GetStringUTFChars(env, device_id, 0); const char * p_device_name = (*env)->GetStringUTFChars(env, device_name, 0); const char * p_channel_id = (*env)->GetStringUTFChars(env, channel_id, 0); const char * p_channel_name = (*env)->GetStringUTFChars(env, channel_name, 0); memset(&g_gb28181_cfg, 0, sizeof(g_gb28181_cfg)); strncpy(g_gb28181_cfg.server_ip, p_server_ip, sizeof(g_gb28181_cfg.server_ip)-1); strncpy(g_gb28181_cfg.server_id, p_server_id, sizeof(g_gb28181_cfg.server_id)-1); strncpy(g_gb28181_cfg.server_domain, p_server_domain, sizeof(g_gb28181_cfg.server_domain)-1); strncpy(g_gb28181_cfg.password, p_password, sizeof(g_gb28181_cfg.password)-1); strncpy(g_gb28181_cfg.device_id, p_device_id, sizeof(g_gb28181_cfg.device_id)-1); strncpy(g_gb28181_cfg.device_name, p_device_name, sizeof(g_gb28181_cfg.device_name)-1); g_gb28181_cfg.channel_nums = 1; strncpy(g_gb28181_cfg.channels[0].cid, p_channel_id, sizeof(g_gb28181_cfg.channels[0].cid)-1); strncpy(g_gb28181_cfg.channels[0].cname, p_channel_name, sizeof(g_gb28181_cfg.channels[0].cname)-1); strcpy(g_gb28181_cfg.channels[0].media_url, "live"); g_gb28181_cfg.server_port = server_port; g_gb28181_cfg.local_port = 0; g_gb28181_cfg.protocol = protocol; g_gb28181_cfg.media_protocol = 1; g_gb28181_cfg.reg_expires = reg_expires; g_gb28181_cfg.heartbeat_interval = heartbeat_interval; g_gb28181_cfg.heartbeat_count = heartbeat_count; g_gb28181_cfg.log_enable = log_enable; g_gb28181_cfg.log_level = log_level; g_gb28181_cfg.media_base_port = 19000; if (g_gb28181_cfg.log_enable) { log_init("/sdcard/gb28181device.log"); log_set_level(g_gb28181_cfg.log_level); } else { log_close(); } int ret = gb28181_start1(); (*env)->ReleaseStringChars(env, server_ip, p_server_ip); (*env)->ReleaseStringChars(env, server_id, p_server_id); (*env)->ReleaseStringChars(env, server_domain, p_server_domain); (*env)->ReleaseStringChars(env, password, p_password); (*env)->ReleaseStringChars(env, device_id, p_device_id); (*env)->ReleaseStringChars(env, device_name, p_device_name); (*env)->ReleaseStringChars(env, channel_id, p_channel_id); (*env)->ReleaseStringChars(env, channel_name, p_channel_name); return ret; } JNIEXPORT void JNICALL Java_com_happytime_lcc_Gb28181Device_gb28181Stop(JNIEnv * env, jclass this) { gb28181_stop(); } JNIEXPORT void JNICALL Java_com_happytime_lcc_Gb28181Device_sendVideoData(JNIEnv * env, jclass this, jint devid, jbyteArray data, jint len) { jbyte * p_data = (*env)->GetByteArrayElements(env, data, NULL); media_live_put_video(devid, p_data, len); (*env)->ReleaseByteArrayElements(env, data, p_data, 0); } JNIEXPORT void JNICALL Java_com_happytime_lcc_Gb28181Device_sendAudioData(JNIEnv * env, jclass this, jint devid, jbyteArray data, jint len) { jbyte * p_data = (*env)->GetByteArrayElements(env, data, NULL); media_live_put_audio(devid, p_data, len, 0); (*env)->ReleaseByteArrayElements(env, data, p_data, 0); }