[vlc-devel] commit: Fixed RGB ffmpeg color selection. (Laurent Aimar )
git version control
git at videolan.org
Thu Aug 28 23:48:01 CEST 2008
vlc | branch: 0.9-bugfix | Laurent Aimar <fenrir at videolan.org> | Thu Aug 28 00:33:36 2008 +0200| [3fabf44a021007bec6173fa48438acd3e265cb74] | committer: Christophe Mutricy
Fixed RGB ffmpeg color selection.
I have some doubt about it, either swscale does not respect the ffmpeg doc
or the doc is wrong (about the rgb mask).
(cherry picked from commit fb7f014161f68c914e028adbea68b7ee9863c76e)
Signed-off-by: Christophe Mutricy <xtophe at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3fabf44a021007bec6173fa48438acd3e265cb74
---
modules/codec/avcodec/chroma.h | 7 ++++---
modules/codec/png.c | 9 +++------
modules/video_filter/swscale.c | 4 ++--
3 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/modules/codec/avcodec/chroma.h b/modules/codec/avcodec/chroma.h
index 51f0c7b..3b1d67c 100644
--- a/modules/codec/avcodec/chroma.h
+++ b/modules/codec/avcodec/chroma.h
@@ -81,9 +81,10 @@ static const struct
/* Packed RGB formats */
VLC_RGB( VLC_FOURCC('R','G','B','4'), PIX_FMT_RGB4, PIX_FMT_BGR4, 0x10, 0x06, 0x01 )
VLC_RGB( VLC_FOURCC('R','G','B','8'), PIX_FMT_RGB8, PIX_FMT_BGR8, 0xC0, 0x38, 0x07 )
- VLC_RGB( VLC_FOURCC('R','V','1','5'), PIX_FMT_RGB555, PIX_FMT_BGR555, 0x7c00, 0x03e0, 0x001f )
- VLC_RGB( VLC_FOURCC('R','V','1','6'), PIX_FMT_RGB565, PIX_FMT_BGR565, 0xf800, 0x07e0, 0x001f )
- VLC_RGB( VLC_FOURCC('R','V','2','4'), PIX_FMT_RGB24, PIX_FMT_BGR24, 0xff0000, 0x00ff00, 0x0000ff )
+
+ VLC_RGB( VLC_FOURCC('R','V','1','5'), PIX_FMT_BGR555, PIX_FMT_RGB555, 0x7c00, 0x03e0, 0x001f )
+ VLC_RGB( VLC_FOURCC('R','V','1','6'), PIX_FMT_BGR565, PIX_FMT_RGB565, 0xf800, 0x07e0, 0x001f )
+ VLC_RGB( VLC_FOURCC('R','V','2','4'), PIX_FMT_BGR24, PIX_FMT_RGB24, 0xff0000, 0x00ff00, 0x0000ff )
VLC_RGB( VLC_FOURCC('R','V','3','2'), PIX_FMT_RGB32, PIX_FMT_BGR32, 0x00ff0000, 0x0000ff00, 0x000000ff )
VLC_RGB( VLC_FOURCC('R','V','3','2'), PIX_FMT_RGB32_1, PIX_FMT_BGR32_1, 0xff000000, 0x00ff0000, 0x0000ff00 )
diff --git a/modules/codec/png.c b/modules/codec/png.c
index bac19f5..7ed1c03 100644
--- a/modules/codec/png.c
+++ b/modules/codec/png.c
@@ -182,6 +182,9 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
p_dec->fmt_out.video.i_width = i_width;
p_dec->fmt_out.video.i_height = i_height;
p_dec->fmt_out.video.i_aspect = VOUT_ASPECT_FACTOR * i_width / i_height;
+ p_dec->fmt_out.video.i_rmask = 0x000000ff;
+ p_dec->fmt_out.video.i_gmask = 0x0000ff00;
+ p_dec->fmt_out.video.i_bmask = 0x00ff0000;
if( i_color_type == PNG_COLOR_TYPE_PALETTE )
png_set_palette_to_rgb( p_png );
@@ -201,12 +204,6 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
{
p_dec->fmt_out.i_codec = VLC_FOURCC('R','V','2','4');
}
- if( i_color_type & PNG_COLOR_MASK_COLOR &&
- p_dec->fmt_out.i_codec != VLC_FOURCC('R','V','2','4') )
- {
- /* Invert colors */
- png_set_bgr( p_png );
- }
/* Get a new picture */
p_pic = p_dec->pf_vout_buffer_new( p_dec );
diff --git a/modules/video_filter/swscale.c b/modules/video_filter/swscale.c
index 4d400ca..81a9632 100644
--- a/modules/video_filter/swscale.c
+++ b/modules/video_filter/swscale.c
@@ -285,7 +285,7 @@ static int GetParameters( ScalerConfiguration *p_cfg,
}
else if( p_fmti->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
{
- i_fmti = PIX_FMT_RGBA32;
+ i_fmti = PIX_FMT_BGR32;
b_has_ai = true;
}
@@ -296,7 +296,7 @@ static int GetParameters( ScalerConfiguration *p_cfg,
}
else if( p_fmto->i_chroma == VLC_FOURCC( 'R', 'G', 'B', 'A' ) )
{
- i_fmto = PIX_FMT_RGBA32;
+ i_fmto = PIX_FMT_BGR32;
b_has_ao = true;
}
More information about the vlc-devel
mailing list