/** * Start filtering according to feed parameter. * * @feed: the feed we are working on. * * Return error code. */ static int mpq_tsif_dmx_start_filtering(struct dvb_demux_feed *feed) { int ret = 0; struct mpq_demux *mpq_demux = feed->demux->priv; MPQ_DVB_DBG_PRINT( "%s(%d) executed\n", __func__, feed->pid); if (mpq_demux == NULL) { MPQ_DVB_ERR_PRINT( "%s: invalid mpq_demux handle\n", __func__); return -EINVAL; } if (mpq_demux->source < DMX_SOURCE_DVR0) { /* Source from TSIF, need to configure TSIF hardware */ ret = mpq_tsif_dmx_start(mpq_demux); if (ret < 0) { MPQ_DVB_DBG_PRINT( "%s: mpq_tsif_dmx_start failed(%d)\n", __func__, ret); return ret; } } /* Always feed sections/PES starting from a new one and * do not partial transfer data from older one */ feed->pusi_seen = 0; ret = mpq_dmx_init_mpq_feed(feed); if (ret < 0) { MPQ_DVB_DBG_PRINT( "%s: mpq_dmx_init_mpq_feed failed(%d)\n", __func__, ret); if (mpq_demux->source < DMX_SOURCE_DVR0) mpq_tsif_dmx_stop(mpq_demux); return ret; } return ret; }
static int mpq_tsif_dmx_start_filtering(struct dvb_demux_feed *feed) { int ret = 0; struct mpq_demux *mpq_demux = feed->demux->priv; MPQ_DVB_DBG_PRINT( "%s(%d) executed\n", __func__, feed->pid); if (mpq_demux == NULL) { MPQ_DVB_ERR_PRINT( "%s: invalid mpq_demux handle\n", __func__); return -EINVAL; } if (mpq_demux->source < DMX_SOURCE_DVR0) { ret = mpq_tsif_dmx_start(mpq_demux); if (ret < 0) { MPQ_DVB_DBG_PRINT( "%s: mpq_tsif_dmx_start failed(%d)\n", __func__, ret); return ret; } } feed->pusi_seen = 0; ret = mpq_dmx_init_mpq_feed(feed); if (ret < 0) { MPQ_DVB_DBG_PRINT( "%s: mpq_dmx_init_mpq_feed failed(%d)\n", __func__, ret); if (mpq_demux->source < DMX_SOURCE_DVR0) mpq_tsif_dmx_stop(mpq_demux); return ret; } return ret; }