• Home
  • Raw
  • Download

Lines Matching refs:demux

160 	struct dvb_demux *demux = feed->demux;  in dvb_dmx_swfilter_section_feed()  local
174 demux->check_crc32(feed, sec->secbuf, sec->seclen)) in dvb_dmx_swfilter_section_feed()
237 struct dvb_demux *demux = feed->demux; in dvb_dmx_swfilter_section_copy_dump() local
256 demux->memcopy(feed, sec->secbuf_base + sec->tsfeedp, buf, len); in dvb_dmx_swfilter_section_copy_dump()
374 if (feed->demux->write_to_decoder) in dvb_dmx_swfilter_packet_type()
375 feed->demux->write_to_decoder(feed, buf, 188); in dvb_dmx_swfilter_packet_type()
395 static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) in dvb_dmx_swfilter_packet() argument
405 demux->speed_pkts_cnt++; in dvb_dmx_swfilter_packet()
408 if (!(demux->speed_pkts_cnt % SPEED_PKTS_INTERVAL)) { in dvb_dmx_swfilter_packet()
411 if (demux->speed_last_time.tv_sec != 0 && in dvb_dmx_swfilter_packet()
412 demux->speed_last_time.tv_nsec != 0) { in dvb_dmx_swfilter_packet()
414 demux->speed_last_time); in dvb_dmx_swfilter_packet()
415 speed_bytes = (u64)demux->speed_pkts_cnt in dvb_dmx_swfilter_packet()
429 demux->speed_last_time = cur_time; in dvb_dmx_swfilter_packet()
430 demux->speed_pkts_cnt = 0; in dvb_dmx_swfilter_packet()
443 if (demux->cnt_storage && dvb_demux_tscheck) { in dvb_dmx_swfilter_packet()
447 demux->cnt_storage[pid] = in dvb_dmx_swfilter_packet()
448 (demux->cnt_storage[pid] + 1) & 0xf; in dvb_dmx_swfilter_packet()
450 if ((buf[3] & 0xf) != demux->cnt_storage[pid]) { in dvb_dmx_swfilter_packet()
452 pid, demux->cnt_storage[pid], in dvb_dmx_swfilter_packet()
454 demux->cnt_storage[pid] = buf[3] & 0xf; in dvb_dmx_swfilter_packet()
460 list_for_each_entry(feed, &demux->feed_list, list_head) { in dvb_dmx_swfilter_packet()
476 void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, in dvb_dmx_swfilter_packets() argument
479 spin_lock(&demux->lock); in dvb_dmx_swfilter_packets()
483 dvb_dmx_swfilter_packet(demux, buf); in dvb_dmx_swfilter_packets()
487 spin_unlock(&demux->lock); in dvb_dmx_swfilter_packets()
517 static inline void _dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, in _dvb_dmx_swfilter() argument
523 spin_lock(&demux->lock); in _dvb_dmx_swfilter()
525 if (demux->tsbufp) { /* tsbuf[0] is now 0x47. */ in _dvb_dmx_swfilter()
526 i = demux->tsbufp; in _dvb_dmx_swfilter()
529 memcpy(&demux->tsbuf[i], buf, count); in _dvb_dmx_swfilter()
530 demux->tsbufp += count; in _dvb_dmx_swfilter()
533 memcpy(&demux->tsbuf[i], buf, j); in _dvb_dmx_swfilter()
534 if (demux->tsbuf[0] == 0x47) /* double check */ in _dvb_dmx_swfilter()
535 dvb_dmx_swfilter_packet(demux, demux->tsbuf); in _dvb_dmx_swfilter()
536 demux->tsbufp = 0; in _dvb_dmx_swfilter()
550 memcpy(demux->tsbuf, q, 188); in _dvb_dmx_swfilter()
551 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
552 q = demux->tsbuf; in _dvb_dmx_swfilter()
554 dvb_dmx_swfilter_packet(demux, q); in _dvb_dmx_swfilter()
560 memcpy(demux->tsbuf, &buf[p], i); in _dvb_dmx_swfilter()
561 demux->tsbufp = i; in _dvb_dmx_swfilter()
562 if (pktsize == 204 && demux->tsbuf[0] == 0xB8) in _dvb_dmx_swfilter()
563 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
567 spin_unlock(&demux->lock); in _dvb_dmx_swfilter()
570 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter() argument
572 _dvb_dmx_swfilter(demux, buf, count, 188); in dvb_dmx_swfilter()
576 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_204() argument
578 _dvb_dmx_swfilter(demux, buf, count, 204); in dvb_dmx_swfilter_204()
582 void dvb_dmx_swfilter_raw(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_raw() argument
584 spin_lock(&demux->lock); in dvb_dmx_swfilter_raw()
586 demux->feed->cb.ts(buf, count, NULL, 0, &demux->feed->feed.ts, DMX_OK); in dvb_dmx_swfilter_raw()
588 spin_unlock(&demux->lock); in dvb_dmx_swfilter_raw()
592 static struct dvb_demux_filter *dvb_dmx_filter_alloc(struct dvb_demux *demux) in dvb_dmx_filter_alloc() argument
596 for (i = 0; i < demux->filternum; i++) in dvb_dmx_filter_alloc()
597 if (demux->filter[i].state == DMX_STATE_FREE) in dvb_dmx_filter_alloc()
600 if (i == demux->filternum) in dvb_dmx_filter_alloc()
603 demux->filter[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_filter_alloc()
605 return &demux->filter[i]; in dvb_dmx_filter_alloc()
608 static struct dvb_demux_feed *dvb_dmx_feed_alloc(struct dvb_demux *demux) in dvb_dmx_feed_alloc() argument
612 for (i = 0; i < demux->feednum; i++) in dvb_dmx_feed_alloc()
613 if (demux->feed[i].state == DMX_STATE_FREE) in dvb_dmx_feed_alloc()
616 if (i == demux->feednum) in dvb_dmx_feed_alloc()
619 demux->feed[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_feed_alloc()
621 return &demux->feed[i]; in dvb_dmx_feed_alloc()
628 list_for_each_entry(entry, &feed->demux->feed_list, list_head) in dvb_demux_feed_find()
637 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_add()
644 list_add(&feed->list_head, &feed->demux->feed_list); in dvb_demux_feed_add()
646 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_add()
651 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_del()
660 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_del()
668 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_set() local
673 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_set()
678 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
682 if (demux->pesfilter[pes_type] && in dmx_ts_feed_set()
683 demux->pesfilter[pes_type] != feed) { in dmx_ts_feed_set()
684 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
688 demux->pesfilter[pes_type] = feed; in dmx_ts_feed_set()
689 demux->pids[pes_type] = pid; in dmx_ts_feed_set()
706 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
713 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
721 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_start_filtering() local
724 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_start_filtering()
728 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
732 if (!demux->start_feed) { in dmx_ts_feed_start_filtering()
733 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
737 if ((ret = demux->start_feed(feed)) < 0) { in dmx_ts_feed_start_filtering()
738 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
742 spin_lock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
745 spin_unlock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
746 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
754 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_stop_filtering() local
757 mutex_lock(&demux->mutex); in dmx_ts_feed_stop_filtering()
760 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
764 if (!demux->stop_feed) { in dmx_ts_feed_stop_filtering()
765 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
769 ret = demux->stop_feed(feed); in dmx_ts_feed_stop_filtering()
771 spin_lock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
774 spin_unlock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
775 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
784 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_allocate_ts_feed() local
787 if (mutex_lock_interruptible(&demux->mutex)) in dvbdmx_allocate_ts_feed()
790 if (!(feed = dvb_dmx_feed_alloc(demux))) { in dvbdmx_allocate_ts_feed()
791 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
797 feed->demux = demux; in dvbdmx_allocate_ts_feed()
810 if (!(feed->filter = dvb_dmx_filter_alloc(demux))) { in dvbdmx_allocate_ts_feed()
812 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
820 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
828 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_release_ts_feed() local
831 mutex_lock(&demux->mutex); in dvbdmx_release_ts_feed()
834 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
850 demux->pesfilter[feed->pes_type] = NULL; in dvbdmx_release_ts_feed()
852 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
864 struct dvb_demux *dvbdemux = dvbdmxfeed->demux; in dmx_section_feed_allocate_filter()
896 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_set()
950 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_start_filtering()
995 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_stop_filtering()
1021 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_release_filter()
1050 static int dvbdmx_allocate_section_feed(struct dmx_demux *demux, in dvbdmx_allocate_section_feed() argument
1054 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; in dvbdmx_allocate_section_feed()
1067 dvbdmxfeed->demux = dvbdmx; in dvbdmx_allocate_section_feed()
1077 (*feed)->parent = demux; in dvbdmx_allocate_section_feed()
1090 static int dvbdmx_release_section_feed(struct dmx_demux *demux, in dvbdmx_release_section_feed() argument
1094 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; in dvbdmx_release_section_feed()
1120 static int dvbdmx_open(struct dmx_demux *demux) in dvbdmx_open() argument
1122 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_open()
1131 static int dvbdmx_close(struct dmx_demux *demux) in dvbdmx_close() argument
1133 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_close()
1143 static int dvbdmx_write(struct dmx_demux *demux, const char __user *buf, size_t count) in dvbdmx_write() argument
1145 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_write()
1148 if ((!demux->frontend) || (demux->frontend->source != DMX_MEMORY_FE)) in dvbdmx_write()
1167 static int dvbdmx_add_frontend(struct dmx_demux *demux, in dvbdmx_add_frontend() argument
1170 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_add_frontend()
1178 static int dvbdmx_remove_frontend(struct dmx_demux *demux, in dvbdmx_remove_frontend() argument
1181 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_remove_frontend()
1194 static struct list_head *dvbdmx_get_frontends(struct dmx_demux *demux) in dvbdmx_get_frontends() argument
1196 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_frontends()
1204 static int dvbdmx_connect_frontend(struct dmx_demux *demux, in dvbdmx_connect_frontend() argument
1207 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_connect_frontend()
1209 if (demux->frontend) in dvbdmx_connect_frontend()
1214 demux->frontend = frontend; in dvbdmx_connect_frontend()
1219 static int dvbdmx_disconnect_frontend(struct dmx_demux *demux) in dvbdmx_disconnect_frontend() argument
1221 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_disconnect_frontend()
1225 demux->frontend = NULL; in dvbdmx_disconnect_frontend()
1230 static int dvbdmx_get_pes_pids(struct dmx_demux *demux, u16 * pids) in dvbdmx_get_pes_pids() argument
1232 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_pes_pids()