static void clear_programs(MpegTSContext *ts) { int i=0; /*when PAT table update,other table all new coming update*/ for (i = 1; ts->nb_prg&&(i < NB_PID_MAX); i++) { if (ts->pids[i] &&ts->pids[i]->type == MPEGTS_SECTION) { av_log(NULL, AV_LOG_INFO,"use new table pid=0x%x\n",i); ts->pids[i]->u.section_filter.last_ver = -1; } } clear_avprograms(ts); av_freep(&ts->prg); ts->nb_prg=0; }
时间: 2024-03-29 18:35:05 浏览: 43
test_static_new_obj_objects_C++_memorymanagement_static_
这段代码是清空MpegTSContext中的节目列表和PID列表,同时重置PAT表。其中,if语句判断当前PID是否是MPEGTS_SECTION类型,如果是,则表示该PID存储了PAT表,因为PAT表的PID是0,其他表的PID都是从PAT表中获取的。如果PAT表有更新,其他表也必须更新,所以需要重置所有表的版本号。clear_avprograms函数用于清空节目列表,av_freep用于释放内存。
阅读全文