http://www.spinellis.gr/pubs/conf/1992-EPY-Multimedia-SM/html/epy-mlm2.html This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
|
Ο προγραμματισμός εφαρμογών multimedia παρουσιάζει πολύ ενδιαφέρον, αλλά και αρκετές ιδαιτερότητες. Ορίζουμε τι είναι μια εφαρμογή multimedia και εξετάζουμε τα πιθανά περιβάλλοντα υλοποίησης καθώς και τα συγκεκριμένα προβλήματα που παρουσιάζονται. Στη συνέχεια εξετάζουμε πως μπορούν να υλοποιηθούν βασικά στοιχεία εφαρμογών multimedia όπως η ένθεση κινούμενης εικόνας, ο έλεγχος εξωτερικών περιφερειακών συσκευών, η μετατροπή και συμπίεση σταθερών πλάνων, και η αποθήκευση και αναπαραγωγή κινούμενης εικόνας. Η παρουσίαση χρησιμοποιεί ως παράδειγμα την κάρτα ένθεσης Screen Machine στο περιβάλλον Microsoft Windows.
Στην ενότητα αυτή θα προσπαθήσουμε να οριοθετήσουμε το θέμα αυτής της εισήγησης. Συγκεκριμένα θα ορίσουμε τι είναι μια εφαρμογή multimedia, σε τι περιβάλλον μπορεί να υλοποιηθεί και θα αναφέρουμε τα ειδικά προβλήματα που παρουσιάζουν αυτές οι εφαρμογές σε σύγκριση με άλλες `κλασικές' εφαρμογές του χώρου της πληροφορικής.
Σύμφωνα με τον Markey [8] ο όρος multimedia έχει τόσους ορισμούς όσοι είναι και οι άνθρωποι που τον χρησιμοποιούν. Η ECMA ορίζει ως multimedia μία δομή στην οποία συνυπάρχουν διάφοροι τύποι περιεχομένου, όπως κείμενο, γραφικά, ψηφιοποιημένη φωνή, ηχογραφήσεις, κινούμενα σχέδια, κομμάτια από ταινίες κλπ. Ως εφαρμογή multimedia, ορίζουμε ένα σύστημα πληροφορικής που αξιοποιεί ένα ή περισσότερα από τα στοιχεία, σε συνδυασμό συνήθως με ειδικές συσκευές αναπαραγωγής τους όπως δίσκοι laser και video.
Οι εφαρμογές multimedia συνήθως υλοποιούνται σε περιβάλλον που βασίζεται σε γραφική επικοινωνία με το χρήστη, όπως το περιβάλλον του Macintosh, τα Microsoft Windows, το NeXTdimension [12] και το X-Window system. Δεν λείπουν όμως και περιπτώσεις όπου εξειδικευμένες ενσωματωμένες εφαρμογές αναπτύσσονται ανεξάρτητα από το γραφικό περιβάλλον, αναλαμβάνοντας όλο το φάσμα της επικοινωνίας με το χρήστη. Κλασικά παραδείγματα τέτοιων εφαρμογών είναι τα προϊόντα CD-I (Compact Disk Interactive) και τα οπτικά τηλέφωνα που εμφανίστηκαν φέτος στην καταναλωτική αγορά.
Τα ειδικά προβλήματα υλοποίησης εφαρμογών multimedia πηγάζουν από τη συνθετότητα των εφαρμογών και των υποστηριζομένων συσκευών, αλλά και από τις υψηλές απαιτήσεις που έχει ο τελικός χρήστης από τις εφαρμογές αυτές. Συγκεκριμένα:
Πρέπει να ελεγχθούν και να συντονιστούν πολλές διαφορετικές συσκευές που μέχρι σήμερα δεν υποστηρίζονται από το λειτουργικό σύστημα.
Οι ποσότητες των δεδομένων που απαιτούνται από τις εφαρμογές πολυμέσων είναι τάξεις μεγέθους ανώτερες από αυτές που απαιτούνται από τις κλασικές εφαρμογές. Έτσι αυξάνονται οι απαιτήσεις σε μνήμη τόσο κεντρική, όσο και περιφερειακή, με τα ανάλογα προβλήματα διαχείρισής της.
Ταυτόχρονα με την αύξηση του όγκου των δεδομένων, υπάρχει η απαίτηση από το χρήστη για τη γρήγορη μεταγωγή και επεξεργασία τους - συνήθως σε πραγματικό χρόνο - γεγονός που οδηγεί στην υιοθέτηση ειδικών περιφερειακών υποστήριξης (π.χ. ψηφιακών επεξεργαστών σήματος), και προηγμένων τεχνικών ελέγχου των περιφερειακών.
AVI | Audio Video Interleaved |
CD-I | Compact Disk Interactive |
DDE | Dynamic Data Exchange |
DLL | Dynamic Link Library |
DVI | Digital Video Interactive |
EPS | Encapsulated Postscript |
GIF | Graphics Interchange Format |
JPEG | Joint Photographic Expert Goup |
MCI | Media Control Interface |
MPEG | Motion Picture Expert Group |
PLV | Production Level Video |
RIFF | Resource Interchange File Format |
RTV | Real Time Video |
SDK | Software Development Kit |
TIFF | Tagged Interchange File Format |
TPU | Turbo Pascal Unit |
Πίνακας 1: Στην εισήγηση χρησιμοποιούνται αρκετά αρχικά όρων από το χώρο των εφαρμογών multimedia. Η επεξήγησή τους υπάρχει μέσα στο κείμενο στο σημείο της πρώτης αναφοράς. Ο πίνακας αυτός περιέχει μιά σύνοψη των αρχικών που έχουν χρησιμοποιηθεί.
Η ένθεση κινούμενης εικόνας (live video overlay) συχνά συνιστά βασικό στοιχείο εφαρμογών multimedia. Αποτελεί βασικό εργαλείο εφαρμογών εκπαίδευσης ή παρουσίασης διότι ενδυναμώνει τις στατικές δισδιάστες εικόνες παρέχοντας τη διάσταση του χρόνου. Τα δεδομένα που συμβολίζουν ψηφιακά την κινούμενη εικόνα είναι πολλά σε όγκο. Γι' αυτό το λόγο η συνήθης πρακτική είναι αυτά να προέρχονται από ένα σύστημα αναλογικής φύλαξης και αναπαραγωγής εικόνας που χρησιμοποιεί μέσα όπως οι κασέτες video και οι οπτικοί laser δίσκοι. Το ενδιαφέρον του καταναλωτικού κοινού για τέτοιες και άλλες συσκευές έχει χαμηλώσει το κόστος τους και των παρελκομένων τους (camcoders, video visualisers) και έτσι αποτελούν ένα ρεαλιστικό μέσο αποθήκευσης κινούμενης εικόνας για εφαρμογές multimedia.
Την ένθεση του αναλογικού σήματος video που προέρχεται από τις συσκευές αυτές μέσα στην εικόνα που δημιουργείται από τον υπολογιστή, αναλαμβάνει συνήθως ένα ειδικό περιφερειακό, η συσκευή ένθεσης (overlay). Η χρησιμοποιούμενη διάταξη είναι αυτή τους σχήματος 1. Στις επόμενες ενότητες θα περιγράψουμε την κάρτα ένθεσης Screen Machine, τις βασικές της δυνατότητες και τον τρόπο χρήσης τους.
Σχήμα 1: Λειτουργία της κάρτας ένθεσης
Η κάρτα Screen Machine κατασκευάζεται στο Μόναχο της Γερμανίας από την εταιρεία Fast Electronic GmbH και παρέχει τη δυνατότητα ένθεσης κινούμενης εικόνας video από τρείς διαφορετικές πηγές σε οποιοδήποτε μέρος της οθόνης του υπολογιστή και με οποιοδήποτε μέγεθος. Παράλληλα επιτρέπει την ψηφιοποίηση στιγμιοτύπων της εικόνας καθώς και αναπαραγωγή τους με ανάλυση 21 εκατομυρίων χρωμάτων. Η κάρτα μπορεί να συνδεθεί σε υπολογιστές συμβατούς με τον IBM AT καθώς και τον Apple Macintosh. Ο προγραμματισμός της γίνεται με τη χρήση ειδικών συναρτήσεων τις οποίες περιγράφουμε παρακάτω.
Σε ένα
σύστημα μπορούν
να είναι εγκατεστημένες
μέχρι και
τρείς κάρτες
Screen Machine. Υπάρχουν
συναρτήσεις
που ορίζουν
την εκάστοτε
ενεργή κάρτα
και αναλαμβάνουν
το διαχωρισμό
των καρτών
ανάμεσα σε
πολλαπλές εφαρμογές
για περιβάλλοντα
πολυεπεξεργασίας.
GetActiveBoard | Επιστρέφει τον αριθμό της ενεργής Screen Machine |
GetBoards | Επιστρέφει τον αριθμό των εγκατεστημένων καρτών |
GetFreeHandles | Επιστρέφει των αριθμό των καρτών που δε χρησιμοποιούνται από άλλες εφαρμογές |
GetHandle | Απαιτεί την αποκλειστική χρήση της κάρτας |
GetInput | Επιστρέφει την τρέχουσα πηγή video |
ReleaseHandle | Ανακαλεί την αποκλειστική χρήση της κάρτας |
Select | Καθορίζει την ενεργή Screen Machine |
SetInput | Ορίζει μιά από τρείς πηγές video |
ToggleVideo | Ανάβει ή σβήνει την εικόνα και τον ήχο |
Κατά
την πρώτη χρήση
της Screen Machine μπορεί
να χρειαστεί
να ρυθμιστούν
παράμετροι,
όπως ο οριζόντιος
και κάθετος
συγχρονισμός
της κάρτας
με το σήμα
video και η σχετική
κλίμακα της
οριζόντιας
διάστασης.
Μια ομάδα συναρτήσεων
επιτρέπει
τον ορισμό
και την προσπέλαση
αυτών των
παραμέτρων,
καθώς και
την αποθήκευσή
τους σε αρχείο
αρχικοποίησης.
Get/SetHScale | Επιστρέφει/καθορίζει την οριζόντια κλίμακα του παραθύρου ένθεσης |
Get/SetXofs | Επιστρέφει/καθορίζει την οριζόντια διαφορά μεταξύ του παραθύρου ένθεσης και της οθόνης |
Get/SetYOfs | Επιστρέφει/καθορίζει την κάθετη διαφορά μεταξύ του παραθύρου ένθεσης και της οθόνης |
GoodBye | Θέτει της κάρτες εκτός λειτουργίας |
ReadSetup | Διαβάζει της παραμέτρους αρχικοποίησης από το αρχείο |
Reset | Ελέγχει την ύπαρξη Screen Machine |
SetInitFile | Ορίζει το όνομα του αρχείου αρχικοποίησης |
WriteSetup | Γράφει τις ορισμένες παραμέτρους στο αρχείο αρχικοποίησης |
Η ένθεση
της ζωντανής
εικόνας επιτυγχάνεται
αφού καθοριστούν
παράμετροι
όπως η θέση
της εικόνας
και το μέγεθός
της. Άλλες συναρτήσεις
επιτρέπουν
την προσπέλαση
των παραμέτρων
αυτών.
GetDisplayHeight | Επιστρέφει το ύψος της οθόνης σε εικονοστοιχεία |
GetDisplayWidth | Επιστρέφει το πλάτος της οθόνης σε εικονοστοιχεία |
GetHofs | Επιστρέφει την οριζόντια θέση του παραθύρου ένθεσης |
GetLargestXFrame | Επιστρέφει το βέλτιστο οριζόντιο μέγεθος |
GetLargestYFrame | Επιστρέφει το βέλτιστο κάθετο μέγεθος |
GetMaxWindowFrameHeight | Επιστρέφει το μέγιστο δυνατό ύψος του παραθύρου ένθεσης |
GetMaxWindowFrameWidth | Επιστρέφει το μέγιστο δυνατό πλάτος του παραθύρου ένθεσης |
GetStandardXFrame | Επιστρέφει τις διαστάσεις του παραθύρου ένθεσης |
GetVofs | Επιστρέφει την κάθετη θέση του παραθύρου ένθεσης |
GetDisplaySize | Επιστρέφει τις διαστάσεις της οθόνης σε εικονοστοιχεία |
VideoFrame | Ορίζει το τμήμα της εικόνας που θα προβληθεί |
WindowFrame | Ορίζει τη θέση και μέγεθος του παραθύρου ένθεσης |
WindowFullFrame | Ορίζει το μέγιστο δυνατό παράθυρο ένθεσης |
WindowHalfFrame | Ορίζει παράθυρο ένθεσης με μέγεθος ίσο με τη μισή οθόνη |
WindowHpos | Ορίζει την οριζόντια θέση του παραθύρου ένθεσης |
WindowHVpos | Ορίζει τη θέση του παραθύρου ένθεσης |
WindowVpos | Ορίζει την κάθετη θέση του παραθύρου ένθεσης |
WindowQuarterFrame | Ορίζει παράθυρο ένθεσης με μέγεθος το ενα τέταρτο της οθόνης |
Εκτός
από την ένθεση
ενός τετράγωνου
πλαισίου κινούμενης
εικόνας στην
οθόνη του υπολογιστή,
η Screen Machine επιτρέπει
την επιλογή
των τμημάτων
που θα είναι
ορατά με βάση
ένα προκαθορισμένο
διαφανές χρώμα
(color keying). Ετσι για
παράδειγμα,
μπορούμε να
ορίσουμε ότι
σε όσα μέρη
της οθόνης
υπάρχει το
γαλάζιο χρώμα
θα είναι ορατό
το σήμα video. Είναι
προφανές, ότι
με αυτόν τον
τρόπο μπορούμε
να σχεδιάσουμε
γραφικά αντικείμενα
πάνω από την
εικόνα video, αρκεί
αυτά να έχουν
οποιοδήποτε
χρώμα εκτός
από το χρώμα
το οποίο έχουμε
ορίσει ως
διαφανές,
γεμίζοντας
προηγουμένως
την οθόνη με
το διαφανές
χρώμα. Οι βιβλιοθήκες
συναρτήσεων
της Screen Machine παρέχουν
τη δυνατότητα
του προγραμματισμού
αυτής της
δυνατότητας.
ClearColorKey | Σταματάει τη λειτουργία της ένθεσης με βάση το χρώμα |
Get/SetKeyCorrection | Επιστρέφει/καθορίζει την τιμή της οριζόντιας διόρθωσης για την ένθεση με βάση το χρώμα |
GetKeyMode | Επιστρέφει τον αριθμό χρωμάτων που ελέγχουν την ένθεση |
Get/SetTransColor | Επιστρέφει/καθορίζει τα χρώματα που είναι ορατά μόνο στη VGA και όχι στο video σήμα |
Get/SetVGAKey | Ελέγχει/καθορίζει αν κάποιο χρώμα επιτρέπει την εμφάνιση του σήματος της οθόνης |
Get/SetVideoKey | Ελέγχει/καθορίζει αν κάποιο χρώμα επιτρέπει την εμφάνιση του σήματος video |
ProgramColorKey | Προγραμματίζει την ένθεση με βάση το χρώμα |
SetKeyMode | Επιλέγει την ένθεση ανάμεσα σε 16 ή 256 χρώματα |
Ένας
άλλος τρόπος
ελέγχου του
τμήματος της
εικόνας που
εμφανίζεται
είναι ο καθορισμός
ψαλιδισμένων
τμημάτων (clipping
regions). Αυτά μπορούν
να χρησιμοποιηθούν
για να επιτρέψουν
σε ένα παράθυρο
που περιέχει
ζωντανή εικόνα
να συμπεριφέρεται
σαν οποιοδήποτε
άλλο αντικείμενο
ενός παραθυρικού
περιβάλλοντος.
ClipClear | Καθάρισμα των ψαλιδισμένων τμημάτων |
ClipRegions | Καθορισμός του αριθμού των ψαλιδισμένων τμημάτων |
ClipRemove | Διαγραφή ενός ψαλιδισμένου τμήματος |
ClipSetAbs | Καθορισμός ψαλιδισμένων τμημάτων |
Reload | Ελέγχει αν μιά σταθερή εικόνα πρέπει να ξαναφορτωθεί για να ψαλιδιστεί |
ResetReload | Καλείται πριν το φόρτωμα και τον ψαιλιδισμό μιάς σταθερής εικόνας |
DisplayUpdate | Ενημερώνει την οθόνη μετά τον ψαλιδισμό |
WindowLeftMargin | Καθορίζει τη θέση μιάς γραμμής παρουσίασης video |
Μιά
άλλη ομάδα
συναρτήσεων
επιτρέπει
τον ορισμό
και τον έλεγχο,
της λαμπρότητας,
του κορεσμού
των χρωμάτων,
των συνιστωσών
του κόκκινου,
πράσινου και
μπλέ, καθώς
και τον ορισμό
κινούμενης
ή σταθερής
εικόνας.
GetB | Επιστρέφει την ένταση του μπλε στοιχείου |
Get/SetBrightness | Επιστρέφει/καθορίζει την ένταση της λαμπρότητας |
Get/SetContrast | Επιστρέφει/καθορίζει την τιμή των αντιθέσεων |
GetG | Επιστρέφει την ένταση του πράσινου στοιχείου |
GetLive | Ελέγχει αν η εικόνα είναι κινούμενη |
GetR | Επιστρέφει την τιμή του κόκκινου στοιχείου |
Get/SetSaturation | Επιστρέφει/καθορίζει τον τιμή του κορεσμού |
GetVideo | Ελέγχει αν η εικόνα video είναι ορατή |
Live | Καθορίζει ζωντανή εικόνα |
PopDisplayDefaults | Καθορίζει όλες τις παραμέτρους από τις τιμές που έχουν φυλαχθεί στο σωρό |
PushDisplayDefaults | Φυλάει όλες τις παραμέτρους στο σωρό |
SetRGB | Καθορίζει τις τιμές του κόκκινου, πράσινου και μπλε στοιχείου |
Video | Καθορίζει αν το σήμα video είναι ορατό |
Η κατάλληλη
επεξεργασία
του αναλογικού
σήματος video πριν
από την ψηφιοποίησή
του μπορεί
να επιδράσει
σημαντικά
στην ποιότητα
του τελικού
αποτελέσματος.
Οι συναρτήσεις
που επηρεάζουν
το αναλογικό
τμήμα της
επεξεργασίας
ελέγχουν ένα
ημιπερατό
φίλτρο, ένα
φίλτρο θορύβου,
και ένα φίλτρο
εξομάλυνσης,
τη λειτουγία
για έγχρωμη
η ασπρόμαυρη
εικόνα, τη
θέση των χρωμάτων
στο πρότυπο
NTSC, και
τη λειτουργία
ενός διορθωτή
χρονισμού
για πηγές
των οποίων
ο χρονισμός
δεν είναι ακριβής
λ.χ. συσκευές
video.
Get/SetBandPass | Επιστρέφει/καθορίζει την τιμή του ημιπερατού φίλτρου |
Get/SetColor | Ελέγχει/καθορίζει αν η κάρτα δουλεύει έγχρωμα ή ασπρόμαυρα |
Get/SetHue | Επιστρέφει/καθορίζει την τιμή χρωματικής διόρθωσης για το NTSC |
Get/SetLineInterpolation | Ελέγχει/καθορίζει αν υπάρχει διπλασισμός γραμμών για την αποφυγή κινουμένων ειδώλων |
Get/SetNoiseFilter | Επιστρέφει/καθορίζει την τιμή του φίλτρου θορύβου |
Get/SetPreFilter | Επιστρέφει/καθορίζει την τιμή του πρώτου φίλτρου του σήματος |
Get/SetSharpness | Επιστρέφει/καθορίζει την τιμή του φίλτρου καθαρότητας |
PopFilterDefaults | Καθορίζει τις τιμές των φίλτρων από αυτές που έχουν φυλαχθεί στο σωρό |
PushFilterDefaults | Φυλάει τις τιμές των φίλτρων στο σωρό |
Οι εφαρμογές
multimedia μπορούν να
γίνουν πιο
ενδιαφέρουσες
με τη χρήση
ειδικών εφέ.
Για την Screen Machine
υπάρχουν συναρτήσεις
που επιτρέπουν
τον καθορισμό
βαθμιαίας
εξασθενήσεως
του σήματος
video (fading), καθώς και
την οριζόντια
η κάθετη σάρωση
κατά βαθμίδες
του (wiping). Επιπλέον
η τετράγωνη
εικόνα μπορεί
να μετατραπεί
σε σφαιρική
και να μετακινηθεί
στην οθόνη
σε πραγματικό
χρόνο.
Fade | Καθορισμός βαθμιαίας μείωσης της έντασης της εικόνας |
Wipe | Αλλάζει τη σταθερή εικόνα με κινητή κόβοντάς την σε οριζόντια ή κάθετα τμήματα |
MoveSphere | Καθορίζει τη θέση της σφαιρικής εικονας |
PrepareSphereMove | Αρχικοποιεί τις παραμέτρους και τη μνήμη για κίνηση της εικόνας με μορφή σφαίρας |
Sphere | Εμφανίζει την εικόνα με μορφή σφαίρας |
ShpereMoveGoodBye | Αλλάζει την εικόνα από σφαίρα σε ορθογώνια |
Οι συναρτήσεις που αναφέρθηκαν παραπάνω μπορούν να χρησιμοποιηθούν (με το πρόθεμα SM_) στο περιβάλλον MS-DOS με τη χρήση βιβλιοθηκών της γλώσσας C, ή σαν προμεταγλωττισμένες ενότητες της γλώσσας Τurbo Pascal (TPU). Οι βιβλιοθήκες υποστηρίζουν όλα τα μοντέλα προγραμματισμού της οικογενείας iAPX86 με τους μεταγλωττιστές της Microsoft και Borland. Πολλοί μεταγλωττιστές του MS-DOS επιτρέπουν τη χρήση συναρτήσεων της C και από άλλες γλώσσες και έτσι οι ίδιες βιβλιοθήκες μπορούν να χρησιμοποιηθούν λ.χ. από προγράμματα γραμμένα σε FORTRAN ή Modula-2. Το παρακάτω παράδειγμα χρησιμοποιεί τις βιβλιοθήκες της C στο περιβάλλον DOS.
#include "sm_api.h"
int main()
{
/* Σύνδεση με την κάρτα */
SM_Reset(MANUAL);
/* Μέγεθος και θέση εικόνας */
SM_SetDisplaySize(640, 400);
SM_WindowHalfFrame(100, 100);
/* Ζωντανή εικόνα */
SM_Live(ON);
}
Σε περίπτωση που η χρήση των βιβλιοθηκών της C και Pascal δεν είναι δυνατή, η Screen Machine μπορεί να ελεγχθεί με την επικοινωνία μέσω ενός οδηγού συσκευής (device driver). Αυτός μπορεί να προσπελαστεί από όλες τις γλώσσες σαν ένα κοινό αρχείο χαρακτήρων με το όνομα smdev. Το παρακάτω παράδειγμα, γραμμένο στη γλώσσα μαζικής επεξεργασίας (batch language) του MS-DOS, ενεργοποιεί τη Screen Machine.
cls
echo foreground on quarterframe 478 5 >smdev
echo video on live on setinput 0 > smdev
pause
echo video off > smdev
Στο περιβάλλον Microsoft Windows η Screen Machine μπορεί να προγραμματιστεί με τη χρήση των συναρτήσεων που αναφέρθηκαν στην προηγούμενη ενότητα στη γλώσσα C. Επιπλέον με τη χρήση της βιβλιοθήκης ``Video Workbench'' μια σειρά από επιλογές και ρυθμίσεις παρέχονται στο χρήστη αυτόματα, χωρίς τη γραφή ειδικού κώδικα. Για παράδειγμα το παρακάτω πρόγραμμα γραμμένο σε C του Windows SDK (Software Development Kit), δημιουργεί το αποτέλεσμα που φαίνεται στο σχήμα 2.
#include "windows.h"
#include "smwb.h"
long FAR PASCAL MainWndProc(HWND hWnd, unsigned message, WORD wParam, LONG lParam)
{
switch (message) {
case WM_CREATE:
/* Δημιουργία του Video Workbench */
smwb_LinkVideoWorkBench(TRUE, -1, TRUE, hWnd);
break;
default:
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return (NULL);
}
Σχήμα
2: Η οθόνη
του Video Workbench στην
εφαρμογή με
SDK.
Εκτός από τη χρήση των συναρτήσεων μέσα από τη γλώσσα C υπάρχει η δυνατότητα χρήσης ενός συντακτικού αναλυτή (parser) ο οποίος αποδέχεται εντολές παρόμοιες με αυτές που αποδέχεται ο οδηγός συσκευής για το MS-DOS. Ο αναλυτής υποστηρίζει και το Video Workbench. Επιπλέον, επειδή ο αναλυτής παρέχεται με τη μορφή μιας δυναμικά συνδέσιμης βιβλιοθήκης (DLL) [σ. 877-915, 11], η χρήση του είναι δυνατή από οποιαδήποτε γλώσσα ή και εφαρμογή υποστηρίζει δυναμικά συνδέσιμες βιβλιοθήκες. Οι περισσότερες γλώσσες και εφαρμογές όπως η Visual Basic, το Microsft Word, η Superbase 4, το Toolbook, και το Exel, υποστηρίζουν αυτές τις βιβλιοθήκες και έτσι επιτρέπoυν την άμεση εκμετάλευση της Screen Machine μέσα από αυτές. Ο κώδικας που ακολουθεί είναι εντολές WordBasic για το πρόγραμμα Microsoft Word. Το αποτέλεσμα των εντολών φαίνεται στο σχήμα 3.
Declare Function SMParser Lib "SMPAR.DLL"(Cmd$) As Integer Alias "SM_Parser"
Sub MAIN
Cmd$ = "Open" : r = SMParser(Cmd$)
Cmd$ = "OpenVWB 0 85 320 256 SCALABLE CHILD ScreenMachine 0" : r = SMParser(Cmd$)
Cmd$ = "Menu Show All" : r = SMParser(Cmd$)
Cmd$ = "Video On" : r = SMParser(Cmd$)
Cmd$ = "Live On" : r = SMParser(Cmd$)
Begin Dialog UserDialog 338, 154, "Insert a SM image"
[...]
Σχήμα 3: Το Video Workbench μέσα στο Microsoft Word.
Όπως τονίσαμε και στην εισαγωγή, το υλικό για τις εφαρμογές multimedia συχνά προέρχεται από περιφερεικά κατασκευασμένα για την καταναλωτική αγορά, όπως συσκευές video, οικιακές κάμερες, και δίσκους laser. Το γεγονός αυτό δημιουργεί αυτόματα την ανάγκη ελέγχου τους κατευθείαν από την εφαρμογή [13. 0]. Στην ενότητα αυτή θα παρουσιάσουμε τον τρόπο ελέγχου τέτοιων συσκευών μέσα από το περιβάλλον Windows καθώς και παραδείγματα ελέγχου συγκεκριμένων συσκευών.
Με την εμφάνιση του περιβάλλοντος ``Windows with Multimedia Extensions'' και στη συνέχεια της έκδοσης 3.1 των Windows, έγινε δυνατός ο έλεγχος οποιασδήποτε εξωτερικής συσκευής ήχου και εικόνας μέσω του συμπεριλαμβανομένου οδηγού MCI (Media Control Interface). Ο οδηγός αυτός [11, σ. 4.6-5.71] παρέχει μιά υψηλού επιπέδου γλώσσα για τον έλεγχο των συσκευών αυτών. Οι βασικές εντολές του οδηγού MCI δίδονται στον παρακάτω πίνακα.
OPEN | Αρχή επικοινωνίας της εφαρμογής με τη συσκευή |
CLOSE | Τέλος επικοινωνίας της εφαρμογής με τη συσκευή |
LOAD | Εντολή προς τη συσκευή να φορτώσει ένα αρχείο (λ.χ. μιά εικόνα) |
PLAY | Αρχή λειτουργίας |
RECORD | Αρχή εγγραφής |
STOP | Τέλος λειτουργίας |
PAUSE | Προσωρινή παύση λειτουργίας |
RESUME | Συνέχεια λειτουργίας μετά από παύση |
SEEK | Αναζήτηση ενός σημείου |
SET | Έλεγχος συγκεκριμένης παραμέτρου της συσκευής |
Εκτός από τις βασικές εντολές υπάρχουν περισσότερο εξειδικευμένες εντολές για συγκεκριμένες συσκευές. Το πλεονέκτημα της χρήσης των εντολών MCI είναι η ανεξαρτητοποίηση του προγράμματος από συγκεκριμένες συσκευές. Έτσι διάφορα περιβάλλοντα προγραμματισμού που υποστηρίζουν τις εντολές MCI μπορούν να χρησιμοποιήσουν τη Screen Machine χωρίς να έχουν ειδική γνώση του προγραμματισμού της.
Εκτός
από τον έλεγχο
μέσω του οδηγού
MCI που αναφέρθηκε
παραπάνω, οπτικοί
δίσκοι laser μπορούν
να ελεγχθούν
με τη χρήση
εντολών των
βιβλιοθηκών
της Screen Machine. Οι εντολές
αυτές είναι
προσπελάσιμες
από το περιβάλλον
DOS μέσω του οδηγού
συσκευής
ή συναρτήσεων
της C, και από
το περιβάλλον
Windows μέσω συναρτήσεων
της C ή του συντακτικού
αναλυτή. Οι
συσκευές
που υποστηρίζονται
έιναι τα Laserdisk
Sony LDP 1000, LDP 1500 και LDP 2000, η
συσκευή της
Philips LaserVision VP406, η συσκευή
της Pioneer LD-V4100 και
της Canon RV-321. Ο τρόπος
ελέγχου video δίσκων
μέσω της εντολής
smwb_PlayerCommand της Screen Machine
συνοψίζεται
στον παρακάτω
πίνακα.
SETMODE | Καθορισμός παραμέτρων μεταξύ δευτερολέπτων, πλαισίων (frames), και κεφαλαίων |
PLAYFWD -1 -1 | Λειτουργία από το τρέχον σημείο |
PLAYFWD n -1 | Λειτουργία από το σημείο n |
PLAYFWD -1 m | Λειτουργία από το τρέχον σημείο μέχρι το σημείο m |
PLAYFWD n m | Λειτουργία από το σημείο m ως το σημείο n |
PLAYREV | Αντίστροφη λειτoυργία (ανάλογη με το PLAYFWD) |
FASTFWD/REV | Ταχεία (αντίστροφη) λειτoυργία (ανάλογη με το PLAYFWD) |
SLOWFWD/REV | Αργή (αντίστροφη) λειτoυργία (ανάλογη με το PLAYFWD) |
SCANFWD/REV | Αναζήτηση (αντίστροφη) (ανάλογη με το PLAYFWD) |
STEPFWD/REV | Κίνηση (αντίστροφη) κατά ένα πλαίσιο |
STOP | Τερματισμός λειτουργίας |
SEEK | Αναζήτηση σε συγκεκριμένο σημείο |
CHANNEL | Επιλογή πηγής ήχου |
STATUS | Προσπέλαση παραμέτρων όπως η τρέχουσα λειτουργία, το είδος του δίσκου και το σημείο λειτουργίας. |
Οι διάφορες
πηγές εικόνας
συνήθως παράγουν
και τον αντίστοιχο
ήχο που τη συνοδεύει.
Επιπλέον στον
υπολογιστή
που θα υλοποιηθεί
μιά εφαρμογή
multimedia είναι δυνατό
να συνδεθούν
και άλλες πηγές
ήχου. Μέσα
από τη Screen Machine είναι
δυνατό να ελεγχθούν
βασικές παράμετροι
του ήχου που
μπορεί να προέρχεται
από τρεις διαφορετικές
πηγές. Οι εντολές
ελέγχου του
ήχου είναι
προσπελάσιμες
από το περιβάλλον
DOS μέσω του οδηγού
συσκευής
ή συναρτήσεων
της C, και από
το περιβάλλον
Windows μέσω συναρτήσεων
της C ή του συντακτικού
αναλυτή. Οι
εντολές αυτές
περιγράφονται
παρακάτω.
Get/SetAudioInput | Επιστρέφει/καθορίζει μιά από τρεις πηγές ήχου |
SetVolume | Καθορίζει την ένταση |
Get/SetRightVolume | Επιστρέφει/καθορίζει την ένταση του δεξιού καναλιού |
Get/SetLeftVolume | Επιστρέφει/καθορίζει την ένταση του αριστερού καναλιού |
Get/SetMute | Επιστρέφει/καθορίζει την πλήρη απουσία ήχου |
Get/SetTrebble | Επιστρέφει/καθορίζει την ένταση των υψηλών συχνοτήτων |
Get/SetBass | Επιστρέφει/καθορίζει την ένταση των χαμηλών συχνοτήτων |
Get/SetFader | Επιστρέφει/καθορίζει τη στάθμη έντασης μιάς τετράδας ηχείων |
Η Screen Machine παρέχει τη δυνατότητα ελέγχου του ψηφιακού δέκτη τηλεόρασης SM-TV. Η προσπέλαση των δυνατοτήτων του δέκτη γίνεται μέσα από βιβλιοθήκη DLL (Dynamic Link Library) των Windows. Ο δέκτης παρέχει τη δυνατότητα λήψεως και αποκωδικοποιήσεως τηλεκειμενογραφίας (teletext). Στην περίπτωση αυτή είναι δυνατή η δυναμική ανταλλαγή στοιχείων με κάποια άλλη εφαρμογή των Windows με τη χρησιμοποίηση των εντολών DDE (Dynamic Data Exchange).
Βασικό τμήμα των εφαρμογών multimedia είναι οι γραφικές εικόνες. Καταλαμβάνουν λίγο σχετικά χώρο αλλά προσθέτουν ρεαλισμό και ζωντάνια στην εφαρμογή. Στην ενότητα αυτή θα ασχοληθούμε με την αποθήκευση αρχείων που περιέχουν μη κινούμενες γραφικές εικόνες.
Διαφορετικές εφαρμογές υποστηρίζουν διαφορετικούς τύπους αρχείων αποθήκευσης. Θα περιγράψουμε τους τύπους που υποστηρίζονται από την Screen Machine και στη συνέχεια θα παραθέσουμε έναν πίνακα με τις συναρτήσεις που μετατρέπουν μεταξύ αυτών των τύπων.
Ο τρόπος αποθήκευσης των εικόνων μέσα στη μνήμη της κάρτας ένθεσης είναι άμεσα συνδεδεμένος με τον τρόπο με τον οποίο οι εικόνες κωδικοποιούνται για τηλεοπτική μετάδοση. Στο πρότυπο της έγχρωμης τηλεόρασης - που όπως αναλύσαμε παραπάνω αποτελεί την κυρίαρχη πηγή εικόνας - η εικόνα μεταδίδεται διαχωρισμένη στα στοιχεία της λαμπρότητας (luminance) και του χρώματος (chrominance). Συγκεκριμένα, η λαμπρότητα μεταδίδεται διαμορφωμένη από τα σήματα του χρώματος. Από τα τρία στοιχεία του χρώματος (κόκκινο, πράσινο, μπλε) μεταδίδονται μόνο τα δύο (κόκκινο και μπλε) και αυτά ως διαφορά από την λαμπρότητα. Δηλαδή αν ονομάσουμε την λαμπρότητα Y και τα τρια άλλα χρώματα R, G και B, τελικά μεταδίδονται το Y και πάνω σε αυτό διαμορφώνονται τα R-Y και G-Y που ονομάζονται U και V αντίστοιχα. Λόγω της μειωμένης ευαισθησίας του ματιού στο χρώμα σε σχέση με την λαμπρότητα (που οφείλεται στο μικρότερο αριθμό των - ευαισθήτων στο χρώμα - κωνίων σε σχέση με τα -ευαίσθητα στην λαμπρότητα - ραβδία μέσα στο μάτι) στα στοιχεία U και V αφιερώνεται μικρότερο τμήμα του εύρους των συχνοτήτων μετάδοσης. Έτσι, στη μνήμη της κάρτας ένθεσης ο βασικός τρόπος αποθήκευσης είναι τέσσερεις τιμές λαμπρότητας που κάθε μια καταλαμβάνει μια ψηφιολέξη και ένα ζεύγος (U, V) που αντιστοιχεί και στις τέσσερεις τιμές λαμπρότητας. Ο τρόπος αυτός αποθήκευσης χρησιμοποιείται και για τα εσωτερικά αρχεία της Screen Machine μια και μπορεί εύκολα και κυρίως γρήγορα, να μεταφερθεί από τη μνήμη της κάρτας στο δίσκο και αντίστροφα. Τα αρχεία τύπου FLM περιέχουν μία επικεφαλίδα που περιέχει στοιχεία όπως τη διακριτικότητα και τις βαθμίδες των χρωμάτων ακολουθούμενη από τα κυρίως στοιχεία [4].
Ο τύπος DIB (Device Independent Bitmap) χρησιμοποιείται στο περιβάλλον Microsoft Windows και Presentation Manager του OS/2 [11, σ. 8.18 - 8.30]. Ο τύπος RDIB (RIFF DIB, όπου RIFF υποδηλώνει Resource Interchange File Format), είναι βασικός τύπος για ανταλλαγή αρχείων multimedia στο περιβάλλον Windows [11, σ. 8.2-8.18]. Τα αρχεία RIFF είναι βασισμένα σε περιοχές με ετικέτες (tagged format) και μία από τις περιοχές μπορεί να περιέχει στοιχεία DIB.
Ο τύπος GIF (Graphics Interchange Format) ξεκίνησε ως πρότυπος τρόπος ανταλλαγής γραφικών αρχείων μεταξύ των συνδρομητών της Compuserve. Υποστηρίζεται από πολλές εφαρμογές. Τα αρχεία τύπου GIF είναι συμπιεσμένα με τον αλγόριθμο συμπίεσης Lempel-Ziv [15] .
Αρχικά χρησιμοποιήθηκε από το πρόγραμμα Paintbrush της Zsoft Corporation, αλλά τώρα υποστηρίζεται από πολλές εφαρμογές.
Ο τύπος αυτός ορίστηκε το 1984 από την εταιρία Truevision για ανταλλαγή γραφικών στοιχείων με τα video-γραφικά της προϊόντα.
Τα αρχεία τύπου TIFF (Tagged Interchange File Format) έχουν οριστεί από την εταιρία Aldus. Υπάρχουν πολλοί τύποι αρχείων TIFF. Οι βιβλιοθήκες της Screen Machine υποστηρίζουν τους τύπους G (8 ψηφιολέξεων) και R (24 ψηφιολέξεων).
Ο τύπος EPS (Encapsulated Postscript) περιέχει εντολές της γλώσσας Postscript για την απεικόνιση ενός σχεδίου. Επιπλέον, στην αρχή του αρχείου υπάρχουν στοιχεία όπως η διαστάσεις του σχεδίου και συχνά, ένας μικρός ψηφιοπίνακας (bitmap) που παριστάνει το σχέδιο. Τα αρχεία τύπου EPS μπορούν εύκολα να αλλάξουν μέγεθος και προσανατολισμό, και να ενσωματωθούν σε αρχεία προγραμμάτων που υποστηρίζουν αυτόν τον τύπο.
Στον παρακάτω πίνακα συνοψίζονται οι δυνατότητες υποστήριξης αρχείων που δίδονται από τις βιβλιοθήκες της Screen Machine.
Από
Σε |
|
|
|
|
FLM | convertDIBtoFLM | SM_WritePic | convTIFFtoFLM | |
DIB | convertFLMtoDIB | dibWritePic | ||
Μνήμη | SM_ReadPic | dibReadPic | tiffReadPic | |
TIFF | convertFLMtoTIFF | tiffWritePic | ||
GIF | convertFLMtoGIF | gifWritePic | ||
PCX | convertFLMtoPCX | pcxWritePic | ||
RDIB | convertFLMtoRDIB | rdibWritePic | ||
EPS | convertFLMtoEPS | epsWritePic | ||
TGA | convertFLMtoTGA | tgaWritePic |
Διαφορετικοί τύποι αρχείων καταλαμβάνουν διαφορετικό χώρο. Το παρακάτω γράφημα συνοψίζει το χώρο που καταλαμβάνει μια εικόνα 320 x 200 με παλέτα 256 χρωμάτων.
Οι συσκευές ένθεσης συνήθως υποστηρίζουν πολλά περισσότερα χρώματα απ' ό,τι οι περισσότερες συσκευές παραστάσεως γραφικών. Για παράδειγμα, η Screen Machine υποστηρίζει δύο εκατομμύρια ενώ μια μέση κάρτα VGA υποστηρίζει 256 ή, το πολύ 32000 χρώματα. Σε μια εφαρμογή multimedia είναι πολλές φορές απαραίτητο να χρησιμοποιήσουμε τον υπολογιστή ανεξάρτητα από την κάρτα ένθεσης. Αυτό δημιουργεί την απαίτηση για μείωση του αριθμού των χρησιμοποιουμένων χρωμάτων ανάλογα με τον αριθμό που υποστηρίζει ο υπολογιστής. Υπάρχουν πολλοί και διαφορετικοί αλγόριθμοι για την πραγματοποίηση αυτής της μετατροπής [3, σ. 121-140].
Οι περισσότερες συσκευές παραστάσεως γραφικών μπορούν να δείξουν ταυτόχρονα 256 χρώματα επιλέγοντάς τα από μιά παλέττα 16 εκατομυρίων χρωμάτων. Έτσι, η βάση για μια σωστή παράσταση της εικόνας με περιορισμένο αριθμό χρωμάτων είναι η κατάλληλη επιλογή των χρωμάτων αυτών. Ο κβαντισμός αυτός των χρωμάτων είναι επίσης απαραίτητος όταν μετατρέπουμε τα δεδομένα σε έναν τύπο αρχείου που υποστηρίζει λιγότερα χρώματα.
Οι βασικοί τρόποι κβαντισμού των χρωμάτων είναι οι εξής:
Όλα τα πιθανά χρώματα μοιράζονται ομιόμορφα στα χρώματα που μπορούν να αποδοθούν. Είναι ο πιό γρήγορος τρόπος και δεν απαιτεί καθόλου μνήμη. Τα αποτελέσματά του είναι όμως συνήθως πολύ φτωχά.
Ο αλγόριθμος αυτός δημιουργεί ένα ιστόγραμμα από τα χρώματα που χρησιμοποιούνται στην εικόνα που θα κβαντιστεί. Τα χρώματα που χρησιμοποιούνται πιο συχνά είναι αυτά τα οποία επιλέγονται για το τελικό αποτέλεσμα. Τα υπόλοιπα αποδίδονται ως τα πλησιέστερα χρώματα από αυτά που έχουν επιλεχθεί.
Η βάση
αυτού του αλγόριθμου
είναι η διαδοχική
υποδιαίρεση
των χρωμάτων
που χρησιμοποιούνται
σε δύο ομάδες
βασισμένες
στα χρώματα
που χρησιμοποιούνται
πιο πολύ. Αυτή
η διαδικασία
επαναλαμβάνεται
μέχρι να δημιουργηθούν
τόσες ομάδες
όσος και ο αριθμός
των τελικών
χρωμάτων.
Στο στάδιο
αυτό επιλέγεται
ο μέσος όρος
των χρωμάτων
της κάθε ομάδας
για να παραστήσει
την ομάδα εκείνη.
Ο αλγόριθμος
αυτός που χρησιμοποιήται
από τις βιβλιοθήκες
της Screen Machine είναι
μια παραλλαγή
της προηγούμενης
μεθόδου. Οι
υποδιαιρέσεις
των κατηγοριών
των χρωμάτων
παριστώνται
με τη μορφή
ενός οκταδικού
δένδρου. Το
πλεονέκτημα
αυτής της
μεθόδου είναι
η διατήρηση
των χρωματικών
αντιθέσεων,
αφού αυτές
φυλάγονται
σε διαφορετικά
κλαδιά του
δένδρου. Στον
παρακάτω πίνακα
συνοψίζουμε
τις συναρτήσεις
που μπορούν
να χρησιμοποιηθούν
για τον κβαντισμό
των χρωμάτων.
smipColorldxMapping | Κβαντισμός χρωμάτων με αλλαγή δεικτών |
smipColorRGBMapping | Κβαντισμός χρωμάτων με αλλαγή τιμών |
smipGenerateColorQuantTab | Δημιουργία ταξινομημένου πίνακα χρωματικών τιμών |
smipGenerateHistogram | Δημιουργία ιστογράμματος χρήσης χρωμάτων |
smipInitializeColorQuant | Αρχικοποίηση της δομής κβαντισμού |
smipReseaseColorQuant | Απελευθέρωση της δομής κβαντισμού |
Η σύνθεση
των χρωμάτων
για την παραγωγή
νέων χρωμάτων
είναι ανεξάρτητη
από τον κβαντισμό
και μπορεί
να χρησιμοποιηθεί
ξεχωριστά.
Με τη μέθοδο
αυτή κουκίδες
διαφορετικών
χρωμάτων τοποθετούνται
μαζί, έτσι
ώστε να δημιουργήσουν
την ψευδαίσθηση
ενός άλλου
χρώματος. Το
βασικό πρόβλημα
αυτής της
μεθόδου είναι
η ταξινόμηση
των λαθών
που δημιουργούνται.
Οι βιβλιοθήκες
της Screen Machine υποστηρίζουν
την σύνθεση
των χρωμάτων
με τον αλγόριθμο
φιλτραρίσματος
Floyd-Steinberg [5]. Στον παρακάτω
πίνακα συνοψίζουμε
τις συναρτήσεις
που μπορούν
να χρησιμοποιηθούν
για τη σύνθεση
χρωμάτων.
smipBWDithering | Σύνθεση χρωμάτων με άσπρο και μαύρο |
smipGRAYDithering | Σύνθεση χρωμάτων σε τόνους του γκρι |
smipldxGRAYDithering | Σύνθεση χρωμάτων από δείκτες σε τόνους του γκρι |
smipGrayldxDithering | Σύνθεση χρωμάτων σε δείκτες τόνων του γκρι |
smipInitializeDithering | Αρχικοποίηση της δομής σύνθεσης χρωμάτων |
smipReleaseDithering | Απελευθέρωση της δομής σύνθεσης χρωμάτων |
smipRGBDithering | Σύνθεση χρωμάτων με λιγότερα χρώματα |
smipRGBldxDithering | Σύνθεση χρωμάτων με δείκτεσ σε λιγότερα χρώματα |
Τα αρχεία που περιέχουν εικόνες καταλαμβάνουν αρκετό χώρο, για παράδειγμα ενα αρχείο 640 x 480 με χρώμα 24 δυαδικών ψηφίων καταλαμβάνει 900K. Για να ελαχιστοποιηθεί ο χώρος που καταλαμβάνουν θα ήταν επιθυμητό να συμπιεστούν. Πολλοί από τους τύπους αρχείων που αναφέραμε παραπάνω καταλαμβάνουν πολύ λιγότερο χώρο από τον αριθμό που αναφέραμε παραπάνω. Αυτό επιτυγχάνεται με διάφορες τεχνικές όπως η φύλαξη μόνο των χρωμάτων που χρησιμοποιούνται, ή και ενός υποσυνόλου τους, η κωδικοποιήση σειρών ιδίων ψηφιολέξεων (run length encoding) ή και η χρησιμοποίηση γενικών αλγορίθμων συμπίεσης όπως ο αλγόριθμος Lempel-Ziv. Οι τεχνικές αυτές συμπίεσης υποστηρίζονται από τις βιβλιοθήκες της Screen Machine όταν γίνεται επεξεργασία για τον αντίστοιχο τύπο αρχείου.
Εκτός από τις τεχνικές που αναφέρθηκαν παραπάνω, τα τελευταία χρόνια χρησιμοποιείται όλο και περισσότερο η συμπίεση αρχείων σύμφωνα με το πρότυπο JPEG [14, 13]. Το πρότυπο αυτό αναπτύχθηκε από το Joint Photographic Expert Goup με σκοπό τη δημιουργία προτύπου για υψηλής απόδοσης συμπίεση φυσικών εικόνων. Έχει ήδη υιοθετηθεί από τους οργανισμούς τυποποίησης ISO και CCITT.
Η συμπίεση JPEG βασίζεται στη φυσιολογία της όρασης, έτσι ώστε να μην αποθηκεύονται χαρακτηριστικά της εικόνας που δεν είναι ορατά στο ανθρώπινο οπτικό σύστημα. Γι' αυτό το λόγο η συμπίεση JPEG συνεπάγεται συνήθως απώλειες (lossy), δηλαδή μιά εικόνα που θα περάσει από τη διαδικασία συμπίεσης και αποσυμπίεσης δε θα είναι κατά ψηφιολέξη ίδια με την πρωτότυπη. Παρ' όλα αυτά ένας άνθρωπος δε θα μπορεί να διακρίνει διαφορές. Μπορεί κανείς να επιλέξει το βαθμό συμπίεσης με ανάλογη επίδραση στην ποιότητα της εικόνας. Έτσι συνήθως συμπίεση μέχρι και 20 φορών (δηλαδή αρχείο 900Κ να γίνει 45Κ) δεν έχει ορατή επίδραση στην ποιότητα, ενώ μπορεί κανείς να επιλέξει συμπίεση μέχρι και 50 φορών, με κάποιες βέβαια παραχωρήσεις στην ποιότητα.
Οι τεχνική
συμπίεσης
είναι βασισμένη
σε ένα διακριτό
συνημιτονοηδή
μετασχηματισμό
κομματιών
8x8 ακολουθούμενο
από κβαντοποίηση
του αποτελέσματος
και κωδικοποίηση
Huffman για μείωση
της εντροπίας
των δεδομένων.
Στο περιβάλλον
ανάπτυξης
εφαρμογών
της Screen Machine παρέχονται
βιβλιοθήκες
για κωδικοποίηση
κάτω από MS-DOS και
Windows σε C καθώς
και τα αντίστοιχα
TPU για προγραμματισμό
σε Turbo Pascal. Ο αλγόριθμος
είναι υλοποιημένος
σε βελτιστοποιημένη
συμβολική
γλώσσα i386. Έτσι
μιά πλήρης
εικόνα μπορεί
να συμπιεστεί
μέσα σε τέσσερα
δευτερόλεπτα
σε έναν υπολογιστή
με επεξεργαστή
i386/33MHz. Ο παρακάτω
πίνακας συνοψίζει
τις συναρτήσεις
συμπίεσης
JPEG.
jpegDecodeImage | Αποσυμπιέζει ένα αρχείο από JPEG |
jpegDecoder | Αποσυμπιέζει ένα αρχείο από JPEG σε μορφή FLM |
jpegEncodeImage | Συμπιέζει ένα αρχείο με JPEG |
jpegEncoder | Συμπιέζει ένα αρχείο από μορφή FLM σε JPEG |
jpegIsImageComopressed | Ελέγχει αν ένα αρχείο είναι συμπιεσμένο με JPEG |
jpegReadPic | Διαβάζει ένα αρχείο συμπιεσμένο με JPEG στη μνήμη |
jpegWritePic | Γράφει ένα αρχείο συμπιεσμένο με JPEG από τη μνήμη |
jpegGetErrorText | Επιστρέφει το όνομα ενός λάθους με βάση τον αριθμό του |
Είναι δυνατό μια εφαρμογή multimedia να πρέπει να υλοποιηθεί εξ' ολοκλήρου ψηφιακά, χωρίς την παράλληλη λειτουργία άλλων εξωτερικών αναλογικών συσκευών. Τέτοιου είδους υλοποίηση παρουσιάζει ορισμένα πλεονεκτήματα όπως είναι:
Η απλούστευση του συστήματος. Ο ψηφιακός έλεγχος της εικόνας και του ήχου αποδεσμεύει την εφαρμογή από λάθη που μπορούν να συμβούν με τον έλεγχο εξωτερικών συσκευών.
Η αποφυγή προβλημάτων σχετικών με τα διαφορετικά πρότυπα αποθήκευσης και μετάδοσης της κινούμενης εικόνας (PAL/SECAM/NTSC , Beta/VHS, Composite/RGB/S-VHS).
Ο πλήρης έλεγχος της εφαρμογής πάνω στο αποτέλεσμα. Αυτός επιτρέπει νέες δημιουργικές λύσεις οι οποίες πιθανώς να μην ήταν δυνατές λόγω περιορισμών των μέσων αποθήκευσης και αναπαραγωγής.
Η δυνατότητα χρήσης ψηφιακών τεχνικών, όπως μετάδοση από ψηφιακά δίκτυα μεταγωγής δεδομένων (LAN, PSN), εφαρμογή ψηφιακών φίλτρων, και αρχειοθέτηση σε βάσεις δεδομένων.
Στην ενότητα αυτή θα εξετάσουμε δύο διαφορετικές βασικές τεχνολογίες που επιτρέπουν την ψηφιακή φύλαξη και αναπαραγωγή κινούμενης εικόνας και τη δυνατότητα υλοποίησης εφαρμογών multimedia με βάση της τεχνολογίες αυτές.
Η τεχνολογία DVI (Digital Video Interactive) επιτρέπει τη ζωντανή παρουσίαση κινούμενης ψηφιακής εικόνας στην οθόνη του υπολογιστή. Βασίζεται σε ισχυρούς επεξεργαστές σήματος όπως ο i750 και σε επεξεργαστές εικονοστοιχείων όπως ο i82750PB [6]. Υλοποιήσεις της τεχνολογίας αποτελούν οι κάρτες DVI της FAST και ActionMedia II των Intel και IBM.
Με το υλικό DVI είναι δυνατή η απεικόνιση ζωντανών εικόνων με ανάλυση μέχρι 256x240 και ταχύτητα 25 πλαισίων ανά δευτερόλεπτο. Παράλληλα υποστηρίζεται ήχος με ποιότητα CD. Από ένα CD-ROM μπορεί να παραχθεί κινούμενη εικόνα μέχρι και 72 λεπτών, χάρη σε σημαντική συμπίεση των δεδομένων με τη χρήση τεχνικών συμπίεσης, όπως ο αλγόριθμος MPEG (Motion Picture Expert Group) [7]. Η συμπίεση αυτή επιτρέπει και τη μεταφορά των δεδομένων μέσα από τοπικά δίκτυα.
Η εγγραφή εικόνων DVI μπορεί να πραγματοποιηθεί με τη χρήση ενός ειδικού πρόσθετου εξαρτήματος (capture board) και μέση ποιότητα εγγραφής (RTV - Real Time Video), ή από ειδικευμένες εταιρίες παραγωγής συμπιεσμένων εικόνων που, χρησιμοποιόντας υψηλής ταχύτητας παράλληλους επεξεργαστές, συμπιέζουν τα δεδομένα με υψηλότερη πιστότητα (PLV - Production Level Video).
Μία άλλη προσέγγιση στη δημιουργία κινούμενης εικόνας από υπολογιστή βασίζεται εξ' ολοκλήρου στο υλικό του υπολογιστή. Δηλαδή, ο επεξεργαστής του υπολογιστή αναλαμβάνει το έργο της αποσυμπίεσης και παρουσίασης των δεδομένων με τη μορφή κινούμενης εικόνας. Επίσης με τη βοήθεια μιάς κάρτας ψηφιοποίησης όπως η Screen Machine είναι δυνατή και η δημιουργία τέτοιων σειρών κινούμενης ψηφιοποιημένης εικόνας.
Φυσικά, λόγω της μειoμένης υπολογιστικής ισχύος του κεντρικού επεξεργαστή σε σχέση με τους εξειδικευμένους επεξεργαστές σήματος που χρησιμοποιούνται στα προϊόντα DVI, το μέγεθος της παραγόμενης εικόνας και ο αριθμός πλαισίων ανά δευτερόλεπτο είναι μικρότερα από αυτά που επιτυγχάνονται με την υποστήριξη του υλικού (λ.χ. 7-10 πλαίσια ανά δευτερόλεπτο με του οδηγούς της Screen Machine). Υπάρχει όμως το πλεονέκτημα ότι για την αναπαραγωγή των εικόνων αρκεί ένας οποιοσδήποτε υπολογιστής.
Η υλοποίηση αυτής της μεθόδου κάτω από το περιβάλλον Windows 3.1 από τη Microsoft ονομάστηκε AVI (Audio Video Interleaved). Οι επεκτάσεις AVI προσφέρουν οδηγούς για τη συμπίεση και την αποσυμπίεση εικονοσειρών καθώς και μια σειρά από βοηθητικά προγράμματα. Τα κυριώτερα από αυτά είναι:
Πρόγραμμα που επιτρέπει την αλλαγή εικονοσειρών AVI. Μέσα από το videdit είναι δυνατή η διαγραφή ή η εισαγωγή εικονοσειρών σε μια υπαρχουσα εικονοσειρά, ο συγχρονισμός του ηχητικού τμήματος με το οπτικό, καθώς και η αλλαγή του ρυθμού αλλαγής πλαισίων ανά δευτερόλεπτο.
Έκδοση του media player των Windows που υποστηρίζει AVI. Για την αύξηση της ταχύτητας εναλλαγής πλαισίων, οι οδηγοί AVI προσπαθούν να φορτώσουν από την αρχή όσο το δυνατό μεγαλύτερο κομμάτι της σειράς στην κεντρική μνήμη του υπολογιστή.
Καθορισμός των χαρακτηριστικών μιας συσκευής video.
Πρόγραμμα για την αλλαγή χωριστών εικόνων. Αυτές μπορούν στη συνέχεια να εισαχθούν μέσα σε μιά εικονοσειρά μέσω του videdit.
Οι εικονοσειρές AVI χρησιμοποιούν συνήθως μιά παλέτα 256 χρωμάτων. Με το πρόγραμμα paledit είναι δυνατή η αλλαγή της παλέτας αυτής.
Πρόγραμμα που επιτρέπει την αλλαγή των ηχητικών τμημάτων της εικονοσειράς.
Τόσο ο προγραμματισμός εφαρμογών DVI όσο και ο προγραμματισμός εφαρμογών AVI βασίζονται στη χρήση εντολών MCI. Και οι δύο τρόποι υλοποίησης χρησιμοποιούν παρόμοιες εντολές, αφού τόσο τα προϊόντα DVI, όσο και η υποστήριξη AVI διαθέτουν οδηγούς MCI. Οι οδηγοί MCI για DVI και AVI προσφέρουν στο χρήστη ένα ιδεατό ψηφιακό video, το οποίο μπορεί να αντιμετωπιστεί από πλευράς εφαρμογών όμοια με τις πραγματικές οικιακές αναλογικές συσκευές που λειτουργούν με μαγνητικές κασέτες. Είναι δηλαδή δυνατή η εγγραφή μιάς εικονοσειράς, η επανάληψή της, η γρήγορη αναδρομή προς ένα σημείο, το πάγωμα της εικόνας, η πλαίσιο προς πλαίσιο απεικόνηση κλπ.
Για
παράδειγμα,
η παρακάτω
σειρά εντολών
μπορεί να χρησιμοποιηθεί
για να εμφανίσει
μια κινούμενη
εικόνα στην
οθόνη με τη
χρήση DVI ή AVI:
open style overlapped type MMMovie
realize normal
put destination at 50 60 150 120
set audio all on
seek to start
play speed 8
Στις προηγούμενες ενότητες εξετάσαμε τα βασικά στοιχεία προγραμματισμού εφαρμογών multimedia, στο περιβάλον Windows, και MS-DOS. Στο νεαρό αυτό χώρο της πληροφορικής, η υποστήριξη με βιβλιοθήκες λογισμικού, και η χρήση διαδεδομένων μεθόδων επικοινωνίας, ανταλλαγής και αποθήκευσης στοιχείων, διευκολύνουν την ανάπτυξη προγραμμάτων, επιτρέποντας στον υλοποιητή να αξιοποιήσει τη δημιουργικότητά του στην ανάπτυξη πραγματικά προτότυπων και χρήσιμων εφαρμογών.
1. ΖΗΣΙΜΟΠΟΥΛΟΣ, Δ., (1990),Η ρητορική στον προεκλογικό αγώνα: τα πολλαπλά μέσα και η χρήση τους στην πολιτική, 3ο Πανελλήνιο Συνέδριο Πληροφορικής, τόμος 1, σ. 382-394, Αθήνα Μάϊος 1990.
2. BORENSTEIN, S., (1992), Multimedia mail from the bottom up or teaching dumb mailers how to sing, Usenix Winter 1992 Technical Conference Proceedings, σ. 79-92, San Francisco, January 20-24.
3. BURGER, P. & GILLIES, D., (1989), Interactive computer graphics, Addison-Wesley.
4. FAST ELECTRONIC, (1992), Screen Machine SM-interface API manual, August 1992 edition.
5. FLOYD, R., & STEINBERG, L., (1975), An adaptive algorithm for spatial grey scale, SID 1975 In. Symp. Dig. Tech. Papers, 36.
6. GREEN, J., (1992), The evolution of the DVI system software, Communications of the ACM, 35:1, January, σ. 52-67.
7. LE GALL, D., (1991), MPEG: a video compression standard for multimedia applications, Communications of the ACM, April, 34:4, σ. 47-58.
8. MARKEY, B., (1991), Emerging hypermedia standards, Proceedings of the Summer 1991 Usenix Conference, σ. 59-74, Nashville, Tennessee, June 10-14.
9. MICROSOFT CORPORATION, (1991), Multimedia programmer's reference, Microsoft Press, Redmond.
10. MILAZZO, P., (1991), Shared video under Unix, Proceedings of the Summer 1991 Usenix Conference, σ. 369-383, Nashville, Tennessee, June 10-14.
11. PETZOLD, C., (1990), Programming Windows, Microsoft Press, Redmond.
12. PHILLIPS, L., (1991), Mediaview: a general multimedia digital publication system, Communications of the ACM, 34:7, July, σ. 74-83.
13. SZABO, B., & WALLACE, G., , (1991), Design considerations for JPEG video and synchronized audio in a Unix workstation environment, Proceedings of the Summer 1991 Usenix Conference, σ. 353-368, Nashville, Tennessee, June 10-14.
14. WALLACE, G., (1991), The JPEG Still Picture Compression Standard, Communications of the ACM, April, 34:4, σ. 30-44.
15. ZIV, J., & LEMPEL, A., (1978), A compression of indivudual sequences via variable-rate coding, IEEE Tran. Inf. Theory, IT-24:5, σ. 530-536.