http://www.spinellis.gr/pubs/trade/1993-Winmag/fastwin5/html/win5.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: ΕΛΕΓΧΟΣ ΠΟΛΥΜΕΣΩΝ ΜΕ ΤΟ ΠΡΟΤΥΠΟ MCI

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

Σε προηγούμενα άρθρα της σειράς αυτής είχαμε αναφερθεί στη δυνατότητα ελέγχου συσκευών multimedia μέσω της οικογενείας οδηγών MCI των Windows. Ο οδηγοί αυτοί παρέχουν έναν ομοιόμορφο τρόπο αντιμετώπισης όλων των συσκευών multimedia και διευκολύνουν την ανάπτυξη και χρήση λογισμικού συγγραφής τέτοιων εφαρμογών (authoring software).

Το πρότυπο επικοινωνίας MCI (Media Control Interface) καθορίζει μια σειρά από εντολές που υποστηρίζονται από συσκευές multimedia για την επικοινωνία τους με το λογισμικό εφαρμογών. Έτσι όπως το BIOS (Basic Input Output System) των προσωπικών υπολογιστών παρέχει μία τυποποιημένη δυνατότητα ελέγχου της οθόνης, του δίσκου και του πληκτρολογίου μέσω των αντίστοιχων κλήσεων σε ρουτίνες εξυπηρέτησης (interrupt service routines), έτσι και το πρότυπο MCI παρέχει την τυποποιημένη δυνατότητα ελέγχου περιφερειακών συσκευών multimedia. Για την επίτευξη όσο το δυνατό μεγαλύτερης συμβατότητας με πολλά περιβάλλοντα προγραμματισμού οι κλήσεις στον οδηγό MCI δεν είναι απαραίτητα συνδεδεμένες με κάποια συγκεκριμένη γλώσσα προγραμματισμού όπως η C, αλλά αποτελούνται από απλές συμβολοσειρές (strings) με τις οποίες τα Windows επικοινωνούν με την αντίστοιχη συσκευή.

Δομή και χρήση του προτύπου MCI.

Οι συσκευές που προσφέρονται για έλεγχο με το πρότυπο MCI είναι αυτές που έχουν σχέση με την εγγραφή ή την αναπαραγωγή εικόνας και ήχου. Τυπικά παραδείγματα είναι οι συσκευές δίσκων ψηφιακής μουσικής CD, οι κάρτες επεξεργασίας ήχου, και οι κάρτες ένθεσης video. Όλες αυτές οι συσκευές μπορούν να συνοδεύονται από τον αντίστοιχο οδηγό MCI ο οποίος εγκαθίσταται και ελέγχεται μέσα από τον Πίνακα Ελέγχου των Windows (Εικόνα 1). Μερικές βασικές συσκευές που μπορούν να ελεγχθούν με το πρότυπο MCI απεικονίζονται στον πίνακα 1.

Εικόνα 1. Εγκατάσταση συσκευών με έλεγχο MCI μέσα από τον Πίνακα Ελέγχου.
Τύπος συσκευής Περιγραφή
cdaudio Δίσκος ήχου CD
mciavi Ψηφιακή κινούμενη εικόνα
overlay Αναλογική κινούμενη εικόνα
sequencer Συσκευή συνθετικών ήχων MIDI
waveaudio Ψηφιοποιημένοι ήχοι
videodisc Δίσκος Video

Παραδείγματα συσκευών MCI.

Όπως αναφέραμε παραπάνω οι εντολές MCI μπορούν να δοθούν με τη μορφή συμβολοσειρών. Έτσι για παράδειγμα η σειρά εντολών

open c:\wingk\chimes.wav type waveaudio alias chimes
play chimes
close chimes
μπορεί να χρησιμοποιηθεί για να αναπαραχθεί το αρχείο ήχου chimes. Οι εντολές MCI συνήθως αποτελούνται από το βασικό ρήμα (λ.χ. play, stop) μία λέξη που προσδιορίζει τη συσκευή (λ.χ. wav) και, προαιρετικά, προσθετές παραμέτρους της συγκεκριμένης εντολής (λ.χ. χρονική διάρκεια για την εντολή play). Στο τέλος κάθε εντολής MCI μπορούν να προστεθούν οι παράμετροι notify και wait. Η πρώτη ορίζει ότι η εφαρμογή μας πρέπει να δεχτεί ένα μήνυμα όταν περατωθεί η συγκεκριμένη εντολή, ενώ η δεύτερη ορίζει ότι η εντολή πρέπει να εκτελεστεί σύγχρονα, δηλαδή με αναμονή μέχρι την περάτωσή της.

Οι βασικές εντολές MCI είναι παρόμοιες με τις δυνατότητες ελέγχου που έχουν οι αντίστοιχες συσκευές. Η συνομιλία με μια συγκεκριμένη συσκευή αρχίζει πάντα με την εντολή open και περατώνεται με την εντολή close. Ενδιάμεσα μπορούν να παρεμβληθούν εντολές όπως play, pause, record, resume και stop. Στις παρακάτω παραγράφους παρουσιάζουμε αναλυτικά τις βασικές εντολές MCI.

open
Η εντολή open χρησιμοποιείται για να αρχίσει η επικοινωνία με μια συσκευή MCI. Οι βασικές της παράμετροι είναι ο τύπος της συσκευής και το όνομα με το οποία θα αναφερόμαστε στη συγκεκριμένη συσκευή.
close
Η εντολή close χρησιμοποιείται στο τέλος μιας σειράς εντολών MCI για να δηλώσει ότι η συγκεκριμένη συσκευή δε θα χρησιμοποιηθεί άλλο. Μόνη της παράμετρος είναι το όνομα της συσκευής.
capability
Με την εντολή αυτή μπορούμε να διαπιστώσουμε αν μια συγκεκριμένη συσκευή έχει μια ορισμένη δυνατότητα. Παραδείγματα τέτοιων εντολών είναι can play, can record, can save. Την εντολή αυτή τη χρησιμοποιούμε πριν δώσουμε την αντίστοιχη εντολή για να βεβαιωθούμε ότι υποστηρίζεται.
play, record
Αρχίζει τη λειτουργία της συγκεκριμένης συσκευής για εγγραφή ή αναπαραγωγή. Μπορούμε να ορίσουμε την αρχή και το τέλος του κομματιού που θα παιχτεί με τις προαιρετικές παραμέτρους from και to. Οι παράμετροι αυτές ακολουθούνται από αριθμούς που μπορεί να ορίζουν δευτερόλεπτα, ατράκτους (tracks) ή καρέ, ανάλογα με το μέσο που ελέγχουμε. Στην εντολή εγγραφής μπορούμε να ορίσουμε αν η εγγραφή θα γίνει με παρεμβολή (overwrite) ή με ένθεση (insert).
seek
Η εντολή αυτή ορίζει το σημείο απ' όπου θα αρχίσει το επόμενο play. Οι παράμετροι δίνονται με την ίδια μορφή όπως στο play αλλά υποστηρίζονται και οι παράμετροι to start και to end.
pause, resume
Επιτρέπουν την προσωρινή παύση και την επανεκκίνηση της συσκευής.
stop
Σταμάτημα της συσκευής.
set
Καθορισμός διαφόρων παραμέτρων, όπως της έντασης του ήχου (set audio all on), την εμφάνιση της εικόνας (set video on), και την πόρτα της συσκευής CD (set door open).
status
Επιτρέπει την ανάκτηση παραμέτρων όπως του μήκους του κομματιού, της θέσης του, και τον τύπο ορισμού της.

Παραδείγματα χρήσης.

Ο ευκολότερος τρόπος για να χρησιμοποιήσουμε το MCI είναι μέσω ενός μικρού προγράμματος που δέχεται τις εντολές και τις στέλνει στα Windows. Ένα τέτοιο πρόγραμμα (το mcitest) είναι τμήμα του SDK της Microsoft, αλλά είναι εξαιρετικά εύκολο να γράψουμε ένα παρόμοιο πρόγραμμα σε οποιοδήποτε σχεδόν περιβάλλον (Visual Basic, Microsoft Word, Toolbook). Στην εικόνα 2 απεικονίζεται το παράθυρο ελέγχου του mcitest μαζί με χαρακτηριστικές εντολές MCI για τον έλεγχο τριών συσκευών ταυτόχρονα. Στις επόμενες παραγράφους παραθέτουμε μερικά παραδείγματα χρήσης εντολών MCI.

Εικόνα 2. Ελέγχος συσκευών MCI με το πρόγραμμα mcitest.

Ψηφιακός ήχος

Τα αρχεία ψηφιακού ήχου μπορούν να εγγραφούν και να αναπαραχθούν από τις κάρτες ήχου. Η παρακάτω σειρά εντολών παίζει το αρχείο walkuere.wav χρησιμοποιώντας τον οδηγό ήχου του συστήματος.
open c:\usr\sounds\walkuere.wav type waveaudio alias wav
play wav
close wav
Σε κάρτες που υποστηρίζουν συνθετητές MIDI FM η επόμενη σειρά εντολών παίζει τα πρώτα 50 τμήματα του αρχείου canyon.mid.
open c:\wingk\canyon.mid type sequencer alias canyon
play canyon from 1 to 50
close canyon
Επιπλέον, αν το σύστημα μπορεί να ελέγξει μια μονάδα CD τότε η παρακάτω σειρά εντολών παίζει από το πέμπτο μέχρι το δέκατο λεπτό του δίσκου.
open cdaudio alias cd
set cd time format tmsf
play cd from 5 to 10 wait
close cd

Ένθεση αναλογικού video

Κάρτες ένθεσης αναλογικού video όπως η Screen Machine II της FAST μπορούν να ελεγχθούν πολύ εύκολα μέσω MCI. Οι παρακάτω εντολές εμφανίζουν ένα παράθυρο με ζωντανό video που προέρχεται από κάποια εξωτερική πηγή στην οθόνη και στη συνέχεια το αποθηκεύουν στο clipboard των Windows. Η εντολή save περιέχει ορισμένες παραμέτρους που υποστηρίζονται μόνο από τη Screen Machine.
open overlay alias sm
window sm handle default
set sm video on
freeze sm
save sm <clipboard> best quarter
close sm

Ψηφιακά αποθηκευμένες ταινίες

Οι ψηφιακά αποθηκευμένες ταινίες τύπου AVI μπορούν να αναπαραχθούν με το σύστημα Microsoft Video for Windows το οποίο περιέχει και οδηγό MCI. Η παρακάτω σειρά εντολών ανοίγει ένα παράθυρο στην οθόνη στο οποίο παίζει την ταινία birthday.avi. Ο ήχος που συνοδεύει την ταινία αναπαράγεται αυτόματα χωρίς ειδικές εντολές.
open d:\kids\birthday.avi type mciavi alias avi
window avi handle default
play avi
close avi

Εφαρμογή με Access Basic.

Έχοντας εξετάσει τη βασική λειτουργικότητα του προτύπου MCI θα σκιαγραφήσουμε στις επόμενες παραγράφους, πως μπορεί αυτό να χρησιμοποιηθεί για την ανάπτυξη μιας multimedia βάσης δεδομένων σε περιβάλλον Microsoft Access με τη χρήση του οδηγού MCI της Screen Machine II. Μια οθόνη από την υλοποιημένη εφαρμογή σε λειτουργία, μαζί με απόσπασμα του κώδικα σε Access Basic που την ελέγχει έχει αποτυπωθεί στην εικόνα 3.

Εικόνα 3. Βάση δεδομένων multimedia στο περιβάλλον Access Basic με την Screen Machine II.

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

Declare Function mciSendString Lib "MMSYSTEM" 
    (ByVal cmd As String, res As String, 
    ByVal reslen As Integer, ByVal callback As Integer) As Long
Από αυτό το σημείο και μετά μπορούμε να χρησιμοποιούμε μέσα από την Access Basic την συνάρτηση mciSendString για να στέλνουμε εντολές MCI. Μάλιστα για να απλουστεύσουμε ακόμα πιο πολύ τη ζωή μας μπορούμε να ορίσουμε μια πιο απλή συνάρτηση την mci η οποία παίρνει σαν μόνη παράμετρο την εντολή που θέλουμε να στείλουμε.

Στη συνέχεια ορίζουμε την μορφή της βάσης δεδομένων και τις διάφορες φόρμες και οθόνες που θα χρησιμοποιηθούν. Για τα κουμπιά του παραθύρου Database Image Handler που φαίνεται στην εικόνα ορίζουμε τον κώδικα που ανταποκρίνεται σε αυτά με τις αντίστοιχες εντολές MCI. Έτσι για παράδειγμα το πλήκτρο pause συσχετίζεται με τον ακόλουθο κώδικα:

Function LiveUpdate ()
    If Forms![SaveImage]![Pause] Then
        mci ("freeze sm")
    Else
        mci ("unfreeze sm")
    End If
End Function
Τέλος, για τον έλεγχο των παραμέτρων παρουσίασης και αποθήκευσης της εικόνας μπορούμε να χρησιμοποιήσουμε τις πρόσθετες εντολές MCI που διαθέτει η Screen Machine. Αυτές εμφανίζουν στην οθόνη τυποποιημένα παράθυρα διαλόγου (dialog boxes) μέσα από τα οποία μπορούμε να ορίσουμε τις αντίστοιχες παραμέτρους. Έτσι λ.χ. ο έλεγχος των χρωμάτων επιτυγχάνεται με την εντολή dialog sm open color.

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

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

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