diff framehook.c @ 4:dcc03a32d1bb libavformat

Added support for a realease function to eliminate the context blocks used by each hook.
author philipjsg
date Sat, 30 Nov 2002 17:16:32 +0000
parents 05318cf2e886
children b0e0eb595e29
line wrap: on
line diff
--- a/framehook.c	Fri Nov 29 19:19:47 2002 +0000
+++ b/framehook.c	Sat Nov 30 17:16:32 2002 +0000
@@ -21,7 +21,7 @@
 #include "framehook.h"
 #include "avformat.h"
 
-#ifdef HAVE_VHOOK
+#ifdef CONFIG_HAVE_DLFCN
 #include <dlfcn.h>
 #endif
 
@@ -30,6 +30,7 @@
     struct _FrameHookEntry *next;
     FrameHookConfigureFn Configure;
     FrameHookProcessFn Process;
+    FrameHookReleaseFn Release;
     void *ctx;
 } FrameHookEntry;
 
@@ -59,6 +60,7 @@
 
     fhe->Configure = dlsym(loaded, "Configure");
     fhe->Process = dlsym(loaded, "Process");
+    fhe->Release = dlsym(loaded, "Release");    /* Optional */
 
     if (!fhe->Process) {
         fprintf(stderr, "Failed to find Process entrypoint in %s\n", argv[0]);
@@ -100,3 +102,18 @@
         }
     }
 }
+
+void frame_hook_release()
+{
+    FrameHookEntry *fhe;
+    FrameHookEntry *fhenext;
+
+    for (fhe = first_hook; fhe; fhe = fhenext) {
+        fhenext = fhe->next;
+        if (fhe->Release)
+            fhe->Release(fhe->ctx);
+        av_free(fhe);
+    }
+
+    first_hook = NULL;
+}