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
481 spin_lock_irqsave(&demux->lock, flags); in dvb_dmx_swfilter_packets()
485 dvb_dmx_swfilter_packet(demux, buf); in dvb_dmx_swfilter_packets()
489 spin_unlock_irqrestore(&demux->lock, flags); in dvb_dmx_swfilter_packets()
519 static inline void _dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, in _dvb_dmx_swfilter() argument
526 spin_lock_irqsave(&demux->lock, flags); in _dvb_dmx_swfilter()
528 if (demux->tsbufp) { /* tsbuf[0] is now 0x47. */ in _dvb_dmx_swfilter()
529 i = demux->tsbufp; in _dvb_dmx_swfilter()
532 memcpy(&demux->tsbuf[i], buf, count); in _dvb_dmx_swfilter()
533 demux->tsbufp += count; in _dvb_dmx_swfilter()
536 memcpy(&demux->tsbuf[i], buf, j); in _dvb_dmx_swfilter()
537 if (demux->tsbuf[0] == 0x47) /* double check */ in _dvb_dmx_swfilter()
538 dvb_dmx_swfilter_packet(demux, demux->tsbuf); in _dvb_dmx_swfilter()
539 demux->tsbufp = 0; in _dvb_dmx_swfilter()
553 memcpy(demux->tsbuf, q, 188); in _dvb_dmx_swfilter()
554 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
555 q = demux->tsbuf; in _dvb_dmx_swfilter()
557 dvb_dmx_swfilter_packet(demux, q); in _dvb_dmx_swfilter()
563 memcpy(demux->tsbuf, &buf[p], i); in _dvb_dmx_swfilter()
564 demux->tsbufp = i; in _dvb_dmx_swfilter()
565 if (pktsize == 204 && demux->tsbuf[0] == 0xB8) in _dvb_dmx_swfilter()
566 demux->tsbuf[0] = 0x47; in _dvb_dmx_swfilter()
570 spin_unlock_irqrestore(&demux->lock, flags); in _dvb_dmx_swfilter()
573 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter() argument
575 _dvb_dmx_swfilter(demux, buf, count, 188); in dvb_dmx_swfilter()
579 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_204() argument
581 _dvb_dmx_swfilter(demux, buf, count, 204); in dvb_dmx_swfilter_204()
585 void dvb_dmx_swfilter_raw(struct dvb_demux *demux, const u8 *buf, size_t count) in dvb_dmx_swfilter_raw() argument
589 spin_lock_irqsave(&demux->lock, flags); in dvb_dmx_swfilter_raw()
591 demux->feed->cb.ts(buf, count, NULL, 0, &demux->feed->feed.ts, DMX_OK); in dvb_dmx_swfilter_raw()
593 spin_unlock_irqrestore(&demux->lock, flags); in dvb_dmx_swfilter_raw()
597 static struct dvb_demux_filter *dvb_dmx_filter_alloc(struct dvb_demux *demux) in dvb_dmx_filter_alloc() argument
601 for (i = 0; i < demux->filternum; i++) in dvb_dmx_filter_alloc()
602 if (demux->filter[i].state == DMX_STATE_FREE) in dvb_dmx_filter_alloc()
605 if (i == demux->filternum) in dvb_dmx_filter_alloc()
608 demux->filter[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_filter_alloc()
610 return &demux->filter[i]; in dvb_dmx_filter_alloc()
613 static struct dvb_demux_feed *dvb_dmx_feed_alloc(struct dvb_demux *demux) in dvb_dmx_feed_alloc() argument
617 for (i = 0; i < demux->feednum; i++) in dvb_dmx_feed_alloc()
618 if (demux->feed[i].state == DMX_STATE_FREE) in dvb_dmx_feed_alloc()
621 if (i == demux->feednum) in dvb_dmx_feed_alloc()
624 demux->feed[i].state = DMX_STATE_ALLOCATED; in dvb_dmx_feed_alloc()
626 return &demux->feed[i]; in dvb_dmx_feed_alloc()
633 list_for_each_entry(entry, &feed->demux->feed_list, list_head) in dvb_demux_feed_find()
642 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_add()
649 list_add(&feed->list_head, &feed->demux->feed_list); in dvb_demux_feed_add()
651 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_add()
656 spin_lock_irq(&feed->demux->lock); in dvb_demux_feed_del()
665 spin_unlock_irq(&feed->demux->lock); in dvb_demux_feed_del()
673 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_set() local
678 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_set()
683 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
687 if (demux->pesfilter[pes_type] && in dmx_ts_feed_set()
688 demux->pesfilter[pes_type] != feed) { in dmx_ts_feed_set()
689 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
693 demux->pesfilter[pes_type] = feed; in dmx_ts_feed_set()
694 demux->pids[pes_type] = pid; in dmx_ts_feed_set()
711 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
718 mutex_unlock(&demux->mutex); in dmx_ts_feed_set()
726 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_start_filtering() local
729 if (mutex_lock_interruptible(&demux->mutex)) in dmx_ts_feed_start_filtering()
733 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
737 if (!demux->start_feed) { in dmx_ts_feed_start_filtering()
738 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
742 if ((ret = demux->start_feed(feed)) < 0) { in dmx_ts_feed_start_filtering()
743 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
747 spin_lock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
750 spin_unlock_irq(&demux->lock); in dmx_ts_feed_start_filtering()
751 mutex_unlock(&demux->mutex); in dmx_ts_feed_start_filtering()
759 struct dvb_demux *demux = feed->demux; in dmx_ts_feed_stop_filtering() local
762 mutex_lock(&demux->mutex); in dmx_ts_feed_stop_filtering()
765 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
769 if (!demux->stop_feed) { in dmx_ts_feed_stop_filtering()
770 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
774 ret = demux->stop_feed(feed); in dmx_ts_feed_stop_filtering()
776 spin_lock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
779 spin_unlock_irq(&demux->lock); in dmx_ts_feed_stop_filtering()
780 mutex_unlock(&demux->mutex); in dmx_ts_feed_stop_filtering()
789 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_allocate_ts_feed() local
792 if (mutex_lock_interruptible(&demux->mutex)) in dvbdmx_allocate_ts_feed()
795 if (!(feed = dvb_dmx_feed_alloc(demux))) { in dvbdmx_allocate_ts_feed()
796 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
802 feed->demux = demux; in dvbdmx_allocate_ts_feed()
815 if (!(feed->filter = dvb_dmx_filter_alloc(demux))) { in dvbdmx_allocate_ts_feed()
817 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
825 mutex_unlock(&demux->mutex); in dvbdmx_allocate_ts_feed()
833 struct dvb_demux *demux = (struct dvb_demux *)dmx; in dvbdmx_release_ts_feed() local
836 mutex_lock(&demux->mutex); in dvbdmx_release_ts_feed()
839 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
855 demux->pesfilter[feed->pes_type] = NULL; in dvbdmx_release_ts_feed()
857 mutex_unlock(&demux->mutex); in dvbdmx_release_ts_feed()
869 struct dvb_demux *dvbdemux = dvbdmxfeed->demux; in dmx_section_feed_allocate_filter()
901 struct dvb_demux *dvbdmx = dvbdmxfeed->demux; in dmx_section_feed_set()
955 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()
1130 static int dvbdmx_open(struct dmx_demux *demux) in dvbdmx_open() argument
1132 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_open()
1141 static int dvbdmx_close(struct dmx_demux *demux) in dvbdmx_close() argument
1143 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_close()
1153 static int dvbdmx_write(struct dmx_demux *demux, const char __user *buf, size_t count) in dvbdmx_write() argument
1155 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_write()
1158 if ((!demux->frontend) || (demux->frontend->source != DMX_MEMORY_FE)) in dvbdmx_write()
1177 static int dvbdmx_add_frontend(struct dmx_demux *demux, in dvbdmx_add_frontend() argument
1180 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_add_frontend()
1188 static int dvbdmx_remove_frontend(struct dmx_demux *demux, in dvbdmx_remove_frontend() argument
1191 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_remove_frontend()
1204 static struct list_head *dvbdmx_get_frontends(struct dmx_demux *demux) in dvbdmx_get_frontends() argument
1206 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_frontends()
1214 static int dvbdmx_connect_frontend(struct dmx_demux *demux, in dvbdmx_connect_frontend() argument
1217 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_connect_frontend()
1219 if (demux->frontend) in dvbdmx_connect_frontend()
1224 demux->frontend = frontend; in dvbdmx_connect_frontend()
1229 static int dvbdmx_disconnect_frontend(struct dmx_demux *demux) in dvbdmx_disconnect_frontend() argument
1231 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_disconnect_frontend()
1235 demux->frontend = NULL; in dvbdmx_disconnect_frontend()
1240 static int dvbdmx_get_pes_pids(struct dmx_demux *demux, u16 * pids) in dvbdmx_get_pes_pids() argument
1242 struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; in dvbdmx_get_pes_pids()