Don't write outside of the picture buffer in planarCopy in the gray case
[ffmpeg.git] / libswscale / yuv2rgb_vis.c
index 120fa56..2e2737a 100644 (file)
 
 
 
+// FIXME: must be changed to set alpha to 255 instead of 0
 static int vis_420P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
                            int srcSliceH, uint8_t* dst[], int dstStride[]){
   int y, out1, out2, out3, out4, out5, out6;
 
   for(y=0;y < srcSliceH;++y) {
-      asm volatile (
+      __asm__ volatile (
           YUV2RGB_INIT
           "wr %%g0, 0xd2, %%asi        \n\t" /* ASI_FL16_P */
           "1:                          \n\t"
@@ -131,12 +132,13 @@ static int vis_420P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int s
   return srcSliceH;
 }
 
+// FIXME: must be changed to set alpha to 255 instead of 0
 static int vis_422P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
                            int srcSliceH, uint8_t* dst[], int dstStride[]){
   int y, out1, out2, out3, out4, out5, out6;
 
   for(y=0;y < srcSliceH;++y) {
-      asm volatile (
+      __asm__ volatile (
           YUV2RGB_INIT
           "wr %%g0, 0xd2, %%asi        \n\t" /* ASI_FL16_P */
           "1:                          \n\t"
@@ -182,7 +184,7 @@ static int vis_422P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int s
   return srcSliceH;
 }
 
-SwsFunc yuv2rgb_init_vis(SwsContext *c) {
+SwsFunc sws_yuv2rgb_init_vis(SwsContext *c) {
     c->sparc_coeffs[5]=c->yCoeff;
     c->sparc_coeffs[6]=c->vgCoeff;
     c->sparc_coeffs[7]=c->vrCoeff;
@@ -196,11 +198,11 @@ SwsFunc yuv2rgb_init_vis(SwsContext *c) {
     c->sparc_coeffs[4]=(((int16_t)c->vOffset*(int16_t)c->vrCoeff>>11) & 0xffff) * 0x0001000100010001ULL;
 
     if (c->dstFormat == PIX_FMT_RGB32 && c->srcFormat == PIX_FMT_YUV422P && (c->dstW & 7)==0) {
-        av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV422P -> RGB32\n");
+        av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV422P -> RGB32 (WARNING: alpha value is wrong)\n");
         return vis_422P_ARGB32;
     }
     else if (c->dstFormat == PIX_FMT_RGB32 && c->srcFormat == PIX_FMT_YUV420P && (c->dstW & 7)==0) {
-        av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV420P -> RGB32\n");
+        av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV420P -> RGB32 (WARNING: alpha value is wrong)\n");
         return vis_420P_ARGB32;
     }
     return NULL;