Logo Studenta

Desarrollo-de-un-sistema-de-monitoreo-de-senales-de-audio-y-video-para-televisoras

¡Este material tiene más páginas!

Vista previa del material en texto

DESARROLLO DE UN SISTEMA DE MONITOREO DE SEÑALES 
DE AUDIO Y VIDEO PARA TELEVISORAS 
 
Tesina 
que para obtener el título de 
Ingeniero en Computación 
 
Realizado por SALVADOR BEDREDÍN MEDINA MAZA 
bajo la supervisión de GILBERTO MARRÓN VILLAFÁN 
Ciudad Universitaria 2012 
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO 
FACULTAD DE INGENIERÍA 
 
UNAM – Dirección General de Bibliotecas 
Tesis Digitales 
Restricciones de uso 
 
DERECHOS RESERVADOS © 
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL 
 
Todo el material contenido en esta tesis esta protegido por la Ley Federal 
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). 
El uso de imágenes, fragmentos de videos, y demás material que sea 
objeto de protección de los derechos de autor, será exclusivamente para 
fines educativos e informativos y deberá citar la fuente donde la obtuvo 
mencionando el autor o autores. Cualquier uso distinto como el lucro, 
reproducción, edición o modificación, será perseguido y sancionado por el 
respectivo titular de los Derechos de Autor. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
In Memoriam 
Salvador Medina Manríquez 
Isabel Ramírez Otero 
Abraham Montiel 
 
 
 
 
 
Agradecimientos 
 
Quiero agradecerle a mi mamá por propiciar un ambiente adecuado para mi 
formación personal y profesional. Le debo gran parte de lo que soy hoy en día y este 
trabajo es una respuesta al apoyo incondicional que me ha dado a través de mi vida. 
A ti Julie por hacerme ver lo valioso que soy y demostrarme de lo que soy capaz 
viéndome como una figura a seguir. Semper frateri. 
A ti Chente por apoyarme en la base de mi educación con incontables tardes de 
cultura y tareas a resolver y estribar mi manera de percibir el conocimiento durante la 
inmortalidad del cangrejo. 
A ti Mariana, por aceptar ser mi adorable esposa y apoyar mis ideas en todo 
momento, por estar ahí en esos momentos de desesperanza y nunca dar por vencida la 
idea de titularme para lograr mis anhelos y deseos en el ámbito profesional y académico. 
Te amo. 
También quiero agradecer a mis suegros por apoyarme en los últimos años, 
favoreciendo un ambiente con menos preocupaciones, mediante el cuál pude enfocarme 
a realizar este escrito. 
 
Gracias a la Universidad Nacional Autónoma de México por acobijarme durante mi 
formación como profesionista y otorgarme la oportunidad de vislumbrar un México distinto 
al que conocía anteriormente. Agradezco a la Facultad de Ingeniería por permitirme ser 
parte de esa gran familia académica, tan noble, donde nos inculcan ser mejores cada día 
para así poder formar un México mejor. 
 
Dr. Jesús Savage, muchas gracias por permitirme ser uno de sus pupilos y 
partícipe de sus proyectos. Usted me introdujo en el desarrollo y la investigación de una 
manera formal, en la elaboración de proyectos relevantes y otórgame la oportunidad de 
trabajar en un equipo. Es un gran ejemplo a seguir y este escrito se lo debía desde hace 
muchos años. 
 
También quiero dar las gracias a Fission Software y en especial a Artemio por 
invitarme a ser parte de un equipo de trabajo sin igual. Me han permitido crecer en el 
ámbito profesional confiando en mis habilidades para la elaboración de proyectos tan 
interesantes. Son una gran familia para mí. 
 
Gracias a Abraham Monrroy, Abraham Segura, Carlos Alegría y Francisco 
Rodríguez, por guiarme en la elaboración de este escrito y retroalimentarme con sus 
comentarios durante las revisiones que hicieron. Porque a pesar de los años que tomó 
hacerlo, confiaron en que algún día lo terminaría. También le agradezco a Carlos Velasco 
la revisión final que hicimos de una manera bastante dinámica, como lo solíamos hacer 
durante nuestra educación universitaria. Lo logramos. 
 
Y a ti, porque a pesar de que te encontré tarde, te encontré, para que seas mi 
inspiración a seguir, el pilar en mi mejora como ser humano. Ahí espérame por que en 
algún tiempo y espacio nos volveremos a reunir. 
 
 
 
 
Índice 
 
INTRODUCCIÓN _________________________________________________________ VII 
CAPÍTULO 1 - FISSION SOFTWARE _________________________________________ 9 
ESQUEMA GENERAL DE UNA ESTACIÓN DE TELEVISIÓN ____________________________ 10 
MÓDULOS DE FISSION ____________________________________________________ 11 
FLUJO DE TRABAJO CON FISSION ____________________________________________ 12 
CAPÍTULO 2 - ACTIVIDADES DENTRO DE FISSION SOFTWARE ________________ 13 
CAPÍTULO 3 - FISSION ON-AIR MONITOR ___________________________________ 17 
3.1 REQUERIMIENTOS DEL PRODUCTO ________________________________________ 19 
3.1.1 Primer Bosquejo de la Interfaz ______________________________________ 19 
3.2 DISEÑO DEL PRODUCTO ________________________________________________ 25 
3.2.1 Arquitectura Cliente-Servidor _______________________________________ 25 
3.2.2 Descripción General del Sistema ____________________________________ 26 
3.2.3 Modelo Iterativo Incremental _______________________________________ 28 
3.3 HERRAMIENTAS UTILIZADAS PARA SU PROGRAMACIÓN _________________________ 33 
3.3.1 MFC __________________________________________________________ 33 
3.3.2 DirectShow _____________________________________________________ 33 
3.3.3 Tarjeta Optibase MM400 __________________________________________ 36 
3.3.4 Optibase SDK ___________________________________________________ 38 
3.3.5 Capas de abstracción _____________________________________________ 41 
3.4 ANÁLISIS PREVIO AL DESARROLLO ________________________________________ 42 
3.4.1 Análisis de la Comunicación Interprocesos ____________________________ 42 
3.4.2 Sockets ________________________________________________________ 44 
3.4.3 Búsqueda de Archivos ____________________________________________ 49 
3.5 DESARROLLO ________________________________________________________ 55 
3.5.1 Implementación y Distribución de Versiones ___________________________ 55 
3.5.3 Fission Monitor Server ____________________________________________ 56 
Programación paralela ________________________________________________ 67 
3.5.4. Fission Monitor Upkeeper _________________________________________ 71 
3.5.5 Fission Monitor Client _____________________________________________ 73 
3.6 PRUEBAS AL SISTEMA _________________________________________________ 84 
3.6.1 Fission Monitor Server ____________________________________________ 85 
3.6.2 Fission Monitor Upkeeper__________________________________________ 86 
3.6.3 Fission Monitor Client _____________________________________________ 87 
3.6.4 Fission Monitor Exporter ___________________________________________ 90 
3.7 RESULTADOS DEL PROYECTO ____________________________________________ 93 
CONCLUSIONES ________________________________________________________ 97 
APÉNDICE A____________________________________________________________ 99 
MANEJO DE GRAPHEDIT ___________________________________________________ 99 
Abrir un archivo usando Intelligent Connect ________________________________ 99 
Construcción manual de una gráfica _____________________________________ 100 
APÉNDICE B___________________________________________________________ 103 
FILTRO FUENTE DE UNA GRÁFICA ___________________________________________ 103 
 
 
APÉNDICE C___________________________________________________________ 105 
PROTOCOLO DE COMUNICACIÓN ____________________________________________ 105 
Inicialización de la entrada ____________________________________________ 105 
Manipulación de la captura ____________________________________________ 106 
Configuración del sistema _____________________________________________ 107 
Consultas al sistema _________________________________________________ 110 
APÉNDICE D___________________________________________________________ 117 
CONFIGURACIÓN OPTIBASE PLAYER 400 _____________________________________ 117 
GLOSARIO ____________________________________________________________ 119 
REFERENCIAS_________________________________________________________ 121 
 
 
Índice de Figuras 
 
FIGURA 1.1- ESQUEMA GENERAL SISTEMA FISSION _______________________________________ 12 
FIGURA 3.1 - INTEGRACIÓN FISSION OAM ______________________________________________ 17 
FIGURA 3.2 - FONDO DE PANTALLA ___________________________________________________ 19 
FIGURA 3.3 - DIÁLOGO SELECCIÓN DE CANAL ____________________________________________ 20 
FIGURA 3.4 - DIÁLOGO DE SESIÓN DE CAPTURA __________________________________________ 21 
FIGURA 3.5 - DIÁLOGO DE VISUALIZADOR DE VIDEO _______________________________________ 22 
FIGURA 3.6 - DIÁLOGO DE CONFIGURACIÓN DE ENTRADA ___________________________________ 23 
FIGURA 3.7 - CLIENTE-SERVIDOR ____________________________________________________ 26 
FIGURA 3.8 - DIAGRAMA MODULAR DE FISSION ON-AIR MONITOR _____________________________ 27 
FIGURA 3.9 - INTERACCIÓN DE LOS MÓDULOS ____________________________________________ 28 
FIGURA 3.10 - CICLO ITERATIVO DEL MODELO ITERATIVO INCREMENTAL ________________________ 29 
FIGURA 3.11 - GRÁFICA DE EJEMPLO DE REPRODUCCIÓN DE VIDEO ____________________________ 34 
FIGURA 3.12 - USO DEL FILTER GRAPH MANAGER ________________________________________ 34 
FIGURA 3.13 - TARJETA OPTIBASE MM400 SON SU CABLE __________________________________ 36 
FIGURA 3.14 - USO BÁSICO DEL OPTIBASE SDK__________________________________________ 38 
FIGURA 3.15 - CAPA DE ABSTRACCIÓN EN EL SERVIDOR ____________________________________ 41 
FIGURA 3.16 - CAPA DE ABSTRACCIÓN EN EL CLIENTE _____________________________________ 41 
FIGURA 3.17 - CAPAS MODELO OSI __________________________________________________ 46 
FIGURA 3.18 - ENCAPSULAMIENTO DE DATOS EN EL MODELO OSI _____________________________ 47 
FIGURA 3.19 - ABSTRACCIÓN DE CAPAS PARA SOCKETS TCP Y UDP __________________________ 47 
FIGURA 3.20 - ESTRUCTURAS DE DATOS EN TCP Y UDP ___________________________________ 48 
FIGURA 3.21 - DATAGRAMA TCP _____________________________________________________ 48 
FIGURA 3.22 - DATAGRAMA UDP ____________________________________________________ 49 
FIGURA 3.23 - LISTAS ORDENAMIENTO POR MEZCLA ______________________________________ 52 
FIGURA 3.24 - ORDENAMIENTO POR MEZCLA PASO 1 ______________________________________ 52 
FIGURA 3.25 - ORDENAMIENTO POR MEZCLA PASO 2 ______________________________________ 52 
FIGURA 3.26 - ORDENAMIENTO POR MEZCLA PASO 2 ______________________________________ 53 
FIGURA 3.27 - ORDENAMIENTO POR MEZCLA PASO FINAL ___________________________________ 53 
FIGURA 3.28 - DIAGRAMA DE FLUJO BÚSQUEDA DE ARCHIVO _________________________________ 54 
FIGURA 3.29 - DIAGRAMA FISSION MONITOR SERVER _____________________________________ 57 
FIGURA 3.30 - MÁQUINA DE ESTADOS DE UNA ENTRADA DE A/V ______________________________ 57 
FIGURA 3.31 - MÁQUINA DE ESTADOS INTERNA DE UNA ENTRADA _____________________________ 59 
FIGURA 3.32 - DIAGRAMA DE FLUJO DEL PROCESO DE VERIFICACIÓN ___________________________ 60 
FIGURA 3.33 - PARSER DE RECEPCIÓN DE MENSAJES ______________________________________ 65 
FIGURA 3.34 - ÍCONOS DE ESTADO DE FISSION MONITOR SERVER ____________________________ 69 
FIGURA 3.35 - MENÚ CONTEXTUAL DEL MÓDULO SERVER ___________________________________ 69 
FIGURA 3.36 - DIÁLOGO DE ESTADO DEL MÓDULO SERVER __________________________________ 70 
FIGURA 3.37 - DIAGRAMA DE FLUJO OPERACIÓN UPKEEPER _________________________________ 71 
FIGURA 3.38 - - FLUJO DE DIÁLOGOS DEL MÓDULO CLIENT __________________________________ 73 
FIGURA 3.39 - SESIÓN DE GRABACIÓN FINAL ____________________________________________ 74 
FIGURA 3.40 - VISUALIZADOR DE CAPTURA FINAL _________________________________________ 75 
FIGURA 3.41 - REGISTRO DE CAPTURA EN BLOQUES _______________________________________ 76 
FIGURA 3.42 - DIÁLOGO FINAL DE EXPORTACIÓN _________________________________________ 77 
FIGURA 3.43 - EXPORTACIÓN SEGMENTO EN UN ARCHIVO ___________________________________ 77 
FIGURA 3.44 - EXPORTACIÓN SEGMENTO EN MÚLTIPLES ARCHIVOS ____________________________ 78 
FIGURA 3.45 - EXPORTACIÓN CON ENTRADA SIN REGISTRO__________________________________ 78 
FIGURA 3.46 - EXPORTACIÓN CON SALIDA SIN REGISTRO ___________________________________ 78 
FIGURA 3.47 - EXPORTACIÓN CON UN HUECO____________________________________________ 79 
FIGURA 3.48 - EXPORTACIÓN CON MÚLTIPLES HUECOS _____________________________________ 79 
FIGURA 3.49 - DIÁLOGO DE PROCESO DE EXPORTACIÓN ____________________________________ 81 
FIGURA 3.50 - DIÁLOGO FINAL DE CONFIGURACIÓN ________________________________________ 83 
FIGURA 3.51 - RESULTADO DE LA PRUEBA DE MEMORIA DEL SERVER __________________________ 85 
file:///C:/Documents%20and%20Settings/Zal/My%20Documents/Dropbox/Titulacion/TESINA/Docs/Final/Reporte%20de%20Trabajo%20Profesional%20(3a%20Revisión).docx%23_Toc324956891
file:///C:/Documents%20and%20Settings/Zal/My%20Documents/Dropbox/Titulacion/TESINA/Docs/Final/Reporte%20de%20Trabajo%20Profesional%20(3a%20Revisión).docx%23_Toc324956913
 
FIGURA 3.52 - RESULTADO DE LA PRUEBA DE HANDLES DEL SERVER __________________________ 86 
FIGURA 3.53 - RESULTADO DE LA PRUEBA DE MEMORIA DEL UPKEEPER ________________________ 86 
FIGURA 3.54 - RESULTADO DE LA PRUEBA DE HANDLES DEL UPKEEPER _________________________ 87 
FIGURA 3.55 - RESULTADO DE LA PRUEBA DE MEMORIA DEL CLIENT ___________________________ 87 
FIGURA 3.56 - RESULTADO DE LA PRUEBA DE HANDLES DEL CLIENT ___________________________ 88 
FIGURA 3.57 - RESULTADO DE LA PRUEBA DE MEMORIA DEL RECORD VIEWER ____________________ 88 
FIGURA 3.58 - RESULTADO DE LA PRUEBA DE HANDLES DEL RECORD VIEWER ____________________ 89 
FIGURA 3.59 - REGRESIÓN LINEAL DE LOS HANDLES DEL RECORD VIEWER ______________________ 90 
FIGURA 3.60 - RESULTADO DE LA PRUEBA DE MEMORIA DEL EXPORTER ________________________ 91 
FIGURA 3.61 - RESULTADO DE LA PRUEBA HANDLES DEL EXPORTER ___________________________ 92 
FIGURA A.1 - ABRIR UN ARCHIVO EN GRAPHEDIT POR MENÚS ________________________________ 99 
FIGURA B.1 - GRÁFICA DE REPRODUCCIÓN DE VIDEO _____________________________________ 101 
FIGURA D.1 - CONFIGURACIÓN DEL OPTIBASE PLAYER 400 ________________________________ 117 
 
 
file:///C:/Documents%20and%20Settings/Zal/My%20Documents/Dropbox/Titulacion/TESINA/Docs/Final/Reporte%20de%20Trabajo%20Profesional%20(3a%20Revisión).docx%23_Toc324956941
 
 
Índice de Tablas 
 
TABLA 3.1 - LISTA DE CONTROL DE PROYECTO ___________________________________________ 30 
TABLA 3.2 - CARACTERÍSTICAS TÉCNICAS DE LA TARJETA MM400 ____________________________ 37 
TABLA 3.3 - RESOLUCIONES DE VIDEO SOPORTADAS POR LA TARJETA MM400 ___________________ 38 
TABLA 3.4 - PUERTOS UDP UTILIZADOS ________________________________________________ 61 
TABLA 3.5 - TIPOS DE COMANDO POR PARÁMETRO ________________________________________ 64 
TABLA 3.6 - ERRORES QUE DETECTA EL PARSER _________________________________________ 66 
TABLA 3.7 - RESULTADO PRUEBA DE EXPORTACIÓN _______________________________________ 91 
 
 
 
 
 
 
 
Introducción 
 
El propósito de este reporte es describir mi trabajo, de una manera general, dentro 
de Fission Software de México S.A. de C.V.. La compañía principalmente me contrató con 
el fin de desarrollar un producto dedicado al monitoreo de señales de audio y video 
transmitidos por una televisora. Por lo tanto, trataré de explicar, por este medio, la manera 
en que diseñé y desarrollé un producto de software basado en hardware especializado, 
que se originó en un área de oportunidad dentro de las necesidades de trabajo de una 
estación de televisión. 
 
La implementación de un testigo de señal de retorno, es decir, contar con una 
forma de grabar sin interrupción las señales de audio y video transmitidas por las 
televisoras, para ser revisadas posteriormente por un usuario de manera visual y auditiva. 
 
Esta operación es importante para una televisora, por ejemplo, para obtener una 
forma de comprobar a sus clientes que suscomerciales se han transmitido como se 
estipuló en sus contratos. Asimismo, con esta herramienta pueden corroborar 
inmediatamente si existe algún fallo en la señal que se trasmitió al aire brindando una 
velocidad de respuesta mayor ante el error. Hoy en día, para solucionar este tipo de 
problemas, en diversas estaciones de televisión de México y Sudamérica, todavía utilizan 
DVR's o videocaseteras. 
 
La desventaja de utilizar esos dispositivos es que los tiempos de captura son muy 
limitados, brindando en promedio una semana de grabación. Además estos aparatos se 
activan manualmente por medio de un operador. Otra desventaja que presentan estos 
dispositivos es que requieren de un mantenimiento constante para que funcionen 
correctamente, ya que su uso continuo degenera el equipo con el paso del tiempo. 
 
Para resolver esta problemática, Fission Software buscó desarrollar un sistema 
capaz de grabar señales de audio y video en unidades de almacenamiento masivo y 
escalable, para tener el mayor tiempo de grabación posible. También escrutó que el 
sistema sea lo suficientemente autónomo para poder realizar un mantenimiento periódico 
de las unidades de almacenamiento utilizadas, obteniendo de esta forma el espacio libre 
suficiente para mantener la grabación activa en todo momento, mediante la eliminación de 
los archivos más viejos o que ya no sea necesaria su existencia. 
 
En respuesta a esta necesidad, el producto que implementé se denomina Fission 
On-Air Monitor. Un sistema de monitoreo de señales de televisión basado en el 
levantamiento de requerimientos, realizado en base a las necesidades del mercado. 
 
 
 
 
Capítulo 1 - Fission Software 
 
Fission Software es una corporación, fundada en el año 2000 incorporada al estado de 
Connecticut, E.U.A., dedicada principalmente al desarrollo de soluciones para 
automatización de áreas de Control Maestro (Master Control) de estaciones de televisión. 
 
En el año 2001, abrió una subsidiaria llamada Ground Zero Software de México, 
S.A. de C.V. (GZSM) con el propósito de penetrar en el mercado latinoamericano, 
teniendo un mejor alcance a clientes ubicados dentro Centro y Sudamérica, así como el 
área del Caribe. 
 
En el año 2002, GZSM ganó la licitación para requipar todas las estaciones locales 
de Televisa, así como sus principales estaciones repetidoras de señal en el interior de la 
República Mexicana. Posteriormente, estaciones como Televisa Monterrey, Televisa 
Guadalajara, por mencionar algunas, fueron actualizadas con hardware y software de 
última generación en los años 2003 y 2004. 
 
Al mismo tiempo, en el 2004, se crea Fission Software de México, subsidiaria 
donde comienza la labor de distribuir la solución en América Latina, mientras que el 
producto continúa consolidándose en el mercado doméstico con clientes como: Televisa 
Networks, Sky, Megacable, MVS, entre otras. Lugar donde he laborado desde el 2006 
hasta la fecha. 
 
Para el año 2005, Fission Asia Limited se constituye como mayorista para la región 
de Asia y el Pacífico, obteniendo de esta manera presencia en países como Corea, 
Taiwan, Australia, etc. 
 
Después en el 2006 se abre comercio en Europa mediante compañías 
distribuidoras como Mediateket con base en Noruega, donde el producto comienza a 
tener presencia en Suecia, Noruega y el Reino Unido 
 
La misión de la empresa es proveer soluciones integrales para la automatización 
de canales de T.V. con arquitectura abierta y tecnología de punta a un costo accesible. En 
otras palabras, Fission visto como un producto, es una solución basada en software 
diseñado sobre hardware de última generación. Software que es capaz de proveer una 
operación totalmente automatizada, por medio de un flujo de trabajo adaptable a diversos 
sistemas ya existentes dentro de una estación de transmisión de video por cable o 
televisión abierta. 
 10 
Capítulo 1 
Esquema General de una Estación de Televisión 
Para poder obtener una mejor comprensión de la solución integral que ofrece Fission 
Software, es necesario describir de manera general la forma en la que se manejan la 
mayoría de las estaciones de televisión. Dentro de una estación que maneja canales a 
gran escala existen cuatro departamentos relevantes: 
 
 Departamento de Producción de Contenido 
 Departamento de Ventas 
 Departamento de Programación y Continuidad 
 Control Maestro 
 
El departamento de Producción de Contenido es el encargado de generar el material a 
ser transmitido a la audiencia. Dependiendo del canal y su rubro, el material puede 
consistir de programas educativos, programas de entretenimiento, programas en vivo, etc. 
En esta misma área se encargan de elaborar la promoción interna de los programas que 
transmite la televisora. 
 
El departamento de Ventas es el encargado de vender los espacios comerciales que 
existen dentro y entre los programas a transmitir, ya sea por medio de cortes comerciales, 
menciones dentro de los programas, video superpuesto, entre otras formas de 
comercialización. Una vez que el área de Producción de Contenido y el de Ventas han 
determinado el contenido y comerciales a transmitir, el departamento de Programación y 
Continuidad arma la pauta a ser trasmitida, la cual posteriormente es transferida al área 
de Control Maestro. 
 
En Control Maestro se procesa la pauta que indica lo que se debe transmitir. Por ello, 
en esta área es donde se recaba todo el material audio-visual de diversas fuentes como: 
Producción de Contenido, estudios, clientes externos para obtener su comercialización, 
señales satelitales, etc., para finalmente poder reproducir el video y audio previamente 
planeados y así ser transmitido al teleauditorio. 
 
En el área de Control Maestro es donde reside principalmente la solución que ofrece 
Fission Software a sus clientes. 
 
 
 
11 Fission Software 
Módulos de Fission 
Fission siendo una solución modular, está formado principalmente por 4 módulos 
de software: Feed Capture Module, Capture Module, Management Module e Insertion 
Module. En este escrito para referirse a cada módulo, desarrollado por la compañía, se 
utilizará solamente su nombre, utilizando la palabra módulo de forma implícita, para 
facilitar la lectura. Dichos módulos se describen brevemente a continuación: 
 
Feed Capture Module: Permite al usuario programar y realizar capturas 
de material audiovisual en un horario, periodo y duración predefinida; también 
cuenta con las herramientas para segmentar dicho material en bloques que 
faciliten al usuario su manejo desde una fuente satelital. Por medio de este módulo se 
puede retrasar la transmisión de la señal de entrada por un lapso predefinido para obtener 
repeticiones desfasadas de las señales. También provee herramientas de edición a corte 
para material audiovisual tanto a nivel archivo como lógico. 
 
Capture Module: Facilita al usuario la ingesta de material audiovisual al 
sistema por medio de listas de captura que automatizan el vaciado de las cintas 
desde una videocasetera (VTR). Mediante las herramientas de edición a corte 
que ofrece, permite ligar el material audiovisual recién capturado con las entidades lógicas 
creadas desde otros módulos para ser transmitido posteriormente por el módulo Insertion. 
También provee herramientas para segmentar de manera lógica los programas, de 
acuerdo a los bloques comerciales asignados, para su reproducción al final de la cadena 
del sistema sin tener que modificar el archivo original de captura. 
 
Management Module: Permite al usuario la creación, modificación y 
eliminación de elementos lógicos, que son ligados a la media audiovisual y 
utilizados para realizar pautas de transmisión y reproducción dentro del sistema. 
También permite crear reportes establecidos por el usuario de dichas actividades y la 
comunicación con otros sistemas con el fin de intercambiar pautas y reportes de 
transmisión. Asimismo, permite administrar y dar mantenimiento a los recursos de 
almacenamientocon los que cuenta el sistema instalado, realizando tareas de prevención 
de errores y depuración. 
 
Insertion Module: Su función principal es ejecutar listas de reproducción 
de archivos de audio y/o video previamente establecidas en el sistema por medio 
del módulo Management o un sistema de tráfico externo, así como realizar 
edición y adición de material sobre éstas. También permite agregar efectos de 
superposición, edición y mezcla sobre los elementos de su lista. Además, provee la 
funcionalidad para insertar y ejecutar comandos pautados sobre dispositivos remotos a 
través de protocolos de comunicación como TCP/IP o por puertos del sistema como el 
serial o paralelo, de acuerdo a las necesidades del cliente. El módulo es capaz de 
reproducir el material de hasta cuatro canales simultáneamente en un mismo servidor. 
 
 12 
Capítulo 1 
Flujo de Trabajo con Fission 
Una estación de televisión que utiliza Fission como su sistema de automatización 
dentro del departamento de Control Maestro para la transmisión de su señal de audio y 
video, trabaja descrito en una forma muy general, de la siguiente manera: 
El flujo comienza en el módulo Management, dando de alta la lista de reproducción 
para cierto día. Ésta puede ser creada importando una pauta generada desde un sistema 
de tráfico externo o con la herramienta de creación de pautas incluida en el módulo. 
Después, se ligan los archivos audiovisuales a transmitir con sus contrapartes 
lógicas creadas, en la base de datos, desde el Management, ya sea por un proceso de 
creación manual o por la importación de la lista de reproducción. Los elementos a ligar 
pueden ser: programas, versiones (cortes comerciales y promocionales), y eventos 
secundarios (gráficos, video y audio de superposición). 
Los programas y versiones, por lo general, son capturados por medio del Feed 
Capture o Capture, aunque en ciertas estaciones la media ya ha sido digitalizada desde 
sus departamentos de producción, en este caso, basta con ubicar los archivos dentro del 
almacenamiento de Fission y ligarlos a sus respectivos elementos lógicos. 
El diseño del sistema posee una gran flexibilidad en la administración del 
almacenamiento, ya que permite almacenar el video digitalizado en los discos locales de 
los ordenadores donde se captura el mismo, en el almacenamiento de los ordenadores 
que reproducen dicho material al aire o en sistemas de gran capacidad y disponibilidad 
como lo son una NAS o una SAN para guardar la multimedia empleada en el sistema. 
Una vez que la lista de reproducción se encuentra lista y completa, ésta es 
reproducida en el Insertion que permite realizar en tiempo real modificaciones a la 
programación mediante la inserción de contenido y eventos secundarios de último 
momento. 
Finalmente, una vez transmitido el material, el Insertion crea reportes de 
transmisión dentro de la base de datos de Fission. Estos reportes se cotejan a través del 
Management contra las pautas o listas de reproducción originales de forma automatizada 
para ubicar las diferencias que existen entre lo esperado a transmitir contra lo que se 
transmitió realmente y mantener un control de calidad en la señales de televisión. 
 
1G
B
 Sw
itch
Management
Base de Datos
Fission
Producción de Contenido
Insertion
Capture y FeedCapture
 
Figura 1.1- Esquema general sistema Fission 
 
Capítulo 2 - Actividades dentro de Fission Software 
 
En un inicio cuando ingresé a la compañía en el año 2006, ésta había logrado una 
venta importante con la distribuidora de contenido VISAT, actualmente conocida como 
Televisa Networks. En ese momento mi trabajo consistía en instalar la red física, los 
servidores dentro de su sitio y el software correspondiente a cada servidor de acuerdo al 
producto que había comprado el cliente. En la mayoría de los casos se trata de una red 
con topología de estrella, ya que el almacenamiento se trata de una SAN (Storage-Area 
Network) la cual es un sistema de almacenamiento masivo centralizado y requiere que un 
servidor actúe como MDC (Meta-Data Controller) el cual administra el bloqueo de 
archivos, la asignación de espacio y la autorización de acceso a datos de la SAN. Por lo 
que el trabajo en campo consistía en cablear la red tanto de fibra óptica como de cobre en 
las instalaciones del cliente. Colocar los servidores en su estante, instalarles el sistema 
operativo y el software que les corresponde de acuerdo al diseño de la instalación 
solicitada por el cliente. 
 
En ese momento mi trabajo consistía de diversas tareas como: Instalar la red física, 
colocar los servidores en su sitio, instalarles el software correspondiente y configurarlo de 
acuerdo a la solución que había solicitado el cliente. En la mayoría de los casos la red a 
instalar cuenta con una topología de estrella, debido a que el almacenamiento se trata de 
una SAN (Storage-Area Network) la cual es un sistema de almacenamiento masivo 
centralizado y requiere que un servidor actúe como MDC (Meta-Data Controller) el cual 
está encargado de administrar el bloqueo de archivos, asignar el espacio de escritura y 
autorizar el acceso a datos de la SAN por clientes externos. Por lo tanto primero cableaba 
la red tanto de fibra óptica como de cobre en las instalaciones del cliente. Esta tarea 
consistía en extender los cables por el inmueble del cliente y crear las puntas de conexión 
de los cables, así como configurar los switches de red necesarios. Una vez establecida la 
red se instala el sistema operativo y el software a los ordenadores de acuerdo al diseño 
de la instalación solicitada por el cliente. 
 
Una vez que se cuenta con la red instalada y configurada apropiadamente, el 
trabajo consiste en observar y analizar la estabilidad del sistema dentro del sitio. Como 
parámetros de estabilidad consideraba si existía algún error en el software, registraba en 
que ambiente y situación se ocasionaban por medio de herramientas desarrolladas 
internamente en la compañía. También otro dato a observar era el tráfico de red por 
medio de herramientas como WireShark. Una vez que el equipo se encontraba totalmente 
instalado y listo para ser utilizado, mi trabajo consistía en capacitar al personal de la 
estación que iba a estar a cargo del manejar del software dentro del área de Control 
Maestro. Los cursos impartidos consistían en explicar la manera más adecuada en que 
debían configurar y utilizar el software. Una vez terminados los cursos, mi trabajo se 
basaba en permanecer dentro de la estación como personal de apoyo para aclarar 
cualquier duda sobre el manejo del software a los operadores. 
 
Este tipo de tareas son necesarias dentro de una instalación debido a que el 
producto se trata de un sistema de misión crítica que requiere de su correcto 
funcionamiento en todo momento para que la transmisión de la señal de televisión se 
realice. 
 14 
Capítulo 2 
Ya que me encontraba familiarizado con la forma de trabajo y las necesidades que 
se tienen dentro de una estación de televisión, la compañía me asignó trabajos de 
investigación para sondear las necesidades de los clientes dentro de las estaciones, así 
como averiguar si el cliente se encontraba satisfecho con el software e incrementar la 
calidad del servicio que ofrece la compañía. Se me asignó este tipo de trabajo debido a 
mis conocimientos dentro del área de desarrollo de aplicaciones y consideró que esos 
conocimientos me permitirían escribir reportes más comprensibles al equipo de desarrollo, 
ya que podría utilizar lenguaje técnico más específico con un enfoque a la programación 
del software y así poder cumplir con mayor rapidez las necesidades y exigencias del 
cliente. 
 
Más adelante, y hasta la fecha, se me solicitó programar en sitio controladores 
(drivers) de algunos dispositivos que requieren compatibilidad con Fission. Debido a que 
Fission es un sistema abierto, en casi todas las ocasiones, los clientes desean que el 
sistema sea compatible con equipo con el que ya cuentano compraron 
independientemente al producto que compraron por parte de Fission. En la mayoría de los 
casos, éste equipo de trata de routers o switches de señales de audio y video. Dado que 
la empresa cuenta con un sistema modularizado para controlar dispositivos externos, mi 
trabajo se remitía a implementar los protocolos propietarios de la compañía fabricante de 
cada dispositivo sobre el medio que éste requería, por ejemplo, ya sea sobre una 
conexión RS-232 ó TCP/IP. Por mencionar algunos ejemplos de los protocolos que he 
implementado hasta la fecha se encuentran el Intelligent Interface para el secuenciador 
Channel Box de Chyron, el protocolo Quartz para el ruteador de señal EQX de Evertz, la 
implementación de CSL de VizRT para controlar el secuenciador MultiChannel y el 
protocolo ESAMII para diversos secuenciadores y switches fabricados por Sony 
 
También en diversas ocasiones tenía como trabajo realizar búsquedas de software 
especializado que agilizara o ayudara al cliente para aceptar la adaptación del uso de 
Fission Software dentro la estación. Para ejemplificar un caso, en una ocasión se me 
solicitó un software que agilice el copiado de archivos entre diversos servidor con una 
SAN o NAS. Teniendo en cuenta que esta necesidad era general entre los clientes, 
Fission decidió implementar una solución que se integrara con el sistema, a la cual llamó 
Fission File Transfer. Proyecto en el cual también colaboré en el desarrollo para 
administrar el copiado de archivos dentro de una red de Windows y así limitar la carga de 
la tasa de bits en la transferencia evitando que exista una interferencia en el streaming de 
los archivos de audio y video para su transmisión al aire. 
 
En otro caso, un cliente dentro de una sala de bloqueos, donde la operación 
requiere el remplazar los cortes comerciales por comercialización local ya que la estación 
es una repetidora de señal. Requerían de un cronómetro que los usuarios pudieran lanzar 
y estar atentos a él en todo momento para saber cuanto tiempo les quedaba disponible, 
por lo tanto se les recomendó utilizar XNoteStopwatch ya que este permitía el ser iniciado 
y finalizado por medio de un pulso en el puerto serial RS-232, permitiendo automatizar 
toda la operación desde un servidor central en la sala de bloqueos. 
 
Cuando la compañía determinó que me encontraba los suficientemente 
familiarizado con el ambiente de la televisión, me encomendó la tarea de desarrollar el 
sistema de monitoreo de señales de audio y video para la corroboración de la calidad y un 
 
 
15 Fission Software 
testigo de la señal transmitida. Debido a que en los últimos años me dediqué en gran 
parte de mi tiempo a la elaboración de este software, consideré pertinente ubicar una 
descripción del desarrollo del mismo como el objetivo principal de este escrito el cuál 
explicaré a detalle en el capítulo 3. 
 
Durante el fin de una de las iteraciones del desarrollo del Fission Monitor se me 
invitó a colaborar con el desarrollo del sistema denominado Fission Archive. Éste es un 
sistema de archivo que tiene acceso a diferentes áreas dentro de la estación de televisión 
y provee las herramientas necesarias para crear catálogos con términos consistentes 
entre los usuarios. Los catálogos están compuestos por estructuras de metadatos, valores 
de los datos, reglas de validación y los archivos. De esta forma se le facilita a un usuario 
buscar la información y/o archivos que requieren. Principalmente está basado en un 
sistema de datos ubicados en una base de datos relacionados con archivos dentro de un 
sistema de almacenamiento masivo. En una ocasión un cliente, de acuerdo a sus 
necesidades, requería de un tipo de dato el cuál no estaba contenido en el sistema. El tipo 
de dato se trataba de un árbol de archivos dicha estructura consistía en carpetas las 
cuales a su vez podían contener carpetas y archivos de cualquier tipo. Mi labor fue 
implementar la creación de la estructura de la base de datos, la importación dentro del 
sistema de almacenamiento masivo y la extracción desde el mismo. 
 
Recientemente, al momento de realizar este escrito también se me ha invitado a 
colaborar con el desarrollo de controles personalizables de Windows para poder entregar 
una GUI de última generación que facilité la tarea de inserción de comerciales y la 
administración y captura de multimedia en el área de Control Maestro. Mi última tarea 
consiste en investigar y desarrollar nuevos controles que faciliten el acceso a la 
información contenida en el sistema. Para ello me encuentro actualmente investigando 
acerca de menús contextuales como lo son los circulares. 
 
En resumen, este es un listado de las tareas principales en las que he participado 
dentro de mi trabajo en la compañía Fission Software de México S.A. de C.V. desde mi 
ingreso hasta la fecha. 
 
 
 
Capítulo 3 - Fission On-Air Monitor 
 
Es importante notar que al final del flujo de trabajo que ofrece la compañía como 
solución, existe una necesidad a satisfacer dentro de las estaciones de televisión: la posibilidad 
de poder cotejar de manera auditiva y visual las diferencias que lleguen a existir en la 
transmisión con respecto a la lista de reproducción o contra la pauta inicial. 
La compañía contempló dicha oportunidad de mercado como un módulo a agregar, 
dentro del sistema del área de Control Maestro, desde el cuál se podría ofrecer videoclips que 
contengan lo ocurrido durante la transmisión al aire a los otros departamentos para su revisión 
y análisis. 
 
Afinando el concepto, el módulo que consideró a desarrollar tenía que ubicarse al final 
de la cadena como se muestra en la figura siguiente: 
 
Base de Datos
Fission
Insertion On-Air Monitor
 
Figura 3.1 - Integración Fission OAM 
 
Es importante resaltar que el módulo debe de estar ubicado en el flujo, posterior a la 
señal de retorno de la televisora. De esta forma el producto no depende del resto de los 
módulos de Fission, con lo que es posible instalarlo dentro de una televisora a pesar de que no 
cuente con Fission como sistema de automatización dentro del Control Maestro. 
 
Basándose en esa necesidad, la empresa me encomendó desarrollar un sistema que 
grabe continuamente de manera digital las señales de audio y video transmitidas por una 
estación de televisión. Las grabaciones deben realizarse sin interrupción. La calidad de la señal 
capturada debe ser menor a la transmitida por la estación de televisión para cumplir la función 
de testigo y poder almacenar grandes tiempos de grabación aprovechando la compresión de 
video empleada. 
 
 18 Capítulo 3 
El sistema debe de cumplir con los siguientes requerimientos: 
 Grabación ininterrumpida de la señal de retorno de la estación de televisión 
 Realizar un mantenimiento autónomo a las unidades de almacenamiento que utilice 
para los archivos de grabación 
 Ser capaz de recuperarse automáticamente en caso de error 
 Realizar búsquedas basadas en tiempo, fecha y canal dentro de sus registros de 
captura 
 Realizar exportaciones a un formato de video digital que sea visible en la mayoría de 
los ordenadores sin la necesidad de instalar decodificadores adicionales. 
A su vez, el sistema debe ser compatible con el sistema operativo Windows XP y 
posterior. El hardware especializado a utilizar para realizar la tarea de captura de las señales 
de audio y video es la tarjeta Optibase MM400 la cual se programa por medio de su paquete de 
desarrollo de software (SDK). 
 
 
 
19 Requerimientos 
3.1 Requerimientos del Producto 
 
Los requerimientos del sistema Fission On-Air Monitor se levantaron en base a las 
necesidades de un cliente con una importancia relevante para la compañía. El cliente requería 
un sistema autónomo autosustentable que cumpliera con la función de testigo de sus señales 
de audio y video transmitidas, para ser revisadas en caso de error o ser cotejadas en caso de 
duda con respecto al resultado del flujo de trabajo del áreade Control Maestro. 
El departamento de ventas de Fission Software, junto con su departamento de 
operaciones y desarrollo, realizó un primer acercamiento con el cliente basado en un bosquejo 
de funcionalidad básica de la interfaz del software basada en diálogos y una descripción de los 
eventos que ocurrirían al interactuar con ella. La propuesta, presentada al cliente incluía la 
decisión de desarrollar el sistema basado en el hardware que ofrece Optibase Inc., la tarjeta 
grabadora Optibase MM400, porque ésta cumple con: los estándares de calidad requeridos, un 
SDK sencillo de utilizar que ayuda a la pronta elaboración del sistema y un costo atractivo para 
el cliente. 
 
3.1.1 Primer Bosquejo de la Interfaz 
Fondo de pantalla 
Al iniciar el programa se debe mostrar el diálogo que se muestra en la Figura 3.2. El 
diálogo debe de abarcar en su totalidad la resolución de un monitor de 1280x1024 pixeles. El 
nombre asignado a este diálogo es fondo de pantalla de la aplicación. 
 
RECORD
VIEWER
RECORD
SESSION
EXITSETTINGS
LOGO
FISSION
421 3
 
Figura 3.2 - Fondo de pantalla 
 
El diálogo incluye cuatro botones que cumplen con las siguientes tareas: 
1. Abrir una sesión de captura de una de las entradas del hardware de captura 
2. Abrir una sesión de visualización del registro de captura 
 20 Capítulo 3 
3. Abrir una ventana de configuración del sistema 
4. Cerrar la aplicación. 
 
Descripción de los eventos 
Esta ventana ocupa toda la pantalla para evitar que el usuario pueda realizar otra 
tarea en el servidor mientras esté utilizando el software. Desde esta interfaz se puede iniciar 
una sesión de captura si se presiona el botón “Record Session” (Sesión de Captura), 
posteriormente determina la entrada sobre la cual desea realizar la captura, mediante un 
diálogo intermedio de selección de entrada como el que se muestra en la Figura 3.3. 
 
Como máximo se pueden abrir seis sesiones simultáneas de captura debido a que 
en un servidor se pueden instalar máximo tres tarjetas grabadoras que cuentan con dos 
entradas cada una. 
 
SELECT CHANNEL
OK CANCEL
Channel 1
 
Figura 3.3 - Diálogo selección de canal 
 
Desde el diálogo principal también es posible iniciar una sesión de visualización del 
registro de captura presionando el botón “Record Viewer” (Visualizador de grabación). De la 
misma manera que la sesión de captura, la visualización comienza con la selección del canal 
por medio de un diálogo que muestra el listado de los canales definidos en el sistema. 
 
A cada entrada del sistema le es asignado un nombre de canal el cuál será 
utilizado como identificador único para una sesión de grabación, por lo tanto es importante 
considerar la restricción de no repetir el nombre del canal a través de las diferentes 
entradas dentro del mismo servidor. 
 
El número máximo de visualizadores está delimitado por el hardware que albergue al 
sistema. Debido a que los visualizadores están implementados en su totalidad por medio de 
software, es necesario que se realicen pruebas posteriores al desarrollo para cuantificar la 
cantidad de recursos que ocupa cada instancia del visualizador y así poder determinar la 
cantidad límite de visualizadores simultáneos. 
 
 Finalmente, dando clic sobre el botón “Settings” (Ajustes) debe abrirse un diálogo que 
permita configurar la captura de cada entrada, la manera en la que se despliega el video en la 
entrada física, definir cuáles son las unidades de almacenamiento a utilizar, así como la 
manera en que se les dará mantenimiento. 
 
Todos los diálogos descritos deben de aparecer dentro del fondo de pantalla y en 
ningún momento deberán cubrir el área de botones ubicados en la parte inferior. 
 
 
21 Requerimientos 
Sesión de captura 
RECORD SESSION
CLOSE
RECORDFULL SCREEN STOP
3
1 2
64
5
 
Figura 3.4 - Diálogo de sesión de captura 
 
Los controles del diálogo de sesión de captura deben de cumplir con los eventos 
descritos a continuación: 
 
1. Iniciar la captura de las señales de audiovisuales 
2. Detener la sesión de captura 
3. Mostrar del video de la señal de entrada en un recuadro 
4. Mostrar el de la entrada en toda la pantalla 
5. Reproducir el audio de la captura al seleccionar la sesión 
6. Cerrar la sesión. 
 
Descripción de los eventos 
Al presionar el botón “Start” (Comenzar) debe comenzar a grabar en archivo las señales 
audiovisuales de la entrada correspondiente a la sesión de captura seleccionada. 
Al presionar el botón “Stop” (Detener) se detendrá la sesión de captura en curso. 
En el recuadro ubicado en la parte superior se debe mostrar el video con el que está 
siendo alimentada la entrada correspondiente a una resolución de 320 x 240 pixeles en caso 
de tratarse de una relación 4:3 o en una resolución de 320x180 en el caso de que se desee 
desplegar el video escalado en una relación 16:9 en caso de que la fuente sea anamórfica. 
Cuando este diálogo sea seleccionado por medio de un clic del ratón el audio de 
entrada correspondiente debe ser el único en salir por el dispositivo de salida de audio por 
defecto del sistema. 
En este mismo diálogo se debe de mostrar de manera automática el porcentaje de 
espacio libre en la unidad de almacenamiento donde se capturan los archivos multimedia. La 
cifra debe mostrarse en porcentaje y actualizada cada 10 segundos. 
 22 Capítulo 3 
Finalmente, al presionar el botón “Close” (Cerrar) se cierra la sesión de captura. Si la 
captura se encuentra activa, debe de aparecer un diálogo de aviso al usuario indicando que la 
sesión no puede ser finalizada al menos de que sea detenida la captura. 
Sesión de visualización 
En un diálogo donde se visualiza el material capturado se deben considerar los 
siguientes eventos con relación a los controles indicados en la Figura 3.5. 
 
1. Buscar dentro del registro de archivos el audio y video correspondientes a la fecha y 
hora seleccionados 
2. Reproducir en un recuadro el video correspondiente a la búsqueda realizada y el 
audio a través del dispositivo de salida seleccionado por defecto en el sistema operativo 
3. Llevar a cabo las acciones básicas de un control de reproducción como se muestran 
a través de todo el sistema (Reproducir (Play), pausar (Pause), retroceder un cuadro (Step Back), 
avanzar un cuadro(Step Forward), rebobinar (Rewind), reproducir rápidamente(Fast Forward)). 
4. Exportar el videoclip basado en los tiempos de inicio y fin dentro de los tiempos 
existentes del registro. 
 
RECORD VIEWER
Fecha Búsqueda Hora Búsqueda SEEK
IN
OUT
Fecha Entrada Hora Entrada
Fecha Búsqueda Hora Búsqueda
EXPORT
CERRAR
1
2
3
4
 
Figura 3.5 - Diálogo de visualizador de video 
Descripción de los eventos 
Al presionar el botón “SEEK” (Búsqueda) se realiza una búsqueda dentro del registro 
basado en la fecha y hora ingresados en los controles correspondientes. 
 
La búsqueda puede tener un margen de error de hasta 3 segundos al mostrar el 
resultado, este valor puede ser configurado por el usuario. Cuando la búsqueda tenga éxito, se 
debe mostrar al usuario el video pausado en el cuadro correspondiente a la fecha y tiempo 
solicitados, junto con el nombre del archivo que contiene el video. 
 
 
23 Requerimientos 
Cuando el video se esté reproduciendo, se debe desplegar en todo momento la fecha y 
hora correspondientes al video mostrado en el recuadro de la visualización. 
 
Otro punto a considerar es que al momento de dar doble clic sobre el recuadro donde se 
muestra el video, éste se debe mostrar en toda la pantalla, abarcando toda el área del monitor 
sin perder la proporción de las dimensiones del video. En caso de que el video no recubra en 
su totalidad el área del monitor debido a su relación, se pintará en negro el área desocupada 
por el video. 
 
Los controles de reproducción deben cumplir con su función al dar un solo clic sobre 
ellos. Los botones de [Fast Forward] y [Rewind] tendrán una funcionalidad extra. Ya que al ser 
presionados más de una vez, se iráincrementando la velocidad de la reproducción hacia 
adelante o hacia atrás dependiendo del caso. Las velocidades a soportar son 2X, 4X, 8X, 
32X y 64X, donde X es el número de veces contra la velocidad normal (1X) de reproducción. 
Configuración del sistema 
El diálogo de configuración del sistema debe estar basado en pestañas, donde cada 
pestaña corresponde a cada una de las entradas presentes en el servidor. 
 
Los controles del diálogo mostrado en cada pestaña serán asignados para cada uno de 
los ajustes a configurar en como se muestra en la figura: 
 
 
Input Settings
Channel Name:
Capture Path:
Storage Path:
BRT
CON
SAT
HUE
Enable Audio
Left Gain:
Right Gain:
Sample Rate:
Encoding Format:
VBR
Segment Duration:
1
2
3
4
5
6
Video Resolution: 7
8 9
DB I.P.
DB User
DB Pass
DB Name
10
 
Figura 3.6 - Diálogo de configuración de entrada 
 
 24 Capítulo 3 
1. Nombre del canal asignado a la entrada 
2. Directorio en el cual se realiza la captura (Debe ser un directorio local) 
3. Directorio del almacenamiento donde se guarda la captura (Puede ser un directorio 
local o remoto) 
4. Duración del segmento 
5. Valores de color (HUE), saturación (SAT), brillo (BRT) y contraste (CON) 
6. Tasa de bits (bitrate) de grabación 
7. Resolución de la grabación del video 
8. Muestreo y formato de compresión del audio 
9. Ganancia de audio por canal de audio 
10. Conexión con la base de datos del sistema Fission. 
 
Descripción de los eventos 
Los cambios realizados dentro de los diálogos toman efecto al momento de dar clic 
sobre el botón “Ok”. Una vez que se hayan actualizado las configuraciones de cada entrada el 
diálogo se cierra. Algunos de los cambios pueden tomar efecto durante la manipulación de los 
controles como son todos los valores contenidos en el punto 5, para su visualización 
instantánea. 
En caso de presionar el botón “Cancel” (Cancelar) se cierra el diálogo sin guardar los 
cambios realizados durante la sesión de configuración. 
De acuerdo al manejo de configuraciones del resto de los módulos de Fission, los 
ajustes de la configuración son guardados en el registro de Windows. 
 
 
25 Diseño 
3.2 Diseño del Producto 
 
De acuerdo a los requerimientos levantados por los ingenieros de campo, consideré 
que la mejor metodología para realizar el diseño era la llamada Arriba-Abajo (Top-Down), 
en donde ataqué el problema desde la interfaz gráfica hacia el núcleo del sistema. Por 
esa razón, una vez establecida formalmente la interfaz gráfica con el cliente a través de 
los requerimientos y mediante su abstracción, pude definir las tareas a ejecutar en la 
siguiente lista: 
 
1. Capturar las señales de audio y video en un archivo de cada entrada física 
2. Configurar el sistema 
3. Mostrar al usuario las señales de entrada de la tarjeta 
4. Buscar dentro de los registros de captura 
5. Visualizar el contenido ubicado en los registros de captura 
6. Exportar segmentos del registro de captura 
7. Administrar los archivos ubicados dentro del registro de captura y el espacio libre 
de las unidades de almacenamiento. 
 
Si se analiza con detalle las tareas mencionadas, se puede apreciar que la captura de 
señales A/V debe ser persistente en todo momento, es decir, no puede ser detenida para 
ejecutar cualquiera de las otras tareas, por lo que consideré que el paralelismo dentro del 
sistema es inevitable. 
Otro punto importante que surgió mientras realizaba el análisis previo de las 
herramientas que debía utilizar, es la diferencia de codificaciones en las que se 
encuentran compilados el SDK de Optibase y las aplicaciones desarrolladas en Fission, 
donde el SDK de la tarjeta de captura está compilado en Multi-byte y en Fission se 
compilan en Unicode. 
Los términos, Multi-byte y Unicode, se refieren a la forma en que se codifican las 
cadenas de caractéres al momento de compilar un programa o una biblioteca. La 
codificación Unicode es utilizada para el soporte de más idiomas internacionales con 
caracteres especiales como: el Chino, el Japonés o la escritura Cirílica, mientras que la 
codificación Multi-Byte sólo se limita a la mayoría de las lenguas romances en términos 
generales. 
El hecho de que la herramienta de desarrollo de Optibase y las aplicaciones dentro de 
Fission estén compiladas en diferentes codificaciones impide que dentro de un proyecto, 
se incluyan ambas bibliotecas, lo que me orilló a separar en diferentes programas la capa 
de interfaz gráfica de la capa de manejo de la tarjeta. 
Consecuentemente, la arquitectura Cliente-Servidor me resultó atractiva para la 
implementación del sistema solicitado. 
 
3.2.1 Arquitectura Cliente-Servidor 
La arquitectura Cliente-Servidor abreviada como C/S, es un modelo de diseño para 
sistemas que reparten el procesamiento entre un programa que realiza peticiones, 
denominado Cliente, a otro programa que le da respuesta, llamado Servidor. 
Las ventajas principales de la arquitectura C/S son de tipo organizativo. Una 
ventaja que obtuve al utilizar este esquema de diseño, es que pude separar las 
responsabilidades de cada proceso, clarificando el diseño del sistema. La separación 
 26 Capítulo 3 
entre cliente y servidor es de tipo lógico, es decir, el servidor no se ejecuta 
exclusivamente en una máquina diferente a la que alberga el cliente y tampoco se refiere 
a que el servidor esté forzosamente compuesto por un solo programa. Al contrario, por lo 
general dentro de este modelo, el servidor se descompone en diversos programas que 
pueden ser ejecutados de acuerdo a las necesidades del usuario, aumentando así el 
grado de distribución del sistema y convirtiendo de esta forma la manutención en una 
tarea más sencilla ya que en caso de error podría remplazar únicamente un módulo sin la 
necesidad de detener por completo la parte que actúa como servidor. 
El cliente es el programa que expide una solicitud dentro de la arquitectura C/S, es 
decir, tiene el papel activo dentro de la comunicación y se encarga de solicitar la ejecución 
de los servicios ofrecidos por el servidor. 
 
Monitor Client
Cliente Servidor 
Figura 3.7 - Cliente-Servidor 
 
Una de las ventajas que promete este diseño es la modularidad. Si se cuenta con 
un sistema lo suficientemente modularizado se pueden realizar modificaciones 
sustanciosas, ya sea del lado del cliente o el servidor, sin la necesidad de tener que 
modificar forzosamente la otra parte, en el caso de contar con un protocolo de 
comunicación diseñado convenientemente. A su vez, si se cuenta con un protocolo lo 
suficientemente robusto, facilita que el sistema se comunique con sistemas externos en 
caso de ser necesario. 
 
3.2.2 Descripción General del Sistema 
Considerando la arquitectura elegida y la abstracción de las tareas a implementar, 
resulta claro que la grabación de los archivos es la más importante de todo el desarrollo y 
fue necesario ubicarla en un módulo que funcione como servidor y esté totalmente 
separado del resto de las tareas. Este módulo también es capaz de configurar el sistema 
ya que este se encuentra en contacto directo con el hardware por medio del SDK de 
Optibase. 
Una vez establecido el servidor me resultó lógico que las tareas de búsqueda y 
visualización del registro, estuvieran agrupadas dentro del módulo cliente el cual también 
muestra la interfaz de usuario del sistema. 
La exportación de segmentos de video, o videoclips, del registro de captura, a 
pesar de que lo ubiqué dentro del diseño en el mismo lado del cliente, decidí desarrollarlo 
en un módulo distinto al de la interfaz. Esta decisión fue tomada con la finalidad de poder 
entregar un servicio de exportación, que sea capaz de ser actualizado con mejoras en 
caso de que, en un futuro, algún cliente lo solicite. 
La tarea relacionada al mantenimiento de archivos y almacenamiento masivo debe de 
ejecutarse como un sub-módulo del servidor, porque solamente de esta manera se puede 
estar completamente seguro de que el módulo de mantenimientotiene acceso a las 
unidades de almacenamiento asignados a la captura debido a que ahí se encuentra el 
hardware de captura. Ya que en el supuesto de que lo hubiera colocado en el lado del 
 
 
27 Diseño 
cliente, no tendría el acceso a las unidades de disco si el módulo cliente se ubicara en un 
ordenador remoto. 
Una de las razones importantes que me impulsó a ubicar el proceso de mantenimiento 
en un programa o módulo distinto al que ofrece el servicio de captura fue, que cualquier 
problema crítico, como un error fatal dentro del proceso de mantenimiento, podría llegar a 
interrumpir el proceso de captura, No obstante, ambos módulos comparten su 
configuración ubicada en el registro del sistema operativo. 
 
Considerando el modelo arquitectónico elegido y la asignación de tareas, los nombres 
de los módulos se asignaron de la siguiente forma: 
 Fission Monitor Server (Captura y configuración del sistema por llamadas remotas) 
 Fission Monitor Client (Búsqueda, visualización y exportación) 
 Fission Monitor Upkeeper (Mantenimiento de las unidades de disco) 
 Fission Monitor Exporter (Exportación de videoclips) 
 
Monitor Server
Señal de Entrada
Monitor Upkeeper
Monitor Client
Monitor Exporter
Almacenamiento
Masivo
(NAS/SAN) 
Figura 3.8 - Diagrama modular de Fission On-Air Monitor 
 
Extendiendo la descripción de la funcionalidad de cada módulo, aclaro que el 
módulo Fission Monitor Server es el núcleo del sistema. Su propósito principal es el de 
capturar los archivos multimedia en un dispositivo de almacenamiento local (generalmente 
un disco duro) basado en reglas previamente establecidas por el usuario final. 
Posteriormente, este módulo ejecuta periódicamente el módulo Fission Monitor 
Upkeeper, que está a cargo de la transferencia de archivos multimedia a una unidad de 
almacenamiento a largo plazo y a borrar los archivos dependiendo de su antigüedad en la 
unidad de almacenamiento y el espacio libre en la misma. 
 
El módulo Fission On-Air Client es la interfaz gráfica del sistema que se presenta 
al usuario final. Desde sus controles se puede iniciar y detener una sesión de captura de 
las señales de audio y video. También permite una visualización previa de lo que se está 
capturando en tiempo real. Además, ofrece los controles que permiten configurar la 
captura de cada entrada independientemente de las otras. Igualmente, puede establecer 
las reglas de mantenimiento de las unidades de disco asignadas a la captura y al 
almacenamiento a largo plazo. En este módulo, el usuario puede buscar los archivos 
multimedia relacionados a una fecha, hora y canal en específico y exportar segmentos del 
registro de captura en el formato ASF. Para llegar a esta conclusión, me basé en una 
 28 Capítulo 3 
investigación previa que me indicó que dicho formato puede ser reproducido en cualquier 
servidor que opere bajo Windows en cualquiera de sus versiones XP o posterior. Además, 
este formato permite codificar el video en una calidad lo suficientemente baja con lo cual 
disminuye su tamaño en bytes agilizando su transferencia por cualquier medio electrónico, 
dígase correo electrónico o transferencia FTP. 
 
En la siguiente figura ilustro la interrelación de los módulos que implementé, donde 
solamente interactúan los hexágonos adyacentes: 
 
 
Figura 3.9 - Interacción de los módulos 
 
3.2.3 Modelo Iterativo Incremental 
El departamento de desarrollo de productos, dentro de Fission Software, 
implementó un esquema de trabajo definido empíricamente basado en el progreso y 
necesidades de la empresa durante su crecimiento. La forma en la que los fundadores de 
la compañía se las han ingeniado para cumplir con las soluciones requeridas, por la 
estaciones de televisión, tiene base en el Modelo Iterativo Incremental debido a la 
cantidad de personal y compromisos por entregar a tiempo con diversos clientes. 
Es erróneo pensar en que “iterativo” e “incremental” son sinónimos dentro del 
desarrollo de software. Este error es común debido a que en la práctica ambos conceptos 
van de la mano. Cuando hablamos de un Modelo Iterativo nos referimos a que el 
desarrollo va en ciclos, mejorando la calidad del producto, sin embargo, a éste no se le 
añade funcionalidad. En el caso del Modelo Incremental en cada entrega al cliente, se van 
añadiendo fragmentos de funcionalidad al producto a partir de la primera entrega que se 
denomina la versión esencial o versión base del producto. 
En términos generales el Modelo Iterativo Incremental consiste en desarrollar un 
sistema a través de ciclos repetitivos (iterativo) y con porciones de funcionalidad en cada 
entrega (incremental). De esta forma los desarrolladores de software aprenden las 
necesidades específicas de los usuarios finales y los usuarios pueden tener una idea más 
clara y concreta de sus necesidades, a través del uso del sistema. 
Es decir, en cada iteración existen cambios al diseño, mayor funcionalidad añadida 
al producto y correcciones a posibles errores que pudieran existir en la entrega anterior, 
de tal forma que las versiones van evolucionando hasta que el sistema quede totalmente 
implementado. 
Fission 
Monitor 
Client 
Fission 
Monitor 
Exporter 
Fission 
Monitor 
Server 
Fission 
Monitor 
Upkeeper 
 
 
29 Diseño 
 
Figura 3.10 - Ciclo iterativo del modelo Iterativo Incremental 
 
Este procedimiento consiste básicamente de una fase inicial, una fase iterativa y 
una lista de control de proyecto. En la fase inicial se lleva a cabo un análisis de todo el 
problema, posteriormente un diseño general de todo el sistema, junto con una 
calendarización del desarrollo del producto y terminando en la entrega de una versión 
base del mismo. 
Durante la entrega de la versión base, el usuario está a tiempo de reaccionar y 
verificar que sus requerimientos fueron comprendidos totalmente. En caso de que 
ocurriera lo contrario durante esta etapa, no existen grandes repercusiones ya que se 
puede volver a la etapa de diseño. El rediseño de la aplicación se realiza con la finalidad 
de entregar una nueva versión base que cumpla las expectativas del usuario y a partir de 
la cual se irán entregando versiones mejoradas. Una vez que el usuario comienza a 
utilizar la versión base, el proyecto avanza a la fase iterativa. En ese momento entra en 
juego la lista de control de proyecto. En ella se lleva un registro de todas las tareas que 
deben ser realizadas para guiar la fase iterativa, de lo contrario esta forma de trabajo se 
puede volver muy confusa tanto para los desarrolladores como para el cliente, ya que sin 
una guía el sistema puede llegar a un punto sin fin donde los tiempos de entrega se 
vuelven ambiguos y ninguna de las partes comprende la problemática para la que está 
siendo desarrollado el sistema. 
Por tanto, la Lista de Control de Proyecto debe de incluir las nuevas 
funcionalidades a ser desarrolladas, así como los puntos de rediseño que tuvieron que ser 
tomados para satisfacer las necesidades del cliente. Es importante que sea revisada 
constantemente durante la etapa de análisis en cada iteración. 
 
La fase iterativa incluye el rediseño e implementaciones de nuevas capacidades 
del sistema que fueron añadidas a la Lista de Control de Proyecto como resultado del 
análisis de la versión actual. En una ejecución ideal del modelo, el rediseño e 
implementación en cada iteración debe ser sencillo, directo y modular. El análisis de una 
iteración está basado en la retroalimentación por parte del cliente y el análisis del sistema 
en sitio. Dicho análisis debe estar basado en el uso, eficiencia, estructura, modularidad y 
sobre todo en el alcance de las metas previamente establecidas de la iteración anterior. 
 
 
Planeación y 
Requerimientos 
Análisis, Diseño e 
Implementación 
Pruebas 
Evaluación 
 30 Capítulo 3 
Debilidades del modelo 
Uno de los puntos débiles de este modelo de desarrollo es que el cliente debe 
estar involucrado en todo momento durante el desarrollo delproyecto. El rápido 
crecimiento que ha tenido la compañía Fission Software, en gran parte, se debe a que la 
mayoría de las estaciones de televisión trabajan todos los días del año cubriendo las 24 
horas del día y están dispuestas a ir de la mano con la compañía para poder concretar 
una solución de automatización que les permita mejorar los procesos de producción de 
sus señales de televisión. Desafortunadamente, el costo de ejecución de dicho modelo 
implica para Fission Software mayores gastos de manutención, así como transporte y 
viáticos en horarios extremos para su personal. 
Otro punto débil que se aprecia dentro de este modelo, es que la compañía que 
ofrece la solución requiere de profesionales con habilidades arriba del promedio y que se 
encuentren comprometidos a cumplir con las necesidades del cliente. Para poder cumplir 
con esta labor, Fission Software cuenta con personal capacitado dentro de las áreas de 
desarrollo y operaciones, que cuentan con una comunicación directa para resolver, con la 
mayor velocidad posible, problemas en el software cuando estos suceden en sitio. Para 
llevar una guía adecuada de los avances y metas a alcanzar se establecen planos de ruta 
para cada módulo del sistema que brinda las soluciones esperadas a los clientes. 
Iteraciones del proyecto 
Basado en el Modelo Iterativo Incremental la primera tarea a realizar es un análisis 
de los alcances que debe de tener el proyecto y plasmar las fases del desarrollo en una 
Lista de Control de Proyectos. Esta herramienta, por muy simple que parezca, permite a 
todas las áreas dentro de la empresa el intercomunicarse para generar una idea más 
concreta sobre que punto se encuentra el desarrollo, tener un mejor control sobre los 
tiempos de entrega y fungir como guía para los programadores ayudándoles a obtener 
metas más claras sobre el alcance. A continuación, se muestra una lista ejemplo realizada 
durante la etapa inicial del proyecto en discusión: 
Tabla 3.1 - Lista de control de proyecto 
Fission On-Air Monitor 
Lista de Control de Proyectos 
Fase I-1 
Versión a 
Entregar 1.0.0.0 
Descripci
ón 
Entregar al cliente una versión base que cumpla con la funcionalidad mínima de 
grabar y visualizar la señal que se está grabando 
 
Tareas General: 
1. Implementar Sockets 
2. Diseñar y crear skins de programa cliente 
Módulo Servidor: 
1. Implementar wrapper SDK de Optibase 
2. Implementar protocolo de comunicación 
3. Implementar servidor que interprete correctamente protocolo con cliente 
Módulo Cliente: 
1. Implementar gráfica visualizadora de stream SDP por medio de DirectShow 
2. Implementar Recrod Session 
3. Implementar Settings 
4. Implementar comunicación con el servidor. 
Personal Salvador Medina 
Fecha de 
Entrega 26/08/2006 
 
 
31 Diseño 
Fase I 
Como se puede observar en la tabla, la versión base del producto tiene que ser 
capaz de grabar bajo una configuración establecida por el usuario para aprovechar el 
espacio en disco duro local. Las capturas de las señales de entrada deben de realizarse 
independientemente de acuerdo a las necesidades de cada canal. En esta fase el 
software debe de permitir al usuario visualizar la multimedia contenida dentro de los 
registros de captura. Una vez que se obtiene la versión base que incluye la funcionalidad 
mínima del sistema al concretar la fase I, el proyecto entra en la fase II. 
 
Fase II 
Durante la segunda fase del proyecto, el sistema debe ser capaz de exportar 
segmentos del registro, o videoclips, definidos por el usuario mediante la selección de 
fecha y hora tanto del inicio como del final del clip. Los videoclips deben de ser mostrados 
en un visualizador proporcionado por el programa cliente en la mayoría de los equipos sin 
la necesidad de instalar codecs extra al ordenador. 
 
Fase III 
En una tercera etapa del desarrollo, el sistema debe ser capaz de guardar la 
multimedia capturada en una unidad de almacenamiento masiva, como una NAS 
(Network-Attached Storage) o una SAN (Storage Area Network) y esta funcionalidad debe 
ser opcional para mantener la flexibilidad del sistema. Así mismo, debe de liberar espacio 
en disco mediante la eliminación de archivos en las unidades de almacenamiento 
designadas para la captura y para el almacenamiento a largo plazo. 
 
Los parámetros que tomé en cuenta para realizar esta tarea son el espacio libre en 
la unidad de almacenamiento y la vida útil de los archivos. En caso de que el usuario 
defina un espacio libre mínimo requerido, se deberán borrar los archivos más viejos que 
estén ubicados en la unidad de disco. Si varios canales comparten la misma unidad de 
disco, se borrará el archivo más viejo de todos los canales. En caso de realizar un 
mantenimiento de disco por medio de expiración de archivo, simplemente se tiene que 
verificar en cada uno de los archivos contenidos que su tiempo de vida no sea mayor a la 
establecida por el usuario, el tiempo de vida del archivo está basado en la fecha y hora 
actual contra la fecha y hora de inicio de grabación del archivo. 
 
 32 Capítulo 3 
 
El proceso de mantenimiento puede interpretado por el siguiente pseudocódigo: 
 
1. Obtener listado de cada uno de los directorios de captura y almacenamiento 
2. Ordenar cada uno de los listados obtenidos 
3. Agrupar las listas de acuerdo al disco en que están ubicados 
4. Por cada grupo obtenido 
4.1. Ordenar cronológicamente y mezclar las listas dentro del grupo 
5. Por cada lista obtenida de cada grupo 
5.1. Mientras no exista el espacio libre mínimo en el disco establecido por el usuario 
5.1.1. Borrar el primer archivo de la lista 
5.1.2. Eliminar el primer elemento de la lista 
5.2. Si no existen más archivos en la lista y no hay espacio libre disponible 
5.2.1. Notificar error en el espacio libre correspondiente al disco del grupo 
5.3. Mientras el primer archivo de la lista tenga una vida mayor a la permitida por el 
usuario 
5.3.1. Borrar el primer archivo de la lista 
5.3.2. Eliminar el primer elemento de la lista 
6. FIN 
 
Finalmente, como un comentario extra del diseño actual, un cliente distinto al que 
originó el proyecto solicitó que el sistema permita la visualización y exportación de 
segmentos en un ambiente multiusuario, en otras palabras, requería de un módulo nuevo 
que tenga acceso al registro de captura para buscar y exportar segmentos desde un 
módulo independiente. Gracias a la modularización descrita al inicio del capítulo, este 
programa lo pude implementar mediante la extracción del funcionamiento de la Sesión de 
Captura y reutilizando el módulo de exportación dentro de una nueva aplicación llamada 
Fission Monitor Viewer. 
 
 
33 Herramientas 
3.3 Herramientas Utilizadas para su Programación 
 
En la compañía los programas compatibles con el sistema operativo Windows son 
desarrollados con la herramienta Visual Studio 2005 mediante el lenguaje VC++ utilizando 
las bibliotecas MFC (Microsoft Foundation Classes) que proporciona Microsoft. 
Para desarrollar el sistema también utilicé DirectShow, herramienta proporcionada 
por Microsoft para la manipulación del audio y video. 
Por último, fue imperativo que empleara el SDK que proporciona Optibase con su 
hardware para poder administrar el uso de la tarjeta encargada de capturar las señales de 
audio y video de acuerdo a los requisitos de la aplicación. 
 
3.3.1 MFC 
La biblioteca MFC encapsula algunas funcionalidades de la API de Windows en 
clases para el lenguaje de programación Visual C++, que facilitan el manejo de objetos, 
ventanas y controles de Windows. 
Con esta herramienta se pueden desarrollar programas de una manera más rápida, 
ya que al momento de crear aplicaciones el código generado es mucho más fácil de 
escribir y de leer por todos los macros que éste incluye, teniendo como resultado 
proyectos de fácil mantenimiento. 
VC++ posee un amplio uso de macros. Una macro es una definición o un texto 
breve que puede llegar a remplazar líneas enteras de código creandoconsecuentemente 
un lenguaje breve y conciso. Las macros que MFC provee se utilizan para el manejo de 
los mensajes o excepciones que arroja el sistema o aplicación. También son utilizadas 
para la seriación o creación de instancias de clases dinámicas. Microsoft creo las macros 
con la intención de reducir el uso de memoria evitando la creación de tablas virtuales 
como está estipulado dentro del estándar de C++. También lo creo con la intención de no 
tener que realizar un parseo una y otra vez. 
En el caso particular de este trabajo utilicé la versión 8.0 de esta herramienta que 
está incluida en el programa de desarrollo Visual Studio 2005 SP1. 
 
3.3.2 DirectShow 
DirectShow es una API que proporciona Microsoft para la manipulación de 
archivos multimedia en diferentes versiones del sistema operativo Windows. Ésta fue 
añadida al SDK estándar de desarrollo de aplicaciones de Windows en el año 2007. 
La arquitectura utilizada por DirectShow es del tipo modular, donde cada etapa del 
procesamiento es ejecutada por un objeto denominado filtro. DirectShow provee un 
conjunto de filtros estándar que pueden ser utilizados directamente por los programas, 
aunque esto no limita a los programadores a desarrollar sus propios filtros para aumentar 
la funcionalidad de DirectShow. 
 
Para ilustrar el funcionamiento de DirectShow se muestra en la siguiente figura 
una gráfica sencilla encargada de reproducir un archivo de video con audio embebido: 
 
En la figura que se muestra a continuación se observan componentes en forma 
rectangular, estos representan a los filtros. Cada filtro cuenta con entradas y salidas 
denominadas pines. Un pin de entrada solamente puede ser conectado a un pin de salida 
de otro filtro, generando así un flujo de datos dentro de la gráfica. 
 34 
Capítulo 3 
 
 
Figura 3.11 - Gráfica de ejemplo de reproducción de video 
 
La arquitectura basada en filtros permite al programador reproducir, capturar o 
editar archivos multimedia de algunos formatos comunes como MPEG-1, MP3, WMA, 
WMV, MIDI en contenedores como ASF, AVI y WAV ya que los filtros requeridos están 
incluidos dentro del SDK. 
Sin embargo, para el software en discusión era necesario poder manipular 
archivos codificados en MPEG-4, AAC contenidos en formato MP4, por lo que requería de 
filtros desarrollados por terceros, lo cual implicaba un costo adicional por licenciamiento 
por el uso de la patente y/o tecnología utilizada en el códec. 
Esta herramienta me fue útil ya que me permitió desarrollar un reproductor y un 
editor de video de una manera muy sencilla. 
 
Uso de FilterGraph 
Al momento de programar una aplicación haciendo uso de DirectShow es 
importante tomar en cuenta el objeto Filter Graph Manager, que traducido al español se 
entiende como el Administrador de Gráficas basadas en Filtros, pero en futuras ocasiones 
haré referencia a este componente por su nombre en inglés. 
 
Una de las funciones principales de este componente es establecer un reloj de 
referencia interno para coordinar los cambios de estado dentro de los filtros utilizados en 
la gráfica. Contando con una referencia interna es posible informar a la aplicación sobre 
los eventos ocurridos dentro la gráfica a la aplicación. También provee los métodos e 
interfaces necesarias para construir y manipular las gráficas. Toda aplicación que 
programe utilizando el Filter Graph Manager debo de seguir los siguientes pasos: 
 
 
Aplicación
Filter Graph Manager
Aplicación
Filter Graph Manager
Aplicación
Filter Graph Manager
EventosLlamadas
 
Figura 3.12 - Uso del Filter Graph Manager 
 
 
Raw Audio 0 
Wildfire.wmv 
Raw Video 1 
In0 out0 
 
WMAudio Decoder DMO 
 
In0 out0 
 
WMVideo Decoder DMO 
 
Audio Input pin (rendered) 
 
Default DirectSound Device 
VMR Input 0 
 
Video Renderer 
 
 
35 Herramientas 
1. Crear una instancia del Filter Graph Manager 
2. Crear una gráfica por medio del Filter Graph Manager. Los filtros a utilizar los 
determina la aplicación de acuerdo a sus necesidades. 
3. La aplicación utiliza al Filter Graph Manager como la interfaz para controlar la 
gráfica y flujo de datos que corre a través de los filtros. Durante este proceso la 
aplicación recibe eventos que indican el estado de la gráfica. 
 
Durante el uso del Fiter Graph Manager fue importante que considerara la 
tecnología de Conexión Inteligente (Intelligent Connect). La Conexión Inteligente se refiere 
a los algoritmos que utiliza, internamente este componente, para construir todo o parte de 
la gráfica basándose en la compatibilidad de los filtros instalados en el sistema con los ya 
incluidos en la gráfica, combinando los filtros para intentar resolver la construcción de la 
gráfica. 
 
Codec HELL y sistema de méritos en códecs 
A pesar de que puede ser muy práctico permitir al administrador de gráficas elegir 
los filtros necesarios para completar una gráfica, esto puede llegar a ser un gran 
inconveniente para el usuario. 
Cualquier fabricante de códecs dentro de la industria puede desarrollar sus propios 
filtros compatibles con DirectShow para poder codificar y decodificar diferentes tipos de 
multimedia. 
Los filtros al momento de ser instalados son registrados con ciertos puntos de 
mérito en el registro del sistema operativo. Los puntos de mérito determinan la capacidad 
que tiene el filtro para poder trabajar sobre cierto tipo de multimedia en específico. En una 
instalación limpia dentro de un ordenador, este ambiente es el ideal para que los 
programas trabajen apropiadamente con códecs desarrollados por otras compañías. 
No obstante, en la realidad, esta forma de trabajo trae consigo más errores que 
beneficios, ya que cualquier usuario puede instalar la cantidad de códecs que desee o 
considere necesario para su ambiente de trabajo y, tomando en cuenta, que todos los 
fabricantes al momento de crear el instalador de sus códecs tratarán de asignar el mayor 
número de puntos de mérito a sus filtros, ocasiona que se asignen los puntos de manera 
irregular dentro del ordenador, provocando que la gráfica creada por medio de la 
“Conexión Inteligente” del Filter Graph Manager tome filtros de diferentes fabricantes 
generando una gráfica disfuncional con filtros incompatibles, trastornando la finalidad de 
la Conexión Inteligente. 
 
Para ejemplificar esta situación, se considera que un usuario instala 2 paquetes de 
códecs para decodificar y reproducir los archivos del tipo MPEG-4 versión 2. 
Considerando al primer fabricante como la compañía LEAD y al segundo siendo 3IVX. 
Los códecs de LEAD poseen 5 puntos de mérito para sus demultiplexores y 
decodificadores. En cuanto a los otros codecs, el paquete de instalación de 3IVX asigna 5 
puntos de mérito a sus demultiplexores así como a sus decodificadores de video, sin 
embargo, asigna 3 puntos de mérito a sus decodificadores de audio. 
Basándose en dicho supuesto, al momento de crear una gráfica para reproducir un 
archivo de video con audio embebido codificado en MPEG-4 versión 2 con audio 
codificado en AAC en formato MP4, la Conexión Inteligente del Filter Graph Manager 
daría como resultado una gráfica con filtros de diferentes fabricantes. 
Este resultado en ocasiones podría ser algo positivo, si el decodificador de audio 
de LEAD funciona mejor que el de 3IVX. Sin embargo, en la práctica que he adquirido en 
las diversas instalaciones del producto, en la mayoría de las ocasiones esto resulta en 
 36 
Capítulo 3 
una gráfica disfuncional, donde el audio no esté sincronizado con el video o los 
decodificadores no sean del todo compatibles, construyendo una gráfica que reproduce 
sólo el video sin salida de audio. 
 
Es por ello que se debe de tener mucho cuidado al momento de programar una 
gráfica mediante la Conexión Inteligente del Filter Graph Manager. Para validar si el 
ordenador cuenta con un ambiente apropiado para la reproducción de ciertos archivos 
multimedia, el uso de la herramienta GraphEdit me permitió visualizar

Continuar navegando