archivos de onda.ppt [modo de compatibilidad]tamarisco.datsi.fi.upm.es/asignaturas/pro-mul/... ·...
TRANSCRIPT
PROGRAMACIÓN MULTIMEDIA
ARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDA
(.WAV)(.WAV)(.WAV)(.WAV)
Programación Multimedia Archivos de Onda
�Estructura Interna de un WAV
�Qué es un archivo de onda
2
�API de bajo nivel
�Interfaz de Controles Multimedia (MCI)
Programación Multimedia Archivos de Onda
� Ficheros con extensión .WAV: Estándar de Microsoft.
� En esencia: conjunto de muestras de
Qué es un archivo de ondaQué es un archivo de ondaQué es un archivo de ondaQué es un archivo de onda
3
� En esencia: conjunto de muestras de una señal sonora.
�Muestreo: Criterio de Nyquist.
�Niveles de cuantización.
Programación Multimedia Archivos de Onda
Qué es un archivo de ondaQué es un archivo de ondaQué es un archivo de ondaQué es un archivo de onda
4
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
5
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
6
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
7
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
8
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
9
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
10
Programación Multimedia Archivos de Onda
Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda
11
Programación Multimedia Archivos de Onda
� ARCHIVOS RIFF: (Formato de Fichero para Intercambio de Recursos)
� Estructurado en bloques (chunks)
� Cada bloque se identifica por medio de un código de 4 caracteres. (FOURCC).
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
12
� Cada bloque se identifica por medio de un código de 4 caracteres. (FOURCC).
Funciones especiales para escribir estos códigos:
mmioFOURCC (‘R’,’I’,’F’,’F’);
mmioStringToFOURCC (“Riff”,0);
Programación Multimedia Archivos de Onda
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
RIFFWAVE
13
LIST INFO
ICOP ICRD
fmt data
Programación Multimedia Archivos de Onda
� Cada bloque contiene:
-Un identificador (FOURCC)
-Un tamaño (bytes)
-Datos
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
14
-Datos
El identificador del primer bloque debe ser RIFF
� Hay dos tipos de bloques que pueden tener subbloques: RIFF y LIST. Estos, además, llevan asociado un tipo.
RIFF� AVI, PAL, RMID, RMMP, WAVEWAVEWAVEWAVE
LIST� INFO...
Programación Multimedia Archivos de Onda
� Estructura MMCKINFO (una por bloque):
- ckid � Identificador del bloque
- cksize �longitud de los datos del bloque (bytes)
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
15
- cksize �longitud de los datos del bloque (bytes)- fccType � Tipo de bloque (para RIFF o LIST)
- dwDataOffset � número de bytes desde el ppio del archivo hasta el comienzo de los datos del bloque.
- dwFlags � indicadores de uso interno.
Programación Multimedia Archivos de Onda
� Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario).
mmioDescend ()
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
16
mmioDescend ()
- Identificador del fichero.
- Estructura MMCKINFO de la estructura a la que vamos a descender (se rellenará con datos)
- Estructura MMCKINFO de la estructura padre
- Indicadores
Programación Multimedia Archivos de Onda
Indicadores:
� MMIO_FINDRIFF: buscará un bloque con identificador RIFF que sea del tipo indicado en el campo fccType de
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
17
RIFF que sea del tipo indicado en el campo fccType de la estructura que pasamos como segundo parámetro.
� MMIO_FINDLIST: igual que el anterior, con chunks LIST
� MMIO_FINDCHUNK: bloque con un determinado identificador. (campo ckid de la estructura)
Programación Multimedia Archivos de Onda
� Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario).
mmioAscend ()
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
18
mmioAscend ()
- Identificador del archivo.
- Estructura MMCKINFO con información sobre el bloque con el que acabamos de trabajar.
- Parámetro reservado: DEBE ser cero.
Programación Multimedia Archivos de Onda
� Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario).
mmioCreateChunk ()
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
19
mmioCreateChunk ()
- Identificador del archivo.
- Dirección de una estructura MMCKINFO que contiene información sobre el bloque que se va a crear.
- Indicador: debe ser MMIO_CREATERIFF (para crear chunks RIFF), MMIO_CREATELIST (para crear chunks LIST) o NULL (para crear cualquier otro tipo de chunks)
Programación Multimedia Archivos de Onda
� Posición de los punteros:
� Tras mmioDescend, al principio de los datos que contiene el chunk. (propicio para usar mmioRead )
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
20
contiene el chunk. (propicio para usar mmioRead )
� Tras mmioCreateChunk, al final de la cabecera del chunk (propicio para construir una zona de datos con mmioWrite)
� Tras mmioAscend, el puntero se queda al final del bloque padre
Programación Multimedia Archivos de Onda
Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAV
� API DE BAJO NIVEL: FUNCIONES BÁSICAS:
� mmioOpen()
21
- cadena especificando el path del archivo- dirección de una estructura MMIOINFO
- indicadores que especifican el modo en el que se va a abrir el archivo.
(MMIO_READ, MMIO_WRITE, MMIOREADWRITE...)
Devuelve: un descriptor, de tipo HMMIO que será utilizado por las demás funciones.
Programación Multimedia Archivos de Onda
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
� API DE BAJO NIVEL: FUNCIONES BÁSICAS:
� mmioRead()
22
- identificador del archivo (devuelto por mmioOpen)
- dirección del bloque de memoria donde se almacenará la información leída
- Número de bytes a leer (entero largo)
Devuelve: número de bytes leidos, o –1 en caso de error.
Programación Multimedia Archivos de Onda
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
� API DE BAJO NIVEL: FUNCIONES BÁSICAS:
� mmioWrite()
23
- identificador del archivo (devuelto por mmioOpen)
- dirección del bloque de memoria donde se almacenará la información escrita
- Número de bytes escritos (entero largo)
Devuelve: número de bytes escritos, o –1 en caso de error.
Programación Multimedia Archivos de Onda
� API DE BAJO NIVEL: FUNCIONES BÁSICAS:
� mmioSeek()
- identificador del archivo (devuelto por mmioOpen)
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
24
- identificador del archivo (devuelto por mmioOpen)
- número de bytes que queremos desplazar el puntero. (entero largo)
- Indicador que determina la posición desde la que se realizará el desplazamiento. (SEEK_SET, SEEK_CUR, SEEK_END)
Devuelve: número de bytes desde el principio hasta la nueva posición fijada, o –1 en caso de error.
Programación Multimedia Archivos de Onda
� API DE BAJO NIVEL: FUNCIONES BÁSICAS:
� mmioClose()
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
25
- identificador del archivo (devuelto por mmioOpen)
Devuelve: 0 si todo ha ido bien, o –1 en caso de error.
Programación Multimedia Archivos de Onda
� Información más importante del formato (PCMWAVEFORMAT):
� Archivo mono o estéreo.
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
26
� Archivo mono o estéreo.
� Frecuencia de muestreo (11.025, 22.050 ó 44.100)
� Bits por muestra (8 ó 16)
� Bytes por segundo que se debe intercambiar con la tarjeta de sonido para grabación o reproducción
Programación Multimedia Archivos de Onda
RIFFWAVE
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
27
LIST INFO
ICOP ICRD
fmt data
Programación Multimedia Archivos de Onda
� Definir una estructura MMCKINFO llamada raíz, con el campo fccType relleno con el código WAVE
Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV
28
WAVE
� Llamar a mmioCreateChunk() pasando el identificador del archivo, la estructura raíz y el indicador MMIO_CREATERIFF
� Definir otra estructura MMCKINFO llamada lista, con el campo fccType relleno con el código INFO
Programación Multimedia Archivos de Onda
� Llamar de nuevo a mmioCreateChunk(), con la estructura Lista y el indicador MMIO_CREATELIST.
Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV
29
MMIO_CREATELIST.
� Crear una tercera estructura MMCKINFO llamada Información con el campo ckid relleno con el código ICOP
� Llamar a mmioCreateChunk(), con la estructura Información y NULL como indicador.
Programación Multimedia Archivos de Onda
� Utilizamos mmioWrite() para escribir la información de copyright
� Llamamos a mmioAscend() pasando como
Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV
30
� Llamamos a mmioAscend() pasando como parámetro la estructura información. (puntero, al final del bloque LIST)
� Análogamente a como hemos creado el bloque ICOP, creamos el bloque ICRD. El último paso será la llamada a mmioAscend(), con información como argumento
Programación Multimedia Archivos de Onda
� Hemos finalizado con LIST y sus sub-bloques. Llamamos a mmioAscend() pasando como parámetro la estructura lista (puntero, al final
Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV
31
parámetro la estructura lista (puntero, al final del bloque RIFF)
� Preparamos una nueva estructura MMCKINFO, llamada formato, asignando al campo ckid el código fmt
� Nueva llamada a mmioCreateChunk, pasando como argumento la estructura formato.
Programación Multimedia Archivos de Onda
� Usando mmioWrite() escribimos la información correspondiente al formato del sonido
Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV
32
� Nueva llamada a mmioAscend(), con formato como argumento
� La operación para crear el bloque data es análoga a la llevada anteriormente
� Finalizamos llamando a mmioAscend() pasando como parámetro la estructura raiz
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
�MODIFICAR EL VOLUMEN.
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
33
- Para ello, únicamente hay que multiplicar todas las muestras por un valor.
- Cuidado con el desbordamiento
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
� SUMAR SONIDOS
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
34
- Multiplicar previamente cada sonido por un factor menor que la unidad, siendo la suma de todos los factores igual a 1.
- Normalmente al final habrá que subir el volumen.
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
� DESVANECER
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
35
- Multiplicar las muestras por una función decreciente.
- Ej. (num de muestras – x) / num. de muestras
- x� posición de la muestra
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
� INTENSIFICAR
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
36
- Multiplicar las muestras por una función creciente.
- Ej. X / 11.025- Ej. (X / 1000 +1) / 2,487- Ej. X^2 / 121.550.625
- x� posición de la muestra
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
� ECO
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
37
- Sumar un sonido consigo mismo, pero desplazado en el tiempo y disminuyendo su volumen.
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
� SEPARAR CANALES DE UN ARCHIVO ESTEREO.
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
38
� SEPARAR CANALES DE UN ARCHIVO ESTEREO.
Importante: las muestras, en el chunk data, alternan los canales.
Programación Multimedia Archivos de Onda
� ¿Qué podemos hacer con las muestras?
� JUNTAR DOS ARCHIVOS MONO EN UNO ESTÉREO
Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV
39
ESTÉREO
Las cabeceras deben ser iguales: misma frecuencia de muestreo, mismos bits por muestra, etc.
Programación Multimedia Archivos de Onda
� La función PlaySound()
BOOL PlaySound(
LPCSTR pszSound,
API de bajo nivelAPI de bajo nivelAPI de bajo nivelAPI de bajo nivel
40
LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);
Programación Multimedia Archivos de Onda
� La función PlaySound()
Permite especificar un sonido de tres formas:
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
41
� Nombre de archivo
� Alarma del sistema
� Identificador de recurso
Programación Multimedia Archivos de Onda
� La función PlaySound()
Cosas que se pueden definir con los “FLAGS”:
Escuchar el sonido en un bucle continuo.
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
42
� Escuchar el sonido en un bucle continuo. � Escuchar el sonido síncrona o asíncronamente.
Programación Multimedia Archivos de Onda
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel � La función PlaySound()
Ejemplos de uso:
PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC);
43
PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC); PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC |
SND_NODEFAULT);PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_LOOP |
SND_ASYNC); PlaySound(NULL, NULL, 0); PlaySound("MouseClick", NULL, SND_SYNC);
Programación Multimedia Archivos de Onda
�Dispositivos:
waveInGetNumDevs()
waveOutGetNumDevs()
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
44
waveOutGetNumDevs()
waveInGetDevCaps() (WAVEINCAPS)
waveOutGetDevCaps() (WAVEOUTCAPS)
waveInOpen()
waveOutOpen()
Programación Multimedia Archivos de Onda
� Reproducción:
MessageBeep()
waveOutGetPosition()
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
45
waveOutPause()
waveOutReset()
waveOutRestart()
waveOutPause()
waveOutWrite()
waveOutGetVolume()
waveOutSetVolume()
Programación Multimedia Archivos de Onda
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
�Grabación:
waveInAddBuffer()
46
waveInStart()
waveInReset()
waveInStop()
waveInClose()
Programación Multimedia Archivos de Onda
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
�Bloques de datos:
waveInPrepareHeader()
47
waveInUnprepareHeader()
waveOutPrepareHeader()
waveOutUnprepareHeader()
Programación Multimedia Archivos de Onda
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
�Bloques de datos:typedef struct { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded;
48
DWORD dwBytesRecorded; DWORD dwUser; DWORD dwFlags; DWORD dwLoops; struct wavehdr_tag * lpNext; DWORD reserved;
} WAVEHDR;
Programación Multimedia Archivos de Onda
API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel
�Ejemplo:
49
Programación Multimedia Archivos de Onda
MCI
MCISENDCOMMAND
MCISENDSTRING
50
Necesitan importar la librería mmsystem.h ( #include <mmsystem.h>)
Programación Multimedia Archivos de Onda
MCI
MCIERROR mciSendString(
LPCTSTR lpszCommand,
LPTSTR lpszReturnString,
51
LPTSTR lpszReturnString,
UINT cchReturn,
HANDLE hwndCallback
);
Programación Multimedia Archivos de Onda
� lpszCommand � Dirección de una cadena que contiene el comando.
� lpszReturnString � Dirección de un buffer para recibir
MCI
52
� lpszReturnString � Dirección de un buffer para recibir información de retorno.
� cchReturn � Tamaño del buffer del campo anterior.
� hwndCallback � Puntero a una ventana (si el flag “notify” aparecía en el comando)
Programación Multimedia Archivos de Onda
MCI
�Comando= Comando MCI + Id. de Dispositivo + Argumentos
�Comando MCI: open, play...
53
�Comando MCI: open, play...
�Identificador de dispositivo: Se crea cuando el dispositivo se abre.
�Argumentos: Especifican los flags y variables que usa el comando.
Programación Multimedia Archivos de Onda
MCI
mciSendString(“play c:\\windows\\media\\ctmelody.wav
EJEMPLO 1: MCISENDSTRING
54
mciSendString(“play c:\\windows\\media\\ctmelody.wav from 0 to 1000”, NULL, 0, NULL);
Programación Multimedia Archivos de Onda
MCI
EJEMPLO 2: MCISENDSTRING
mciSendString ("open cdaudio", NULL, 0, 0L);mciSendString ("play cdaudio", NULL, 0, 0L);
55
mciSendString ("play cdaudio", NULL, 0, 0L);}
Programación Multimedia Archivos de Onda
MCI
�MCIERROR mciSendCommand(
� MCIDEVICEID IDDevice,
56
� MCIDEVICEID IDDevice,
� UINT uMsg,
� DWORD fdwCommand,
� DWORD dwParam
� );
Programación Multimedia Archivos de Onda
MCI � IDDevice � Identificador del dispositivo MCI. (Este
parámetro no se utiliza con el comando MCI_OPEN)
� uMsg � Comando
57
� uMsg � Comando
� fdwCommand � Flags que afectan al comando
� dwParam � Dirección de una estructura que contiene parámetros para el comando
Programación Multimedia Archivos de Onda
MCI �Algunas estructuras:
typedef struct {
DWORD dwCallback;
DWORD dwFrom;
DWORD dwTo;
58
DWORD dwTo;
} MCI_PLAY_PARMS;
typedef struct {
DWORD dwCallback;
MCIDEVICEID wDeviceID;
LPCSTR lpstrDeviceType;
LPCSTR lpstrElementName;
LPCSTR lpstrAlias;
} MCI_OPEN_PARMS;
Programación Multimedia Archivos de Onda
MCI
EJEMPLO 3: MCISENDCOMMAND
MCI_OPEN_PARMS mciOpenParms;MCI_PLAY_PARMS mciPlayParms;
59
MCI_PLAY_PARMS mciPlayParms;MCIDEVICEID DeviceID;
mciOpenParms.lpstrDeviceType = "waveaudio";mciOpenParms.lpstrElementName=c:\\windows\\media\\ctmelody.wav";mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE
|MCI_OPEN_ELEMENT, (DWORD)(LPVOID) &mciOpenParms);
Programación Multimedia Archivos de Onda
MCI
EJEMPLO 3: MCISENDCOMMAND
DeviceID = mciOpenParms.wDeviceID;
60
mciPlayParms.dwFrom=0;mciPlayParms.dwTo=1000;
mciSendCommand(DeviceID, MCI_PLAY ,0, (DWORD)(LPVOID) &mciPlayParms);
}
Programación Multimedia Archivos de Onda
MCI
EJEMPLO 4: MCISENDCOMMAND
MCI_OPEN_PARMS Parametros;Parametros.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_CD_AUDIO;
61
Parametros.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_CD_AUDIO;
mciSendCommand (NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD) (LPVOID) & Parametros);
mciSendCommand (Parametros.wDeviceID,MCI_PLAY,0,NULL);
Programación Multimedia Archivos de Onda
MCI
BOOL mciGetErrorString(
DWORD fdwError,
62
DWORD fdwError,
LPTSTR lpszErrorText,
UINT cchErrorText
);
Programación Multimedia Archivos de Onda
MCI
� dwError � Código de error devuelto por mciSendCommand o mciSendString
� lpszErrorText � Dirección de un buffer que contiene
63
� lpszErrorText � Dirección de un buffer que contiene una cadena que describe el error especificado
� cchErrorText � Longitud del buffer del parámetro anterior
Programación Multimedia Archivos de Onda
MCI � El FLAG “WAIT”:
� Devuelve el control cuando la acción ha terminado
� El FLAG “NOTIFY”:
64
El FLAG “NOTIFY”:
� Manda al dispositivo que lance un mensaje cuando termine
� EL FLAG “TEST”
� Pregunta al dispositivo si está preparado.
Programación Multimedia Archivos de Onda
MCI � COMANDOS PARA ARCHIVOS DE ONDA:
1) DE SISTEMA: 2) OBLIGATORIOS
break capability
65
break capability
sysinfo close
info
open
status
Programación Multimedia Archivos de Onda
MCI � COMANDOS PARA ARCHIVOS DE ONDA:
3) BÁSICOS:
load resume
66
load resume
pause save
play seek
record set
stop
Programación Multimedia Archivos de Onda
MCI � COMANDOS PARA ARCHIVOS DE ONDA:
4) EXTENDIDOS:
configure setvideo
67
configure setvideo
cue signal
delete spin
put update
setaudio where
window
PROGRAMACIÓN MULTIMEDIA
ARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDA
(.WAV)(.WAV)(.WAV)(.WAV)