2008-09-21 22:28:00,
English version
[
Linux
Qpa
]
Ależ kupa.
Zanabyłem kiedyś, już prawie rok temu, tuner DVB-T HVR900. Nie działał dobrze od początku. W mainline nie był rozpoznawany bo... identyfikator urządzenia nie był dodany do obsługiwanych kart. Sterownik Markusa Rechbergera (dvb-experimental) działał, ale dźwięk klikał. Po pół roku Markus wydał nowy sterownik z obsługą DVB w userspace, w którym problem został rozwiązany. Używanie modułów spoza kernela jest niestety niewygodne, pomyślałem, że można by poprawić sterownik w kernelu.
Poprosiłem Mauro Carvalho Chehaba, żeby dodał odpowiednie id, ale już wtedy zacząłem używać tylko wejścia composite, do którego podłączam zewnętrzny tuner DVB-S. Niestety audio w composite nie działało. Dzisiaj to poprawiłem i idąc za ciosem postanowiłem poprosić Markusa, żeby pomógł mi naprawić problem z "klikaniem" dźwięku. Nie był zainteresowany. Napisał tylko, żebym używał em28xx-new, a w kolejnym mailu, że musiałbym użyć kodu z em28xx-audio.c.
Się wkurwiłem i zacząłem analizować diffa między dvb-experimental a em28xx-new.
Okazało się, że wystarczy zmienić aż tyle:
- runtime->buffer_size - oldptr - 1;
+ runtime->buffer_size - oldptr;
- memcpy(runtime->dma_area, cp + cnt,
+ memcpy(runtime->dma_area, cp + cnt * stride,
length * stride - cnt * stride);
Markus trzymając dvb-experimental w stanie "klikającym" (co pewnie przekłada się na to że w mainline też nie jest poprawione), nagania sobie testerów em28xx-new, który jak sam twierdzi, nigdy nie zostanie włączony do mainline.
Patch do repo v4l-dvb jest tutaj
Łatkę wysłałem do Mauro. Mam nadzieję, że wejdzie szybko do mainline...
Co za gówno. Ciekawe ile sterowników w kernelu nie działa, bo są jakieś niesnaski między deweloperami. Markus był kiedyś jednym z deweloperów v4l, ale się chopaki popsztykali. Teraz za pisanie zewnętrznego sterownika em28xx-new płaci mu Empia...
Ja pierdole. To ma być open source? (update: tak, to ma być open source - łatka jest już w 2.6.27).