Changeset 2727
- Timestamp:
- 07/12/10 23:44:43 (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-dvbapi.c
r2716 r2727 598 598 } 599 599 600 void dvbapi_process_emm (int demux_index, unsigned char *buffer, unsigned int len) {600 void dvbapi_process_emm (int demux_index, int filter_num, unsigned char *buffer, unsigned int len) { 601 601 EMM_PACKET epg; 602 static uchar viaccess_global_emm[512]; 603 static int emm_viaccess_len = 0; 602 604 603 605 if (demux[demux_index].pidindex==-1) return; 604 606 605 cs_ddump(buffer, 16, "emm:"); 607 if (demux[demux_index].ECMpids[demux[demux_index].pidindex].CAID >> 8 == 0x05) { 608 if (len>500) return; 609 uchar emmbuf[512]; 610 int emm_len = 0, k; 611 switch(buffer[0]) { 612 case 0x8c: 613 case 0x8d: 614 if (!memcmp(viaccess_global_emm, buffer, len)) return; 615 memcpy(viaccess_global_emm, buffer, len); 616 emm_viaccess_len=len; 617 //cs_ddump(buffer, len, "viaccess global emm:"); 618 return; 619 break; 620 case 0x8e: 621 if (!emm_viaccess_len) return; 622 623 memcpy(emmbuf, buffer, 7); 624 memcpy(emmbuf+7, "\x9E\x20", 2); 625 memcpy(emmbuf+9, buffer+7, 32); 626 int pos=9+32; 627 for (k=3; k<viaccess_global_emm[1] && k<emm_viaccess_len; k += viaccess_global_emm[k+1]+2) { 628 memcpy(emmbuf+pos, viaccess_global_emm+k, viaccess_global_emm[k+1]+2); 629 pos += viaccess_global_emm[k+1]+2; 630 } 631 memcpy(emmbuf+pos, "\xF0\x08", 2); 632 memcpy(emmbuf+pos+2, buffer+41, 8); 633 emm_len=pos+10; 634 emmbuf[2]=emm_len-3; 635 cs_ddump(buffer, len, "original emm:"); 636 memcpy(buffer, emmbuf, emm_len); 637 len=emm_len; 638 break; 639 default: 640 cs_log("type %02X", buffer[0]); 641 return; 642 break; 643 } 644 645 } 646 647 cs_ddump(buffer, len, "emm from fd %d:", demux[demux_index].demux_fd[filter_num].fd); 606 648 607 649 memset(&epg, 0, sizeof(epg)); … … 1174 1216 return; 1175 1217 } 1176 cs_debug("EMM Filter fd %d", demux[demux_id].demux_fd[filter_num].fd); 1177 dvbapi_process_emm(demux_id, buffer, len); 1218 dvbapi_process_emm(demux_id, filter_num, buffer, len); 1178 1219 } 1179 1220 -
trunk/reader-viaccess.c
r2726 r2727 425 425 { 426 426 filter[0]=0xFF; 427 filter[1]= 3;427 filter[1]=2; 428 428 429 429 filter[2]=GLOBAL; … … 431 431 432 432 filter[4+0] = 0x8D; 433 filter[4+0+16] = 0xF F;434 filter[4+1] = 0xFF; // FIXME: dummy, flood client with EMM's435 filter[4+1+16] = 0xFF;433 filter[4+0+16] = 0xFE; 434 //filter[4+6] = 0xA0; // FIXME: dummy, flood client with EMM's 435 //filter[4+6+16] = 0xF0; 436 436 437 437
Note:
See TracChangeset
for help on using the changeset viewer.