none
memoria insuficiente usando Aforge.Video:DirectShow RRS feed

  • Pregunta

  • Muy buena noche,

    Quisiera ver si me ayudan con mi siguiente problema,

    Estoy utilizando una web cam para tomar una fotografía en un momento predeterminado, pero el rato menos pensado sale "memoria insuficiente" estoy usando la librería Aforge.Video.DirectShow

    Espero puedan guiarme con este inconveniente.


    Javier

    martes, 17 de marzo de 2015 0:24

Respuestas

  • No conozco esa biblioteca. De todos modos, está claro que fallas en el manejo dinámico de la memoria. 

    Para tomar una foto, yo usaría el método GetCurrentImage() de la "interface" IBasicVideo implementada en el FilterGraph.

    Para esto yo tengo que pasarle como argumento un búfer del tamaño suficiente para contener los datos y residente en el heap no manejado. Para obtener esa memoria yo usaría Marshal.AllocHGlobal().

    Cuando la función GetCurentImage retorna, yo copio los datos al heap manejado (a un array de bytes o a un MemoryStream), y destruyo el búfer no manejado con Marshal.FreeHGlobal(). Esto debes hacerlo manualmente y es tu responsabilidad.

    Deberías leer en la documentación, para entender cómo se realiza este proceso. No creo que lo delegue en el cliente, pero es obvio que la memoria no está consumiendose dinámicamente como corresponde.

    martes, 17 de marzo de 2015 11:49