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).