Module: libav
Branch: master
Commit: 20c86571ccc71412781d4a4813e4693e0c42aec6

Author:    Hendrik Leppkes <[email protected]>
Committer: Martin Storsjö <[email protected]>
Date:      Fri Mar 15 20:44:57 2013 +0100

lavfi: let gcc realign the stack on public graph driving functions

The functions which actually drive the filter graph by pushing
frames through it need to ensure an aligned stack for SIMD functions.

This fixes a crash in YADIF filter when using a mingw build in a MSVC
application.

Signed-off-by: Martin Storsjö <[email protected]>

---

 libavfilter/buffersink.c |    9 ++++++---
 libavfilter/buffersrc.c  |    3 ++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c
index 6f75291..94e7366 100644
--- a/libavfilter/buffersink.c
+++ b/libavfilter/buffersink.c
@@ -58,7 +58,8 @@ static int filter_frame(AVFilterLink *link, AVFrame *frame)
     return 0;
 }
 
-int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame)
+int attribute_align_arg av_buffersink_get_frame(AVFilterContext *ctx,
+                                                AVFrame *frame)
 {
     BufferSinkContext *s    = ctx->priv;
     AVFilterLink      *link = ctx->inputs[0];
@@ -98,7 +99,8 @@ static int read_from_fifo(AVFilterContext *ctx, AVFrame 
*frame,
 
 }
 
-int av_buffersink_get_samples(AVFilterContext *ctx, AVFrame *frame, int 
nb_samples)
+int attribute_align_arg av_buffersink_get_samples(AVFilterContext *ctx,
+                                                  AVFrame *frame, int 
nb_samples)
 {
     BufferSinkContext *s = ctx->priv;
     AVFilterLink   *link = ctx->inputs[0];
@@ -144,7 +146,8 @@ static void compat_free_buffer(AVFilterBuffer *buf)
     av_free(buf);
 }
 
-static int compat_read(AVFilterContext *ctx, AVFilterBufferRef **pbuf, int 
nb_samples)
+static int attribute_align_arg compat_read(AVFilterContext *ctx,
+                                           AVFilterBufferRef **pbuf, int 
nb_samples)
 {
     AVFilterBufferRef *buf;
     AVFrame *frame;
diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
index a927f26..5e982ea 100644
--- a/libavfilter/buffersrc.c
+++ b/libavfilter/buffersrc.c
@@ -88,7 +88,8 @@ int av_buffersrc_write_frame(AVFilterContext *ctx, const 
AVFrame *frame)
     return ret;
 }
 
-int av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *frame)
+int attribute_align_arg av_buffersrc_add_frame(AVFilterContext *ctx,
+                                               AVFrame *frame)
 {
     BufferSourceContext *s = ctx->priv;
     AVFrame *copy;

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to