AL
otro valor
Función no soportada.
00h La llamada a la función se realizó con éxito. 01h El llamado a la función falló.
02h La función no es soportada en la configuración actual del hardware.
AH
03h Llamada a la función inválida en el modo de video actual.
Otra forma de hacer que un programa sea compatible con la mayor cantidad de tarjetas de video posibles es mediante un controlador por software ("driver"), estos programas permite al programador olvidarse de las características del dispositivo que desee manejar ya que proporcionan un conjunto de funciones que ejecutan las diferentes tareas que el dispositivo puede realizar. El trabajar con controladores reduce el trabajo de programación puesto que se pueden utilizar rutinas de programa que ya están disponibles; sin embargo estas rutinas generalmente son considerablemente más lentas que la programación directa de los dispositivos y para ciertas aplicaciones como en el caso del video, es necesario realizar un esfuerzo extra en programación para obtener mejores resultados en cuanto a velocidad. La comparación de la programación VESA contra el uso de controladores disponibles en los editores/compiladores de lenguaje C se muestra en el capítulo de resultados, en donde se observan las mejoras en rendimiento que se pueden lograr con la programación VESA.
1.4.2. Manejo de la Memoria.
Otro aspecto importante en el procesamiento de imágenes y video por computadora es la memoria. El sistema operativo DOS utiliza 1 MB de memoria RAM de los cuales 384 KB están reservados para el BIOS, el manejo de gráficos, impresoras y otros dispositivos [7]. La memoria RAM comprendida entre los 0 y los 640 KB es la memoria convencional utilizada por el DOS para los programas de usuario y en la mayoría de los casos una parte de ésta está ocupada por programas residentes o el propio sistema operativo por lo que normalmente quedan disponibles para el usuario no más de 560 KB. Esta cantidad de memoria se tiene que dividir entre el código y los datos del programa lo que reduce la cantidad disponible.
Al inicio del capítulo se calculó el tamaño de una imagen en formato CIF la cual tiene un tamaño aproximado de 303.7 KB. Además, la codificación "interframe" del estándar MPEG-1 y 2 requiere de una imagen de referencia para la codificación- decodificación de imágenes P y dos imágenes de referencia para las imágenes B por lo que el proceso requerirá el almacenamiento temporal de 2 o 3 veces respectivamente el tamaño de la imagen, lo que significa una cantidad de memoria de hasta 911.25 KB sólo para almacenar las imágenes y sin contar otras necesidades de memoria del proceso de codificación-decodificación.
Es evidente que el uso de la memoria convencional del DOS no es suficiente para almacenar tales cantidades de información lo que obligaría a realizar almacenamientos temporales en disco y aumentaría drásticamente el tiempo de cálculo.
Existe otra posibilidad de resolver el problema de memoria sin afectar tanto el rendimiento del programa. Esta solución es utilizar la memoria expandida o EMS la cual permite utilizar gran parte de la memoria RAM que se encuentra por arriba del megabyte que utiliza el DOS [7], todo esto mediante la técnica de paginación, muy similar a lo que se hace con la memoria de video y que se explicó en el apartado anterior.
El sistema operativo DOS asigna un segmento de 64 KB de memoria por arriba de los 640 KB de memoria convencional para llevar acabo la paginación. Este segmento se llama marco de paginación y está dividido en 4 páginas adyacentes de 16 KB cada una. Cuando un programa solicita memoria expandida lo hace solicitando un número determinado de páginas de memoria (16 KB cada página). Si existe memoria disponible, las páginas solicitadas pueden ser accesadas mediante el marco de paginación y un manejador que es asignado por el controlador de EMS (EMM) con el cual se indica al sistema que parte de la memoria se desea utilizar.
Para realizar operaciones de lectura-escritura sobre alguna localidad específica de la memoria solicitada, se carga la página lógica que contenga dicha localidad en cualquiera de las páginas del marco de paginación y se realiza la operación deseada directamente en la memoria del marco de paginación en la localidad correspondiente. Al igual que para la memoria de video, los cambios se reflejarán en la memoria expandida de forma automática, ya que el sistema con ayuda de la circuitería de la memoria EMS se encargará de transferir los datos.
Las funciones para manejar la EMS se invocan colocando en el registro AH el número de función y ejecutando la interrupción 67h. Cuando se termina de ejecutar una función, el registro AH contendrá el estado de finalización de la misma, el cual normalmente valdrá 0 si no ocurrió algún error en la ejecución de la misma. Las principales funciones soportadas por la EMS en su versión 3.2 se muestran en la tabla 1.9.
La programación de la memoria expandida brinda la posibilidad de acceder a una gran cantidad de la memoria RAM disponible (en las pruebas realizadas se pudieron utilizar hasta 16 MB). Esto permite realizar almacenamientos temporales en memoria de una gran cantidad de datos, lo que reduce drásticamente el tiempo requerido para la codificación-decodificación de secuencias; ya que de no disponer de esta memoria se tendrían que realizar una gran cantidad de lecturas y escrituras en disco, las cuales consumen mucho tiempo.
Tabla 1.9. Principales funciones para manipular la memoria expandida.
Función Tarea
40h Obtener el estado del controlador de memoria.
41h Obtener la dirección en memoria del segmento del marco de página. 42h Preguntar el número de páginas libres que aún no están asignadas. 43h Asignar páginas (esta función devuelve un manejador de control). 44h Colocar una cierta página lógica (memoria asignada) en una de las
páginas físicas (marco de paginación). 45h Liberar las páginas asignadas.
46h Preguntar la versión del controlador de memoria expandida.
47h Salvar el contexto del marco de páginas (usado por los TSR para no alterar el marco de página).
48h Restaurar el contexto del mapa de páginas.
4Dh Obtener información de todos los manejadores que hay y las páginas que tienen asignadas.