[Spice-devel] [PATCH spice-gtk v2] channel-display-mjpeg: Fix encoding for big endian machines

Frediano Ziglio fziglio at redhat.com
Thu Nov 15 20:22:04 UTC 2018


> 
> On Fri, Nov 02, 2018 at 09:38:12AM +0000, Frediano Ziglio wrote:
> > Make sure components are ordered in the same way in memory.
> > This was tested with a virtual MIPS machine.
> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  src/channel-display-mjpeg.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > Changes since v1:
> > - fix typo in commit message title
> > 
> > diff --git a/src/channel-display-mjpeg.c b/src/channel-display-mjpeg.c
> > index 83cd391b..94e56205 100644
> > --- a/src/channel-display-mjpeg.c
> > +++ b/src/channel-display-mjpeg.c
> > @@ -108,7 +108,11 @@ static gboolean mjpeg_decoder_decode_frame(gpointer
> > video_decoder)
> >  
> >  #ifdef JCS_EXTENSIONS
> >      // requires jpeg-turbo
> > +#  if SPICE_ENDIAN == SPICE_ENDIAN_LITTLE
> >      decoder->mjpeg_cinfo.out_color_space = JCS_EXT_BGRX;
> > +#  else
> > +    decoder->mjpeg_cinfo.out_color_space = JCS_EXT_XRGB;
> > +#  endif
>     ^^
> Why the spaces
> 

indentation.

Maybe something like:

    if (SPICE_ENDIAN == SPICE_ENDIAN_LITTLE) {
        decoder->mjpeg_cinfo.out_color_space = JCS_EXT_BGRX;
    } else {
        decoder->mjpeg_cinfo.out_color_space = JCS_EXT_XRGB;
    }

would be better. It looks like less efficient but if the compiler
cannot turn this to just an assignment I would consider more a bug in
the compiler. Also this form has the advantage to compile all code
(big endian machines are neither common nor much tested).

> >  #else
> >  #warning "You should consider building with libjpeg-turbo"
> >      decoder->mjpeg_cinfo.out_color_space = JCS_RGB;

Frediano


More information about the Spice-devel mailing list