http://www.dmst.aueb.gr/dds/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:
  • Diomidis Spinellis. The implementation of multimedia applications. In Multimedia: Theory and Experience, pages 23–37. Greek Computer Society, December 1992. In Greek. Green Open Access

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ MULTIMEDIA*

Διομήδης Δ. Σπινέλλης

FAST Hellas S.A.

Κηφισίας 196, 154 52 Αθήνα

ΠΕΡΙΛΗΨΗ

Ο προγραμματισμός εφαρμογών 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

Η κάρτα 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 Αλλάζει την εικόνα από σφαίρα σε ορθογώνια

Προγραμματισμός στο περιβάλλον MS-DOS

Οι συναρτήσεις που αναφέρθηκαν παραπάνω μπορούν να χρησιμοποιηθούν (με το πρόθεμα 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

Στο περιβάλλον 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

Όπως τονίσαμε και στην εισαγωγή, το υλικό για τις εφαρμογές multimedia συχνά προέρχεται από περιφερεικά κατασκευασμένα για την καταναλωτική αγορά, όπως συσκευές video, οικιακές κάμερες, και δίσκους laser. Το γεγονός αυτό δημιουργεί αυτόματα την ανάγκη ελέγχου τους κατευθείαν από την εφαρμογή [13. 0]. Στην ενότητα αυτή θα παρουσιάσουμε τον τρόπο ελέγχου τέτοιων συσκευών μέσα από το περιβάλλον Windows καθώς και παραδείγματα ελέγχου συγκεκριμένων συσκευών.

Ο οδηγός ελέγχου MCI

Με την εμφάνιση του περιβάλλοντος ``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 χωρίς να έχουν ειδική γνώση του προγραμματισμού της.

Συσκευές οπτικών δίσκων laser

Εκτός από τον έλεγχο μέσω του οδηγού 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 και στη συνέχεια θα παραθέσουμε έναν πίνακα με τις συναρτήσεις που μετατρέπουν μεταξύ αυτών των τύπων.

Τύπος FLM

Ο τρόπος αποθήκευσης των εικόνων μέσα στη μνήμη της κάρτας ένθεσης είναι άμεσα συνδεδεμένος με τον τρόπο με τον οποίο οι εικόνες κωδικοποιούνται για τηλεοπτική μετάδοση. Στο πρότυπο της έγχρωμης τηλεόρασης - που όπως αναλύσαμε παραπάνω αποτελεί την κυρίαρχη πηγή εικόνας - η εικόνα μεταδίδεται διαχωρισμένη στα στοιχεία της λαμπρότητας (luminance) και του χρώματος (chrominance). Συγκεκριμένα, η λαμπρότητα μεταδίδεται διαμορφωμένη από τα σήματα του χρώματος. Από τα τρία στοιχεία του χρώματος (κόκκινο, πράσινο, μπλε) μεταδίδονται μόνο τα δύο (κόκκινο και μπλε) και αυτά ως διαφορά από την λαμπρότητα. Δηλαδή αν ονομάσουμε την λαμπρότητα Y και τα τρια άλλα χρώματα R, G και B, τελικά μεταδίδονται το Y και πάνω σε αυτό διαμορφώνονται τα R-Y και G-Y που ονομάζονται U και V αντίστοιχα. Λόγω της μειωμένης ευαισθησίας του ματιού στο χρώμα σε σχέση με την λαμπρότητα (που οφείλεται στο μικρότερο αριθμό των - ευαισθήτων στο χρώμα - κωνίων σε σχέση με τα -ευαίσθητα στην λαμπρότητα - ραβδία μέσα στο μάτι) στα στοιχεία U και V αφιερώνεται μικρότερο τμήμα του εύρους των συχνοτήτων μετάδοσης. Έτσι, στη μνήμη της κάρτας ένθεσης ο βασικός τρόπος αποθήκευσης είναι τέσσερεις τιμές λαμπρότητας που κάθε μια καταλαμβάνει μια ψηφιολέξη και ένα ζεύγος (U, V) που αντιστοιχεί και στις τέσσερεις τιμές λαμπρότητας. Ο τρόπος αυτός αποθήκευσης χρησιμοποιείται και για τα εσωτερικά αρχεία της Screen Machine μια και μπορεί εύκολα και κυρίως γρήγορα, να μεταφερθεί από τη μνήμη της κάρτας στο δίσκο και αντίστροφα. Τα αρχεία τύπου FLM περιέχουν μία επικεφαλίδα που περιέχει στοιχεία όπως τη διακριτικότητα και τις βαθμίδες των χρωμάτων ακολουθούμενη από τα κυρίως στοιχεία [4].

Τύπος DIB και RDIB

Ο τύπος 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

Ο τύπος GIF (Graphics Interchange Format) ξεκίνησε ως πρότυπος τρόπος ανταλλαγής γραφικών αρχείων μεταξύ των συνδρομητών της Compuserve. Υποστηρίζεται από πολλές εφαρμογές. Τα αρχεία τύπου GIF είναι συμπιεσμένα με τον αλγόριθμο συμπίεσης Lempel-Ziv [15] .

Τύπος PCX

Αρχικά χρησιμοποιήθηκε από το πρόγραμμα Paintbrush της Zsoft Corporation, αλλά τώρα υποστηρίζεται από πολλές εφαρμογές.

Τύπος TGA

Ο τύπος αυτός ορίστηκε το 1984 από την εταιρία Truevision για ανταλλαγή γραφικών στοιχείων με τα video-γραφικά της προϊόντα.

Τύπος TIFF

Τα αρχεία τύπου TIFF (Tagged Interchange File Format) έχουν οριστεί από την εταιρία Aldus. Υπάρχουν πολλοί τύποι αρχείων TIFF. Οι βιβλιοθήκες της Screen Machine υποστηρίζουν τους τύπους G (8 ψηφιολέξεων) και R (24 ψηφιολέξεων).

Τύπος EPS

Ο τύπος EPS (Encapsulated Postscript) περιέχει εντολές της γλώσσας Postscript για την απεικόνιση ενός σχεδίου. Επιπλέον, στην αρχή του αρχείου υπάρχουν στοιχεία όπως η διαστάσεις του σχεδίου και συχνά, ένας μικρός ψηφιοπίνακας (bitmap) που παριστάνει το σχέδιο. Τα αρχεία τύπου EPS μπορούν εύκολα να αλλάξουν μέγεθος και προσανατολισμό, και να ενσωματωθούν σε αρχεία προγραμμάτων που υποστηρίζουν αυτόν τον τύπο.

Στον παρακάτω πίνακα συνοψίζονται οι δυνατότητες υποστήριξης αρχείων που δίδονται από τις βιβλιοθήκες της Screen Machine.
Από

Σε


FLM

DIB

Μνήμη

TIFF
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 εκατομυρίων χρωμάτων. Έτσι, η βάση για μια σωστή παράσταση της εικόνας με περιορισμένο αριθμό χρωμάτων είναι η κατάλληλη επιλογή των χρωμάτων αυτών. Ο κβαντισμός αυτός των χρωμάτων είναι επίσης απαραίτητος όταν μετατρέπουμε τα δεδομένα σε έναν τύπο αρχείου που υποστηρίζει λιγότερα χρώματα.

Οι βασικοί τρόποι κβαντισμού των χρωμάτων είναι οι εξής:

Ομοιόμορφος κβαντισμός

Όλα τα πιθανά χρώματα μοιράζονται ομιόμορφα στα χρώματα που μπορούν να αποδοθούν. Είναι ο πιό γρήγορος τρόπος και δεν απαιτεί καθόλου μνήμη. Τα αποτελέσματά του είναι όμως συνήθως πολύ φτωχά.

Κβαντισμός με βάση τη συχνότητα (popularity algorithm)

Ο αλγόριθμος αυτός δημιουργεί ένα ιστόγραμμα από τα χρώματα που χρησιμοποιούνται στην εικόνα που θα κβαντιστεί. Τα χρώματα που χρησιμοποιούνται πιο συχνά είναι αυτά τα οποία επιλέγονται για το τελικό αποτέλεσμα. Τα υπόλοιπα αποδίδονται ως τα πλησιέστερα χρώματα από αυτά που έχουν επιλεχθεί.

Κβαντισμός με διαδοχικές υποδιαιρέσεις

Η βάση αυτού του αλγόριθμου είναι η διαδοχική υποδιαίρεση των χρωμάτων που χρησιμοποιούνται σε δύο ομάδες βασισμένες στα χρώματα που χρησιμοποιούνται πιο πολύ. Αυτή η διαδικασία επαναλαμβάνεται μέχρι να δημιουργηθούν τόσες ομάδες όσος και ο αριθμός των τελικών χρωμάτων. Στο στάδιο αυτό επιλέγεται ο μέσος όρος των χρωμάτων της κάθε ομάδας για να παραστήσει την ομάδα εκείνη.

Κβαντισμός με βάση οκταδικό δέντρο

Ο αλγόριθμος αυτός που χρησιμοποιήται από τις βιβλιοθήκες της Screen Machine είναι μια παραλλαγή της προηγούμενης μεθόδου. Οι υποδιαιρέσεις των κατηγοριών των χρωμάτων παριστώνται με τη μορφή ενός οκταδικού δένδρου. Το πλεονέκτημα αυτής της μεθόδου είναι η διατήρηση των χρωματικών αντιθέσεων, αφού αυτές φυλάγονται σε διαφορετικά κλαδιά του δένδρου. Στον παρακάτω πίνακα συνοψίζουμε τις συναρτήσεις που μπορούν να χρησιμοποιηθούν για τον κβαντισμό των χρωμάτων.
Συνάρτηση
Λειτουργία
smipColorldxMapping Κβαντισμός χρωμάτων με αλλαγή δεικτών
smipColorRGBMapping Κβαντισμός χρωμάτων με αλλαγή τιμών
smipGenerateColorQuantTab Δημιουργία ταξινομημένου πίνακα χρωματικών τιμών
smipGenerateHistogram Δημιουργία ιστογράμματος χρήσης χρωμάτων
smipInitializeColorQuant Αρχικοποίηση της δομής κβαντισμού
smipReseaseColorQuant Απελευθέρωση της δομής κβαντισμού

Παραγωγή χρωμάτων με σύνθεση (dithering)

Η σύνθεση των χρωμάτων για την παραγωγή νέων χρωμάτων είναι ανεξάρτητη από τον κβαντισμό και μπορεί να χρησιμοποιηθεί ξεχωριστά. Με τη μέθοδο αυτή κουκίδες διαφορετικών χρωμάτων τοποθετούνται μαζί, έτσι ώστε να δημιουργήσουν την ψευδαίσθηση ενός άλλου χρώματος. Το βασικό πρόβλημα αυτής της μεθόδου είναι η ταξινόμηση των λαθών που δημιουργούνται. Οι βιβλιοθήκες της 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)

Η τεχνολογία 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).

Κινούμενη εικόνα ελεγχόμενη από λογισμικό (AVI)

Μία άλλη προσέγγιση στη δημιουργία κινούμενης εικόνας από υπολογιστή βασίζεται εξ' ολοκλήρου στο υλικό του υπολογιστή. Δηλαδή, ο επεξεργαστής του υπολογιστή αναλαμβάνει το έργο της αποσυμπίεσης και παρουσίασης των δεδομένων με τη μορφή κινούμενης εικόνας. Επίσης με τη βοήθεια μιάς κάρτας ψηφιοποίησης όπως η Screen Machine είναι δυνατή και η δημιουργία τέτοιων σειρών κινούμενης ψηφιοποιημένης εικόνας.

Φυσικά, λόγω της μειoμένης υπολογιστικής ισχύος του κεντρικού επεξεργαστή σε σχέση με τους εξειδικευμένους επεξεργαστές σήματος που χρησιμοποιούνται στα προϊόντα DVI, το μέγεθος της παραγόμενης εικόνας και ο αριθμός πλαισίων ανά δευτερόλεπτο είναι μικρότερα από αυτά που επιτυγχάνονται με την υποστήριξη του υλικού (λ.χ. 7-10 πλαίσια ανά δευτερόλεπτο με του οδηγούς της Screen Machine). Υπάρχει όμως το πλεονέκτημα ότι για την αναπαραγωγή των εικόνων αρκεί ένας οποιοσδήποτε υπολογιστής.

Η υλοποίηση αυτής της μεθόδου κάτω από το περιβάλλον Windows 3.1 από τη Microsoft ονομάστηκε AVI (Audio Video Interleaved). Οι επεκτάσεις AVI προσφέρουν οδηγούς για τη συμπίεση και την αποσυμπίεση εικονοσειρών καθώς και μια σειρά από βοηθητικά προγράμματα. Τα κυριώτερα από αυτά είναι:

Videdit

Πρόγραμμα που επιτρέπει την αλλαγή εικονοσειρών AVI. Μέσα από το videdit είναι δυνατή η διαγραφή ή η εισαγωγή εικονοσειρών σε μια υπαρχουσα εικονοσειρά, ο συγχρονισμός του ηχητικού τμήματος με το οπτικό, καθώς και η αλλαγή του ρυθμού αλλαγής πλαισίων ανά δευτερόλεπτο.

Mplayer

Έκδοση του media player των Windows που υποστηρίζει AVI. Για την αύξηση της ταχύτητας εναλλαγής πλαισίων, οι οδηγοί AVI προσπαθούν να φορτώσουν από την αρχή όσο το δυνατό μεγαλύτερο κομμάτι της σειράς στην κεντρική μνήμη του υπολογιστή.

Vidcap

Καθορισμός των χαρακτηριστικών μιας συσκευής video.

Bitedit

Πρόγραμμα για την αλλαγή χωριστών εικόνων. Αυτές μπορούν στη συνέχεια να εισαχθούν μέσα σε μιά εικονοσειρά μέσω του videdit.

Paledit

Οι εικονοσειρές AVI χρησιμοποιούν συνήθως μιά παλέτα 256 χρωμάτων. Με το πρόγραμμα paledit είναι δυνατή η αλλαγή της παλέτας αυτής.

Wavedit

Πρόγραμμα που επιτρέπει την αλλαγή των ηχητικών τμημάτων της εικονοσειράς.

Προγραμματισμός

Τόσο ο προγραμματισμός εφαρμογών 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.