• Home
  • Raw
  • Download

Lines Matching refs:demux

168 	struct dvb_demux *demux = feed->demux;  in dvb_dmx_swfilter_section_feed()  local
182 demux->check_crc32(feed, sec->secbuf, sec->seclen)) { in dvb_dmx_swfilter_section_feed()
244 struct dvb_demux *demux = feed->demux; in dvb_dmx_swfilter_section_copy_dump() local
262 demux->memcopy(feed, sec->secbuf_base + sec->tsfeedp, buf, len); in dvb_dmx_swfilter_section_copy_dump()
394 if (feed->demux->write_to_decoder) in dvb_dmx_swfilter_packet_type()
395 feed->demux->write_to_decoder(feed, buf, 188); in dvb_dmx_swfilter_packet_type()
415 static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) in dvb_dmx_swfilter_packet() argument
425 demux->speed_pkts_cnt++; in dvb_dmx_swfilter_packet()
428 if (!(demux->speed_pkts_cnt % SPEED_PKTS_INTERVAL)) { in dvb_dmx_swfilter_packet()
431 if (ktime_to_ns(demux->speed_last_time) != 0) { in dvb_dmx_swfilter_packet()
432 speed_bytes = (u64)demux->speed_pkts_cnt in dvb_dmx_swfilter_packet()
438 demux->speed_last_time); in dvb_dmx_swfilter_packet()
445 demux->speed_last_time = cur_time; in dvb_dmx_swfilter_packet()
446 demux->speed_pkts_cnt = 0; in dvb_dmx_swfilter_packet()
451 list_for_each_entry(feed, &demux->feed_list, list_head) { in dvb_dmx_swfilter_packet()
463 if (demux->cnt_storage && dvb_demux_tscheck) { in dvb_dmx_swfilter_packet()
467 demux->cnt_storage[pid] = in dvb_dmx_swfilter_packet()
468 (demux->cnt_storage[pid] + 1) & 0xf; in dvb_dmx_swfilter_packet()
470 if ((buf[3] & 0xf) != demux->cnt_storage[pid]) { in dvb_dmx_swfilter_packet()
471 list_for_each_entry(feed, &demux->feed_list, list_head) { in dvb_dmx_swfilter_packet()
479 pid, demux->cnt_storage[pid], in dvb_dmx_swfilter_packet()
481 demux->cnt_storage[pid] = buf[3] & 0xf; in dvb_dmx_swfilter_packet()
487 list_for_each_entry(feed, &demux->feed_list, list_head) { in dvb_dmx_swfilter_packet()
504 void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, in dvb_dmx_swfilter_packets() argument
509 spin_lock_irqsave(&demux->lock, flags); in dvb_dmx_swfilter_packets()
513 dvb_dmx_swfilter_packet(demux, buf); in dvb_dmx_swfilter_packets()
517 spin_unlock_irqrestore(&demux->lock, flags); in dvb_dmx_swfilter_packets()
547 static inline void _dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, in _dvb_dmx_swfilter() argument
554 spin_lock_irqsave(&demux->lock, flags); in _dvb_dmx_swfilter()
556 if (demux->tsbufp) { /* tsbuf[0] is now 0x47. */ in _dvb_dmx_swfilter()
557 i = demux->tsbufp; in _dvb_dmx_swfilter()
560 memcpy(&demux->tsbuf[i], buf, count); in _dvb_dmx_swfilter()
561 demux->tsbufp += count; in _dvb_dmx_swfilter()
564 memcpy(&demux->tsbuf[i], buf, j); in _dvb_dmx_swfilter()
565 if (demux->tsbuf[0] == 0x47) /* double check */ in _dvb_dmx_swfilter()
566 dvb_dmx_swfilter_packet(demux, demux->tsbuf); in _dvb_dmx_swfilter()
567 demux->tsbufp = 0; in _dvb_dmx_swfilter()
581 memcpy(demux->tsbuf, q, 188); in _dvb_dmx_swfilter()
582 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
583 q = demux->tsbuf; in _dvb_dmx_swfilter()
585 dvb_dmx_swfilter_packet(demux, q); in _dvb_dmx_swfilter()
591 memcpy(demux->tsbuf, &buf[p], i); in _dvb_dmx_swfilter()
592 demux->tsbufp = i; in _dvb_dmx_swfilter()
593 if (pktsize == 204 && demux->tsbuf[0] == 0xB8) in _dvb_dmx_swfilter()
594 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
598 spin_unlock_irqrestore(&demux->lock, flags); in _dvb_dmx_swfilter()
601 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter() argument
603 _dvb_dmx_swfilter(demux, buf, count, 188); in dvb_dmx_swfilter()
607 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_204() argument
609 _dvb_dmx_swfilter(demux, buf, count, 204); in dvb_dmx_swfilter_204()
613 void dvb_dmx_swfilter_raw(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_raw() argument
617 spin_lock_irqsave(&demux->lock, flags); in dvb_dmx_swfilter_raw()
619 demux->feed->cb.ts(buf, count, NULL, 0, &demux->feed->feed.ts, in dvb_dmx_swfilter_raw()
620 &demux->feed->buffer_flags); in dvb_dmx_swfilter_raw()
622 spin_unlock_irqrestore(&demux->lock, flags); in dvb_dmx_swfilter_raw()
626 static struct dvb_demux_filter *dvb_dmx_filter_alloc(struct dvb_demux *demux) in dvb_dmx_filter_alloc() argument
630 for (i = 0; i < demux->filternum; i++) in dvb_dmx_filter_alloc()
631 if (demux->filter[i].state == DMX_STATE_FREE) in dvb_dmx_filter_alloc()
634 if (i == demux->filternum) in dvb_dmx_filter_alloc()
637 demux->filter[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_filter_alloc()
639 return &demux->filter[i]; in dvb_dmx_filter_alloc()
642 static struct dvb_demux_feed *dvb_dmx_feed_alloc(struct dvb_demux *demux) in dvb_dmx_feed_alloc() argument
646 for (i = 0; i < demux->feednum; i++) in dvb_dmx_feed_alloc()
647 if (demux->feed[i].state == DMX_STATE_FREE) in dvb_dmx_feed_alloc()
650 if (i == demux->feednum) in dvb_dmx_feed_alloc()
653 demux->feed[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_feed_alloc()
655 return &demux->feed[i]; in dvb_dmx_feed_alloc()
662 list_for_each_entry(entry, &feed->demux->feed_list, list_head) in dvb_demux_feed_find()
671 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_add()
678 list_add(&feed->list_head, &feed->demux->feed_list); in dvb_demux_feed_add()
680 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_add()
685 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_del()
694 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_del()
701 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_set() local
706 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_set()
711 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
715 if (demux->pesfilter[pes_type] && in dmx_ts_feed_set()
716 demux->pesfilter[pes_type] != feed) { in dmx_ts_feed_set()
717 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
721 demux->pesfilter[pes_type] = feed; in dmx_ts_feed_set()
722 demux->pids[pes_type] = pid; in dmx_ts_feed_set()
733 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
741 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_start_filtering() local
744 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_start_filtering()
748 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
752 if (!demux->start_feed) { in dmx_ts_feed_start_filtering()
753 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
757 if ((ret = demux->start_feed(feed)) < 0) { in dmx_ts_feed_start_filtering()
758 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
762 spin_lock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
765 spin_unlock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
766 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
774 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_stop_filtering() local
777 mutex_lock(&demux->mutex); in dmx_ts_feed_stop_filtering()
780 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
784 if (!demux->stop_feed) { in dmx_ts_feed_stop_filtering()
785 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
789 ret = demux->stop_feed(feed); in dmx_ts_feed_stop_filtering()
791 spin_lock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
794 spin_unlock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
795 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
804 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_allocate_ts_feed() local
807 if (mutex_lock_interruptible(&demux->mutex)) in dvbdmx_allocate_ts_feed()
810 if (!(feed = dvb_dmx_feed_alloc(demux))) { in dvbdmx_allocate_ts_feed()
811 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
817 feed->demux = demux; in dvbdmx_allocate_ts_feed()
830 if (!(feed->filter = dvb_dmx_filter_alloc(demux))) { in dvbdmx_allocate_ts_feed()
832 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
840 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
848 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_release_ts_feed() local
851 mutex_lock(&demux->mutex); in dvbdmx_release_ts_feed()
854 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
866 demux->pesfilter[feed->pes_type] = NULL; in dvbdmx_release_ts_feed()
868 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
880 struct dvb_demux *dvbdemux = dvbdmxfeed->demux; in dmx_section_feed_allocate_filter()
911 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_set()
954 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_start_filtering()
1000 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_stop_filtering()
1026 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_release_filter()
1060 static int dvbdmx_allocate_section_feed(struct dmx_demux *demux, in dvbdmx_allocate_section_feed() argument
1064 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; in dvbdmx_allocate_section_feed()
1077 dvbdmxfeed->demux = dvbdmx; in dvbdmx_allocate_section_feed()
1087 (*feed)->parent = demux; in dvbdmx_allocate_section_feed()
1100 static int dvbdmx_release_section_feed(struct dmx_demux *demux, in dvbdmx_release_section_feed() argument
1104 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; in dvbdmx_release_section_feed()
1126 static int dvbdmx_open(struct dmx_demux *demux) in dvbdmx_open() argument
1128 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_open()
1137 static int dvbdmx_close(struct dmx_demux *demux) in dvbdmx_close() argument
1139 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_close()
1149 static int dvbdmx_write(struct dmx_demux *demux, const char __user *buf, size_t count) in dvbdmx_write() argument
1151 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_write()
1154 if ((!demux->frontend) || (demux->frontend->source != DMX_MEMORY_FE)) in dvbdmx_write()
1173 static int dvbdmx_add_frontend(struct dmx_demux *demux, in dvbdmx_add_frontend() argument
1176 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_add_frontend()
1184 static int dvbdmx_remove_frontend(struct dmx_demux *demux, in dvbdmx_remove_frontend() argument
1187 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_remove_frontend()
1200 static struct list_head *dvbdmx_get_frontends(struct dmx_demux *demux) in dvbdmx_get_frontends() argument
1202 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_frontends()
1210 static int dvbdmx_connect_frontend(struct dmx_demux *demux, in dvbdmx_connect_frontend() argument
1213 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_connect_frontend()
1215 if (demux->frontend) in dvbdmx_connect_frontend()
1220 demux->frontend = frontend; in dvbdmx_connect_frontend()
1225 static int dvbdmx_disconnect_frontend(struct dmx_demux *demux) in dvbdmx_disconnect_frontend() argument
1227 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_disconnect_frontend()
1231 demux->frontend = NULL; in dvbdmx_disconnect_frontend()
1236 static int dvbdmx_get_pes_pids(struct dmx_demux *demux, u16 * pids) in dvbdmx_get_pes_pids() argument
1238 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_pes_pids()