vlc | branch: master | Jean-Paul Saman <jpsa...@videolan.org> | Thu Apr 3 15:35:36 2014 +0200| [eae2f440af1d7e79019adc4da5f871d0592d9f91] | committer: Jean-Paul Saman
codec/avcodec/swscale: Support VLC_CODEC_BGRA > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=eae2f440af1d7e79019adc4da5f871d0592d9f91 --- modules/codec/avcodec/chroma.c | 1 + modules/video_chroma/swscale.c | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c index 7f067ea..fbbe29a 100644 --- a/modules/codec/avcodec/chroma.c +++ b/modules/codec/avcodec/chroma.c @@ -128,6 +128,7 @@ static const struct {VLC_CODEC_RGBA, PIX_FMT_RGBA, 0, 0, 0 }, {VLC_CODEC_ARGB, PIX_FMT_ARGB, 0, 0, 0 }, + {VLC_CODEC_BGRA, PIX_FMT_BGRA, 0, 0, 0 }, {VLC_CODEC_GREY, PIX_FMT_GRAY8, 0, 0, 0}, /* Paletized RGB */ diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c index 6559078..2763e43 100644 --- a/modules/video_chroma/swscale.c +++ b/modules/video_chroma/swscale.c @@ -274,6 +274,10 @@ static void FixParameters( int *pi_fmt, bool *pb_has_a, bool *pb_swap_uv, vlc_fo *pi_fmt = PIX_FMT_BGR32_1; *pb_has_a = true; break; + case VLC_CODEC_BGRA: + *pi_fmt = PIX_FMT_RGB32; + *pb_has_a = true; + break; case VLC_CODEC_YV12: *pi_fmt = PIX_FMT_YUV420P; *pb_swap_uv = true; @@ -648,7 +652,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) /* We extract the A plane to rescale it, and then we reinject it. */ if( p_fmti->i_chroma == VLC_CODEC_RGBA ) ExtractA( p_sys->p_src_a, p_src, p_fmti->i_visible_width * p_sys->i_extend_factor, p_fmti->i_visible_height, OFFSET_A ); - else if( p_fmti->i_chroma == VLC_CODEC_ARGB ) + else if( p_fmti->i_chroma == VLC_CODEC_ARGB || p_fmti->i_chroma == VLC_CODEC_BGRA ) ExtractA( p_sys->p_src_a, p_src, p_fmti->i_visible_width * p_sys->i_extend_factor, p_fmti->i_visible_height, 0 ); else plane_CopyPixels( p_sys->p_src_a->p, p_src->p+A_PLANE ); @@ -656,7 +660,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) Convert( p_filter, p_sys->ctxA, p_sys->p_dst_a, p_sys->p_src_a, p_fmti->i_visible_height, 0, 1, false, false ); if( p_fmto->i_chroma == VLC_CODEC_RGBA ) InjectA( p_dst, p_sys->p_dst_a, p_fmto->i_visible_width * p_sys->i_extend_factor, p_fmto->i_visible_height, OFFSET_A ); - else if( p_fmto->i_chroma == VLC_CODEC_ARGB ) + else if( p_fmto->i_chroma == VLC_CODEC_ARGB || p_fmto->i_chroma == VLC_CODEC_BGRA ) InjectA( p_dst, p_sys->p_dst_a, p_fmto->i_visible_width * p_sys->i_extend_factor, p_fmto->i_visible_height, 0 ); else plane_CopyPixels( p_dst->p+A_PLANE, p_sys->p_dst_a->p ); @@ -666,7 +670,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) /* We inject a complete opaque alpha plane */ if( p_fmto->i_chroma == VLC_CODEC_RGBA ) FillA( &p_dst->p[0], OFFSET_A ); - else if( p_fmto->i_chroma == VLC_CODEC_ARGB ) + else if( p_fmto->i_chroma == VLC_CODEC_ARGB || p_fmto->i_chroma == VLC_CODEC_BGRA ) FillA( &p_dst->p[0], 0 ); else FillA( &p_dst->p[A_PLANE], 0 ); _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits