burn: Zu große isos durch falsches Parameterformat

  • Hi. Vielleicht tritt das Problem nur bei mir auf, vielleicht ist das Problem bekannt und in der neuesten Version bereits gefixt, vielleicht hilft dies aber auch jemandem weiter:


    mit vdr-burn-0.0.6h habe ich regelmäßig zu große isos erhalten. Und zwar immer dann, wenn geschrumpft werden musste. dvd.log hat gezeigt, dass bei dem Aufruf von requant die Nachkommastellen des Schrumpffaktors durch ein Komma abgetrennt wurden. requant erwartet aber anscheinend einen Punkt. Bei Verwendung des Kommas erzeugte requant keinen Fehler, die Nachkommastellen wurden einfach ignoriert. Als behelfsmäßige Lösung habe ich in vdrburn.sh die mit '#+' gekennzeichneten Zeilen geändert/ergänzt:


    # Requant Syntax: TempDir Number Filename Faktor
    REQUANT)
    REQFAC=`echo "$5" | tr ',' '.'` #+
    if [ "$USE_TCREQUANT" == "yes" ]; then
    ExecCmd tcrequant -f "$REQFAC" -i "$4" -o "$2/VDRSYNC.$3/requant.mpv" #+
    else
    ExecCmd requant "$REQFAC" < "$4" > "$2/VDRSYNC.$3/requant.mpv" #+
    fi
    mv "$2/VDRSYNC.$3/requant.mpv" "$2/VDRSYNC.$3/vdrsync.mpv"
    ;;


    Vielleicht kann man das Problem auch umgehen, indem man ein anderes locale für vdr verwendet. Das habe ich nicht ausprobiert.


    Nachdem die isos nun nicht mehr zu groß werden, werden sie nun manchmal viel zu klein (fast um ein GB, leider) , aber das ist wohl eine andere Geschichte...


    bglobber

  • Das Problem mit dem Komma liegt wirklich an der deutschen Locale. Da hilft wohl nur vorher die Locale umzusetzen. Leider kann man nicht _nur_ printf sagen er möge gemäß der C-Locale ausgeben. Wenn, dann wirkts sich aufs ganze Programm aus.

  • Für das Kommaproblem gibt es verschiedene Lösungen.


    Tobi hatte das mal ganz ähnlich in der vdrburn.sh gepatcht:

    Code
    @@ -54,7 +54,8 @@
         # Requant Syntax: TempDir Number Filename Faktor
         REQUANT)
             if [ "$USE_TCREQUANT" == "yes" ]; then
    -            ExecCmd tcrequant -f "$5" -i "$4" -o "$2/VDRSYNC.$3/requant.mpv"
    +	    factor=`echo "$5" | sed s/,/\./`
    +            ExecCmd tcrequant -f "$factor" -i "$4" -o "$2/VDRSYNC.$3/requant.mpv"
             else
                 ExecCmd requant "$5" < "$4" > "$2/VDRSYNC.$3/requant.mpv"
             fi


    In einer früheren Version hatte ich es mit setlocale in process-dvd.c gelöst:


    In der aktuellen Version burn-0.0.009 sollte kein Patch mehr nötig sein, denn da ist es so in process-dvd.c eingebaut:

    Code
    setlocale(LC_ALL, "C");
                    SetCmdline("%s REQUANT '%s' %d '%s' %.2f",
                            Script, TempDir(), rec->Number(),
                            tracks[0]->Filename(), factor);
                    setlocale(LC_ALL, "");


    Tom

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!