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()
373 if (feed->demux->write_to_decoder) in dvb_dmx_swfilter_packet_type()
374 feed->demux->write_to_decoder(feed, buf, 188); in dvb_dmx_swfilter_packet_type()
394 static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) in dvb_dmx_swfilter_packet() argument
404 demux->speed_pkts_cnt++; in dvb_dmx_swfilter_packet()
407 if (!(demux->speed_pkts_cnt % SPEED_PKTS_INTERVAL)) { in dvb_dmx_swfilter_packet()
410 if (demux->speed_last_time.tv_sec != 0 && in dvb_dmx_swfilter_packet()
411 demux->speed_last_time.tv_nsec != 0) { in dvb_dmx_swfilter_packet()
413 demux->speed_last_time); in dvb_dmx_swfilter_packet()
414 speed_bytes = (u64)demux->speed_pkts_cnt in dvb_dmx_swfilter_packet()
428 demux->speed_last_time = cur_time; in dvb_dmx_swfilter_packet()
429 demux->speed_pkts_cnt = 0; in dvb_dmx_swfilter_packet()
442 if (demux->cnt_storage && dvb_demux_tscheck) { in dvb_dmx_swfilter_packet()
446 demux->cnt_storage[pid] = in dvb_dmx_swfilter_packet()
447 (demux->cnt_storage[pid] + 1) & 0xf; in dvb_dmx_swfilter_packet()
449 if ((buf[3] & 0xf) != demux->cnt_storage[pid]) { in dvb_dmx_swfilter_packet()
451 pid, demux->cnt_storage[pid], in dvb_dmx_swfilter_packet()
453 demux->cnt_storage[pid] = buf[3] & 0xf; in dvb_dmx_swfilter_packet()
459 list_for_each_entry(feed, &demux->feed_list, list_head) { in dvb_dmx_swfilter_packet()
475 void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, in dvb_dmx_swfilter_packets() argument
480 spin_lock_irqsave(&demux->lock, flags); in dvb_dmx_swfilter_packets()
484 dvb_dmx_swfilter_packet(demux, buf); in dvb_dmx_swfilter_packets()
488 spin_unlock_irqrestore(&demux->lock, flags); in dvb_dmx_swfilter_packets()
518 static inline void _dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, in _dvb_dmx_swfilter() argument
525 spin_lock_irqsave(&demux->lock, flags); in _dvb_dmx_swfilter()
527 if (demux->tsbufp) { /* tsbuf[0] is now 0x47. */ in _dvb_dmx_swfilter()
528 i = demux->tsbufp; in _dvb_dmx_swfilter()
531 memcpy(&demux->tsbuf[i], buf, count); in _dvb_dmx_swfilter()
532 demux->tsbufp += count; in _dvb_dmx_swfilter()
535 memcpy(&demux->tsbuf[i], buf, j); in _dvb_dmx_swfilter()
536 if (demux->tsbuf[0] == 0x47) /* double check */ in _dvb_dmx_swfilter()
537 dvb_dmx_swfilter_packet(demux, demux->tsbuf); in _dvb_dmx_swfilter()
538 demux->tsbufp = 0; in _dvb_dmx_swfilter()
552 memcpy(demux->tsbuf, q, 188); in _dvb_dmx_swfilter()
553 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
554 q = demux->tsbuf; in _dvb_dmx_swfilter()
556 dvb_dmx_swfilter_packet(demux, q); in _dvb_dmx_swfilter()
562 memcpy(demux->tsbuf, &buf[p], i); in _dvb_dmx_swfilter()
563 demux->tsbufp = i; in _dvb_dmx_swfilter()
564 if (pktsize == 204 && demux->tsbuf[0] == 0xB8) in _dvb_dmx_swfilter()
565 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
569 spin_unlock_irqrestore(&demux->lock, flags); in _dvb_dmx_swfilter()
572 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter() argument
574 _dvb_dmx_swfilter(demux, buf, count, 188); in dvb_dmx_swfilter()
578 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_204() argument
580 _dvb_dmx_swfilter(demux, buf, count, 204); in dvb_dmx_swfilter_204()
584 void dvb_dmx_swfilter_raw(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_raw() argument
588 spin_lock_irqsave(&demux->lock, flags); in dvb_dmx_swfilter_raw()
590 demux->feed->cb.ts(buf, count, NULL, 0, &demux->feed->feed.ts); in dvb_dmx_swfilter_raw()
592 spin_unlock_irqrestore(&demux->lock, flags); in dvb_dmx_swfilter_raw()
596 static struct dvb_demux_filter *dvb_dmx_filter_alloc(struct dvb_demux *demux) in dvb_dmx_filter_alloc() argument
600 for (i = 0; i < demux->filternum; i++) in dvb_dmx_filter_alloc()
601 if (demux->filter[i].state == DMX_STATE_FREE) in dvb_dmx_filter_alloc()
604 if (i == demux->filternum) in dvb_dmx_filter_alloc()
607 demux->filter[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_filter_alloc()
609 return &demux->filter[i]; in dvb_dmx_filter_alloc()
612 static struct dvb_demux_feed *dvb_dmx_feed_alloc(struct dvb_demux *demux) in dvb_dmx_feed_alloc() argument
616 for (i = 0; i < demux->feednum; i++) in dvb_dmx_feed_alloc()
617 if (demux->feed[i].state == DMX_STATE_FREE) in dvb_dmx_feed_alloc()
620 if (i == demux->feednum) in dvb_dmx_feed_alloc()
623 demux->feed[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_feed_alloc()
625 return &demux->feed[i]; in dvb_dmx_feed_alloc()
632 list_for_each_entry(entry, &feed->demux->feed_list, list_head) in dvb_demux_feed_find()
641 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_add()
648 list_add(&feed->list_head, &feed->demux->feed_list); in dvb_demux_feed_add()
650 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_add()
655 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_del()
664 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_del()
672 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_set() local
677 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_set()
682 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
686 if (demux->pesfilter[pes_type] && in dmx_ts_feed_set()
687 demux->pesfilter[pes_type] != feed) { in dmx_ts_feed_set()
688 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
692 demux->pesfilter[pes_type] = feed; in dmx_ts_feed_set()
693 demux->pids[pes_type] = pid; in dmx_ts_feed_set()
710 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
717 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
725 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_start_filtering() local
728 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_start_filtering()
732 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
736 if (!demux->start_feed) { in dmx_ts_feed_start_filtering()
737 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
741 if ((ret = demux->start_feed(feed)) < 0) { in dmx_ts_feed_start_filtering()
742 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
746 spin_lock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
749 spin_unlock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
750 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
758 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_stop_filtering() local
761 mutex_lock(&demux->mutex); in dmx_ts_feed_stop_filtering()
764 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
768 if (!demux->stop_feed) { in dmx_ts_feed_stop_filtering()
769 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
773 ret = demux->stop_feed(feed); in dmx_ts_feed_stop_filtering()
775 spin_lock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
778 spin_unlock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
779 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
788 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_allocate_ts_feed() local
791 if (mutex_lock_interruptible(&demux->mutex)) in dvbdmx_allocate_ts_feed()
794 if (!(feed = dvb_dmx_feed_alloc(demux))) { in dvbdmx_allocate_ts_feed()
795 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
801 feed->demux = demux; in dvbdmx_allocate_ts_feed()
814 if (!(feed->filter = dvb_dmx_filter_alloc(demux))) { in dvbdmx_allocate_ts_feed()
816 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
824 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
832 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_release_ts_feed() local
835 mutex_lock(&demux->mutex); in dvbdmx_release_ts_feed()
838 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
854 demux->pesfilter[feed->pes_type] = NULL; in dvbdmx_release_ts_feed()
856 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
868 struct dvb_demux *dvbdemux = dvbdmxfeed->demux; in dmx_section_feed_allocate_filter()
900 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_set()
954 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_start_filtering()
999 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_stop_filtering()
1025 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_release_filter()
1059 static int dvbdmx_allocate_section_feed(struct dmx_demux *demux, in dvbdmx_allocate_section_feed() argument
1063 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; in dvbdmx_allocate_section_feed()
1076 dvbdmxfeed->demux = dvbdmx; in dvbdmx_allocate_section_feed()
1086 (*feed)->parent = demux; in dvbdmx_allocate_section_feed()
1099 static int dvbdmx_release_section_feed(struct dmx_demux *demux, in dvbdmx_release_section_feed() argument
1103 struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; in dvbdmx_release_section_feed()
1129 static int dvbdmx_open(struct dmx_demux *demux) in dvbdmx_open() argument
1131 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_open()
1140 static int dvbdmx_close(struct dmx_demux *demux) in dvbdmx_close() argument
1142 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_close()
1152 static int dvbdmx_write(struct dmx_demux *demux, const char __user *buf, size_t count) in dvbdmx_write() argument
1154 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_write()
1157 if ((!demux->frontend) || (demux->frontend->source != DMX_MEMORY_FE)) in dvbdmx_write()
1176 static int dvbdmx_add_frontend(struct dmx_demux *demux, in dvbdmx_add_frontend() argument
1179 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_add_frontend()
1187 static int dvbdmx_remove_frontend(struct dmx_demux *demux, in dvbdmx_remove_frontend() argument
1190 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_remove_frontend()
1203 static struct list_head *dvbdmx_get_frontends(struct dmx_demux *demux) in dvbdmx_get_frontends() argument
1205 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_frontends()
1213 static int dvbdmx_connect_frontend(struct dmx_demux *demux, in dvbdmx_connect_frontend() argument
1216 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_connect_frontend()
1218 if (demux->frontend) in dvbdmx_connect_frontend()
1223 demux->frontend = frontend; in dvbdmx_connect_frontend()
1228 static int dvbdmx_disconnect_frontend(struct dmx_demux *demux) in dvbdmx_disconnect_frontend() argument
1230 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_disconnect_frontend()
1234 demux->frontend = NULL; in dvbdmx_disconnect_frontend()
1239 static int dvbdmx_get_pes_pids(struct dmx_demux *demux, u16 * pids) in dvbdmx_get_pes_pids() argument
1241 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_pes_pids()