Archiwum dla Wrzesień, 2008

Wrzesień 21, 2008

HVR-900 – klikanie dźwięku pod Linuksem.

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

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.