ffmpeg | branch: master | Michael Niedermayer <mich...@niedermayer.cc> | Thu 
Sep 10 17:01:47 2015 +0200| [d730dd8c53f58b067de27348b759f7d089f05487] | 
committer: Michael Niedermayer

swscale: Forward colorspace updates to the 2nd cascaded context in case of 
alphablend

The first just does the blending and wouldnt do anything with the colorspace 
values

Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>

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

 libswscale/swscale_internal.h |    1 +
 libswscale/utils.c            |    5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h
index 9676d46..721a9ca 100644
--- a/libswscale/swscale_internal.h
+++ b/libswscale/swscale_internal.h
@@ -322,6 +322,7 @@ typedef struct SwsContext {
     uint8_t *cascaded_tmp[4];
     int cascaded1_tmpStride[4];
     uint8_t *cascaded1_tmp[4];
+    int cascaded_mainindex;
 
     double gamma_value;
     int gamma_flag;
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 5265157..eb1c940 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -858,8 +858,8 @@ int sws_setColorspaceDetails(struct SwsContext *c, const 
int inv_table[4],
     c->dstFormatBpp = av_get_bits_per_pixel(desc_dst);
     c->srcFormatBpp = av_get_bits_per_pixel(desc_src);
 
-    if (c->cascaded_context[0])
-        return sws_setColorspaceDetails(c->cascaded_context[0],inv_table, 
srcRange,table, dstRange, brightness,  contrast, saturation);
+    if (c->cascaded_context[c->cascaded_mainindex])
+        return 
sws_setColorspaceDetails(c->cascaded_context[c->cascaded_mainindex],inv_table, 
srcRange,table, dstRange, brightness,  contrast, saturation);
 
     if ((isYUV(c->dstFormat) || isGray(c->dstFormat)) && (isYUV(c->srcFormat) 
|| isGray(c->srcFormat))) {
         if (!c->cascaded_context[0] &&
@@ -1485,6 +1485,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter 
*srcFilter,
             usesHFilter || usesVFilter ||
             c->srcRange != c->dstRange
         ) {
+            c->cascaded_mainindex = 1;
             ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride,
                                 srcW, srcH, tmpFormat, 64);
             if (ret < 0)

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to