Skip to content

Commit

Permalink
added: 16-bit buffer byteswap function in EndianSwap
Browse files Browse the repository at this point in the history
  • Loading branch information
anssih committed May 17, 2012
1 parent 4d4d662 commit a60574b
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
42 changes: 42 additions & 0 deletions xbmc/utils/EndianSwap.cpp
@@ -0,0 +1,42 @@
/*
* Copyright (C) 2012 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*/

#include "EndianSwap.h"

/* based on libavformat/spdif.c */
void Endian_Swap16_buf(uint16_t *dst, uint16_t *src, int w)
{
int i;

for (i = 0; i + 8 <= w; i += 8) {
dst[i + 0] = Endian_Swap16(src[i + 0]);
dst[i + 1] = Endian_Swap16(src[i + 1]);
dst[i + 2] = Endian_Swap16(src[i + 2]);
dst[i + 3] = Endian_Swap16(src[i + 3]);
dst[i + 4] = Endian_Swap16(src[i + 4]);
dst[i + 5] = Endian_Swap16(src[i + 5]);
dst[i + 6] = Endian_Swap16(src[i + 6]);
dst[i + 7] = Endian_Swap16(src[i + 7]);
}

for (; i < w; i++)
dst[i + 0] = Endian_Swap16(src[i + 0]);
}

4 changes: 3 additions & 1 deletion xbmc/utils/EndianSwap.h
Expand Up @@ -19,7 +19,7 @@
*
*/

/* Functions taken from SDL (SDL_endian.h) */
/* Endian_SwapXX functions taken from SDL (SDL_endian.h) */

#ifndef __ENDIAN_SWAP_H__
#define __ENDIAN_SWAP_H__
Expand Down Expand Up @@ -83,6 +83,8 @@ static __inline__ uint64_t Endian_Swap64(uint64_t x) {

}

void Endian_Swap16_buf(uint16_t *dst, uint16_t *src, int w);

#ifndef WORDS_BIGENDIAN
#define Endian_SwapLE16(X) (X)
#define Endian_SwapLE32(X) (X)
Expand Down
1 change: 1 addition & 0 deletions xbmc/utils/Makefile
Expand Up @@ -11,6 +11,7 @@ SRCS=AlarmClock.cpp \
CryptThreading.cpp \
DownloadQueue.cpp \
DownloadQueueManager.cpp \
EndianSwap.cpp \
Fanart.cpp \
fastmemcpy.c \
fastmemcpy-arm.S \
Expand Down

0 comments on commit a60574b

Please sign in to comment.