HTPC και δορυφορική-dscaler

widescreenman

AVClub Enthusiast
4 August 2006
746
Αθήνα
Προσπαθώ να φτιάξω filtergraph με το graphedit για το ProgDVB, για να χρησιμοπ. dscaler + ffdshow για resizing (όπως στον οδηγό για dvd-zoomplayer), αλλά το μόνο που καταφέρνω είναι είτε αποκλειστικά χρήση dscaler (μόνο mpeg decoding, χωρίς ffdshow), ή μόνο το ffdshow (για mpeg decoding και resizing). Αν πάω να βάλω και τα 2, κρασάρει. Υπάρχει κάποιος άλλος τρόπος;
 
Δημιουργία filtergraph για το Progdvb.

Καλησπέρα παιδιά και καλώς σας βρήκα στο avclub!! Είδα το συγκεκριμένο θέμα, και για να διευκολύνω λίγο θα μεταφέρω έναν οδηγό που έχω γράψει για δημιουργία filtergraph για το Progdvb σε άλλο φόρουμ.

-------------------------------------------------------


Καταρχήν γράφουμε ένα μικρό video από κάποιο κανάλι της αρεσκείας μας (μπορούμε να χρησιμοποιήσουμε βασικά οποιοδήποτε mpge2 video). Δε χρειάζεται να είναι μεγάλο, ακόμα και μερικά δευτερόλεπτα φτάνουν. Κατόπιν κλείνουμε το progdvb, πάμε από start>all programs>progdvb>graphedit (μπορούμε να το ανοίξουμε απευθείας και από το φάκελλο που βρίσκεται το progdvb).
Πάμε τώρα Graph>Insert Filters>

snap0002.jpg


βρίσκουμε το Directshow το ανοίγουμε από το "+" και κατεβαίνουμε μέχρι να βρούμε το "File source (async). Το επιλέγουμε και πατάμε το Insert Filter.

snap0003.jpg


snap0005.jpg




Ανοίγει ένα παράθυρο για να βρούμε το βιντεάκι που θέλουμε να χρησιμοποιήσουμε και φυσικά όταν το βρούμε πατάμε Open.

snap0006.jpg




Στο παράθυρο του graphedit βλέπουμε τώρα ένα παραλληλόγραμμο με το όνομα του βίντεο που έχουμε επιλέξει.

snap0007.jpg




Τώρα χρειαζόμαστε ένα φίλτρο για να διαχωρίσει (split ή demux) το audio από το video σήμα. Πάμε πάλι στο Graph>Insert Graph>Directshow και βρίσκουμε το φίλτρο "Elecard Mpeg Demultiplexer" (μπορούμε να δοκιμάσουμε και με άλλο φίλτρο αν έχουμε περασμένο στο pc. Το βρίσκουμε κι αυτό με τον ίδιο τρόπο). Το επιλέγουμε και πατάμε Insert Filter.

snap0008.jpg




Στο graphedit έχουμε τώρα τη παρακάτω εικόνα,

snap0009.jpg




Πρέπει τώρα να ενώσουμε το pin εξόδου του αρχείου video, με αυτό της εισόδου του demultiplexer. Αυτό γίνεται πολύ απλά αν με το ποντίκι κάνουμε κλικ πάνω στο pin "Output" του βίντεο και κρατώντας πατημένο το αριστερό πλήκτρο του ποντικιού επεκτείνουμε μέχρι το pin "Input" του demultiplexer. Μόλις ο κέρσορας ακουμπήσει πάνω σ' αυτό το pin και δούμε να γίνεται ένα μαύρο τετραγωνάκι σ' αυτό το σημείο αφήνουμε το κουμπί του ποντικιού, και βλέπουμε ότι τα δύο pins έχουν ενωθεί (προσοχή μονο, κάποια φίλτρα, δεν μπορούν να ενωθούν μεταξύ τους και βγάζουν είτε μήνυμα λάθους είτε και κρασάρουν το graphedit, δεν πρέπει να επιμένουμε σε μία τέτοια περίπτωση).

snap0010.jpg


Συνέχεια στο επόμενο μήνυμα.
 
Last edited:
Δημιουργία filtergraph για το Progdvb.

Τώρα πρέπει να βάλουμε και φίλτρα για την αποκωδικοποίηση του ήχου και την εικόνας. Πάμε πάλι από τη γνωστή διαδρομή στο directshow και επιλέγουμε τα φίλτρα που θέλουμε. Για το παράδειγμα έχω επιλέξει τα φίλτρα ήχου και εικόνας του Nvidia Purevideo.

snap0012.jpg


snap0013.jpg


snap0014.jpg



Τώρα πρέπει να ενώσουμε τα φίλτρα αυτά με τα output pins για video και audio αντίστοιχα του demultiplexer. Ακουλουθούμε την ίδια μέθοδο όπως και στη προηγούμενη περίπτωση και το αποτέλεσμα πρέπει να είναι το παρακάτω.

snap0016.jpg




Τώρα θα βάλουμε και το κατάλληλο renderer για το video και το audio. Για το video πάμε πάλι στο directshow και κατεβαίνουμε μέχρι να βρούμε τις εγγραφές "video renderer". Κατά σειρά το "Video Mixing Render 9" είναι το VMR9, το αμέσως μετά πρώτο στη σειρά "Video Renderer" είναι το VMR7 και από κάτω του είνα το Overlay (ovrl). Στη περίπτωση μας επιλέγω VMR7 (για να έχω εύκολα και ενδείξεις OSD) και φυσικά Insert Filter.

snap0017.jpg




Για τον ήχο τώρα, πάμε Graph>Insert Filter>Audio Renderers> και επιλέγουμε το Default Directshow Device για να είμαστε σίγουροι ότι πάντα θα χρησιμοποιείται η default κάρτα ήχου που υπάρχει στο pc ανεξάρτητα από μάρκα/μοντέλο κλπ.

snap0018.jpg




Αφού έχουμε και τα δύο φίλτρα μέσα στο graphedit τα ενώνουμε με τους decoders video audio όπως φαίνεται στο παρακάτω capture. Κάνοντας δεξί κλικ στο "Default Directshow Device" επιλέγουμε και το select clock έτσι ο ήχος να είναι συγχρονισμένος με την εικόνα. Αν θέλουμε πατάμε και το κουμπί "play" (το πράσινο βελάκι) έτσι ώστε να παίξει λίγο το βίντεο σε παράθυρο active movie και να δούμε αν όλα είναι εντάξει.

snap0019.jpg


snap0020.jpg




Τέλος πάμε από το μενού στο File>Save as XML και σώζουμε το filter graph που φτιάξαμε με το κατάλληλο όνομα στο φάκελλο FilterGraphs του Progdvb. Προσοχή το όνομα απαραίτητα πρέπει να αρχίζει με το πρόθεμα "tv." αν πρόκειται για χρήση σε κανάλια tv ή με το "radio." αν πρόκειται να το χρησιμοποιήσουμε για ραδιόφωνα (σ' αυτή τη περίπτωση δε χρειάζεται βέβαια να βάλουμε φίλτρο και renderer για το βίντεο όταν φτιάχνουμε το φίλτρο), διαφορετικά το Progdvb δεν θα τα βλέπει. Αυτό δεν ισχύει για άλλα προγράμματα.

snap0024.jpg




Τώρα όποτε θέλουμε μπορούμε από το μενού Settings>Audio and Video>Directshow του Progdvb να επιλέξουμε το filter graph που φτιάξαμε για να βλέπουμε tv με αυτό. Τις περισσότερες φορές για να λειτουργήσει σωστά πρέπει να επιλέξουμε και το "by graph file" στο ίδιο παράθυρο.
 
Για να συνεργαστεί το ffdshow με το dscaler πρέπει να επιλεγεί από τις ρυθμίσεις του ffdshow>codecs το "all supported" στο raw φίλτρο (αυτό θα χρησιμοποιήσουμε ως ενδιάμεσο με το dscaler ως είσοδο, και τον renderer που θέλουμε).

ffdshow_raw.png


graph1.png


Δεν είμαι σίγουρος όμως αν κερδίζουμε κάτι με αυτό το συνδιασμό, και το ffdshow δουλεύει αρκετά καλά και μόνο του...
 
Last edited:
Σ' ευχαριστώ! :SFGSFGSF:

Γνωρίζω τον οδηγό σου από παλιά και είναι φοβερά καλογραμμένος!
Με τη χρήση του dscaler κερδίζουμε γιατί λογικά το mpeg2 decoding που κάνει, είναι καλύτερο από του ffdshow, το οποίο θέλουμε για το resizing/upscaling που κάνει. Εδώ ο οδηγός του AVClub για παρόμοια χρήση dscaler/ffdshow για dvd.
Μου λειτούργησε κανονικά ο τρόπος που είπες (raw video) απλά σέρνεται το τωρινό μου σύστημα + δε μπόρεσα να κάνω πολλά.
Για deinterlacing method στο ffdshow τι προτιμάς;

-bye-
 
Δεν χρησιμοποιώ και πολύ το ffdshow για να πω την αλήθεια. Βασικά δορυφορική βλέπω στο monitor του pc με ανάλυση 1440Χ900 ή σε μία παλιά crt τηλεόραση που έχω από το tvout. Πάντως έχω την εντύπωση ότι το kernel bob δίνει καλά αποτελέσματα, αλλά κάνει και μεγάλη χρήση της cpu όταν κάνεις upscale!
 
Πράγματι, φαίνεται να κάνει καλή δουλειά το kernel bob... Θα το δω και σε πιο ισχυρό pc κάποια στιγμή...
 
Για να συνεργαστεί το ffdshow με το dscaler πρέπει να επιλεγεί από τις ρυθμίσεις του ffdshow>codecs το "all supported" στο raw φίλτρο (αυτό θα χρησιμοποιήσουμε ως ενδιάμεσο με το dscaler ως είσοδο, και τον renderer που θέλουμε).


graph1.png


Δεν είμαι σίγουρος όμως αν κερδίζουμε κάτι με αυτό το συνδιασμό, και το ffdshow δουλεύει αρκετά καλά και μόνο του...



Φτιάχνω graph, με διαφοροποίηση το mpeg-2 splitter και τον Nvidia audio decoder (ή Dscaler audio) αντί των Elecard demultiplexer και AC3 filter, και VMR9 αντί για VMR, όμως η εικόνα δεν ¨ενσωματώνεται" στο ProgDVB αλλά πετάγεται το active window με παραμορφωμένο κάδρο, ακριβώς όπως συμβαίνει όταν πατάμε play στο Graph edit.
Διορθώνεται μόνο όταν επιλέγω "by codec" στα audio/video settings του ProgDVB 4xx αλλά νομίζω ότι έτσι πέφτει η ποιότητα εικόνας...