[FFmpeg-cvslog] avfilter/drawutils: Fix ff_fill_rectangle() on big endian

Michael Niedermayer git at videolan.org
Thu Feb 25 00:08:56 CET 2016


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Wed Feb 24 23:11:54 2016 +0100| [6bc20e84d84f5d8d6941fc364dc3bf53662ea222] | committer: Michael Niedermayer

avfilter/drawutils: Fix ff_fill_rectangle() on big endian

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6bc20e84d84f5d8d6941fc364dc3bf53662ea222
---

 libavfilter/drawutils.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavfilter/drawutils.c b/libavfilter/drawutils.c
index 7edaa4a..876a859 100644
--- a/libavfilter/drawutils.c
+++ b/libavfilter/drawutils.c
@@ -298,6 +298,7 @@ void ff_fill_rectangle(FFDrawContext *draw, FFDrawColor *color,
 {
     int plane, x, y, wp, hp;
     uint8_t *p0, *p;
+    FFDrawColor color_tmp = *color;
 
     for (plane = 0; plane < draw->nb_planes; plane++) {
         p0 = pointer_at(draw, dst, dst_linesize, plane, dst_x, dst_y);
@@ -306,9 +307,15 @@ void ff_fill_rectangle(FFDrawContext *draw, FFDrawColor *color,
         if (!hp)
             return;
         p = p0;
+
+        if (HAVE_BIGENDIAN && draw->desc->comp[0].depth > 8) {
+            for (x = 0; 2*x < draw->pixelstep[plane]; x++)
+                color_tmp.comp[plane].u16[x] = av_bswap16(color_tmp.comp[plane].u16[x]);
+        }
+
         /* copy first line from color */
         for (x = 0; x < wp; x++) {
-            memcpy(p, color->comp[plane].u8, draw->pixelstep[plane]);
+            memcpy(p, color_tmp.comp[plane].u8, draw->pixelstep[plane]);
             p += draw->pixelstep[plane];
         }
         wp *= draw->pixelstep[plane];



More information about the ffmpeg-cvslog mailing list