void on_langbuttonclicked(GtkWidget *widget, gpointer data) { TRACEINFO; sPlayerInterface* player_interf; u32 current_service_id; HbbtvDemuxer *hbbtvdemuxer; GF_MediaInfo odi; u32 index_audio,audio_ID; player_interf = (sPlayerInterface*)data; hbbtvdemuxer = ( HbbtvDemuxer *)player_interf->Demuxer; current_service_id = index_audio = audio_ID = 0; /* Get the current channel struct */ current_service_id = gf_term_get_current_service_id(player_interf->m_term); Channel* chan = (Channel*)ZapChannel(hbbtvdemuxer,current_service_id,0); if(chan->Get_nb_chan_audio_stream() > 1){ GF_ObjectManager *root_odm = gf_term_get_root_object(player_interf->m_term); if (root_odm){ if (gf_term_get_object_info(player_interf->m_term, root_odm, &odi) == GF_OK){ if (odi.od) { /* Increment the audio index to get the next audio stream */ chan->Incr_audio_index(0); gf_term_select_object(player_interf->m_term, gf_term_get_object(player_interf->m_term, root_odm, chan->Get_audio_ID(chan->Get_audio_index()))); } } } } }
void CFileProps::RewriteODTree() { Osmo4 *gpac = GetApp(); m_ODTree.DeleteAllItems(); GF_ObjectManager *root_odm = gf_term_get_root_object(gpac->m_term); if (!root_odm) return; HTREEITEM root = m_ODTree.InsertItem("Root OD", 0, 0); m_ODTree.SetItemData(root, (DWORD) root_odm); m_ODTree.SetItemText(root, "Root Scene"); WriteInlineTree(root_odm, root); }