Unklarheiten bezüglich neueren x264CLI Optionen

  • "r474: separate --thread-input from --threads"
    => Bedeutet das, die Option separiert den thread der für die Synchronisation der anderen threads zuständig ist von diesen, was auf Multi-Prozessor/-Core System nochmal einen leichten boost geben sollte?[FONT=Times New Roman, serif][/FONT]

  • Zitat

    "r474: separate --thread-input from --threads"
    => Bedeutet das, die Option separiert den thread der für die Synchronisation der anderen threads zuständig ist von diesen, was auf Multi-Prozessor/-Core System nochmal einen leichten boost geben sollte?

    Du bekommst also threaded Input wenn du threads>1 stellst, oder --thread-input verwendest.
    Falls du keine Slices verwenden möchtest, kannst du so immernoch davon profitieren.

  • hmmm,.... ist der Parameter nicht unsinnig, wenn er so abgefragt wird. Meine solange Thread <1 ist sollte thread_input ja nix machen und danach ist er egal, irgendwie merkwürdig.
    Hab's mal aus dem Newsbeitrag abgetrennt damit eventuell noch ein paar andere Leute eventuell etwas posten und wir hier einen Thread haben wo immer die neusten Features bequatsched werden können, die noch nicht im 'man x264' oder im 'Wissenswertes rund um x264' auftauchen.

    Cu Selur

  • Wieso? Wenn --threads > 1 oder --threaded input, soll x264 einen speziellen Thread für Prefetching verwenden.

    Die Geschwindigkeitsgewinne, die im englischen Forum berichtet wurden, waren teilweise recht groß.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Bestätige - Dateioperationen in einem eigenen Thread sind häufig sehr empfehlenswert, auch für 1-Core-PCs. Nicht umsonst verwenden z.B. VirtualDub* und HeadAC3he dafür eigene Threads.

    Die Option "--thread-input" ist somit generell (auch für 1-Core-PCs) nützlich, und für Multi-Core-PCs sollte man dann so viele Rechen-Threads wie Cores verwenden (der Disk-Thread teilt sich da schon rein, der braucht nicht viel Zeit).

  • Okay, d.h. dann:

    1. --thread-input sort dafür, dass ein Datei- und Synchronisationsoperationen etweiliger anderer Threads in einem separaten Thread ausgeführt werden. (Richtig?)
    2. Wenn man mehr als einen Thread verwendet braucht man die Option nicht aktivieren, da auf jeden Fall ein spezieller Thread fürs Prefetching verwendet wird. (Richtig?)
    3. Bei 1-Core-CPUs sollte die Option auch aktiviert werden, da es auch dort zu Geschwindigkeitsgewinnen durch die Separierung kommen kann. (Richtig?)

    Cu Selur

  • 1) Inhaltlich richtig. Rechtschreibung wird noch mal in einem etwaigen separaten Thread behandelt! ;)
    2) Ich glaube ja - denn zwischen mehreren Encoding-Threads muss ja ein Synchronisations-Thread "verhandeln", und der kann auch gern den Dateizugriff mit übernehmen, er muss ja die Daten verteilen.
    3) Das wollte ich damit ausdrücken.

  • zu 1.: Danke für die Korrektur. :) (Etwaigen schreib ich irgendwie fast immer falsch, genauso wie ich statt 'falsch' gerne 'flasch' schreibe. :) )

    Mal noch gucken was Kopernikus dazu sagt und wenn der dem auch zustimmt werd ich mal ein Update des 'man x264' machen. :)

    Cu Selur

  • 1.) Der Input Thread liest die Quelldaten ein, er erledigt auch ggf. die avisynth arbeit (VirtualDub macht das auch, Doom9 hat im Codec Comparison angemerkt, dass das deutliche Gewinne gebracht hat bei (damals noch nicht SMP optimierten) XviD. In die Ausgabedatei schreiben wird vom Hauptprozess gemacht.

    2.) Das geht aus dem Stück Code hervor, das Sade gepostet hat, ich denke, dass das auch so im svn steht :)

    3.) Weiß ich nicht, hab ich nicht ausprobiert, aber im englischen Forum wurden teilweise kleine Gewinne für Single Core berichtet (aber wie verlässlich das ist weiß man ja nicht).

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Hmm,.. wenn es keine Gewinne für Single CPUs bringen sollte ist der Parameter sinnfrei, da er dann ja nur sinnig ist wenn man eh mehrere Threads benutzt in welchem Falle er ja nichts extra macht. (davon ausgegangen Leute die mehrere Cpus/Cores haben auch Threads >1 benutzen)

    Cu Selur

    Ps.: ich teste das mit dem single Core später mal (momentan nicht zuhause)

  • Hab hier mal angetestet und da bremst es eher bei SingleCPUs:

    1. ohne --thread-input
    x264.exe -o "d:\test.mp4" "d:\test.avs" -p 1
    =>encoded 3621 frames, 15.95 fps, 1863.25 kb/s

    x264.exe -o "d:\test.mp4" "d:\test.avs" -p 2
    =>encoded 3621 frames, 16.20 fps, 1863.25 kb/s


    2. mit --thread-input
    x264.exe -o "d:\test.mp4" "d:\test.avs" -p 1 --thread-input
    =>encoded 3621 frames, 15.95 fps, 1863.25 kb/s

    x264.exe -o "d:\test.mp4" "d:\test.avs" -p 3 --thread-input
    =>encoded 3621 frames, 16.08 fps, 1863.25 kb/s

    => Wäre hilfreich wenn noch ein paar andere Leute das Testen könnten.

    Cu Selur

  • Zitat

    Hmm,.. wenn es keine Gewinne für Single CPUs bringen sollte ist der Parameter sinnfrei, da er dann ja nur sinnig ist wenn man eh mehrere Threads benutzt in welchem Falle er ja nichts extra macht. (davon ausgegangen Leute die mehrere Cpus/Cores haben auch Threads >1 benutzen)

    Slices (die mit threads>1 gebildet werden) reduzieren die Qualität ein wenig.
    Deswegen kann es sinnvoll sein keine Threads zu benutzen auch wenn man mehrere CPUs benutzt. Außerdem hatten (haben?) einige Decoder Probleme mit Slices.


  • Der Test ist sinnlos wenn du nicht dein avs script postest.
    Aber ich verstehe auch nicht was es bei Single Core CPUs bringen soll.

  • Aber die Qualitätsunterschiede sind sehr gering. Ich glaube nicht, dass irgendjemand durch Hinschauen einen Unterschied zwischen einer sliced und nicht sliced Variante eines Encodes erkennt.

    Gerade im englischen Board aufgeschnappt:

    Der Prefetch Thread hilft, wenn die CPU nicht der limitierende Faktor ist, also wenn man z.B. unkomprimiertes Quellmaterial verwendet.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Zitat

    Aber die Qualitätsunterschiede sind sehr gering. Ich glaube nicht, dass irgendjemand durch Hinschauen einen Unterschied zwischen einer sliced und nicht sliced Variante eines Encodes erkennt.


    Ist wahrscheinlich für die selben Leute gedacht, die auch --me esa verwenden.

  • und 3Pass :)

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • mein avs file:

    Code
    LoadPlugin("L:\Programme\DGIndex\DGDecode.dll")
    mpeg2source("D:\HDTV\test.d2v")


    -----------

    Zitat

    Slices (die mit threads>1 gebildet werden) reduzieren die Qualität ein wenig.
    Deswegen kann es sinnvoll sein keine Threads zu benutzen auch wenn man mehrere CPUs benutzt. Außerdem hatten (haben?) einige Decoder Probleme mit Slices.

    d.h. es sollte einen boost geben wenn ich später auf meiner Dual Kiste (Dual Athlon 1800+ MP):
    x264.exe -o "d:\test.mp4" "d:\test.avs" -thread1
    und
    x264.exe -o "d:\test.mp4" "d:\test.avs" -thread1 --thread-input
    vergleiche?

    -----------

    Zitat

    Der Prefetch Thread hilft, wenn die CPU nicht der limitierende Faktor ist, also wenn man z.B. unkomprimiertes Quellmaterial verwendet.


    d.h. wenn die Platte mit dem Hinterherschieben nicht mitkommt? => in der normalen DVD/HDTV => xy Umgebung unsinnig?


    Cu Selur

  • bei DVD* Auflösung hast du:
    704 * 576 * 12/8 = 608256 Bytes (~0.58 MB/Base 1024) pro Frame.
    Also bei >10fps könnte es etwas bringen.

    *unkomprimiert was sowieso kaum jemand verwendet

  • Könnte das eventuell mal einer der Captureleute antesten?
    (ich teste heute abend mal ob --thread-input beim Encoden mit 1 thread auf einer Dual CPU Maschine etwas ändert)

    so ahb noch etwas im englischen Forum gelesen und mir soweit folgendes zusammengereimt:

    Zitat

    [FONT=Times New Roman, serif]2.5.7 --thread-input[/FONT] [FONT=Times New Roman, serif]
    Sorgt dafür, dass ein extra Thread für das Einlesen des Inputs verwendet wird, dies bringt nur etwas wenn die CPU nicht voll ausgelastet wird da die Daten nicht schnellgenug gelesen werden können. Hat man nicht mehrere CPUs kommt dies nur selten vor, wenn z.B. die Festplatte nicht nachkommt oder z.B. manche Daten über die GPU geschleift werden uns sich deshalb verzögern. Stellt man die thread > 1 wird die Option automatisch verwendet.[/FONT]

    [FONT=Times New Roman, serif][FONT=Times New Roman, serif]Sollte man aktivieren wenn die CPU nicht voll ausgelastet werden.[/FONT][/FONT]

    Kommentare ?

    Cu Selur

  • Aus dem englischen Forum von pengvado persönlich:

    Zitat


    "On that topic, is there any real situation in which someone wouldn't want to use --thread-input?"
    If input is piped from another program. That's inherently multithreaded, and the data to read is already in memory, so --thread-input will only increase the syncing overhead.
    Or if the avisynth script is really cpu-bound.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

Jetzt mitmachen!

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