La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PROGRAMACIÓN MULTIMEDIA

Presentaciones similares


Presentación del tema: "PROGRAMACIÓN MULTIMEDIA"— Transcripción de la presentación:

1 PROGRAMACIÓN MULTIMEDIA
11- Octubre-2001 PROGRAMACIÓN MULTIMEDIA ARCHIVOS DE ONDA (.WAV) ©Carlos A. Lázaro Carrascosa.

2 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda Estructura Interna de un WAV API de bajo nivel Interfaz de Controles Multimedia (MCI) © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

3 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda Ficheros con extensión .WAV: Estándar de Microsoft. En esencia: conjunto de muestras de una señal sonora. Muestreo: Criterio de Nyquist. Niveles de cuantización. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

4 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

5 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

6 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

7 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

8 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

9 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

10 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

11 Programación Multimedia
11- Octubre-2001 Qué es un archivo de onda © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

12 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV 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). Funciones especiales para escribir estos códigos: mmioFOURCC (‘R’,’I’,’F’,’F’); mmioStringToFOURCC (“Riff”,0); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

13 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV RIFF WAVE LIST INFO ICOP ICRD fmt data © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

14 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Cada bloque contiene: -Un identificador (FOURCC) -Un tamaño (bytes) -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, WAVE LIST INFO... © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

15 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Estructura MMCKINFO (una por bloque): ckid  Identificador del bloque 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

16 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario). 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 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

17 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Indicadores: MMIO_FINDRIFF: buscará un bloque con identificador 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) © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

18 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario). mmioAscend () Identificador del archivo. Estructura MMCKINFO con información sobre el bloque con el que acabamos de trabajar. Parámetro reservado: DEBE ser cero. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

19 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario). 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) © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

20 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Posición de los punteros: Tras mmioDescend, al principio de los datos que 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 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

21 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV API DE BAJO NIVEL: FUNCIONES BÁSICAS: mmioOpen() - 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

22 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV API DE BAJO NIVEL: FUNCIONES BÁSICAS: mmioRead() - 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

23 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV API DE BAJO NIVEL: FUNCIONES BÁSICAS: mmioWrite() - 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

24 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV API DE BAJO NIVEL: FUNCIONES BÁSICAS: mmioSeek() - 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

25 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV API DE BAJO NIVEL: FUNCIONES BÁSICAS: mmioClose() - identificador del archivo (devuelto por mmioOpen) Devuelve: 0 si todo ha ido bien, o –1 en caso de error. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

26 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Información más importante del formato (PCMWAVEFORMAT): Archivo mono o estéreo. Frecuencia de muestreo (11.025, ó ) Bits por muestra (8 ó 16) Bytes por segundo que se debe intercambiar con la tarjeta de sonido para grabación o reproducción © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

27 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV RIFF WAVE LIST INFO ICOP ICRD fmt data © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

28 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Ejemplo: Creación de un WAV Definir una estructura MMCKINFO llamada raíz, con el campo fccType relleno con el código 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 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

29 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Ejemplo: Creación de un WAV Llamar de nuevo a mmioCreateChunk(), con la estructura Lista y el indicador 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

30 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Ejemplo: Creación de un WAV Utilizamos mmioWrite() para escribir la información de copyright 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 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

31 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Ejemplo: Creación de un WAV Hemos finalizado con LIST y sus sub-bloques. Llamamos a mmioAscend() pasando como 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

32 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV Ejemplo: Creación de un WAV Usando mmioWrite() escribimos la información correspondiente al formato del sonido 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 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

33 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? MODIFICAR EL VOLUMEN. Para ello, únicamente hay que multiplicar todas las muestras por un valor. Cuidado con el desbordamiento © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

34 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? SUMAR SONIDOS - 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. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

35 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? DESVANECER Multiplicar las muestras por una función decreciente. Ej. (num de muestras – x) / num. de muestras © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

36 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? INTENSIFICAR Multiplicar las muestras por una función creciente. Ej. X / Ej. (X / ) / 2,487 Ej. X^2 / © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

37 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? ECO Sumar un sonido consigo mismo, pero desplazado en el tiempo y disminuyendo su volumen. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

38 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? SEPARAR CANALES DE UN ARCHIVO ESTEREO. Importante: las muestras, en el chunk data, alternan los canales. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

39 Programación Multimedia
11- Octubre-2001 Estructura Interna de un WAV ¿Qué podemos hacer con las muestras? JUNTAR DOS ARCHIVOS MONO EN UNO ESTÉREO Las cabeceras deben ser iguales: misma frecuencia de muestreo, mismos bits por muestra, etc. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

40 Programación Multimedia
11- Octubre-2001 API de bajo nivel La función PlaySound() (antigua sndPlaySound) BOOL PlaySound( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound ); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

41 Programación Multimedia
11- Octubre-2001 API de bajo nivel La función PlaySound() (antigua sndPlaySound) Permite especificar un sonido de tres formas: Nombre de archivo Alarma del sistema Identificador de recurso © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

42 Programación Multimedia
11- Octubre-2001 API de bajo nivel La función PlaySound() (antigua sndPlaySound) Cosas que se pueden definir con los “FLAGS”: Escuchar el sonido en un bucle continuo. Escuchar el sonido síncrona o asíncronamente. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

43 Programación Multimedia
11- Octubre-2001 API de bajo nivel La función PlaySound() (antigua sndPlaySound) Ejemplos de uso: 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); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

44 Programación Multimedia
11- Octubre-2001 API de bajo nivel Dispositivos: waveInGetNumDevs() waveOutGetNumDevs() waveInGetDevCaps() (WAVEINCAPS) waveOutGetDevCaps() (WAVEOUTCAPS) waveInOpen() waveOutOpen() © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

45 Programación Multimedia
11- Octubre-2001 API de bajo nivel Reproducción: MessageBeep() waveOutGetPosition() waveOutPause() waveOutReset() waveOutRestart() waveOutWrite() waveOutGetVolume() waveOutSetVolume() © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

46 Programación Multimedia
11- Octubre-2001 API de bajo nivel Grabación: waveInAddBuffer() waveInStart() waveInReset() waveInStop() waveInClose() © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

47 Programación Multimedia
11- Octubre-2001 API de bajo nivel Bloques de datos: waveInPrepareHeader() waveInUnprepareHeader() waveOutPrepareHeader() waveOutUnprepareHeader() © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

48 Programación Multimedia
11- Octubre-2001 API de bajo nivel Bloques de datos: typedef struct { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; DWORD dwUser; DWORD dwFlags; DWORD dwLoops; struct wavehdr_tag * lpNext; DWORD reserved; } WAVEHDR; © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

49 Programación Multimedia
11- Octubre-2001 API de bajo nivel Ejemplo: © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

50 Programación Multimedia
11- Octubre-2001 MCI MCISENDCOMMAND MCISENDSTRING Necesitan importar la librería mmsystem.h ( #include <mmsystem.h>) © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

51 Programación Multimedia
11- Octubre-2001 MCI MCIERROR mciSendString( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback ); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

52 Programación Multimedia
11- Octubre-2001 MCI lpszCommand  Dirección de una cadena que contiene el comando. 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) © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

53 Programación Multimedia
11- Octubre-2001 MCI Comando= Comando MCI + Id. de Dispositivo + Argumentos Comando MCI: open, play... Identificador de dispositivo: Se crea cuando el dispositivo se abre. Argumentos: Especifican los flags y variables que usa el comando. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

54 Programación Multimedia
11- Octubre-2001 MCI EJEMPLO 1: MCISENDSTRING mciSendString(“play c:\\windows\\media\\ctmelody.wav from 0 to 1000”, NULL, 0, NULL); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

55 Programación Multimedia
11- Octubre-2001 MCI EJEMPLO 2: MCISENDSTRING mciSendString ("open cdaudio", NULL, 0, 0L); mciSendString ("play cdaudio", NULL, 0, 0L); } © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

56 Programación Multimedia
11- Octubre-2001 MCI MCIERROR mciSendCommand( MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam ); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

57 Programación Multimedia
11- Octubre-2001 MCI IDDevice  Identificador del dispositivo MCI. (Este parámetro no se utiliza con el comando MCI_OPEN) uMsg  Comando fdwCommand  Flags que afectan al comando dwParam  Dirección de una estructura que contiene parámetros para el comando © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

58 Programación Multimedia
11- Octubre-2001 MCI Algunas estructuras: typedef struct { DWORD dwCallback; DWORD dwFrom; DWORD dwTo; } MCI_PLAY_PARMS; DWORD dwCallback; MCIDEVICEID wDeviceID; LPCSTR lpstrDeviceType; LPCSTR lpstrElementName; LPCSTR lpstrAlias; } MCI_OPEN_PARMS; © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

59 Programación Multimedia
11- Octubre-2001 MCI EJEMPLO 3: MCISENDCOMMAND MCI_OPEN_PARMS mciOpenParms; 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); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

60 Programación Multimedia
11- Octubre-2001 MCI EJEMPLO 3: MCISENDCOMMAND DeviceID = mciOpenParms.wDeviceID; mciPlayParms.dwFrom=0; mciPlayParms.dwTo=1000; mciSendCommand(DeviceID, MCI_PLAY , 0, (DWORD)(LPVOID) &mciPlayParms); } © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

61 Programación Multimedia
11- Octubre-2001 MCI EJEMPLO 4: MCISENDCOMMAND MCI_OPEN_PARMS Parametros; 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); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

62 Programación Multimedia
11- Octubre-2001 MCI BOOL mciGetErrorString( DWORD fdwError, LPTSTR lpszErrorText, UINT cchErrorText ); © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

63 Programación Multimedia
11- Octubre-2001 MCI dwError  Código de error devuelto por mciSendCommand o mciSendString lpszErrorText  Dirección de un buffer que contiene una cadena que describe el error especificado cchErrorText  Longitud del buffer del parámetro anterior © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

64 Programación Multimedia
11- Octubre-2001 MCI El FLAG “WAIT”: Devuelve el control cuando la acción ha terminado El FLAG “NOTIFY”: Manda al dispositivo que lance un mensaje cuando termine EL FLAG “TEST” Pregunta al dispositivo si está preparado. © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

65 Programación Multimedia
11- Octubre-2001 MCI COMANDOS PARA ARCHIVOS DE ONDA: 1) DE SISTEMA: ) OBLIGATORIOS break capability sysinfo close info open status © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

66 Programación Multimedia
11- Octubre-2001 MCI COMANDOS PARA ARCHIVOS DE ONDA: 3) BÁSICOS: load resume pause save play seek record set stop © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

67 Programación Multimedia
11- Octubre-2001 MCI COMANDOS PARA ARCHIVOS DE ONDA: 4) EXTENDIDOS: configure setvideo cue signal delete spin put update setaudio where window © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

68 PROGRAMACIÓN MULTIMEDIA
11- Octubre-2001 PROGRAMACIÓN MULTIMEDIA ARCHIVOS DE ONDA (.WAV) ©Carlos A. Lázaro Carrascosa.


Descargar ppt "PROGRAMACIÓN MULTIMEDIA"

Presentaciones similares


Anuncios Google