DirectShow
DirectShow (También abreviado como DS o DShow), en sus inicios Quartz, es un framework multimedia y una API creada por Microsoft para desarrolladores de software con el fin de desempeñar numerosas operaciones con ficheros multimedia y streams. Se creó para reemplazar la antigua tecnología de Microsoft Video for Windows.[1] Basado en el framework Microsoft Windows Component Object Model (COM), DirectShow proporciona una interfaz común para la gestión multimedia en diferentes lenguajes de programación, y es un framework con arquitectura basada en filtros que puede reproducir en pantalla y grabar ficheros de video bajo demanda del usuario o el desarrollador. Las herramientas de desarrollo de DirectShow y la documentación fue originalmente distribuida como parte de DirectX SDK. Actualmente, se distribuyen como parte de Windows SDK (antiguamente conocido como Platform SDK).[2]
Entre los contrincantes de DirectShow en otras plataformas están el framework QuickTime de Apple y varios frameworks multimedia de Linux como GStreamer o Xine. Microsoft planea, gradualmente, reemplazar completamente DirectShow por Media Foundation en futuras versiones de Windows.[3] Las aplicaciones para Windows Vista y Windows 7 usan Media Foundation en lugar de DirectShow para algunas tareas relacionadas con multimedia.
Ejemplo de código fuente
[editar]El siguiente ejemplo muestra cómo crear una aplicación sencilla que reproduzca un fichero de video visualizándolo por pantalla:
#include "stdafx.h" #include <dshow.h> int _tmain(int argc, _TCHAR* argv[]) { IGraphBuilder *pGraph = NULL; IMediaControl *pControl = NULL; IMediaEvent *pEvent = NULL; IMediaSeeking *pSeeking = NULL; // Inicializa la biblioteca COM. HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { printf("ERROR - No se ha podido inicializar la biblioteca COM"); system("pause"); return -1; } // Crea el gestor de grafos y filtros y obtiene las interfaces de control. hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph); if (FAILED(hr)) { printf("ERROR - No se ha podido crear el gestor de grafos y filtros."); system("pause"); return -1; } hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl); hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent); hr = pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeeking); // Construye el grafo DirectShow hr = pGraph->RenderFile(L"D:\\Videos\\costaColorW.mpg", NULL); if (SUCCEEDED(hr)) { // Inicia la reproducción de grafo hr = pControl->Run(); if (SUCCEEDED(hr)) { // Opcional: Configura la reproducción para que se detenga a los 10 segundos LONGLONG pCurrent = 0, pStop = 100000000; hr = pSeeking->SetPositions(&pCurrent, AM_SEEKING_AbsolutePositioning, &pStop, AM_SEEKING_AbsolutePositioning); if (FAILED(hr)) { printf("ERROR - SetPositions ha fallado."); } // Espera a que la reproducción finalice. long evCode; pEvent->WaitForCompletion(INFINITE, &evCode); // Nota: No utilice INFINITE en una aplicación real, puede provocar // el bloqueo indefinido. } } else printf("ERROR - El fichero no existe o no hay codec para reproducirlo."); // Ejecuta el comando 'pause' una vez finalizada la reproducción. system("pause"); pControl->Release(); pEvent->Release(); pSeeking->Release(); pGraph->Release(); CoUninitialize(); return 0; }
Véase también
[editar]- GraphStudio – open source GraphEdit project
- DirectX Media Objects
- DirectX plugins
- DirectX Video Acceleration
- DirectShowPlayer
Referencias
[editar]- «MSDN DirectShow documentation». Consultado el 7 de julio de 2007.
- Pesce, Mark D. (2003). Programming Microsoft DirectShow for Digital Video and Television. Microsoft Press. ISBN 0-7356-1821-6. (Sample Chapter)
Notas
[editar]- ↑ Blome, Michael; Wasson, Mike (julio de 2002). «Core Media Technology in Windows XP Empowers You to Create Custom Audio/Video Processing Components». MSDN Magazine (Microsoft). Consultado el 2 de abril de 2007.
- ↑ «DirectShow documentation». MSDN Library. Microsoft. 1 de enero de 2006. Consultado el 1 de enero de 2006.
- ↑ «Migrating from DirectShow to Media Foundation». MSDN Library. Microsoft. julio de 2006. Consultado el 17 de agosto de 2010.
Enlaces externos (en inglés)
[editar]- DirectShow on MSDN (documentación oficial)
- J. River DirectShow Playback Guide (tutorial sobre DirectShow con información general)
- VideoLab (librería de procesamiento de vídeo con soporte para DirectShow (gratis para propósitos no comerciales))