Пример #1
0
/** 在字符串中获取指定样式标签中的数据 */
static const wchar_t* 
StyleTag_GetTagDataByTagName(	const wchar_t *str,
				const char *in_tag_name,
				char *out_tag_data )
{
	int i, j, len, tag_len; 
	
	len = wcslen( str );
	DEBUG_MSG2("len = %d\n", len);
	tag_len = strlen( in_tag_name );
	if( str[0] != '<' ) {
		DEBUG_MSG2("str[0] != '<'\n");
		return NULL;
	} 
	/* 匹配标签前半部分 */
	for( j=0,i=1; i<len; ++i ) {
		if( str[i] == ' ' ) { 
			if( j == 0 || j >= tag_len ) { 
				continue;
			}
			return NULL;
		}
		else if( str[i] == in_tag_name[j] ) { 
			++j;
			continue;
		}
		/* 如果标签名部分已经匹配完 */
		if( j>= tag_len && str[i] == '=' ) {
			++i; 
			break;
		}
		/* 否则,有误 */
		return NULL;
	}
	DEBUG_MSG2("tag is: %s\n", tag);
	/* 获取标签后半部分 */
	for(j=0; i<len; ++i) {
		DEBUG_MSG2("str[%d]: %c\n", i, str[i]);
		if( str[i] == ' ' ) {
			continue; 
		} else {
			/* 标签结束,退出 */
			if( str[i] == '>' ) {
				++i;
				break;
			}
			/* 保存标签内的数据 */
			out_tag_data[j] = str[i];
			++j;
		}
	}
	out_tag_data[j] = 0;
	DEBUG_MSG2("out_tag_data: %s\n", out_tag_data);
	if(i >= len ) {
		return NULL;
	}
	return &str[i];
}
Пример #2
0
/** 在字符串中获取指定样式标签中的数据 */
static const wchar_t* scan_style_tag_by_name( const wchar_t *wstr, 
					    const char *name, char *data_buff )
{
	int i, j, len, tag_len; 
	
	len = wcslen( wstr );
	DEBUG_MSG2("len = %d\n", len);
	tag_len = strlen( name );
	if( wstr[0] != '<' ) {
		DEBUG_MSG2("wstr[0] != '<'\n");
		return NULL;
	} 
	/* 匹配标签前半部分 */
	for( j=0,i=1; i<len; ++i ) {
		if( wstr[i] == ' ' ) { 
			if( j == 0 || j >= tag_len ) { 
				continue;
			}
			return NULL;
		}
		else if( wstr[i] == name[j] ) { 
			++j;
			continue;
		}
		/* 如果标签名部分已经匹配完 */
		if( j>= tag_len && wstr[i] == '=' ) {
			++i; 
			break;
		}
		/* 否则,有误 */
		return NULL;
	}
	DEBUG_MSG2("tag is: %s\n", tag);
	/* 获取标签后半部分 */
	for(j=0; i<len; ++i) {
		DEBUG_MSG2("wstr[%d]: %c\n", i, wstr[i]);
		if( wstr[i] == ' ' ) {
			continue; 
		} else {
			/* 标签结束,退出 */
			if( wstr[i] == '>' ) {
				++i;
				break;
			}
			/* 保存标签内的数据 */
			data_buff[j] = wstr[i];
			++j;
		}
	}
	data_buff[j] = 0;
	DEBUG_MSG2("data_buff: %s\n", data_buff);
	if(i >= len ) {
		return NULL;
	}
	return &wstr[i];
}
Пример #3
0
/** 处理样式标签 */
const wchar_t*
StyleTagStack_ScanBeginTag( LCUI_StyleTagStack *tags, const wchar_t *str )
{
	const wchar_t *q;
	LCUI_StyleTagData data;
	
	/* 开始处理样式标签 */
	q = scan_style_tag_data( str, &data );
	DEBUG_MSG2("handle_style_tag():%p\n", q);
	if( q ) {
		DEBUG_MSG2("add style data\n");
		/* 将标签样式数据加入队列 */
		LinkedList_AddData( tags, &data );
	}
	return q;
}
Пример #4
0
/** 处理样式标签 */
LCUI_API const wchar_t*
StyleTag_ProcessTag( LCUI_Queue *tags, const wchar_t *str )
{
	const wchar_t *q;
	StyleTag_Data data;
	
	/* 开始处理样式标签 */
	q = StyleTag_ConvertTagToStyleData( str, &data );
	DEBUG_MSG2("handle_style_tag():%p\n", q);
	if( q ) {
		DEBUG_MSG2("add style data\n");
		/* 将标签样式数据加入队列 */
		StyleTag_Add( tags, &data ); 
	}
	return q;
}
Пример #5
0
static wchar_t *
handle_style_tag( LCUI_TextLayer *layer, wchar_t *str )
{
	wchar_t *q;
	tag_style_data data;
	
	/* 开始处理样式标签 */
	q = covernt_tag_to_style_data ( str, &data );
	DEBUG_MSG2("handle_style_tag():%p\n", q);
	if( q ) {
		DEBUG_MSG2("add style data\n");
		/* 将标签样式数据加入队列 */
		TextLayer_TagStyle_Add( layer, &data ); 
	}
	return q;
}
Пример #6
0
JNIEXPORT jint JNICALL Java_com_pbi_dvb_dvbinterface_NativePlayer_DVBPlayerPvrRecGetStatus(
		JNIEnv *env, jobject obj, jobject RecStatusObj) {
	int iRet = 0;

	jclass jRecStatusCls = NULL;

	DVBPlayer_PVR_REC_STATUS_t tRecStatus;

	memset(&tRecStatus, 0, sizeof(DVBPlayer_PVR_REC_STATUS_t));

	iRet = DVBPlayer_PVR_RecGetStatus(&tRecStatus);
	if (0 != iRet) {
		DEBUG_MSG2(-1, "[%s %d] DVBPlayer_PVR_RecGetStatus error!", __FUNCTION__, __LINE__ );
		return -1;
	}

	jRecStatusCls = env->GetObjectClass(RecStatusObj);
	if (NULL == jRecStatusCls) {
		DEBUG_MSG2(-1, "[%s %d]  class is NULL !!!", __FUNCTION__, __LINE__ );
		return -1;
	}

	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "enState",
			tRecStatus.enState);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32Reserved",
			tRecStatus.u32Reserved);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32CurWriteFrame",
			tRecStatus.u32CurWriteFrame);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32CurTimeInMs",
			tRecStatus.u32CurTimeInMs);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32StartTimeInMs",
			tRecStatus.u32StartTimeInMs);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32EndTimeInMs",
			tRecStatus.u32EndTimeInMs);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32BufSize",
			tRecStatus.u32BufSize);
	SetIntCtoJava(env, RecStatusObj, jRecStatusCls, "u32UsedSize",
			tRecStatus.u32UsedSize);
	SetDoubleCtoJava(env, RecStatusObj, jRecStatusCls, "u64CurWritePos",
			tRecStatus.u64CurWritePos);

	return 0;
}
Пример #7
0
int 
TextLayer_Text_Backspace( LCUI_TextLayer *layer, int n )
/* 删除光标左边处n个字符 */
{
	int i, row_len;
	LCUI_Pos char_pos;
	Text_RowData *row_ptr;
	
	if( layer->read_only ) {
		return -1;
	}
	
	if( n <= 0 ) {
		return -2;
	}
	/* 计算当前光标所在字的位置 */
	char_pos = TextLayer_Get_Cursor_Pos( layer );
	DEBUG_MSG2( "before: %d,%d\n", char_pos.x, char_pos.y );
	for( i=n; char_pos.y>=0; --char_pos.y ) {
		row_ptr = Queue_Get( &layer->rows_data, char_pos.y );
		row_len = Queue_Get_Total( &row_ptr->string );
		
		if( char_pos.x == -1 ) {
			char_pos.x = row_len;
		}
		for( ; char_pos.x>=0 && i>0; --char_pos.x,--i );
		
		if( i<=0 && char_pos.x >= 0 ) {
			break;
		}
	}
	DEBUG_MSG2( "after: %d,%d\n", char_pos.x, char_pos.y );
	if( i>0 ) {
		n -= i;
	}
	DEBUG_MSG2("start_pos: %d,%d, len: %d\n", char_pos.x, char_pos.y, n);
	/* 开始删除文字 */
	_TextLayer_Text_Delete( layer, char_pos, n );
	/* 删除完后,需要将光标向左移动一个位置 */
	TextLayer_Set_Cursor_Pos( layer, char_pos );
	return 0;
}
Пример #8
0
/*
 * Class:     com_pbi_dvb_dvbinterface_NativePlayer
 * Method:    DVBPlayer_Get_Info
 * Signature: (Lcom/pbi/dvb/dvbinterface/NativePlayer/DVBPlayer_Info_t;)I
 */
JNIEXPORT jint JNICALL Java_com_pbi_dvb_dvbinterface_NativePlayer_DVBPlayerGetInfo(
		JNIEnv *env, jobject obj, jobject jInfoObj) {
	jint jRet = 0;
	jclass jCls = NULL;

	DVBPlayer_Info_t tInfo;

	memset(&tInfo, 0, sizeof(DVBPlayer_Info_t));

	jRet = DVBPlayer_Get_Info(&tInfo);

	DEBUG_MSG2(-1,T("LinKang:: tInfo.u16VideoPid = %d, tInfo.u16AudioPid = %d"),tInfo.u16VideoPid ,tInfo.u16AudioPid);

	if (0 != jRet) {
		return jRet;
	}

	jCls = env->GetObjectClass(jInfoObj);

	if (NULL == jCls) {
		DEBUG_MSG2(-1,T("LinKang:: jCls = env->GetObjectClass( jInfoObj ) return null...%s%d"),__FUNCTION__,__LINE__);

		return -1;
	}

	SetIntCtoJava(env, jInfoObj, jCls, "eRunningStatus", tInfo.eRunningStatus);
	SetIntCtoJava(env, jInfoObj, jCls, "eTunerStatus", tInfo.eTunerStatus);
	SetIntCtoJava(env, jInfoObj, jCls, "eProgType", tInfo.eProgType);
	SetIntCtoJava(env, jInfoObj, jCls, "u16ServiceId", tInfo.u16ServiceId);
	SetIntCtoJava(env, jInfoObj, jCls, "u16PMTPid", tInfo.ePMTStatus);
	SetIntCtoJava(env, jInfoObj, jCls, "u16VideoPid", tInfo.u16VideoPid);
	SetIntCtoJava(env, jInfoObj, jCls, "u16AudioPid", tInfo.u16AudioPid);
	SetIntCtoJava(env, jInfoObj, jCls, "u16AudioPid", tInfo.u16AudioPid);
	SetIntCtoJava(env, jInfoObj, jCls, "u16PCRPid", tInfo.u16PCRPid);

	DEBUG_MSG2(-1,T("LinKang:: tInfo.u16VideoPid = %d, tInfo.u16AudioPid = %d"),tInfo.u16VideoPid ,tInfo.u16AudioPid);

	DeleteLocalRef(env, jCls);

	return jRet;
}
Пример #9
0
JNIEXPORT jint JNICALL Java_com_pbi_dvb_dvbinterface_NativePlayer_DVBPlayerPvrRemoveFile(
		JNIEnv *env, jobject obj, jstring sFileName) {
	int iRet = 0;
	char Name[128];

	memset(Name, 0, 128);
	iRet = Jstringtoc_UTF8(env, sFileName, Name);
	if (0 != iRet) {
		DEBUG_MSG2(-1, "[%s %d] The Name is String to C error!", __FUNCTION__, __LINE__ );
		return -1;
	}

	DVBPlayer_PVR_PvrRemoveFile(Name);
	return 0;
}
Пример #10
0
JNIEXPORT jint JNICALL Java_com_pbi_dvb_dvbinterface_NativePlayer_DVBPlayerPvrPlayStart(
		JNIEnv *env, jobject obj, jobject PvrPlayObj) {
	jclass PvrPlayCls = NULL;
	jstring jName = NULL;
	DVBPlayer_PVR_Play_t tPlayerInfo;

	PvrPlayCls = env->GetObjectClass(PvrPlayObj);
	if (NULL == PvrPlayCls) {
		DEBUG_MSG2(-1, "[%s %d]  class is NULL !!!", __FUNCTION__, __LINE__ );
		return -1;
	}

	memset(&tPlayerInfo, 0, sizeof(DVBPlayer_PVR_Play_t));

	tPlayerInfo.PvrPlayType = (PVR_PLAYER_TYPE_E) GetIntJavaToC(env, PvrPlayObj,
			PvrPlayCls, "PvrPlayerType");
	jName = GetStringJavaToC(env, PvrPlayObj, PvrPlayCls, "sName");
	Jstringtoc_UTF8(env, jName, tPlayerInfo.FileName);

	return DVBPlayer_PVR_Play(&tPlayerInfo);;
}
Пример #11
0
// Initialize the client socket at a given port
int UDPConnection::InitClient(const char *serverName, int port){

  if(m_ConMode!=CONMODE_NONE){
    ERROR_MSG("Connection already initialized\n");
    return FALSE;
  }

  m_port = port;
  if((port<1024)||(port>65000)){
    fprintf(stderr,"port doit etre 1024<port<65000\n");
    return FALSE;
  }

  m_socket = socket(PF_INET,SOCK_DGRAM,0);
  if(m_socket<0){
    fprintf(stderr,"Erreur de creation de socket !!!\n");
    return FALSE;
  }

  m_server.sin_family = AF_INET;
  m_server.sin_port   = htons(m_port);

  m_host = gethostbyname(serverName);

  if ( m_host == (struct hostent *) 0 ) {
    fprintf(stderr,"Nom d'hote inconnu !!!\n");
    return FALSE;
  }
  memcpy( (char *) &m_server.sin_addr.s_addr,
	        (char *) m_host->h_addr,
	        m_host->h_length);

  DEBUG_MSG2("Client Initialization, server: %s port: %d\n",serverName, port);

  m_ConMode = CONMODE_CLIENT;

  return TRUE;
}
Пример #12
0
TextLayer_Text_Process(	LCUI_TextLayer *layer,
				int pos_type,
				wchar_t *new_text )
{
	LCUI_BOOL refresh = TRUE;
	LCUI_Pos cur_pos, des_pos;
	int total, cur_len, row, src_pos, total_row, n_ignore = 0;
	wchar_t *finish, *p, *q;
	
	LCUI_Pos tmp_pos;
	LCUI_CharData *char_ptr, char_data; 
	Text_RowData *cur_row_ptr, *tmp_row_ptr;
	
	/* 如果有选中的文本,那就删除 */
	//......  
	DEBUG_MSG1("enter\n");
	/* 如果是将文本追加至文本末尾 */
	if( pos_type == AT_TEXT_LAST ) {
		cur_pos.y = Queue_GetTotal( &layer->rows_data );
		if( cur_pos.y > 0 ) {
			--cur_pos.y;
		}
		cur_row_ptr = Queue_Get( &layer->rows_data, cur_pos.y );
		if( !cur_row_ptr ) {
			TextLayer_Text_Add_NewRow( layer );
			cur_row_ptr = Queue_Get( &layer->rows_data, cur_pos.y );
		}
		cur_pos.x = Queue_GetTotal( &cur_row_ptr->string );
		src_pos = Queue_GetTotal( &layer->text_source_data );
		des_pos = cur_pos;
	} else {/* 否则,是将文本插入至光标所在位置 */
		cur_pos = TextLayer_Cursor_GetPos( layer );
		DEBUG_MSG1( "cur_pos: %d,%d\n", cur_pos.x, cur_pos.y );
		cur_row_ptr = Queue_Get( &layer->rows_data, cur_pos.y );
		DEBUG_MSG1( "cur_row_ptr: %p\n", cur_row_ptr );
		if( !cur_row_ptr ) {
			TextLayer_Text_Add_NewRow( layer );
			cur_row_ptr = Queue_Get( &layer->rows_data, cur_pos.y );
		}
		src_pos = layer->current_src_pos;
		des_pos = layer->current_des_pos;
		DEBUG_MSG1( "src_pos: %d\n", src_pos );
		DEBUG_MSG1( "des_pos: %d,%d\n", des_pos.x, des_pos.y );
	}
	row = cur_pos.y;
	total = wcslen( new_text );
	total_row = TextLayer_GetRows( layer );
	/* 判断当前要添加的字符的总数是否超出最大限制 */
	cur_len = Queue_GetTotal( &layer->text_source_data );
	if( total + cur_len > layer->max_text_len ) {
		total = layer->max_text_len - cur_len;
	}
	if( total < 0 ) {
		total = 0;
	}
	//_DEBUG_MSG( "layer: %p, cur total: %d, max_len: %d\n", 
	// layer, cur_len, layer->max_text_len );
	DEBUG_MSG1( "total char: %d\n", total );
	DEBUG_MSG1( "total row: %d\n", total_row );
	
	char_data.bitmap = NULL;
	/* 先记录这一行需要刷新的区域,起点为光标所在位置 */
	TextLayer_CharLater_Refresh( layer, cur_pos );
	for(p=new_text, finish=new_text+total; p<finish; ++p) { 
		DEBUG_MSG2( "1, char: %c\n", *p );
		if( layer->using_style_tags ) {
			/* 处理样式的结束标签 */ 
			q = StyleTag_ProcessEndingTag( &layer->tag_buff, p );
			if( q ) {
				/* 计算需忽略的字符数 */
				n_ignore = q-p+1;
			} else {
				/* 处理样式标签 */
				q = StyleTag_ProcessTag( &layer->tag_buff, p );
				if( q ) {
					n_ignore = q-p+1;
				}
			}
		}
		/* 针对换行符模式为Win(CR/LF)的文本,进行处理 */
		if(*p == '\n' || *p == '\r') { 
			/* 计算需要忽略的换行符的数量 */
			for( n_ignore=0,q=p; *q == '\n' || *q == '\r'; 
				++q,++n_ignore);
		} 
		if(n_ignore > 0) {
			/* 被忽略的字符的属性都一样,所以只需赋一次值 */
			char_data.data = NULL;
			char_data.display = FALSE; 
			char_data.need_update = FALSE;
			char_data.bitmap = NULL;
		}
		while(n_ignore > 0) {
			DEBUG_MSG2( "ignore = %d\n", n_ignore );
			char_data.char_code = *p++;
			Queue_Insert( &layer->text_source_data, src_pos, &char_data ); 
			char_ptr = Queue_Get( &layer->text_source_data, src_pos );
			/* 如果启用多行显示,并遇到换行符,那就增加新行 */
			if( layer->enable_multiline 
			 && char_data.char_code == '\n' ) {
				++row;
				if( refresh ) {
					tmp_pos.x = 0;
					tmp_pos.y = row;
					/* 刷新该行后面所有行的字符 */
					for( ; tmp_pos.y<total_row; ++tmp_pos.y ) {
						TextLayer_CharLater_Refresh( layer, tmp_pos );
					}
					refresh = FALSE;
				}
				/* 换行符的数据单独保存 */
				cur_row_ptr->last_char = char_ptr;
				/* 在该行插入新行 */
				TextLayer_Text_Insert_NewRow( layer, row );
				/* 获取新行的行指针 */
				tmp_row_ptr = Queue_Get( &layer->rows_data, row );
				/* 当前位置后面的字符转移到新行里 */
				TextLayer_Text_RowBreak( layer, cur_row_ptr, 
				 des_pos.x, tmp_row_ptr );
				/* 行指针切换到下一行 */
				cur_row_ptr = tmp_row_ptr;
				/* 更新当前字符坐标 */
				des_pos.x = 0;
				des_pos.y = row;
				/* 更新总行数 */
				total_row = TextLayer_GetRows( layer );
			}
			++src_pos; 
			--n_ignore;
			if(n_ignore == 0) {
				n_ignore = -1;
				break;
			}
		}
		if(n_ignore == -1) {
			--p; n_ignore = 0;
			continue;
		}
		DEBUG_MSG2( "2, char: %c\n", *p );
		char_data.char_code = *p;
		char_data.display = TRUE; 
		char_data.need_update = TRUE; 
		char_data.data = StyleTag_GetCurrentStyle( &layer->tag_buff );
		/* 插入至源文本中 */
		Queue_Insert( &layer->text_source_data, src_pos, &char_data );
		/* 获取源文本中的字符数据的指针 */
		char_ptr = Queue_Get( &layer->text_source_data, src_pos );
		/* 将该指针添加至行数据队列中 */
		cur_row_ptr = Queue_Get( &layer->rows_data, des_pos.y );
		Queue_InsertPointer( &cur_row_ptr->string, des_pos.x, char_ptr );
		++src_pos; ++des_pos.x; 
	}
	
	if( pos_type == AT_CURSOR_POS ) {
		layer->current_des_pos = des_pos;
		layer->current_src_pos = src_pos;
	}
	DEBUG_MSG1("quit\n");
}
Пример #13
0
static void blockIntra( mpeg_decode* dec, int pos )
{
	int j;
	idct_block_t *block;
	const uint16_t *table = vld_mpeg1;
	int qscale;

	dec->Codec.IDCT.Ptr->Process(dec->Codec.IDCT.Ptr,POSX(pos),POSY(pos));

	block = dec->blockptr;
	qscale = dec->qscale;

	for (j=0;j<6;++j)
	{
		int bitpos;
		int len;

		ClearBlock(block);	
		loadbits(dec);

		{
			int dct_dc_size, dct_dc_diff;

			dct_dc_diff = 0;
			dct_dc_size = j<4 ? getDCsizeLum(dec) : getDCsizeChr(dec); //max11bit

			if (dct_dc_size)
				dct_dc_diff = getDCdiff(dct_dc_size,dec);

			dct_dc_size = j<4 ? 0 : j-4+1;
			DEBUG_MSG2(DEBUG_VCODEC2,T("dc=%d diff=%d"), dec->last_dc[dct_dc_size]+dct_dc_diff, dct_dc_diff );
			dct_dc_diff += dec->last_dc[dct_dc_size];
			dec->last_dc[dct_dc_size] = dct_dc_diff;

			*block = (idct_block_t)(dct_dc_diff << 3);
			len = 1;
		}

		bitpos = dec->bitpos;
		
		for (;;) // event vld
		{
			int code,level;

			loadbits_pos(dec,bitpos);
			code = showbits_pos(dec,bitpos,16);	

			vld_code;
			level = code & 63;
			if (level < 62) 
			{
				level *= qscale;
				code >>= 6;
				code &= 63;
				len += code; // run
				if (len >= 64)
					break;

				code = dec->zigzag[len];
				level *= dec->IntraMatrix[len];
				level >>= 3;
				level = (level-1)|1;

				if (getbits1_pos(dec,bitpos)) 
					level = -level;

				block[code] = (idct_block_t)level;
				++len;
			} 
			else 
			{
				if (level==63)
					break;

				// this value is escaped
				loadbits_pos(dec,bitpos);

				len += showbits_pos(dec,bitpos,6); flushbits_pos(dec,bitpos,6);
				if (len >= 64)
					break;

				code = showbits_pos(dec,bitpos,8); flushbits_pos(dec,bitpos,8);
				level = (code << 24) >> 24; //sign extend the lower 8 bits
				code = dec->zigzag[len];

				if (level == -128)
				{
					level = showbits_pos(dec,bitpos,8)-256; flushbits_pos(dec,bitpos,8);
				}
				else 
				if (level == 0)
				{
					level = showbits_pos(dec,bitpos,8); flushbits_pos(dec,bitpos,8);
				}

				if (level<0)
				{
					level= -level;
					level *= qscale * dec->IntraMatrix[len];
					level >>= 3;
					level= (level-1)|1;
					level= -level;

					block[code] = (idct_block_t)level;
					++len;
				}
				else
				{
Пример #14
0
void CA_Message_CallBack(int eCaMsg, unsigned short wDemux,  int ulParam, int param2 )
{
	JNIEnv *env = NULL;
	
	if( NULL == g_caVM || NULL == g_CaMsgObj )
	{
		DEBUG_MSG(-1,T("ca message-- ---------- mjvm or obj is null--------------------"));
		return;
	}
	
	if (g_caVM->AttachCurrentThread(&env, NULL) != JNI_OK)
	{
		 DEBUG_MSG1(-1,T("%s: AttachCurrentThread() failed"), __FUNCTION__);
		 return;
	}
	if( NULL == env )
	{
		DEBUG_MSG1(-1,T("%s: new is null "), __FUNCTION__);
		return;
	}
#if 0
	switch( eCaMsg )
	{
		case CAS_MC_DECODER_INFO:/*解扰信息------errmsg  不需要处理*/		
		case CAS_MC_SERVICE_INFO:/*节目信息errmsg不需要处理*/
		{
        }
        break;
		
		case CAS_MC_SC_ACCESS:/*节目信息errmsg对应显示E04或是e07*/
		{
			//_utiCaServiceMessage();
			DEBUG_MSG2(-1,T("ca message- SC- - dfg---------eCaMsg[%d]  wDemuxl[%d]--------------------"),eCaMsg,wDemux);
			_CaServiceMessage(env, g_CaMsgObj,0,0,0,wDemux);
			
        }
        break;
		case CAS_MC_IPP_NOTIFY:/*IPP */
		{
			_CaIppNotifyMessage(env, g_CaMsgObj,param2);
        }
        break;
		case CAS_MC_IPP_INFO_UPDATE:/*IPPV */
		{
			//_CaIppNotifyMessage(env, g_CaMsgObj,param2);
			_CaIppUpdate(env, g_CaMsgObj,param2);
		}
		break;
		case CAS_MC_ENHANCED_SHORT_MESSAGE:/*邮件*/
		{
			
		}
		break;
		case CAS_MC_ENHANCED_FINGER_PRINT:/*强制指纹显示*/
		{
			
        }
		break;
		case CAS_MC_FORCE_CHANNEL:/*强制频道切换*/
		{
			_caEnhanceChanPlay(env, g_CaMsgObj,param2);
		}
		break;
		case CAS_MC_FINGER_PRINT:/*指纹信息*/
		{
			_CaFp(env, g_CaMsgObj,param2);
		}
		break;
		case CAS_MC_EMM_DOWNLOAD:/*升级信息*/
		{
			
        }
		break;
		case CAS_MC_EMM_CHANGEPIN:/*智能卡密码更换 不需要处理*/
		case CAS_MC_PIN_CODE_CHECK:/*智能卡密码更换 不需要处理*/
		case CAS_MC_NOTIFY_EXPIRY_STATE:/*不需要处理*/
		case CAS_MC_MONITOR_ECM:/*不需要处理*/
		case CAS_MC_MONITOR_EMM:/*不需要处理*/
		{
			
        }
		break;
		case CAS_MC_NOTIFY_CURRENT_STATE:/*当前状态errmsg*/
		{
			/*根据wDemux 显示当前的状态 E00~E30,其中e00不用显示*/
			_CaServiceMessage(env, g_CaMsgObj,0,0,0,wDemux);
			
			DEBUG_MSG2(-1,T("ca message- err --sdf--------eCaMsg[%d]  wDemuxl[%d]--------------------"),eCaMsg,wDemux);
        }
        break;
		case CAS_MC_NOTIFY_SHORT_MESSAGE:/*短消息*/
		{
			_CaMailMessage(env, g_CaMsgObj,param2);			
		}
		break;
		default:
		{

		}
		break;
	}


	if(g_caVM->DetachCurrentThread() != JNI_OK) 
	{
		 DEBUG_MSG1(-1,T("%s: DetachCurrentThread() failed"), __FUNCTION__); 
	}
	#endif

}
Пример #15
0
/** 从字符串中获取样式标签的名字及样式属性 */
const wchar_t* scan_style_tag(	const wchar_t *wstr, char *name_buff,
					int max_name_len, char *data_buff )
{
	int i, j, len; 
	LCUI_BOOL end_name = FALSE;

	len = wcslen( wstr );
	DEBUG_MSG2("len = %d\n", len);
	if( wstr[0] != '<' ) {
		DEBUG_MSG2("str[0] != '<'\n");
		return NULL;
	}
	/* 匹配标签前半部分 */
	for( j=0,i=1; i<len; ++i ) {
		if( wstr[i] == ' ' ) {
			/* 如果上个字符不是空格,说明标签名已经结束 */
			if( i > 0 && wstr[i-1] != ' ' ) {
				end_name = TRUE;
			}
			/* 标签名首部和尾部可包含空格 */
			if( j == 0 || max_name_len == 0
			 || (max_name_len > 0 && end_name) ) { 
				continue;
			}
			/* 标签名中间不能包含空格 */
			return NULL;
		}
		/* 如果标签名部分已经匹配完 */
		if( wstr[i] == '=' ) {
			++i;
			break;
		}
		/* 如果标签名已经结束了 */
		if( end_name ) {
			return NULL;
		}
		if( max_name_len > 0 && data_buff ) {
			name_buff[j] = wstr[i];
		}
		++j;
	}
	
	if( data_buff ) {
		name_buff[j] = 0;
	}
	DEBUG_MSG2("tag is: %s\n", tag);
	/* 获取标签后半部分 */
	for(j=0; i<len; ++i) {
		DEBUG_MSG2("str[%d]: %c\n", i, str[i]);
		if( wstr[i] == ' ' ) {
			continue; 
		}
		/* 标签结束,退出 */
		if( wstr[i] == '>' ) {
			++i;
			break;
		}
		if( data_buff ) {
			/* 保存标签内的数据 */
			data_buff[j] = wstr[i];
		}
		++j;
	}
	if( data_buff ) {
		data_buff[j] = 0;
	}
	DEBUG_MSG2("data_buff: %s\n", data_buff);
	if( i >= len ) {
		return NULL;
	}
	return wstr+i;
}
Пример #16
0
/** 从字符串中获取样式标签的名字及样式属性 */
LCUI_API const wchar_t* StyleTag_GetTagData(	const wchar_t *w_str,
						char *out_tag_name,
						int max_name_size,
						char *out_tag_data )
{
	int i, j, len; 
	LCUI_BOOL end_name = FALSE;

	len = wcslen( w_str );
	DEBUG_MSG2("len = %d\n", len);
	if( w_str[0] != '<' ) {
		DEBUG_MSG2("str[0] != '<'\n");
		return NULL;
	}
	/* 匹配标签前半部分 */
	for( j=0,i=1; i<len; ++i ) {
		if( w_str[i] == ' ' ) {
			/* 如果上个字符不是空格,说明标签名已经结束 */
			if( i > 0 && w_str[i-1] != ' ' ) {
				end_name = TRUE;
			}
			/* 标签名首部和尾部可包含空格 */
			if( j == 0 || max_name_size == 0
			 || (max_name_size > 0 && end_name) ) { 
				continue;
			}
			/* 标签名中间不能包含空格 */
			return NULL;
		}
		/* 如果标签名部分已经匹配完 */
		if( w_str[i] == '=' ) {
			++i;
			break;
		}
		/* 如果标签名已经结束了 */
		if( end_name ) {
			return NULL;
		}
		if( max_name_size > 0 && out_tag_data ) {
			out_tag_name[j] = w_str[i];
		}
		++j;
	}
	
	if( out_tag_data ) {
		out_tag_name[j] = 0;
	}
	DEBUG_MSG2("tag is: %s\n", tag);
	/* 获取标签后半部分 */
	for(j=0; i<len; ++i) {
		DEBUG_MSG2("str[%d]: %c\n", i, str[i]);
		if( w_str[i] == ' ' ) {
			continue; 
		}
		/* 标签结束,退出 */
		if( w_str[i] == '>' ) {
			++i;
			break;
		}
		if( out_tag_data ) {
			/* 保存标签内的数据 */
			out_tag_data[j] = w_str[i];
		}
		++j;
	}
	if( out_tag_data ) {
		out_tag_data[j] = 0;
	}
	DEBUG_MSG2("out_tag_data: %s\n", out_tag_data);
	if( i >= len ) {
		return NULL;
	}
	return w_str+i;
}
Пример #17
0
JNIEXPORT jint JNICALL Java_com_pbi_dvb_dvbinterface_NativePlayer_DVBPlayerPvrRecStart(
		JNIEnv *env, jobject obj, jobject RecObj) {
	jclass RecCls = NULL;
	jobject TunerObj = NULL;
	jstring jName = NULL;
	jfieldID jFidTemp = NULL;
	DVBPlayer_PVR_REC_t tPvrRecParam;

	int iTemp = 0;
	bool bRet = TRUE;

	RecCls = env->GetObjectClass(RecObj);
	if (NULL == RecCls) {
		DEBUG_MSG2(-1, "[%s %d]  class is NULL !!!", __FUNCTION__, __LINE__ );
		return -1;
	}

	memset(&tPvrRecParam, 0, sizeof(DVBPlayer_PVR_REC_t));

	tPvrRecParam.u8RecFlag = GetIntJavaToC(env, RecObj, RecCls, "u8RecFlag");
	tPvrRecParam.u16LogicNum = GetIntJavaToC(env, RecObj, RecCls,
			"u16LogicNum");
	tPvrRecParam.u16ServId = GetIntJavaToC(env, RecObj, RecCls, "u16ServId");
	tPvrRecParam.u16PmtPid = GetIntJavaToC(env, RecObj, RecCls, "u16PmtPid");
	tPvrRecParam.u64MaxFileLength = GetDoubleJavaToC(env, RecObj, RecCls,
			"u64MaxFileLength");

	jName = GetStringJavaToC(env, RecObj, RecCls, "sName");
	Jstringtoc_UTF8(env, jName, tPvrRecParam.FileName);
	DEBUG_MSG2(-1, "FileName =%s...Namelength=%d..\n", tPvrRecParam.FileName,strlen(tPvrRecParam.FileName) );
	tPvrRecParam.FileName[strlen(tPvrRecParam.FileName)] = '\0';
	if (0 == tPvrRecParam.u8RecFlag) {

		iTemp = GetIntJavaToC(env, RecObj, RecCls, "eTunerType");
		switch (iTemp) {
		case eDVBCORE_SIGNAL_SOURCE_DVBC: {
			jFidTemp = env->GetFieldID(RecCls, "tCableInfo",
					"Lcom/pbi/dvb/dvbinterface/Tuner$DVBCore_Cab_Desc_t;");
			if (NULL == jFidTemp) {
				DEBUG_MSG(-1,T("DVBPlayerPvrRecStart DVBCore_Cab_Desc_t error!"));
				DeleteLocalRef(env, RecCls);
				return -1;
			}

			TunerObj = env->GetObjectField(RecObj, jFidTemp);
			bRet = GetDvbCroeCableDescClass(env, TunerObj,
					&tPvrRecParam.tBackRec.uTunerDesc.tCable);
			if (FALSE == bRet) {

				DEBUG_MSG(-1,T("DVBPlayerPvrRecStart DvbCroeCableDescClass error!"));

				DeleteLocalRef(env, RecCls);
				DeleteLocalRef(env, TunerObj);
				return -1;
			}

			DeleteLocalRef(env, TunerObj);

		}
			break;
		default: {
		}
		}
	} else {

	}
	DeleteLocalRef(env, RecCls);

	return DVBPlayer_REC_Play(&tPvrRecParam);
}
Пример #18
0
/*
 * Class:     com_pbi_dvb_dvbinterface_NativePlayer
 * Method:    DVBPlayer_Play_Program
 * Signature: (Lcom/pbi/dvb/dvbinterface/NativePlayer/DVBPlayer_Play_Param_t;)I
 */
JNIEXPORT jint JNICALL Java_com_pbi_dvb_dvbinterface_NativePlayer_DVBPlayerPlayProgram(
		JNIEnv *env, jobject obj, jobject jPlayProgObj) {
	jclass jObjCls = NULL;
	jclass jClsTemp = NULL;
	jfieldID jFidTemp = NULL;
	jobject jObjTemp = NULL;
	jint jRet = 0;

	int iTunerType = 0;
	int iProgType = 0;
	bool bRet = TRUE;

	DVBPlayer_Play_Param_t tParam;

	memset(&tParam, 0, sizeof(DVBPlayer_Play_Param_t));

	jObjCls = env->GetObjectClass(jPlayProgObj);
	if (NULL == jObjCls) {
		return -1;
	}

	iTunerType = GetIntJavaToC(env, jPlayProgObj, jObjCls, "eSignalSource");
	iProgType = GetIntJavaToC(env, jPlayProgObj, jObjCls, "eProgType");
	switch (iTunerType) {
	case eDVBCORE_SIGNAL_SOURCE_DVBC: {
		jFidTemp = env->GetFieldID(jObjCls, "tCable",
				"Lcom/pbi/dvb/dvbinterface/Tuner$DVBCore_Cab_Desc_t;");
		if (jFidTemp == NULL) {
			DEBUG_MSG2(-1,T("+++++++++++++%s=====obj is null=====%d-------"),__FUNCTION__,__LINE__);
			return -1;
		}
		jObjTemp = env->GetObjectField(jPlayProgObj, jFidTemp);
		if (jObjTemp == NULL) {
			DEBUG_MSG2(-1,T("+++++++++++++%s=====obj is null=====%d-------"),__FUNCTION__,__LINE__);
			return -1;
		}
		bRet = GetDvbCroeCableDescClass(env, jObjTemp,
				&tParam.uTunerParam.tCable);
		if (TRUE != bRet) {

			DeleteLocalRef(env, jObjCls);
			DeleteLocalRef(env, jObjTemp);

			return -1;
		}

	}
		break;
	default: {

	}
		break;
	}

	DeleteLocalRef(env, jObjTemp);

	switch (iProgType) {
	case 0: {
		jFidTemp =
				env->GetFieldID(jObjCls, "tServParam",
						"Lcom/pbi/dvb/dvbinterface/NativePlayer$DVBPlayer_Serv_Param_t;");
		if (jFidTemp == NULL) {
			DEBUG_MSG2(-1,T("%s++++++++++++%d="),__FUNCTION__,__LINE__);
			return -1;
		}
		jObjTemp = env->GetObjectField(jPlayProgObj, jFidTemp);
		if (jObjTemp == NULL) {
			DEBUG_MSG2(-1,T("%s++++++++++++%d="),__FUNCTION__,__LINE__);
			return -1;
		}
		jClsTemp = env->GetObjectClass(jObjTemp);
		if (jClsTemp == NULL) {
			DEBUG_MSG2(-1,T("%s++++++++++++%d="),__FUNCTION__,__LINE__);
			return -1;
		}

		tParam.uProgParam.tServParam.eProgType =
				(DVBPlayer_Prog_Type_e) iProgType; //DVBPLAYER_PROG_TYPE_SERVICE;
		tParam.uProgParam.tServParam.eServLockFlag =
				(DVBPlayer_Serv_Lock_e) GetIntJavaToC(env, jObjTemp, jClsTemp,
						"eServLockFlag");
		tParam.uProgParam.tServParam.u16ServId = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16ServId");
		tParam.uProgParam.tServParam.u16PMTPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16PMTPid");
		tParam.uProgParam.tServParam.u16LogicNum = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16LogicNum");
		tParam.uProgParam.tServParam.u16TsId = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16TS_Id");
		tParam.uProgParam.tServParam.u16NetId = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16NetId");
		tParam.uProgParam.tServParam.u16historyAudioPid = GetIntJavaToC(env,
				jObjTemp, jClsTemp, "u16AudioPID");
		DEBUG_MSG3(-1,T("+++++++++++++%d==========%d-------audioPID%d"),tParam.uProgParam.tServParam.u16ServId,tParam.uProgParam.tServParam.u16PMTPid,
				tParam.uProgParam.tServParam.u16historyAudioPid);
/*Start:add avinfo by zshang 20140403 */	
		jFidTemp = env->GetFieldID(jObjCls, "tAVPids",
				"Lcom/pbi/dvb/dvbinterface/NativePlayer$DVBPlayer_AVPid_t;");
		if (jFidTemp == NULL) {
			DEBUG_MSG2(-1,T("%s++++++++++++%d="),__FUNCTION__,__LINE__);
			return -1;
		}
		jObjTemp = env->GetObjectField(jPlayProgObj, jFidTemp);
		if (jObjTemp == NULL) {
			DEBUG_MSG2(-1,T("%s++++++++++++%d="),__FUNCTION__,__LINE__);
			return -1;
		}
		jClsTemp = env->GetObjectClass(jObjTemp);
		if (jClsTemp == NULL) {
			DEBUG_MSG2(-1,T("%s++++++++++++%d="),__FUNCTION__,__LINE__);
			return -1;
		}

		tParam.uProgParam.tServParam.u16VideoPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16VideoPid");
		tParam.uProgParam.tServParam.u16AudioPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16AudioPid");
		tParam.uProgParam.tServParam.u16PCRPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16PCRPid");
		tParam.uProgParam.tServParam.u8AudioFmt = GetByteJavaToC(env, jObjTemp,
				jClsTemp, "u8AudioFmt");
		tParam.uProgParam.tServParam.u8VideoFmt = GetByteJavaToC(env, jObjTemp,
				jClsTemp, "u8VideoFmt");
/*End:add avinfo by zshang 20140403 */	
	}
		break;
	case 1: {
		jFidTemp = env->GetFieldID(jObjCls, "tAVPids",
				"Lcom/pbi/dvb/dvbinterface/NativePlayer$DVBPlayer_AVPid_t;");
		jObjTemp = env->GetObjectField(jPlayProgObj, jFidTemp);
		jClsTemp = env->GetObjectClass(jObjTemp);

		tParam.uProgParam.tAVPids.eProgType = (DVBPlayer_Prog_Type_e) iProgType; //DVBPLAYER_PROG_TYPE_AVPID;
		tParam.uProgParam.tAVPids.u16AudioPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16AudioPid");
		tParam.uProgParam.tAVPids.u16VideoPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16VideoPid");
		tParam.uProgParam.tAVPids.u16AudioPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16AudioPid");
		tParam.uProgParam.tAVPids.u16PCRPid = GetIntJavaToC(env, jObjTemp,
				jClsTemp, "u16PCRPid");
		tParam.uProgParam.tAVPids.u8AudioFmt = GetByteJavaToC(env, jObjTemp,
				jClsTemp, "u8AudioFmt");
		tParam.uProgParam.tAVPids.u8VideoFmt = GetByteJavaToC(env, jObjTemp,
				jClsTemp, "u8VideoFmt");

	}
		break;
	default: {

	}
		break;
	}

	Front_Panel_Dispaly(env, tParam.uProgParam.tServParam.u16LogicNum);

	jRet = DVBPlayer_Play_Program(&tParam);

	DeleteLocalRef(env, jObjCls);
	DeleteLocalRef(env, jClsTemp);
	DeleteLocalRef(env, jObjTemp);
	DEBUG_MSG2(-1,T("+++++++++++++%s== END ===%d-------"),__FUNCTION__,__LINE__);
	return jRet;
}