http://www.spinellis.gr/pubs/trade/1993-Winmag/fastwin3/html/win3.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.

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

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

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

Το περιβάλλον προγραμματισμού Video Workbench

Οπως είδαμε και σε προηγούμενες ενότητες τα χαρακτηριστικά που μπορούν να ελεγχθούν σε μια εφαρμογή ένθεσης κινούμενης εικόνας είναι ορισμένα και πεπερασμένα. Τα βασικά από αυτά αφορούν τη θέση και το μέγεθος της εικόνας, τον καθορισμό των παραμέτρων παρουσίασης (λαμπρότητα, κορεσμός χρωμάτων, κινούμενη ή σταθερή εικόνα), τον ορισμό φίλτρων και ειδικών εφέ, και τέλος την αποθήκευση των σταθερών εικόνων. Ο καθορισμένος τρόπος επικοινωνίας του χρήστη με το περιβάλλον των Windows υπαγορεύει και συγκεκριμένο τρόπο ελέγχου των παραμέτρων αυτών. Ετσι η θέση και το μέγεθος της εικόνας είναι αυτονόητο ότι πρέπει να καθορίζονται με τις τυποποιημένες κινήσεις του ποντικιού πάνω στο πλαίσιο του παραθύρου της, και θα περίμενε κανείς οι άλλες παράμετροι να ελέγχονται μέσα από τυποποιημένα ((πλαίσια διαλόγων)) (dialog boxes). Η λειτουργικότητα αυτή είναι σχετικά σύνθετη, τυποποιημένη και μάλλον απαιτητή από κάθε εφαρμογή ένθεσης κινούμενης εικόνας. Γι' αυτούς τους λόγους αποτελεί και ιδανικό υποψήφιο για να παρέχεται με τη μορφή μιας βιβλιοθήκης.

Αυτό ακριβώς είναι το περιβάλλον προγραμματισμού Video Workbench που συνοδεύει τα εργαλεία προγραμματισμού της Screen Machine. Είναι ένα σύνολο από λειτουργίες ((υψηλού επιπέδου)) που διευκολύνουν την γρήγορη υλοποίηση εφαρμογών ένθεσης εικόνας. Ενώ οι συναρτήσεις που εξετάσαμε στο προηγούμενο άρθρο ελέγχουν τη Screen Machine σε ((χαμηλό επίπεδο)) οι συναρτήσεις που προσφέρει το Video Workbench αυτοματοποιούν μεγάλο μέρος της λειτουργικότητας της Screen Machine μέσα από τυποποιημένα ((πλαίσια διαλόγων)) για τον καθορισμό των παραμέτρων, τον αυτόματο καθορισμό των διαστάσεων του παραθύρου και την αποθήκευση των αρχείων. Οι συναρτήσεις αυτές μπορούν να κληθούν είτε μέσα από τη γλώσσα C σαν κανονικές συναρτήσεις, ή να δοθούν με τη μορφή σειρών χαρακτήρων (character strings) από οποιαδήποτε εφαρμογή υποστηρίζει δυναμικά συνδεδεμένες βιβλιοθήκες (dynamic link libraries --- DLL) π.χ. Visual Basic, Toolbook, Access Basic, Superbase 4. Τα πλεονεκτήματα αυτού του τρόπου υλοποίησης είναι τα παρακάτω:

Η γρήγορη υλοποίηση των εφαρμογών.
Συχνά αρκεί η προσθήκη μίας ή δύο εντολών σε μία εφαρμογή για να μπορέσει αυτή να συνεργαστεί με την κάρτα ένθεσης εικόνας και να αποκτήσει χαρακτηριστικά multimedia.
Η τυποποίηση του τρόπου ελέγχου της ένθεσης.
Οταν όλες οι εφαρμογές χρησιμοποιούν τον ίδιο τρόπο υλοποίησης, τότε τα ((πλαίσια διαλόγου)) και οι διαδικασίες ελέγχου της εικόνας παραμένουν ίδιες ανάμεσα στις εφαρμογές. Ετσι ο τελικός χρήστης δε χρειάζεται να εκπαιδεύεται για τον τρόπο χρήσης κάθε εφαρμογής χωριστά.
Η αυτόματη αναβάθμιση των εφαρμογών.
Επειδή το Video Workbench είναι υλοποιημένο με τη μορφή DLL νεότερες εκδόσεις του αναβαθμίζουν αυτόματα και τις εφαρμογές που το χρησιμοποιούν.
Η συμβατότητα με πολλά περιβάλλοντα προγραμματισμού.
Ο απλός τρόπος επικοινωνίας με το Video Workbench καθιστά δυνατή την επικοινωνία με βάση σειρών χαρακτήρων χωρίς περίπλοκα πρωτόκολλα επικοινωνίας και σύνδεσης, και κατά συνέπεια με οποιαδήποτε εφαρμογή υποστηρίζει DLL ή άλλους εξωτερικούς οδηγούς.
Από την άλλη πλευρά πρέπει να αναφέρουμε ότι εφαρμογές που απαιτούν παραπάνω λειτουργίες από αυτές που προσφέρει το Video Workbench είναι πιθανό να χρειαστεί να υλοποιηθούν με βάση τη βιβλιοθήκη SM-API που παρουσιάσαμε στο προηγούμενο άρθρο. Γενικά πάντως έχουμε διαπιστώσει ότι οι περισσότερες εφαρμογές multimedia που περιλαμβάνουν ένθεση εικόνας μπορούν να καλυφθούν από τη λειτουργικότητα του Video Workbench.

Περιγραφή της λειτουργικότητας του Video Workbench

Το Video Workbench στην απλούστερη μορφή του παρουσιάζεται ως ένα παράθυρο των Windows με ενσωματωμένη ένθετη κινούμενη εικόνα, τις τυποποιημένες δυνατότητες ελέγχου της θέσης και του μεγέθους του, και ένα σύνολο από μενού που ενεργοποιούνται σε οποιοδήποτε σημείο του παραθύρου με το αριστερό κουμπί του ποντικιού (βλ. σχήμα).

Σχήμα: Παράθυρο με τις επιλογές του Video Workbench

Στις επόμενες ενότητες θα εξετάσουμε αναλυτικά τη χρήση και τις εντολές του Video Workbench.

Τρόποι χρήσης του Video Workbench

To Video Workbench όπως αναφέραμε και παραπάνω μπορεί να χρησιμοποιηθεί με δύο διαφορετικούς τρόπους:

Σχήμα: Παράθυρο με τις επιλογές ρύθμισης των χρωμάτων.

Με την απευθείας κλήση συναρτήσεων της C.
Με αυτό τον τρόπο η χρήση του Video Workbench γίνεται με τον ίδιο τρόπο όπως και για οποιαδήποτε άλλη βιβλιοθήκη των Windows. Ετσι για να εμφανίσουμε π.χ. το κουτί διαλόγου της επιλογής των χρωμάτων (βλ. σχήμα) στη θέση (50, 100) της οθόνης, αρκεί να καλέσουμε τη συνάρτηση smwb_OpenDialogBox(50, 100, WBDB_COLORS).
Με τη μεταβίβαση σειρών χαρακτήρων σε ένα συντακτικό αναλυτή (parser).
Το Video Workbench περιλαμβάνει ενσωματωμένο ένα συντακτικό αναλυτή ο οποίος μπορεί να αποκωδικοποιεί και να καλεί την εντολή της οποίας το όνομα δόθηκε στον αναλυτή. Αντίστοιχα λοιπόν το παραπάνω παράδειγμα με τη χρήση του συντακτικού αναλυτή και μέσα π.χ. σε περιβάλλον Access Basic, μετατρέπεται σε Ok% = SM_Parser("OPENDIALOG 50 100 COLORS"). Η συνάρτηση SM_Parser έχει προηγουμένως δηλωθεί στην Access Basic ως εξωτερική συνάρτηση βιβλιοθήκης DLL ενώ η σειρά χαρακτήρων μέσα στα εισαγωγικά αποκωδικοποιείται από το συντακτικό αναλυτή για να κληθεί η αντίστοιχη συνάρτηση της C.

Βασικές εντολές του Video Workbench

Το Video Workbench ενεργοποιείται εύκολα με την συνάρτηση smwb_LinkVideoWorkBench(...) (ή με την εντολή του διερμηνευτή LINKVWB). Η εντολή αυτή ενεργοποιεί το Video Workbench μέσα σε ένα συγκεκριμένο παράθυρο και παίρνει ως παραμέτρους το παράθυρο μέσα στο οποίο θέλουμε να εμφανιστεί η εικόνα, το αν επιθυμούμε την εμφάνιση των τυποποιημένων μενού με το δεξί πλήκτρο του ποντικιού μέσα στο παράθυρο της εικόνας, και το αν η εικόνα θα είναι ζωντανή ή ((παγωμένη)). Μία παρόμοια συνάρτηση η smwb_OpenVideoWorkBench(...) ( OPENVWB για το διερμηνευτή) προσφέρει την ίδια λειτουργικότητα με μεγαλύτερη ευελιξία επιτρέποντας τον καθορισμό της θέσης, του μεγέθους και των χαρακτηριστικών του παραθύρου που θα περιέχει το Video Workbench. Οταν η εφαρμογή που χρησιμοποιεί το Video Workbench τερματίσει πρέπει να καλέσει τη συνάρτηση smwb_CloseVideoWorkBench(...) (CLOSEVWB ως εντολή του διερμηνευτή) για να αποσυνδέσει τον έλεγχο του παραθύρου από την ένθετη εικόνα.

Τα μενού που μπορούν αυτόματα να εμφανιστούν μέσα στο παράθυρο ένθεσης μπορούν να ελεγχθούν με την συνάρτηση smwv_MenuVideoWorkBench(...). Η συνάρτηση αυτή παίρνει ως παραμέτρους τους κωδικούς των μενού που θέλουμε να επιτρέψουμε ή να αποκλείσουμε από την εφαρμογή μας. Αν ο τρόπος επιλογής των μενού από την ένθετη εικόνα δε μας ικανοποιεί, τότε μπορούμε να εμφανίσουμε μία συγκεκριμένη ομάδα επιλογών με την συνάρτηση smwb_OpenDialogBox(...) (OPENDIALOG). Η παράμετρος της συναρτήσεως αυτής είναι ο πίνακας επιλογών που θέλουμε να εμφανιστεί:

Σχήμα: Επιλογές ρύθμισης του ήχου

AUDIO
Επιλογές ρυθμίσεως ήχου (σχήμα).

Σχήμα: Επιλογές ελέγχου εξωτερικών συσκευών

PLAYER
Επιλογές ρυθμίσεως εξωτερικής πηγής εικόνας (video, δίσκος laser κ.λπ.) (σχήμα).

Σχήμα: Παράθυρο με τις επιλογές ρύθμισης των χρωμάτων.

COLORS
Επιλογές ρυθμίσεως χρωμάτων (σχήμα).

Σχήμα: Επιλογές ρύθμισης παραμέτρων της πηγής

SOURCE
Επιλογές ρυθμίσεως πηγής εικόνας (σχήμα).

Σχήμα: Επιλογές ρύθμισης θέσης και μεγέθους.

DISPLAY
Επιλογές ρυθμίσεως παραμέτρων παρουσίασης (σχήμα).

Σχήμα: Πλαίσιο διαλόγου αποθήκευσης

FILESAVE
Επιλογές αποθήκευσης εικόνας (σχήμα).
Οι πίνακες αυτοί μπορούν να ((κλείσουν)) με τη χρήση της συναρτήσεως smwb_CloseDialogBox(...) (CLOSEDIALOG).

Δύο άλλες συναρτήσεις η smwb_WriteImageFromWorkBench(...) (WRITEIMAGE) και η smwv_ConvertImage(...) (CONVERTIMAGE) επιτρέπουν την αποθήκευση και μετατροπή της εικόνας σε πολλούς διαφορετικούς τύπους αρχείου. Με αυτούς θα ασχοληθούμε πιο διεξοδικά σε επόμενο άρθρο.

Σύνδεση με περιβάλλοντα προγραμματισμού

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

Visual και Access Basic

Για να χρησιμοποιήσουμε το Video Workbench μέσα από τη Visual Basic ή την Access Basic πρέπει καταρχήν να δηλώσουμε τη συνάρτηση του διερμηνευτή και τη σύνδεσή της με τη βιβλιοθήκη DLL στο τμήμα των καθολικών δηλώσεων (global declarations). Αυτό γίνεται με την εντολή:
Declare Function SM_Parser Lib "SMPAR.DLL" (ByVal SCmd$) As Integer
Στη συνέχεια αν θέλουμε λ.χ. να παρουσιάσουμε την ένθετη εικόνα σε μία ((φόρμα)) αρκεί να προσθέσουμε την εντολή:
Ok% = SM_Parser("OpenVWB 0 0 320 256 NONE CHILD SM 0 Video On Live On")
στο μήνυμα Form_Paint της φόρμας. Σωστό είναι να προστατέψουμε την κλήση με κάποιο έλεγχο έτσι ώστε η συνάρτηση να κληθεί μόνο μία φορά.

C --- SDK

Για να χρησιμοποιήσουμε τοVideo Workbench με τη γλώσσα C πρέπει να προσθέσουμε τη δήλωση \#include "smwb.h" στην αρχή του αρχείου μας. Στη συνέχεια πρέπει να επιλέξουμε το παράθυρο στο οποίο θέλουμε να έχουμε την ένθετη εικόνα και στη συνάρτηση χειρισμού των μηνυμάτων του παραθύρου να προσθέσουμε την κλήση smmwb_OpenVideoWorkbench στο μήνυμα WM_CREATE και την κλήση smwb_CloseVideoWorkBench στο μήνυμα WM_DESTROY. Ολες οι επιλογές μπορούν να δουλεύουν αυτόματα με τα μενού από το χώρο της ένθετης εικόνας, ή μπορούμε αν θέλουμε να τα προσθέσουμε στα μενού της εφαρμογής μας με τις κατάλληλες κλήσεις της συναρτήσεως smwb_OpenDialogBox.

Toolbook

Για να χρησιμοποιήσουμε το Video Workbench μέσα από το Toolbook πρέπει να προσθέσουμε στο ((σενάριο βιβλίου)) (Book Script) τις εντολές:
to handle enterbook
    linkDLL "smpar.dll"
        INT SM_Parser(STRING)
    end linkDLL
end
to handle leavebook
    unlinkDLL "smpar.dll"
end
Επιπλέον πρέπει να προσθέσουμε και στο ((σενάριο σελίδας)) (Page Script) τις εντολές:
to handle enterpage
    get SM_Parser("Open OpenVWB 15 18 320 256 Blank Child SM 0")
    get SM_Parser("Menu Show All Video On")
end
to handle leavepage
    get SM_Parser("Video Off CloseVWB Close")
end
Και σε αυτή τη περίπτωση όλες οι επιλογές διαλόγου εμφανίζονται αυτόματα στο χώρο της ένθεσης.

ΣΥΝΕΧΙΖΟΝΤΑΣ

Στο επόμενο άρθρο της σειράς αυτής θα εξετάσουμε τους διαφόρους τρόπους αποθήκευσης, μετατροπής και συμπίεσης σταθερών εικόνων. Ελπίζουμε να το βρείτε ενδιαφέρον. \enddocument

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