[Libav-user] swscale YUV444P10 -> RGB48LE

Al Crate al at dneg.com
Mon Apr 22 11:34:03 CEST 2013


On 22/04/13 10:22, Paul B Mahol wrote:
> On 4/22/13, Al Crate <al at dneg.com> wrote:
>> Hi all,
>>
>> I've been trying to explode a ProRes 444 movie to a sequence of 16bit
>> images. It would appear that this doesn't work as libswscale always
>> outputs non full chroma when converting YUV->RGB.
>>
>> Can someone confirm my suspicion ?
>
> What "outputs non full chroma" means?
>>
>> cheers
>>
>> al
>>
>>
>>
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/libav-user
>>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
>

When you look at the output (converted to back YUV) you get 422 i.e. 
half the expected number of UV samples.

I suspect this piece of code in libswscale (util.c) might be the cause.

Line 1031:

     /* reuse chroma for 2 pixels RGB/BGR unless user wants full
      * chroma interpolation */
     if (flags & SWS_FULL_CHR_H_INT &&
         isAnyRGB(dstFormat)        &&
         !isPlanarRGB(dstFormat)    &&
         dstFormat != AV_PIX_FMT_RGBA  &&
         dstFormat != AV_PIX_FMT_ARGB  &&
         dstFormat != AV_PIX_FMT_BGRA  &&
         dstFormat != AV_PIX_FMT_ABGR  &&
         dstFormat != AV_PIX_FMT_RGB24 &&
         dstFormat != AV_PIX_FMT_BGR24 &&
         dstFormat != AV_PIX_FMT_BGR4_BYTE &&
         dstFormat != AV_PIX_FMT_RGB4_BYTE &&
         dstFormat != AV_PIX_FMT_BGR8 &&
         dstFormat != AV_PIX_FMT_RGB8
     ) {
         av_log(c, AV_LOG_WARNING,
                "full chroma interpolation for destination format '%s' 
not yet implemented\n",
                av_get_pix_fmt_name(dstFormat));
         flags   &= ~SWS_FULL_CHR_H_INT;
         c->flags = flags;
     }


More information about the Libav-user mailing list