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; }
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; }