CCE und Upper_Field_First?

  • Hallo zusammen,

    vielleicht vorweg die Randbedingunen.
    Ich würde gerne Interlaced Material mit schwarzen Rändern versehen und für ne DVD mit Hilfe von CCE encoden.
    Da das Material aber BFF ist und der CCE einfach von TFF ausgeht hab ich da so meine Probleme.

    Da mit die schwarzen Ränder auch effektiv hinsichtlich Bitratenverteilung sind, sollten sie 16 bzw ein vielfaches von 16 Pixel haben (richtig?).
    Nun habe ich aber gelesen, dass der CCE die erste Zeile weglässt und die letzte einfach verdoppelt wenn man ein Häkchen in "upper Field First" macht.

    Ist es dann möglich, dass man einfach den oberen Balken 17 pixel und den unteren 15 breit macht.
    Das müsste doch dan auch wieder für den MPG-Stream einen Rand von 16 Pixel oben wie unten ergeben???

    Wenn es so geht würde mir das erstens mein AVS-Script sehr vereinfachen
    Crop(16,16,-16,-16)
    AddBorders(16,17,16,15)
    und zweitens wahrscheinlich auch die Geschwindigkeit erhöhen.


    Danke für eure Antworten

    Gruss

    G-B

  • Moin,

    Zitat

    ich denke mit ReStream solltest du auch so die Fieldorder vertauschen können

    ..es soll aber Player geben, die auch damit nicht zurecht kommen.

    Ich denke, es besteht inzwischen Einigkeit, daß es am Einfachsten (und Kompatibelsten) ist,
    aus dem bff ein tff zu machen.

    DoubleWeave().SelectOdd()

    Gruß Karl


  • So geht es schon, aber der untere Rand ist nicht ein kompletter Macroblock und wird somit voll kodiert.
    Und warum es schneller werden soll ??

    Der Karl hat schon Recht, die Feldorder mit AviSynth zu ändern.

    Gruß
    Arlsair

  • Hi zusammen,

    ich dachte laut avisynthreferenz2 ist
    DoubleWeave().SelectOdd()
    vergleichbar mit dem deinterlacefilter von VD.

    seeigel
    dann sind die vectoren (wie immer auch) falsch gesetzt. Frag mich nicht in welchem thread das steht.
    Zusätzlich hab ich NOCH einen Arbeitsgang.

    arlsair
    du sprichst jetzt nur vom unteren Balken. kann ich davon ausgehen, dass du weist, dass CCE die erste Zeile löscht. So muss doch wieder eine Zeile eingefügt werden um auf 576 zu kommen. wenn das die letzte ist verdoppelt er ne schwarze Zeile und es sind wieder 16 schwarze Pixels. Oder nicht??
    Schneller weil meiner Meinung nach reines croppen und dann Border anfügen schneller geht als eben dieses deinterlacen.

    Belehrt mich ruhig eines besseren.
    Ach ja in meinem anderen Thread (http://www.gleitz.de/vbb3/showthread.php?p=48494#post48494) hat scharfis_brain einen anderen Weg zum ändern der Fielorder vorgeschlagen. Hat mich persönlich am Fernseher aber nicht überzeugt.

    Ach ja ich hab hier nen neuen aufgemacht, da es dort eigentlich erst um den Ton ging und ich ja hier zum CCE Frage.
    Bin nämlich der subjektiven Meinung, dass die Qualität so besser ist als mit DoubleWeave().SelectOdd().
    Kann mich täuschen aber trotzdem wär das andere doch einfacher (für mich).
    Also gehts???

    Gruss

    Gerhard

  • Ja, ich habe nicht weit genug gedacht, aber so wie du es dir denkst, funzt es auch nicht.
    Der CCE löscht nicht aus dem Frame die erste Zeile und packt sie unten dran (dass würde nur das Bild nach oben bewegen), er trennt eher den Frame in seiner Felder auf und entfernt dann NUR beim zweiten Feld die oberste Zeile und fügt unten eine schwarze Zeile wieder dran.

    Würde man nach deiner Methode nun vorgehen, würde die 17. schwarze Zeile (durch AddBorders) dem ersten Feld zugeordnet. Dadurch hätte man nach dem CCE eine schwarze Zeile mitten im Bild.
    Hört sich jetzt vielleicht kompliziert an, wenn man sich das Bild aber mal vorstellt als Frame und als Feld-Paar dann ist es einleuchtender.

    Gruß
    Arlsair

  • Moin,

    Zitat

    ich dachte laut avisynthreferenz2 ist
    DoubleWeave().SelectOdd()
    vergleichbar mit dem deinterlacefilter von VD.

    Nee, das hat mit "deinterlacen" nix zu tun. Das Äquivalent ist der "deinterlace - PAL movie"
    von Gunnar Thalin für VD, der eben auch nix weiter macht, als fields zu sortieren.

    Der Vorschlag von Scharfi ändert nicht wirklich die fieldorder, sondern nur die Reihenfolge der fields im output von AviSynth.

    DoubleWeave().SelectOdd() ist schon richtig für bff - > tff
    oder:
    SeparateFields().Trim(1,0).Weave()

    schau mal hier: http://videoxone.de/guides/derkarl/Download/UB/2_1.htm

    Gruß Karl

  • arlsair
    Moooment wenn ich das jetzt so verstehen sollte, dann müsste ja der CCE jedes Field einzeln berechnen. Ich dachte der macht im Mpeg einfach ne Frame encoding.
    Ok, aber! Ich mache ja in meinem Script ja nicht SeparateFields() sondern croppe rundherum vom "Frame" 16 Pixel und füge ja auch bei diesem wieder die Ränder an. So sehe ichs ja auch im Mediaplayer.
    Also ist die Zeile 1,3,5...15,17 und die Zeilen 2,4,6 ... 14, 16 Schwarz. Genauso müsste es mit den Zeilen 563, 565..., 573, 575 und den Zeilen 562, 564, ..., 574, 576 sein. eben oben 17 und unten 15 Zeilen.
    So, nun hat das Field mit den ungeraden Zeilen eben 9 obere und 7 untere solche Zeilen.
    Jetzt wird Zeile 1 weggelassen und dadurch alle geraden zu ungeraden und umgegehrt nach oben durchgereicht. Sprich 2 zu 1, 3 zu 2, 4 zu 3 usw. und eben aus den ungeraden 7 am Ende sollten gerade 7 werden und noch die Zeile 576 als Schwarz angefügt.

    So hab ich mir das eben gedacht. Alle verwirrt?

    Ich hab leider nicht die nötigen Tools (bzw. Erfahrung) dies am Bild auszuwerten. Wär Toll wenn das mal einer probieren könnte.
    Wenn kein DV Material vorhanden ist, kann ich ja solches mit dem Script encoden und auf meine Homepage laden. Wär Klasse wenn das einer nachprüfen könnte.

    Bzw. hebelt meine Logik aus und überzeugt mich eines abderen.

    Gruss

    G-B

    Ach ja,

    @der_Karl
    Danke, so weis ich dass ich nicht ganz auf dem falschen Dampfer war.

  • Jetzt bin ich aber selbst verwirrt!!

    Hab jetzt bereits zum zweiten mal eine DVD mit den genannten Einstellungen erstellt.
    Und was kommt raus.
    Flackern wie bei ner falschen Fieldorder.

    Kann es sein, dass ich selbst schon durch mein 16er cropping und 17er Balken irgendwas an der Fieldorder verschoben hab. Sind ja auch um eine Zeile verdreht die Bilddaten.
    Dann wäre ja dass nun TFF und der CCE meint durch mein Häkchen, dass es BFF ist und verschiebts nochmal.

    Verschieb ich nix hab ich BFF. Verschieb ich eine Zeile ists TFF aber dann passts nicht mit den 16 Pixels. Kann das stimmen?
    Misst was nun?

    Also doch wie gehabt und empfohlen,
    DoubleWeave().SelectOdd() aber wie genau.
    Kann mich erinnern, durch ein Problem damit auf meinen Lösungsversuch gekommen zu sein.
    Braucht man da SeparateFields()?

    Leider eigentlich ne Frage zu Avisynth aber bis auf eine evtl. folgende Diskussion wegen den Zeilen würde ich gerne das passende Script sehen für BFF zu TFF und dem angegebenen Cropping und Border.

    Danke Leute

    G-B

  • Ich habe mal einen Test (nach deiner Methode und nach der SeparateFields().DoubleWeave().SelectOdd(). Methode) gefahren und Subtract (zieht das eine Bild vom anderen ab) ergibt ein hübsch buntes Bild. Also massig Unterschiede.
    Wo der Fehler nun aber liegt, vermag ich auch nicht zu sagen. Bin wohl auch völlig verwirrt.

    Gruß
    Arlsair

  • Moin,

    @Alsair

    Zitat

    SeparateFields().DoubleWeave().SelectOdd()

    Das "SeparateFields" hat da nix zu suchen! :D

    g-b

    Das wird zu aufwendig, das ganze Ding jetzt nochmal durchzukaun.
    Schau Dir mal an, was FitCD da macht und das AVS, was erzeugt wird.
    So ist das auch richtig!

    Der "Upper field first" Haken erzeugt eine räumliche Vertauschung der fields und das ist gelinde gesagt - "suboptimal". :zunge:

    Bleiben lassen!

    Gruß Karl

  • Wenn du das nur mit Aviynth ohne CCE machst dann natürlich schon. denn mit der Methode von mir sind ja alle Zeilen des Bildes um eine nach unten verschoben. Oben17!

    Aber wie gesagt. anscheinend passier da genau dass was der CCE auch macht, nämlich ungerade mit gerade vertauschen. Nur der tauscht dann wieder zurück und es passt wieder nicht.
    Wenn ich jetzt ohne "Upper Field First" encode passiert das was du gesagt hast.
    Ich hab am unteren Rand in den Macroblocks eine Pixelreie die nicht Schwarz ist.

    Ich werd bei gelegenheit was anderes ausprobieren.
    1. ich will Schwarze Ränder
    2. der Ehrgeiz will nun das ich das so hin krieg.

    Folgendes:
    Ich croppe einfach oben 15 und unten 17 zeilen.
    Füge allerdings gleichmäßig 16 oben und unten an. Damit hab ich wieder die ungeraden zu geraden Zeilen gemacht. Dann encode ich ohne "Upper Field First".

    1. Der verlust an Zeilen bleibt bei 32
    2. Nimm ich eher im oberen Teil auf und weniger unten. Damit schneide ich oben auch weniger ab.
    3. Das kann man je nach Material erweitern bis 1 oben und 31 unten (hauptsache ungerade croppen).

    Das Ergebnis schreib ich dann hier.

    Gruss

    G-B

  • Der Karl
    hab gar nicht gemerckt, dass wir schon auf der zweiten Seite sind.
    Das war ja mal mein Prob. Fit2Disk hat mir ein script geliefert, dass den unteren teil des Bildes weggeschnitten hat und den Rest auf 576 gezoomt hat. Erst durch eine Verschiebung der Befehle kam ich zum Ergebnis.
    Damals hab ich allerdings noch interlaced Resized und deshalb das dilemma. Ach ja somit meine falsche Annahme mit SeparateFields().
    Also nur die Fields tauschen und croppen so wie addborder und gut ists.
    Zu suboptimal.
    Warum? ausser mir gehts darum keine Zeile zu verlieren oder. Es müssten doch alle Informationen richtig sein. Auch die Vectoren (so weit ich armer Kerl das richtig verstanden hab) den dies ist ja nur bei nachträglöichen Änderung durch Restream ein Problem?
    Da ich allerdings sowieso croppe und nicht resize (blödes deutsch) ist mir eigentlich egal ob ich oben ne Zeile weniger und unten eine mehr abschneide (siehe meinen Gedanken oben.
    Es sei denn dadurch kommt beim interlaced Bildaufbau wieder was durcheinander (hab zu wenig Ahnung denke ich).

    G-B

  • Zitat von Der Karl


    @Alsair
    Das "SeparateFields" hat da nix zu suchen! :D


    Ähm, falsch. Aber es ist überflüssig, siehe AviSynth.org (hmm, wirkt vielleicht nicht so überzeugend, wenn man es selbst geschrieben hat :D )

    Zitat von Der Karl


    Der "Upper field first" Haken erzeugt eine räumliche Vertauschung der fields und das ist gelinde gesagt - "suboptimal".


    Also so etwas wie SwapFields, oder was ? Habe ich mir immer anders vorgestellt.

    Gruß
    Arlsair

  • Moin,

    g-b

    Zitat

    Ich croppe einfach oben 15 und unten 17 zeilen.
    Füge allerdings gleichmäßig 16 oben und unten an.

    Bin nicht sicher, was AVISynth daraus macht. Das ist auch wieder ein fieldswap. Bin nicht sicher,
    ob AVISynth in diesem Fall intern die richtige fieldparity mitführt - auf jeden Fall ist das Blödsinn - sorry! ;D

    Zitat

    Fit2Disk hat mir ein script geliefert, dass den unteren teil des Bildes weggeschnitten hat und den Rest auf 576 gezoomt hat.

    Hast Du mit Sicherheit was falsch bedient. Falls es evtl. eine Macke der aktuellen FIT2Disc-Version ist,
    einfach shh anmailen oder im DVDBoard posten.

    Was ich eigentlich meinte: Haken bei "bff -> tff"


    @Alsair

    Zitat

    Also so etwas wie SwapFields, oder was ? Habe ich mir immer anders vorgestellt.

    Nicht vergessen: Hier gehts zweimal "um die Ecke"!
    Ein bff wird also tff "verarbeitet" und
    weiterhin wird das ganze Bild um eine Zeile nach unten (oder wars oben - egal!) verschoben.

    Damit wird ein top- zum bottom-field und umgekehrt. Schräge Linien werden fransig usw..

    Das sieht man bei echtem interlaced-Material nicht so deutlich, aber warum sollte man sowas machen,
    wenn es doch Möglichkeiten gibt, das im Grundsatz korrekt zu lösen?

    Gruß Karl

  • Der Karl
    Zitat:
    Zitat:Ich croppe einfach oben 15 und unten 17 zeilen.
    Füge allerdings gleichmäßig 16 oben und unten an.
    Bin nicht sicher, was AVISynth daraus macht. Das ist auch wieder ein fieldswap. Bin nicht sicher,
    ob AVISynth in diesem Fall intern die richtige fieldparity mitführt - auf jeden Fall ist das Blödsinn - sorry!

    Wie macht ihr das blos. Sollte doch mal was über die Möglichkeiten hier lesen.

    Kenn die Definition für Fieldswap nicht, aber wenn das heist, aus einem topfield wird ein bottomfield dann denke ich stimmt das.
    Ich mach ja nix anderes als die Zeilen zu vertauschen und da ich sowieso croppe (wurde von der Quali genüber resizen hier überzeugt) macht es nix wenn mir ne Linie flöten geht.
    Und ich bin mir auch sicher, das Avisynth nicht die richtige Fieldparity mitführt. Da es aber gleich in den CCE geht macht das auch nix. Der behandelt es eh als tff und das ist ja dann richtig.

    Funzt übrigens Klasse. Habs schon am Fernseher probiert.

    Zu DoubleWeave().SelectOdd() .
    Das macht ja so weit ich weis aus den Fields 1,2,3,4,5 Frames die so aussehen:
    Frame 0=1+2; Frame 1=2+3; Frame 2=3+4; usw. und lässt dann frame 0,2,4 usw. einfach weg. (Ist das richtig?)
    Es geht dabei das erste Field verloren (macht nix). Damit werden aus den ungeraden Zeilen die geraden. (Ich mach doch auch nix anderes).

    Mein Fazit:
    Wenn ich den CCE mittels eines Avs-script mit einem interlaced Video BFF füttere und Schwarze Balken mit Hilfe von Crop anfüge. Dann kann ich das auf zwei Wege machen.

    1.:
    DoubleWeave().SelectOdd()
    Crop(16,gerade1,-16,gerade2) "gerad1+gerade2=32
    Addborder(16,16,16,16)

    2.:
    Crop(16,ungerade1,-16,ungerade2) "ungerad1+ungerade2=32
    Addborder(16,16,16,16)

    Wobei in beiden Fällen das Häckchen in "Upper Field First" nicht gesetzt sein darf. (Also wie TFF behandelt wird)

    Wie so oft bin ich mir nur nicht sicher ob das so stimmt mit den Fields.

    Gruss

    G-B

  • Moin G-B,

    Dein Geschreibsel liest sich anstrengend. Du kannst auch so quoten:

    >Wie macht ihr das blos. Sollte doch mal was über die Möglichkeiten hier lesen.

    Weiß nicht, was Du meinst! :zunge:

    Oder so: "zu Fuß" {quote} Beispieltext {/quote} - die geschweiften Klammern durch
    eckige "[" ersetzen - liest sich so:

    Zitat

    Beispieltext

    So, zur Sache.

    Zitat

    Kenn die Definition für Fieldswap nicht, aber wenn das heist, aus einem topfield wird ein bottomfield dann denke ich stimmt das.

    Hmm, ich glaube jetzt hast Du mich. Ein fieldswap ist doch was Anderes, als die Verschiebung
    um eine Zeile. Da muß ich erstmal selbst in Ruhe drüber nachdenken, was da wie zustande kommt. :cool:

    Probier mal "SwapFields()" in AVISynth, dann weißt Du was ich meine.

    Zitat

    Und ich bin mir auch sicher, das Avisynth nicht die richtige Fieldparity mitführt.

    Ausprobiert - er macht es nicht. Ist auch logisch, da das keine fieldoperation ist.

    Zitat


    Zu DoubleWeave().SelectOdd() .
    Das macht ja so weit ich weis aus den Fields 1,2,3,4,5 Frames die so aussehen:
    Frame 0=1+2; Frame 1=2+3; Frame 2=3+4; usw. und lässt dann frame 0,2,4 usw. einfach weg. (Ist das richtig?)

    Yupp!

    Zitat


    Damit werden aus den ungeraden Zeilen die geraden. (Ich mach doch auch nix anderes).

    Da gibts schon einen Unterschied! Top bleibt top (-field) und bottom bleibt bottom (-field).
    Schau Dir das mal genau an! Ein Top-field beginnt mit einer halben Zeile und endet mit einer
    ganzen - ein bottom-field beginnt mit einer ganzen und endet mit einer halben Zeile.

    Mußt mal ein wenig nach Material suchen, wo man das auch richtig sehen kann und nicht alles
    im schwarzen Balken verschwindet.

    Das mit dem "Blödsinn" muß ich also evtl. zurücknehmen - aber erst, wenn mir das selbst richtig
    klar wird und das wird diese Woche nix mehr! ;)

    Gruß Karl

  • stop, langsam: fieldswap vertauscht beide halbbilder raeumlich:

    111111--222222
    222222--111111
    333333--444444
    444444--333333
    555555--666666
    666666--555555

    und der CCE schiebt das ganze Bild nach oben oder unten (ist egal), was letztendlich zu einem Fieldorder reversal fuehrt. d.h. aus TFF wird BFF und umgekehrt:

    111111--222222
    222222--333333
    333333--444444
    444444--555555
    555555--666666
    666666--777777

  • DoubleWeave().SelectOdd()

    Original bff
    b1t1-b2t2-b3t3-b4t4-b5t5 wird zu :
    t1b2-t2b3-t3b4-t4b5-t5

    also ist das Resultat :
    bff -> tff

    Das erste Field wird gelöscht und die Fields werden in ihrer ursprünglichen Reihenfolge zu neuen Frames zusammengefügt.
    Man sollte beachten, das durch das fehlende erste Frame eine Asynchonität von 20ms auftritt, wenn man Audio nicht gleichzeitig mit verarbeitet.

    Zweitens sollte man darauf achten, das man vertikal immer nur jeweils (also oben gerade und unten gerade) eine gerade Anzahl von Zeilen wegschneidet beim croppen.

  • Danke Tsunami,

    Dann sieht mein script für den CCE (kein upper field first)praktisch so aus

    DoubleWeave().SelectOdd()
    Crop(16,16,-16,-16)
    AddBorders(16,16,16,16)


    Ein Frage noch.
    Was ist dann mit dem ungeraden schneiden ohne BFF>TFF. Also z.B. so:

    Crop(16,13,-16,-19)
    AddBorders(16,16,16,16)


    Für andere encoder wahrscheinlich ein Problem aber da der CCE einfach von TFF ausgeht müsste es doch auch einwandfrei sein. Sogar ohne Tonverschiebung ;)

    Gruss G-B

Jetzt mitmachen!

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