Lines Matching full:feed
433 struct dmx_ts_feed *feed, in dvb_dmxdev_ts_callback() argument
436 struct dmxdev_filter *dmxdevfilter = feed->priv; in dvb_dmxdev_ts_callback()
486 /* stop feed but only mark the specified filter as stopped (state set) */
489 struct dmxdev_feed *feed; in dvb_dmxdev_feed_stop() local
496 dmxdevfilter->feed.sec->stop_filtering(dmxdevfilter->feed.sec); in dvb_dmxdev_feed_stop()
499 list_for_each_entry(feed, &dmxdevfilter->feed.ts, next) in dvb_dmxdev_feed_stop()
500 feed->ts->stop_filtering(feed->ts); in dvb_dmxdev_feed_stop()
508 /* start feed associated with the specified filter */
511 struct dmxdev_feed *feed; in dvb_dmxdev_feed_start() local
518 return filter->feed.sec->start_filtering(filter->feed.sec); in dvb_dmxdev_feed_start()
520 list_for_each_entry(feed, &filter->feed.ts, next) { in dvb_dmxdev_feed_start()
521 ret = feed->ts->start_filtering(feed->ts); in dvb_dmxdev_feed_start()
535 /* restart section feed if it has filters left associated with it,
536 otherwise release the feed */
552 filter->feed.sec); in dvb_dmxdev_feed_restart()
559 struct dmxdev_feed *feed; in dvb_dmxdev_filter_stop() local
567 if (!dmxdevfilter->feed.sec) in dvb_dmxdev_filter_stop()
571 dmxdevfilter->feed.sec-> in dvb_dmxdev_filter_stop()
572 release_filter(dmxdevfilter->feed.sec, in dvb_dmxdev_filter_stop()
575 dmxdevfilter->feed.sec = NULL; in dvb_dmxdev_filter_stop()
580 list_for_each_entry(feed, &dmxdevfilter->feed.ts, next) { in dvb_dmxdev_filter_stop()
581 demux->release_ts_feed(demux, feed->ts); in dvb_dmxdev_filter_stop()
582 feed->ts = NULL; in dvb_dmxdev_filter_stop()
597 struct dmxdev_feed *feed, *tmp; in dvb_dmxdev_delete_pids() local
600 list_for_each_entry_safe(feed, tmp, &dmxdevfilter->feed.ts, next) { in dvb_dmxdev_delete_pids()
601 list_del(&feed->next); in dvb_dmxdev_delete_pids()
602 kfree(feed); in dvb_dmxdev_delete_pids()
605 BUG_ON(!list_empty(&dmxdevfilter->feed.ts)); in dvb_dmxdev_delete_pids()
623 struct dmxdev_feed *feed) in dvb_dmxdev_start_feed() argument
633 feed->ts = NULL; in dvb_dmxdev_start_feed()
650 ret = dmxdev->demux->allocate_ts_feed(dmxdev->demux, &feed->ts, in dvb_dmxdev_start_feed()
655 tsfeed = feed->ts; in dvb_dmxdev_start_feed()
658 ret = tsfeed->set(tsfeed, feed->pid, ts_type, ts_pes, timeout); in dvb_dmxdev_start_feed()
676 struct dmxdev_feed *feed; in dvb_dmxdev_filter_start() local
702 struct dmx_section_feed **secfeed = &filter->feed.sec; in dvb_dmxdev_filter_start()
708 /* find active filter/feed with same PID */ in dvb_dmxdev_filter_start()
713 *secfeed = dmxdev->filter[i].feed.sec; in dvb_dmxdev_filter_start()
718 /* if no feed found, try to allocate new one */ in dvb_dmxdev_filter_start()
724 pr_err("DVB (%s): could not alloc feed\n", in dvb_dmxdev_filter_start()
732 pr_err("DVB (%s): could not set feed\n", in dvb_dmxdev_filter_start()
744 filter->feed.sec->start_filtering(*secfeed); in dvb_dmxdev_filter_start()
766 ret = filter->feed.sec->start_filtering(filter->feed.sec); in dvb_dmxdev_filter_start()
774 list_for_each_entry(feed, &filter->feed.ts, next) { in dvb_dmxdev_filter_start()
775 ret = dvb_dmxdev_start_feed(dmxdev, filter, feed); in dvb_dmxdev_filter_start()
875 struct dmxdev_feed *feed; in dvb_dmxdev_add_pid() local
883 (!list_empty(&filter->feed.ts))) in dvb_dmxdev_add_pid()
886 feed = kzalloc(sizeof(struct dmxdev_feed), GFP_KERNEL); in dvb_dmxdev_add_pid()
887 if (feed == NULL) in dvb_dmxdev_add_pid()
890 feed->pid = pid; in dvb_dmxdev_add_pid()
891 list_add(&feed->next, &filter->feed.ts); in dvb_dmxdev_add_pid()
894 return dvb_dmxdev_start_feed(dmxdev, filter, feed); in dvb_dmxdev_add_pid()
902 struct dmxdev_feed *feed, *tmp; in dvb_dmxdev_remove_pid() local
908 list_for_each_entry_safe(feed, tmp, &filter->feed.ts, next) { in dvb_dmxdev_remove_pid()
909 if ((feed->pid == pid) && (feed->ts != NULL)) { in dvb_dmxdev_remove_pid()
910 feed->ts->stop_filtering(feed->ts); in dvb_dmxdev_remove_pid()
912 feed->ts); in dvb_dmxdev_remove_pid()
913 list_del(&feed->next); in dvb_dmxdev_remove_pid()
914 kfree(feed); in dvb_dmxdev_remove_pid()
957 INIT_LIST_HEAD(&dmxdevfilter->feed.ts); in dvb_dmxdev_pes_filter_set()