[vlc-devel] [PATCH] video_chroma: recover the original new buffer callback if opening the filter fails

Steve Lhomme robux4 at videolabs.io
Mon Aug 7 12:46:40 CEST 2017


---
 modules/video_chroma/d3d11_surface.c | 3 +++
 modules/video_chroma/dxa9.c          | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/modules/video_chroma/d3d11_surface.c b/modules/video_chroma/d3d11_surface.c
index 2e9ab8d5cc..4dd41fa336 100644
--- a/modules/video_chroma/d3d11_surface.c
+++ b/modules/video_chroma/d3d11_surface.c
@@ -524,6 +524,8 @@ static filter_t *CreateFilter( vlc_object_t *p_this, const es_format_t *p_fmt_in
     if (unlikely(p_filter == NULL))
         return NULL;
 
+    picture_t * (*old_buffer_new)( filter_t * ) = p_filter->owner.video.buffer_new;
+
     p_filter->b_allow_fmt_out_change = false;
     p_filter->owner.video.buffer_new = NewBuffer;
     p_filter->owner.sys = p_this;
@@ -537,6 +539,7 @@ static filter_t *CreateFilter( vlc_object_t *p_this, const es_format_t *p_fmt_in
     {
         msg_Dbg( p_filter, "no video converter found" );
         DeleteFilter( p_filter );
+        p_filter->owner.video.buffer_new = old_buffer_new;
         return NULL;
     }
 
diff --git a/modules/video_chroma/dxa9.c b/modules/video_chroma/dxa9.c
index e15ea86b0b..d35cf96d4a 100644
--- a/modules/video_chroma/dxa9.c
+++ b/modules/video_chroma/dxa9.c
@@ -197,6 +197,8 @@ static filter_t *CreateFilter( vlc_object_t *p_this, const es_format_t *p_fmt_in
     if (unlikely(p_filter == NULL))
         return NULL;
 
+    picture_t * (*old_buffer_new)( filter_t * ) = p_filter->owner.video.buffer_new;
+
     p_filter->b_allow_fmt_out_change = false;
     p_filter->owner.video.buffer_new = NewBuffer;
     p_filter->owner.sys = p_this;
@@ -210,6 +212,7 @@ static filter_t *CreateFilter( vlc_object_t *p_this, const es_format_t *p_fmt_in
     {
         msg_Dbg( p_filter, "no video converter found" );
         DeleteFilter( p_filter );
+        p_filter->owner.video.buffer_new = old_buffer_new;
         return NULL;
     }
 
-- 
2.12.1



More information about the vlc-devel mailing list