Commit 06fc2245 authored by Laurent Aimar's avatar Laurent Aimar

Fixed RGB colors when only RGB masks differ.

parent 81f77b79
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
#include "modules/modules.h" #include "modules/modules.h"
#include <assert.h> #include <assert.h>
#include "vout_pictures.h"
/***************************************************************************** /*****************************************************************************
* Local prototypes * Local prototypes
...@@ -524,6 +525,22 @@ static void vout_Destructor( vlc_object_t * p_this ) ...@@ -524,6 +525,22 @@ static void vout_Destructor( vlc_object_t * p_this )
static int ChromaCreate( vout_thread_t *p_vout ); static int ChromaCreate( vout_thread_t *p_vout );
static void ChromaDestroy( vout_thread_t *p_vout ); static void ChromaDestroy( vout_thread_t *p_vout );
static bool ChromaIsEqual( const picture_heap_t *p_output, const picture_heap_t *p_render )
{
if( !vout_ChromaCmp( p_output->i_chroma, p_render->i_chroma ) )
return false;
if( p_output->i_chroma != FOURCC_RV15 &&
p_output->i_chroma != FOURCC_RV16 &&
p_output->i_chroma != FOURCC_RV24 &&
p_output->i_chroma != FOURCC_RV32 )
return true;
return p_output->i_rmask == p_render->i_rmask &&
p_output->i_gmask == p_render->i_gmask &&
p_output->i_bmask == p_render->i_bmask;
}
static int InitThread( vout_thread_t *p_vout ) static int InitThread( vout_thread_t *p_vout )
{ {
int i, i_aspect_x, i_aspect_y; int i, i_aspect_x, i_aspect_y;
...@@ -624,7 +641,7 @@ static int InitThread( vout_thread_t *p_vout ) ...@@ -624,7 +641,7 @@ static int InitThread( vout_thread_t *p_vout )
* the render buffers, ie same size and chroma */ * the render buffers, ie same size and chroma */
if( ( p_vout->output.i_width == p_vout->render.i_width ) if( ( p_vout->output.i_width == p_vout->render.i_width )
&& ( p_vout->output.i_height == p_vout->render.i_height ) && ( p_vout->output.i_height == p_vout->render.i_height )
&& ( vout_ChromaCmp( p_vout->output.i_chroma, p_vout->render.i_chroma ) ) ) && ( ChromaIsEqual( &p_vout->output, &p_vout->render ) ) )
{ {
/* Cool ! We have direct buffers, we can ask the decoder to /* Cool ! We have direct buffers, we can ask the decoder to
* directly decode into them ! Map the first render buffers to * directly decode into them ! Map the first render buffers to
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment