Ticket #1024: endianfix-0.19-fixes.diff

File endianfix-0.19-fixes.diff, 4.3 KB (added by bhulsken@…, 20 years ago)

fix mythmusic playback for bigendian systems

  • mythmusic/mythmusic/flacdecoder.cpp

    diff -ru mythplugins/mythmusic/mythmusic/flacdecoder.cpp mythplugins-fix/mythmusic/mythmusic/flacdecoder.cpp
    old new  
    102102            for (channel = 0; channel < chan; channel++)
    103103            {
    104104               sample = (FLAC__int8)buffer[channel][cursamp];
     105#if __BYTE_ORDER == __LITTLE_ENDIAN
    105106               *(output_buf + output_at++) = ((sample >> 0) & 0xff);
     107#else
     108               *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     109#endif
    106110               output_bytes += 1;
    107111            }
    108112        }   
     
    114118            for (channel = 0; channel < chan; channel++)
    115119            {
    116120               sample = (FLAC__int16)buffer[channel][cursamp];             
     121#if __BYTE_ORDER == __LITTLE_ENDIAN
    117122               *(output_buf + output_at++) = ((sample >> 0) & 0xff);
    118123               *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     124#else
     125               *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     126               *(output_buf + output_at++) = ((sample >> 0) & 0xff);
     127#endif
    119128               output_bytes += 2;
    120129            }
    121130        }
  • mythmusic/mythmusic/flacdecoder.h

    diff -ru mythplugins/mythmusic/mythmusic/flacdecoder.h mythplugins-fix/mythmusic/mythmusic/flacdecoder.h
    old new  
    44#define HAVE_INTTYPES_H
    55#include <FLAC/all.h>
    66
     7extern "C" {
     8#include <endian.h>
     9}
     10
    711#include "decoder.h"
    812
    913class Metadata;
  • mythmusic/mythmusic/maddecoder.cpp

    diff -ru mythplugins/mythmusic/mythmusic/maddecoder.cpp mythplugins-fix/mythmusic/mythmusic/maddecoder.cpp
    old new  
    488488            flush();
    489489        }
    490490        sample = fix_sample(16, *left++);
     491#if __BYTE_ORDER == __LITTLE_ENDIAN
    491492        *(output_buf + output_at++) = ((sample >> 0) & 0xff);
    492493        *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     494#else
     495        *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     496        *(output_buf + output_at++) = ((sample >> 0) & 0xff);
     497#endif
    493498        output_bytes += 2;
    494499
    495500        if (channels == 2)
    496501        {
    497502            sample = fix_sample(16, *right++);
     503#if __BYTE_ORDER == __LITTLE_ENDIAN
    498504            *(output_buf + output_at++) = ((sample >> 0) & 0xff);
    499505            *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     506#else
     507            *(output_buf + output_at++) = ((sample >> 8) & 0xff);
     508            *(output_buf + output_at++) = ((sample >> 0) & 0xff);
     509#endif
    500510            output_bytes += 2;
    501511        }
    502512    }
  • mythmusic/mythmusic/maddecoder.h

    diff -ru mythplugins/mythmusic/mythmusic/maddecoder.h mythplugins-fix/mythmusic/mythmusic/maddecoder.h
    old new  
    55
    66extern "C" {
    77#include <mad.h>
     8#include <endian.h>
    89}
    910
    1011class Metadata;
  • mythmusic/mythmusic/vorbisdecoder.cpp

    diff -ru mythplugins/mythmusic/mythmusic/vorbisdecoder.cpp mythplugins-fix/mythmusic/mythmusic/vorbisdecoder.cpp
    old new  
    240240            seekTime = -1.0;
    241241        }
    242242
     243#if __BYTE_ORDER == __LITTLE_ENDIAN
    243244        len = ov_read(&oggfile, (char *) (output_buf + output_at), bks, 0, 2, 1,
    244245                      &section);
     246#else
     247        len = ov_read(&oggfile, (char *) (output_buf + output_at), bks, 1, 2, 1,
     248                      &section);
     249#endif
    245250
    246251        if (len > 0) {
    247252            bitrate = ov_bitrate_instant(&oggfile) / 1000;
  • mythmusic/mythmusic/vorbisdecoder.h

    diff -ru mythplugins/mythmusic/mythmusic/vorbisdecoder.h mythplugins-fix/mythmusic/mythmusic/vorbisdecoder.h
    old new  
    44#include "decoder.h"
    55
    66#include <vorbis/vorbisfile.h>
     7extern "C" {
     8#include <endian.h>
     9}
    710
    811class Metadata;
    912