|
@@ -80,6 +80,14 @@ static void dvb_usb_data_complete_204(struct usb_data_stream *stream, u8 *buffer
|
|
|
dvb_dmx_swfilter_204(&adap->demux, buffer, length);
|
|
|
}
|
|
|
|
|
|
+static void dvb_usb_data_complete_raw(struct usb_data_stream *stream,
|
|
|
+ u8 *buffer, size_t length)
|
|
|
+{
|
|
|
+ struct dvb_usb_adapter *adap = stream->user_priv;
|
|
|
+ if (adap->feedcount > 0 && adap->state & DVB_USB_ADAP_STATE_DVB)
|
|
|
+ dvb_dmx_swfilter_raw(&adap->demux, buffer, length);
|
|
|
+}
|
|
|
+
|
|
|
int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
|
|
|
{
|
|
|
int i, ret = 0;
|
|
@@ -90,6 +98,10 @@ int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
|
|
|
adap->fe_adap[i].stream.complete =
|
|
|
dvb_usb_data_complete_204;
|
|
|
else
|
|
|
+ if (adap->props.fe[i].caps & DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD)
|
|
|
+ adap->fe_adap[i].stream.complete =
|
|
|
+ dvb_usb_data_complete_raw;
|
|
|
+ else
|
|
|
adap->fe_adap[i].stream.complete = dvb_usb_data_complete;
|
|
|
adap->fe_adap[i].stream.user_priv = adap;
|
|
|
ret = usb_urb_init(&adap->fe_adap[i].stream,
|