コード例 #1
0
ファイル: hbbtv_demux.cpp プロジェクト: bigbensk/gpac
Channel* HbbtvDemuxer::Zap_channel(u32 service_id,int zap){
	  u32 count_list;
	  u32 i ;
	  
	  count_list = gf_list_count(Channels);
// 	   GF_LOG(GF_LOG_INFO, GF_LOG_MODULE, ("[HBBTVTerminal] list: %d\n",count_list));
	  for(i=0;i<count_list;i++){
	      Channel* chan = ( Channel*)gf_list_get(Channels,i);
	      if(chan->Get_service_id() == service_id){
		if(zap != 0){
		  /* zap is use for changing channel. It could be +1 or -1 in order to take the next/previous service */
		  GF_LOG(GF_LOG_INFO, GF_LOG_MODULE, ("[HBBTVTerminal] i: %d zap %d\n",i,zap));
		  		    
		   i= (i+zap+count_list)%count_list; /* loop on the channels */
		  
		  GF_LOG(GF_LOG_INFO, GF_LOG_MODULE, ("[HBBTVTerminal] i: %d list %d\n",i,count_list));
		}
		Channel* chan = ( Channel*)gf_list_get(Channels,i);		
		return chan;
	      }
	  }
	  
	  /* If the prog goes here that means Channels list is empty or 
	  no object from this current service_id has already been processed */
// 	  GF_LOG(GF_LOG_INFO, GF_LOG_MODULE, ("[HBBTVTerminal] add service_id: %d \n",service_id));
	  Channel* chan = new Channel(service_id,NULL);
	  gf_list_add(Channels,chan);
	  return chan;
}
コード例 #2
0
ファイル: hbbtv_demux.cpp プロジェクト: bigbensk/gpac
Channel* HbbtvDemuxer::Get_Channel(u32 service_id){
	u32 nb_channel,i;

	nb_channel = gf_list_count(Channels);

	for(i=0;i<nb_channel;i++){
		Channel* Chan = (Channel*)gf_list_get(Channels,i);
		if(Chan->Get_service_id() == service_id){
			return Chan;
		}
	}
	return NULL;
}