http://www.dmst.aueb.gr/dds/pubs/trade/1993-Winmag/fastwin6/html/win6.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:

The document's metadata is available in BibTeX format.

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: ΕΓΓΡΑΦΗ ΚΑΙ ΑΝΑΠΑΡΑΓΩΓΗ ΨΗΦΙΑΚΗΣ ΚΙΝΟΥΜΕΝΗΣ ΕΙΚΟΝΑΣ

Διομήδης Δ. Σπινέλλης
Multimedia Products Technical Support
FAST Hellas S.A.
Εθνικής Αντιστάσεως 14α, 152 32 Χαλάνδρι

Σε προηγούμενα άρθρα της σειράς αυτής είχαμε αναφερθεί στην κινούμενη ψηφιακή εικόνα ως ανερχόμενο στοιχείο των τεχνολογιών multimedia. Στο άρθρο αυτό θα αναφερθούμε στο λογισμικό που επιτρέπει την εισαγωγή και παρουσίαση ψηφιακής κινούμενης εικόνας στο περιβάλλον Windows, θα αναλύσουμε το λεπτό θέμα της σωστής εγγραφής νέων εικονοσειρών, και τέλος, θα περιγράψουμε πώς η τεχνολογία αυτή μπορεί να χρησιμοποιηθεί σε ανάπτυξη εφαρμογών.

Η συνεχώς αυξανόμενη ταχύτητα και αποθηκευτική ικανότητα των προσωπικών υπολογιστών κάνει εφικτές όλο και περισσότερες εφαρμογές που πριν από λίγο καιρό ανήκαν στο χώρο της επιστημονικής φαντασίας. Ετσι μετά την υψηλής ποιότητας γραφική εικόνα και τον ψηφιακό ήχο ήρθε και η σειρά της κινούμενης εικόνας να εισέλθει ως πρακτική δυνατότητα στους προσωπικούς υπολογιστές (εικόνα 1).


Εικόνα 1: Σειρά εικόνων ψηφιακού video
Το νέο αυτό μέσο έκφρασης μπορεί να χρησιμοποιηθεί σε πολλές και διάφορες εφαρμογές:

Παρουσιάσεις:
Σύμφωνα με έρευνα που έγινε από την Market Vision στις ΗΠΑ 43% των επιχειρηματικών στελεχών θεωρούν τις επαγγελματικές συσκέψεις βαρετές. Ενα μάλιστα 40\% παραδέχτηκε ότι έχει συμβεί να κοιμηθούν κατά τη διάρκειά τους. Αλλη έρευνα κατέληξε στο συμπέρασμα ότι η χρήση video στις παρουσιάσεις μπορεί να μειώσει τη διάρκειά τους κατά 40% και να αυξήσει το ποσοστό των πληροφοριών που απομνημονεύουν οι συμμετέχοντες σε ποσοστό 38%.
Εκπαίδευση:
Κινούμενη εικόνα μπορεί να χρησιμοποιηθεί για να δώσει ζωντάνια και αμεσότητα σε εκπαιδευτικό λογισμικό. Έννοιες που είναι δύσκολο να εξηγηθούν μπορούν να παρουσιαστούν με ζωντανά παραδείγματα.
Τεκμηρίωση:
Αντίστοιχα η τεκμηρίωση περίπλοκων θεμάτων μπορεί να απλουστευτεί με τη χρήση ζωντανής εικόνας. Σαν παράδειγμα η σειρά χειρισμών για τη συντήρηση ή την επισκευή ενός κινητήρα αυτοκινήτου μπορεί να αποθηκευτεί σε ζωντανές εικόνες που εμφανίζονται στη οθόνη ανάλογα με το είδος του προβλήματος που διαγιγνώσκει ο υπολογιστής.
Πληροφόρηση:
Η κινούμενη εικόνα αποτελεί ακόμα αναπόσπαστο τμήμα των τεχνολογιών πληροφόρησης. Βιβλία, εγκυκλοπαίδειες και ειδήσεις που μεταδίδονται με ηλεκτρονική μορφή μπορούν να περιέχουν κινούμενη εικόνα για μεγαλύτερη παραστατικότητα.
Ολες αυτές οι εφαρμογές μπορούν να πραγματοποιηθούν με το λογισμικό Video for Windows της Microsoft που δίνει τη δυνατότητα σε υπολογιστές που τρέχουν Windows να αναπαράγουν κινούμενη εικόνα. Με την προσθήκη μάλιστα μιας κάρτας ψηφιοποίησης εικόνας (όπως η Screen Machine II) το ίδιο λογισμικό επιτρέπει στον χρήστη να εισάγει νέες εικονοσειρές, τις οποίες μπορεί να δει οποιοσδήποτε άλλος χρήστης του Video for Windows.

Το λογισμικό Video for Windows

Η υλοποίηση της κινούμενης εικόνας κάτω από το περιβάλλον Windows 3.1 από τη Microsoft ονομάστηκε AVI (Audio Video Interleaved). Οι επεκτάσεις AVI προσφέρουν οδηγούς για τη συμπίεση και την αποσυμπίεση εικονοσειρών καθώς και μια σειρά από βοηθητικά προγράμματα. Τα κυριότερα από αυτά είναι:
Media Player
Έκδοση του media player των Windows που υποστηρίζει AVI. Για την αύξηση της ταχύτητας εναλλαγής πλαισίων, οι οδηγοί AVI προσπαθούν να φορτώσουν από την αρχή όσο το δυνατό μεγαλύτερο κομμάτι της σειράς στην κεντρική μνήμη του υπολογιστή. Ακόμα, ορισμένες συσκευές προσφέρουν ειδικούς οδηγούς που επιτρέπουν την ταχύτερη εναλλαγή των πλαισίων. Για παράδειγμα η Screen Machine II επιτρέπει την αυτόματη μεγέθυνση της εικόνας AVI (η οποία συνήθως καταλαμβάνει το ένα τέταρτο της οθόνης του υπολογιστή) στο μέγεθος όλης της οθόνης χωρίς καμία μείωση της ταχύτητας. Αν αυτή η μεγέθυνση γινόταν από τον κεντρικό επεξεργαστή του συστήματος μέσω της VGA η ταχύτητα εναλλαγής των πλαισίων θα έπεφτε στο ένα τέταρτο.
VidCap
Πρόγραμμα εγγραφής ήχου και εικόνας (εικόνα 2).

Εικόνα 2: Το πρόγραμμα vidcap
Το πρόγραμμα επιτρέπει τον καθορισμό του χρόνου, του χώρου και της ταχύτητας εγγραφής (εικόνα 3),

Εικόνα 3: Οι επιλογές του τρόπου εγγραφής
των πηγών και των χαρακτηριστικών του ήχου και της εικόνας (εικόνα 4),

Εικόνα 4: Οι επιλογές του τρόπου αποθήκευσης
και τον καθορισμό της χρωματικής παλέτας. Η υπόλοιπη επεξεργασία της εικονοσειράς πραγματοποιείται μέσω του προγράμματος videdit.

VidEdit
Πρόγραμμα που επιτρέπει την αλλαγή εικονοσειρών AVI (εικόνα 5).

Εικόνα 5: Το πρόγραμμα videdit
Μέσα από το videdit είναι δυνατή η διαγραφή ή η εισαγωγή εικονοσειρών σε μια υπάρχουσα εικονοσειρά, ο συγχρονισμός του ηχητικού τμήματος με το οπτικό, ο καθορισμός της παλέτας των χρωμάτων, καθώς και η αλλαγή του ρυθμού αλλαγής πλαισίων ανά δευτερόλεπτο. Επιπλέον το videdit παρέχει τη δυνατότητα συμπίεσης του αρχείου μειώνοντας το μέγεθός του και και προσαρμόζοντας το στις απαιτήσεις διαμεταγωγής των εξωτερικών συσκευών (εικόνα 6).

Εικόνα 6: Οι επιλογές συμπίεσης
Οσο μεγαλύτερο χώρο καταλαμβάνει κάθε εικόνα ενός αρχείου τόσο πιο γρήγορα πρέπει να μεταφέρονται τα δεδομένα από την περιφερειακή μνήμη (σκληρός δίσκος, CD-ROM) στον υπολογιστή. Κάθε δευτερόλεπτο έγχρωμης κινούμενης και ασυμπίεστης εικόνας καταλαμβάνει περίπου 27MB απαιτώντας ταχύτητα διαμεταγωγής 108Mbits/sec ενώ οι σκληροί δίσκοι παρέχουν διαμεταγωγή της τάξης των 30Mbits/sec και οι δίσκοι CD-ROM 1.2Mbits/sec. Με τη χρήση συμπίεσης, περιορισμένων χρωμάτων και μεγέθους εικόνας, η απαιτούμενη ταχύτητα διαμεταγωγής μειώνεται σημαντικά.

Εγγραφή ψηφιακού video

Ο μεγάλος όγκος δεδομένων που εμπεριέχει η κινούμενη εικόνα προϋποθέτει τη σωστή κατανόηση ορισμένων λεπτομερειών για μια επιτυχημένη εγγραφή. Πρώτα απ' όλα είναι σημαντική η σωστή εγκατάσταση της κάρτας εγγραφής. Η εγγραφή γίνεται με τη χρήση διακοπών interrupts οι οποίες πρέπει να είναι σωστά ρυθμισμένες από το τμήμα οδηγών του control panel. Πολύ βοηθά στην ταχύτητα η διαμεταγωγή μέσω μνήμης direct memory access αντί της διαμεταγωγής μέσω του διαύλου εισόδου / εξόδου. Ενα δεύτερο σημείο που χρήζει προσοχής είναι η προετοιμασία πριν από την εγγραφή. Το υλικό που θα γράψετε, καλό είναι να είναι καλά φωτισμένο και με σχετικά έντονες αντιθέσεις. Πριν από την εγγραφή πρέπει να αποφασίσετε αν θα προτιμήσετε περισσότερα πλαίσια (frames) ανά δευτερόλεπτο ή αυξημένη ποιότητα εικόνας. Εικόνες δυναμικές με πολύ κίνηση (λ.χ. ένας αγώνας αυτοκινήτων) απαιτούν αυξημένη ταχύτητα πλαισίων, εικόνες με αργές εναλλαγές (λ.χ. τοπία) μπορούν να εγγραφούν με μεγαλύτερη πιστότητα. Πριν την εγγραφή πρέπει να υπολογίσετε το μέγεθος του αρχείου εγγραφής. Η εγγραφή εικόνων PAL μεγέθους ενός τετάρτου της εικόνας (192 x 144) και με συχνότητα 25 πλαίσια ανά δευτερόλεπτο απαιτεί 1.5MB/sec. Καλό είναι ο δίσκος σας (που πρέπει να υποστηρίζει αυτή την ταχύτητα διαμεταγωγής) να έχει αποκερματιστεί (defragmented). Σε μικρής διάρκειας σειρές μπορείτε να δώσετε εντολή στο VidCap η σειρά να αποθηκευτεί αρχικά στη μνήμη ή να χρησιμοποιήσετε το smartdrv με αρκετό χώρο ενταμίευσης. Για σειρές με διάρκεια μεγαλύτερη από ένα λεπτό μάλλον πρέπει να πάρετε απόφαση από την αρχή να καθορίσετε τη μισή συχνότητα εγγραφής. Σημασία για την ποιότητα εγγραφής έχει και το μέσο αναπαραγωγής. Η εγγραφή με πλήρες χρώμα είναι περιττή σπατάλη χώρου και χρόνου αν ο υπολογιστής στον οποίο θα αναπαραχθεί η σειρά διαθέτει κάρτα οθόνης που υποστηρίζει μόνο 256 χρώματα. Επίσης, αν η σειρά προορίζεται να αποθηκευτεί σε δίσκο CD-ROM πρέπει να ληφθεί υπόψη ότι η τυπική ταχύτητα διαμεταγωγής από CD-ROM είναι 150KB/sec και η συχνότητα εγγραφής πρέπει να περιοριστεί ανάλογα. Τέλος σχετικά με το χρώμα, η καλύτερη ευκρίνεια επιτυγχάνεται με μονόχρωμες εικόνες. Οι έγχρωμες σειρές καλό είναι να εγγράφονται με 16 bit χρώματος, αλλά να αναπαράγονται με 8 bit χρώματος από παλέτα την οποία καθορίζετε σε επόμενο στάδιο μέσα από το VidEdit.

Κατά την εγγραφή το μέγεθος της εικόνας πρέπει να είναι τέτοιο ώστε να χάνονται το πολύ 10\% των εικόνων. Η εγγραφή του ήχου ελέγχεται και αυτή από το VidEdit αλλά πρέπει να καθορίσετε τη σωστή πηγή. Αρχίστε την εγγραφή λίγο πριν από το επιθυμητό σημείο και τελειώστε την λίγο πριν από το τέλος με το πλήκτρο ESC.

Το τελικό στάδιο της προετοιμασίας μιας κινούμενης σειράς γίνεται μέσω του VidEdit. Εκεί θα κόψετε τη σειρά στο επιθυμητό μέγεθος, θα καθορίσετε την παλέτα του αρχείου, και θα το συμπιέσετε σύμφωνα με τα κριτήρια που αναφέραμε παραπάνω. Η όλη διαδικασία είναι μια σειρά πειραματισμών για την εύρεση των βέλτιστων παραμέτρων. Πρέπει να κρατάτε συνέχεια αντίγραφα των προηγουμένων σταδίων μέχρι να μείνετε ικανοποιημένοι από το τελικό αποτέλεσμα.

Προσθήκη ψηφιακού video σε εφαρμογές

Ο προγραμματισμός εφαρμογών εφαρμογών AVI βασίζετε στη χρήση εντολών MCI που αναπτύξαμε στο προηγούμενο άρθρο. Οι οδηγοί MCI για AVI προσφέρουν στο χρήστη ένα ιδεατό ψηφιακό video, το οποίο μπορεί να αντιμετωπιστεί από πλευράς εφαρμογών όμοια με τις πραγματικές οικιακές αναλογικές συσκευές που λειτουργούν με μαγνητικές κασέτες. Είναι δηλαδή δυνατή η εγγραφή μίας εικονοσειράς, η επανάληψή της, η γρήγορη αναδρομή προς ένα σημείο, το πάγωμα της εικόνας, η πλαίσιο προς πλαίσιο απεικόνιση κλπ. Για παράδειγμα, η παρακάτω σειρά εντολών μπορεί να χρησιμοποιηθεί για να εμφανίσει μια εικονοσειρά στην οθόνη με τη χρήση AVI (εικόνα 7):
open d:\space\r_launch.avi type mciavi alias avi
window avi
play avi
close avi

Εικόνα 7: Ελεγχος ψηφιακής εικόνας με το πρότυπο mci

Μέσα από το περιβάλλον της Visual Basic η χρήση του MCI γίνεται με την δήλωση:

Global Const WS_CHILD = &H40000000
Declare Function mciSendString Lib "mmsystem" (ByVal lpstrCommand$,
  ByVal lpstrReturnStr As Any, ByVal wReturnLen%, ByVal hCallBack%)
  As Long
Στη συνέχεια ανοίγουμε το αρχείο που περιέχει το σειρά που θέλουμε να παραστήσουμε με τις εντολές:
DIM CmdStr as String
DIM ret as Integer
CmdStr = ("open d:space.avi type AVIVideo alias spaceavi parent"
   + LTrim$(Str$(form1.hWnd)) + " style " + LTrim$(Str$(WS_CHILD)))
Ret = mciSendString(CmdStr, 0&, 0, 0)
Από αυτό το σημείο και μετά αναφερόμαστε στο αρχείο αυτό με τον κωδικό spaceavi που ορίσαμε παραπάνω. Η επόμενη εντολή τοποθετεί το παράθυρο στη θέση 5 10 με μέγεθος 192 x 144.
Ret = mciSendString("put spaceavi window at 5 10 192 144", 0&, 0, 0)
Τέλος, οι επόμενες δύο εντολές αναπαράγουν την κινούμενη εικονοσειρά μέσα στο παράθυρο και κλείνουν το αρχείο.
Ret = mciSendString("play spaceavi wait", 0&, 0, 0)
Ret = mciSendString("close spaceavi", 0&, 0, 0)

(C) Copyright 1993-97 Διομήδης Σπινέλλης. Επιτρέπεται η ελεύθερη ανάγνωση από browsers του WWW και παρόμοια προγράμματα. Με την επιφύλαξη κάθε άλλου δικαιώματος.