本スレ情報を元に修正

(ノンスクランブル放送を跨ぐと後続のスクランブル放送でECMを拾えなくなる問題)
This commit is contained in:
stz2012 2016-05-12 10:40:33 +09:00
parent c27e1f9863
commit 09770e3348

View File

@ -1369,6 +1369,7 @@ static int proc_pmt(ARIB_STD_B25_PRIVATE_DATA *prv, TS_PROGRAM *pgrm)
DECRYPTOR_ELEM *dw;
TS_STREAM_ELEM *strm;
TS_STREAM_LIST tmp_old_strm;
r = 0;
dec[0] = NULL;
@ -1412,13 +1413,8 @@ static int proc_pmt(ARIB_STD_B25_PRIVATE_DATA *prv, TS_PROGRAM *pgrm)
}
head += length;
/* unref old stream entries */
while( (strm = get_stream_list_head(&(pgrm->old_strm))) != NULL ){
unref_stream(prv, strm->pid);
memset(strm, 0, sizeof(TS_STREAM_ELEM));
put_stream_list_tail(&(prv->strm_pool), strm);
}
/* save old streams */
memcpy(&tmp_old_strm, &(pgrm->old_strm), sizeof(TS_STREAM_LIST));
/* save current streams */
memcpy(&(pgrm->old_strm), &(pgrm->streams), sizeof(TS_STREAM_LIST));
@ -1432,6 +1428,13 @@ static int proc_pmt(ARIB_STD_B25_PRIVATE_DATA *prv, TS_PROGRAM *pgrm)
}
}
/* unref old stream entries */
while( (strm = get_stream_list_head(&tmp_old_strm)) != NULL ){
unref_stream(prv, strm->pid);
memset(strm, 0, sizeof(TS_STREAM_ELEM));
put_stream_list_tail(&(prv->strm_pool), strm);
}
while( head+4 < tail ){
type = head[0];