Reputation: 73
Currently I am working on a DVB-T2 dongle which is connected to my Ubuntu laptop 14.04 using USB
interface.
I am using following applications to perform scanning and channel play. 1. w_scan - which scans and gives me a channel.conf file 2. vlc ./channel.conf - plays a channel using modulation parameters in channel.conf
Things work fine when Pid filtering is disabled. But when Pid filtering is enabled, I see
macroblocks on the screen instead of smooth AV. Even AV is breaking a lot.
After going through the driver code, I tried increasing the URB buffer size from 3K (21*188) to
64K (348*188). The AV became smooth.
This urb buffer size is buffer_length (lenght of transport buffer) in below function.
void usb_fill_bulk_urb (struct urb * urb, struct usb_device * dev, unsigned int pipe, void * transfer_buffer, int buffer_length, usb_complete_t complete_fn, void * context);
As you can see the driver uses bulk mode of usb transfer.
Could anyone explain me why increasing the buffer is solving the macroblock issue ?
Give me some pointers to understand this issue better.
Thanks in advance, Murali
Upvotes: 1
Views: 428
Reputation: 73
finally found soultion for this issue, the usb frame size and urb buffer size should be same (in my case 21x188). In my code, found that USB frame size was set to (348x188) and urb buffer size was (21x188) which was causing the issue.
Upvotes: 1