# bufor FIFO w K3B 0.12.10 przy nagrywaniu DVD -ebuild i howto

## rampage7

Od dawna w K3B brakowało mi jednego - jakiegoś bufora przy nagrywaniu DVD. K3B używa do nagrywania DVD programu growisofs, który, z tego co mi wiadomo, nie buforuje danych. Efekt jest taki, że 2MB buforu w nagrywarce, przy 8-krotnej (czy nawet 4 -krotnej) prędkości nagrywania, to nawet kroplą w morzu potrzeb nazwać nie można (o ile dobrze liczę 2MB wystarcza na około 200ms przy 8x).

Najlepiej to byłoby chyba nacisnąć "Nagrywaj" i nic nie robić na komputerze, bo uruchomienie choćby Firefoxa od razu powoduje opróżnienie malutkiego bufora nagrywarki (mój liteon sygnalizuje ten fakt żółtym kolorem led). Jedno takie zdarzenie na płytę to nic, ale 10 to juz może zdecydować o tym czy ją odczytamy za 10 lat, czy też nie.

Aż strach pomyśleć co się dzieje gdy ktoś chce nagrać płytę 16x.

Natrafiłem ostatnio, całkiem przypadkiem na wypowiedź, chyba nawet autora K3B, w której była mowa na ten temat. Okazuje się że w kodzie K3B już o tym pomyślano, ale funkcja nie jest jeszcze aktywna. Jednak można ją włączyć, o co też sam się pokusiłem  :Smile: 

Nagrałem juz tak parę płyt, wygląda na to, że wszystko działa ok. Znalazłem 1 błąd - przy próbie anulowania nagrania płyty K3B się zawiesza. Jeśli nie przerwiemy nagrywania to wszystko wydaje się być w najlepszym porządku.

A więc zachęcam wszystkich do spróbowania, których irytuje fakt, że nasza nagrywarka co chwilę musi czekać na dane.

UPDATE: Moje howto przedstawiało dość prowizoryczne podejście do sprawy. Chciałem na szybko sprawdzić czy to w ogóle działa. Druga sprawa jest taka, że moja wiedza na temat tworzenia ebuildów jest znikoma i nie wpadłem na to by zrobić stosowny ebuild - na szczęście znaleźli się inni wolontariusze - dziękuję Wam Panowie  :Smile: 

Tak więc dzięki n0rbi666 oraz milu powstał stosowny ebuild odwalający całą robotę za nas. Jeszcze raz dzięki.

Wielkość bufora ustawiamy normalnie w preferencjach K3B. U mnie 50MB wystarcza bym mógł bezstresowo pracować na komputerze, nawet przy nagrywaniu DVD z prędkością 8x. Czekałem na to w k3b wieki. W sumie tylko tego mi w tym programie brakowało  :Smile: 

A oto stare howto, teraz już nikomu niepotrzebne  :Smile: 

1) Na początek należy wyciągnąć z /usr/portage/distfiles plik ze źródłami K3B - k3b-0.12.10.tar.bz2

2) rozpakować źródła

3) udać się do katalogu k3b-0.12.10/libk3b/projects/ i wyedytować plik k3bgrowisofswriter.cpp

Dokładnie chodzi o linię 198, gdzie mamy:

```

  // set this var to true to enable the ringbuffer

  d->usingRingBuffer = false;

```

Zmieniamy na wartość na true  :Smile: 

```

d->usingRingBuffer = true;

```

4) pakujemy źródła ponownie i podmieniamy oryginalny plik w /usr/portage/distfiles

5) Ostatnie kroki, czyli:

generujemy nowy digest dla pakietu K3B 0.12.10 

```

cd /usr/portage/app-cdr/k3b/ && ebuild k3b-0.12.10.ebuild digest

```

no i oczywiście na koniec:

```

emerge k3b

```

Życzę udanego wypalania  :Smile: 

----------

## BeteNoire

No i bardzo pięknie - niech to wejdzie do powszechnego użytku  :Smile:  Zawsze mnie jakoś stresuje ta migająca dioda (napęd NEC 3520) przy minimalnym obciążaniu kompa. Co prawda jeszcze mi z tego powodu żadnej płyty nie zniszczyła... Ale czy growisofs nie używa przypadkiem innego mechanizmu ochronnego (Buffer underrun?)?

Acha, czy tego nie da się ustawić przez modyfikację ebuildu?

Albo jeszcze inaczej ( http://www.gentoo.org/doc/pl/handbook/handbook-x86.xml?part=3&chap=6 ): 

```
ebuild /path/to/ebuild fetch

ebuild /path/to/ebuild unpack

#tu zmiana w pliku w /var/tmp/portage

ebuild /path/to/ebuild compile
```

----------

## rampage7

 *BeteNoire wrote:*   

> No i bardzo pięknie - niech to wejdzie do powszechnego użytku  Zawsze mnie jakoś stresuje ta migająca dioda (napęd NEC 3520) przy minimalnym obciążaniu kompa. Co prawda jeszcze mi z tego powodu żadnej płyty nie zniszczyła... Ale czy growisofs nie używa przypadkiem innego mechanizmu ochronnego (Buffer underrun?)?
> 
> Acha, czy tego nie da się ustawić przez modyfikację ebuildu?
> 
> Albo jeszcze inaczej ( http://www.gentoo.org/doc/pl/handbook/handbook-x86.xml?part=3&chap=6 ): 
> ...

 

update: Najpierw myślałem, że chodzi Ci o to by zrobić do tego ebuilda. Dopiero teraz zajarzyłem (jak kliknąłem w link), że można tak na raty instalować pakiet przy pomocy ebuild - nawet nie wiedziałem. Wygląda to na ciekawszy sposób, bo mój to jest istna łopatologia, zero finezji  :Wink: 

Growisofs używa mechanizmów Burnfree czy Just Linnk czy jak to tam sobie producenci nazywają. Tylko że laser nigdy nie wskoczy perfekcyjnie w miejsce gdzie skończył. Kiedyś, juz nawet nie pamietam co robiłem, chyba jakieś emerge --sync przy nagrywaniu DVD 4x i najzwyczajniej w świecie były problemy z odtworzeniem tej płyty (bardzo powoli) - a płytą było TDK+R więc nie byle co i to nie mógł być przypadek. Myślę, że kilka rys i płyta byłaby już nie do odczytania.

----------

## _troll_

 *rampage7 wrote:*   

> update: Najpierw myślałem, że chodzi Ci o to by zrobić do tego ebuilda. Dopiero teraz zajarzyłem (jak kliknąłem w link), że można tak na raty instalować pakiet przy pomocy ebuild - nawet nie wiedziałem. Wygląda to na ciekawszy sposób, bo mój to jest istna łopatologia, zero finezji 

 a czemu nie przygotowac ebuilda ze stosowna latka?

Pozdrawiam,

Przemek

----------

## Belliash

Niech ktos poprostu zrobi latke na k3b  :Wink:  oraz zmodyfikuje ebuilda, ktorego udostepni w sieci dla kazdego  :Wink: 

Tak bedzie najprosciej  :Very Happy: .

BTW ja sie z tym spotkalem przy nagrywaniu plyt DVD z predkoscia wieksza niz 2.4x i CD z predkoscia wieksza niz bodajze 24x :/. hdparm -i /dev/hdd pokazuje, ze bufor w nagrywarce wynosi 0, zamiast 2MB. Moze ta latka pomoze. Sprawdze, ja kdostane HDD z serwisu  :Wink: 

----------

## n0rbi666

Zrobiłęm prostego ebuilda, proszę się nie śmiać z jego prostoty; )

adres do niego to http://n0rbi666.hopto.org/k3b.tar.gz -> serwer jest strasznie wolny, więc byłbym wdzięczny, gdyby ktoś to wrzucił do siebie  :Smile: 

----------

## milu

 *_troll_ wrote:*   

> przygotowac ebuilda ze stosowna latka?

 

Mówisz - masz:

http://vivid.dat.pl/kde/k3b-0.12.10_w_ringbuffer.tar.gz

Edit: n0rbi666 ubiegłeś mnie jednakże pozostawię tutaj linka bo w zasadzie może robić za mirror  :Wink: 

----------

## rampage7

Dziękuję za ebuilda  :Smile: 

Zaktualizowałem tytuł posta, oraz dodałem info na temat ebuilda, by nikt nie musiał szukać  :Smile: 

Pozdrowienia!

----------

## Gabrys

Zanim installnę się spytam czy to wyświetla info o procencie zapełnienia w okienku nagrywania?

----------

## rampage7

 *Gabrys wrote:*   

> Zanim installnę się spytam czy to wyświetla info o procencie zapełnienia w okienku nagrywania?

 

oczywiście  :Smile: 

----------

## rooter666

a bufor sprzętowy w nagrywarce też wyświetla ?

----------

## rampage7

 *rooter666 wrote:*   

> a bufor sprzętowy w nagrywarce też wyświetla ?

 

niestety nie - i to jest chyba wina growisofs. No ale szanse na jego opróżnienie są zerowe o ile bufor fifo robiony przez k3b się nie opróżni.

----------

## Gabrys

Nie wiem czy to błąd K3b czy tego ebuilda dlatego piszę tutaj. Jeśli to błąd ogólnie K3b, to daj znać autorom. Chodzi o to, że jeśli nagrywam parokrotnie na DVD ten sam plik, to pasek zapełnienia płyty nieprawidłowo zlicza rozmiar (tzn. pojedynczo), a jak próbuję to nagrać to robi się błąd: Nie można określić rozmiaru wynikowego obrazu.

----------

## mziab

W najnowszym growisofs dodano ring-buffer. Wygląda na to, że niedługo nie będzie już trzeba patchować k3b  :Smile:  Nie sprawdzałem jeszcze jak to działa. Mam nadzieję, że nie gryzie się z FIFO, które odblokowuje patch z tego wątku.

----------

## sekretarz

Najlepiej jest tez wypelnic bug na bugzilli gentoo zeby maintainer wrzucil do reguralnego drzewa

----------

## Gabrys

Byłoby fajnie, gdyby k3b umiał z niego korzystać. Jeśli ktoś miałby jakieś wieści, to niech da znać, bo nagrywanie DVD, to jedna z podstawowych czynności, które wykonuję na kompie.

A zostawiając to zupełnie z boku, to łatka, która jest dostarczana z tym ebuildem jest super super. Moja nagrywarka po opróżnieniu bufora zmienia prędkość nagrywania na 1.2x i do tej pory nagrywał mi z prędkością około 6x jakieś 15% płytki a potem pozostałe 85% z prędkością 1.5x. Teraz bufor FIFO (i prawdopodobnie nagrywarki) z niewyjaśnionych przyczyn wyczerpał się na jakichś 65%, więc tak czy inaczej dostałem speedupa przy nagrywaniu. Myślę, że jak zwiększę bufor FIFO, to będzie jeszcze lepiej. Dodam, że sam nic nie robiłem w czasie wypalania płyty, a były odpalone: Fx, Kadu, Psi, GKrellM, Konsola i Konqueror. Któreś z nich musiało spowodować nagłe zainteresowanie się operacjami dyskowymi, bo zajętość bufora malała w oczach. Jeszcze 30% płytki z prędkością 1.2x. Przynajmniej mogę bez obaw korzystać z kompa.

--- EDIT ---

Zwiększyłem sobie FIFO do 200 MB. W prawdzie ani razu nie osiągnął 100%, ale nagrywanie przez cały czas szło z prędkością x8, a o to chodzi. Obserwując wskaźnik zapełnienia rozmawiałem na Kadu (które potrafi nieźle zamulić  :Neutral: ), Fx-a nie śmiałem tykać  :Wink: .

----------

## Gabrys

Jeszcze małe pytanko, czy macie jakieś swoje tajne sposoby na nagrywanie płytek ze zwiększonym priorytetem?

Słyszałem o verynice, ale nie chcę ingerować w cały system tylko podbijać (najlepiej automagicznie) priorytet procesu nagrywania. Również nie zależy mi na lepszym traktowaniu np. całego k3b, gdy on tylko weryfikuje już zapisane dane. Po prostu czuję, że komp się nie wyrabia (głownie dysk męczy) z nagrywaniem DVD. Jednocześnie nie robić nic w czasie nagrywania też nie jest dobrym pomysłem. Bufor, który aktywuje załączony ebuild już znacznie polepsza sprawę, ale nadal trzeba być uważnym.

----------

## Gabrys

Czy ktoś się orientuje, czy najnowsze K3b z portage ma włączoną funkcję ring-buffer. Inaczej mówiąc, czy można bezpiecznie podnieść wersję K3b bez utraty bufora nagrywania DVD?

----------

## mziab

Tak, bodajże od wersji 0.12.12 ma wsparcie dla ring-buffera wbudowanego w growisofs. Używam, chodzi ładnie.

----------

## canis_lupus

K3b w wersji 0.12.12jest w portage?! 

Czemu mi wywala: 

```
lupus lupus # emerge --search k3b

Searching...

[ Results for search key : k3b ]

[ Applications found : 1 ]

*  app-cdr/k3b

      Latest version available: 0.12.8

      Latest version installed: 0.12.8

      Size of downloaded files: 7,852 kB

      Homepage:    http://www.k3b.org/

      Description: K3b, KDE CD Writing Software

      License:     GPL-2

```

A przed momentem się sync'owałem :/.

edit: Na serwerze http://gentoo.prz.rzeszow.pl/distfiles/ znalazłem k3b w wersji 0.12.12. Tylko czemu emerge go nie widzi?

edit2: w katalogu /usr/portage/app-cdr/k3b sa wersji wieksze od 0.12.8, jest nawet 0.12.14, tylko uparcie nie chce mi ich zemergować. Proszę o jakąś podpowiedź jak dla newbie.  :Embarassed: 

----------

## kuku

małą podpowiedź  :Wink: 

```
kuku@kuku ~ $ cat /etc/portage/package.keywords |grep k3b

app-cdr/k3b ~x86

```

----------

## canis_lupus

Dzięki, poszło, tylko czemu search mi nie wywalał zamaskowanych wersji jak to juz robił wiele razy?

----------

## Poe

super  :Smile:  bede testował niedlugo, bo mam tez liteona (tyle ze nie dvd a zwykla cdrw patelnie) ale bardzo mi skacze bufor, bardzo niebezpiecznie i często (pomaranczowa dioda niemal caly czas sie swieci :S) mam nadzieje ze zadziala ne tylko na waszych patelniach dvd ale takze  i na mojego typu  :Smile: 

pozdrawiam

----------

## Gabrys

To eix wyświetla zamaskowane, nie emerge. A żeby zsyncować eiksa, trzeba po emerge --sync wywołać update-eix

----------

## Raku

 *Gabrys wrote:*   

> ... trzeba po emerge --sync wywołać update-eix

 

albo użyć 2in1: eix-sync

----------

## mziab

Jakby komuś z nowszym kernelem wyskakiwał błąd związany z mmap, to dodam, że błąd jest ponoć naprawiony w k3b 0.12.13. Piszę "ponoć", bo osobiście nie odczułem tamtego błędu na swojej skórze.

----------

