PROGRAMACIÓN MULTIMEDIA

Slides:



Advertisements
Presentaciones similares
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities scuola.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
Conocimiento, Uso y Evaluación de Medicamentos Genéricos
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
La mediana La mediana es el valor tal que el 50 % de las observaciones son menores y 50 % de ellas son mayores a dicho valor. En otra palabras, la mediana.
Noviembre 2007Estudio Rostros de Noticias 2007Collect-GfKWikén Estudio Rostros de Noticias de la TV Chilena Desarrollados para Revista Wikén El Mercurio.
Universidad San Martín de Porres
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
TEMA 5.- 1ª PARTE. EL A.O. Y SUS APLICACIONES
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Aladdín-respuestas 1.Vivía 2.Era 3.Amaba 4.Quería 5.Gustaban 6.Se sentía 7.Salía 8.Tenía 9.Decidió 10.escapó 11. Se vistió 12. Conoció 13. Vio 14. Pensó
Respuestas Buscando a Nemo.
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
CAPÍTULO 9 La economía en pleno empleo
SIMATICA V2.0. Automatización de Viviendas con Simatic S7-200
AGENDA Actividad Recepción Objetivo Relación con otros componentes
Objetivo: Los estudiantes van a usar vocabulario del desayuno para comprender un cuento. Práctica: 1. ¿Te gusta comer? 2. ¿Te gusta beber Mt. Dew.
Mulán /75 puntos. 1.Querían 2.Gustaban 3.Escuchó 4.Dijo 5.Tenía 6.Ayudaron 7.Maquillaron 8.Arreglaron 9.Dio 10.Estaba 11.Iba 12.Quería 13.Salió 14.Gritó
1 XML Extensible Markup Language HTML HyperText Markup Language normas06_01.xml.
60 razones para seguir vivo
William Shakespeare ( greg.), fue un dramaturgo, poeta y actor inglés. Conocido en ocasiones como el Bardo de Avon (o.
Funciones Excel. Parte 1. Introducción 2 Una función Excel es una fórmula o un procedimiento que se realiza en el ambiente de Visual Basic, fuera de.
Phone2Wave-Server Manual de Operación.
TELEFONÍA IP.
Parte 3. Descripción del código de una función 1.
Vocabulario querer comerlo -paja por supuesto - madera
de Joaquín Díaz Garcés (Angel Pino)
FUNCIONES DE UNA VARIABLE REAL
Calendario 2008 Imágenes variadas Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2008.
EL OSO APRENDIZ Y SUS AMIGOS
1 PROYECTO DE PRESUPUESTO DE EGRESOS DE LA FEDERACION 2002 COORDINACIÓN DE POLITICA ECONOMICA GP-PRD.
Hacer click Hacer click en cualquiera de estos links.
Modelo de Evaluación Institucional
Indicadores CNEP Escuela
Profr. Ricardo A. Castro Rico
Ecuaciones Cuadráticas
RAZONAMIENTO MATEMATICO Mg. CORNELIO GONZALES TORRES
¡Primero mira fijo a la bruja!
ANÁLISIS DE RADIOGRAFÍA PANORAMICA
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Índice Empresa 2-4 Signos de Identidad 5-12 Versiones Permitidas 13-23
MINIMO COMÚN MÚLTIPLO DE DOS NÚMEROS a y b
Un ejemplo de agrupación de datos Problema 1 del capítulo 2 del libro de texto.
Quetzalpapalotl Quetzalpapalotl – Gevederde Slang, vlindergod.
0 1 ¿Qué hora es? By: Craig Tillmann Revised by: Malinda Seger Coppell High School Coppell, TX.
REGLAS DE LOS SIGNOS.
Módulo 2: Condiciones Generales de Trabajo
The top ten of the world 全球前十名 李常生 Eddie Lee 9/28/2010 Taipei 1 手動翻頁 LOS “TOP TEN” DEL MUNDO.
Learning Zone Matemáticas 101
By: Nicholas, Rayna, Nathaniel, Calvin
Los números. Del 0 al 100.
MSc. Lucía Osuna Wendehake
Calendario 2009 “Imágenes variadas” Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2009.
Vocabulario: (Los números)
uno cero dos seis siete nueve Los Números DIEZ cinco ocho tres
Los Numeros.
FACULTAD DE DERECHO PROTAGONISTAS PROMOCIÓN aniversario
Diagrama CAUSA_EFECTO ó ISHIKAWA ó ESPINA DE PESCADO
Estructuras de control
1 8 de febrero del Chapter 5 Encoding 3 Figure 5-1 Different Conversion Schemes.
ESTADIGRAFOS DE DISPERSION
Herramienta FRAX Expositor: Boris Inturias.
Archivos. fopen(...) Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...) FILE * fopen(char* nombre_arch, char*
Transcripción de la presentación:

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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, 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 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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 / 11.025 Ej. (X / 1000 +1) / 2,487 Ej. X^2 / 121.550.625 © Carlos A. Lázaro Carrascosa. Laboratorio de Comunicación Oral R.W.N. ©Carlos A. Lázaro Carrascosa.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Programación Multimedia 11- Octubre-2001 MCI COMANDOS PARA ARCHIVOS DE ONDA: 1) DE SISTEMA: 2) 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.

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.

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.

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