mirror of
https://github.com/webmproject/libwebp.git
synced 2024-11-20 04:18:26 +01:00
utils: add endian_inl.h
moves the following to this header: - htole*() definitions from bit_writer.c - __BIG_ENDIAN__ fallback define from bit_reader_inl.h Change-Id: I7fff59543f08a70bf8f9ddac849b72ed290471b1
This commit is contained in:
parent
58ab622437
commit
d5104b1ff6
@ -246,10 +246,13 @@ all: ex $(EXTRA_EXAMPLES)
|
|||||||
|
|
||||||
$(EX_FORMAT_DEC_OBJS): %.o: %.h
|
$(EX_FORMAT_DEC_OBJS): %.o: %.h
|
||||||
|
|
||||||
# special dependencies for tree.c/vp8.c/bit_reader.c <-> bit_reader_inl.h
|
# special dependencies:
|
||||||
src/dec/tree.o: src/utils/bit_reader_inl.h
|
# tree.c/vp8.c/bit_reader.c <-> bit_reader_inl.h, endian_inl.h
|
||||||
src/dec/vp8.o: src/utils/bit_reader_inl.h
|
# bit_writer.c <-> endian_inl.h
|
||||||
src/utils/bit_reader.o: src/utils/bit_reader_inl.h
|
src/dec/tree.o: src/utils/bit_reader_inl.h src/utils/endian_inl.h
|
||||||
|
src/dec/vp8.o: src/utils/bit_reader_inl.h src/utils/endian_inl.h
|
||||||
|
src/utils/bit_reader.o: src/utils/bit_reader_inl.h src/utils/endian_inl.h
|
||||||
|
src/utils/bit_writer.o: src/utils/endian_inl.h
|
||||||
|
|
||||||
%.o: %.c $(HDRS)
|
%.o: %.c $(HDRS)
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||||
|
@ -13,6 +13,7 @@ COMMON_SOURCES += bit_reader.h
|
|||||||
COMMON_SOURCES += bit_reader_inl.h
|
COMMON_SOURCES += bit_reader_inl.h
|
||||||
COMMON_SOURCES += color_cache.c
|
COMMON_SOURCES += color_cache.c
|
||||||
COMMON_SOURCES += color_cache.h
|
COMMON_SOURCES += color_cache.h
|
||||||
|
COMMON_SOURCES += endian_inl.h
|
||||||
COMMON_SOURCES += filters.c
|
COMMON_SOURCES += filters.c
|
||||||
COMMON_SOURCES += filters.h
|
COMMON_SOURCES += filters.h
|
||||||
COMMON_SOURCES += huffman.c
|
COMMON_SOURCES += huffman.c
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#define WEBP_UTILS_BIT_READER_INL_H_
|
#define WEBP_UTILS_BIT_READER_INL_H_
|
||||||
|
|
||||||
#include "./bit_reader.h"
|
#include "./bit_reader.h"
|
||||||
|
#include "./endian_inl.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -35,12 +36,6 @@ typedef uint16_t lbit_t;
|
|||||||
typedef uint8_t lbit_t;
|
typedef uint8_t lbit_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// some endian fix (e.g.: mips-gcc doesn't define __BIG_ENDIAN__)
|
|
||||||
#if !defined(__BIG_ENDIAN__) && defined(__BYTE_ORDER__) && \
|
|
||||||
(__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
|
||||||
#define __BIG_ENDIAN__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// gcc 4.3 has builtin functions for swap32/swap64
|
// gcc 4.3 has builtin functions for swap32/swap64
|
||||||
#if defined(__GNUC__) && \
|
#if defined(__GNUC__) && \
|
||||||
(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
|
(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "./bit_writer.h"
|
#include "./bit_writer.h"
|
||||||
|
#include "./endian_inl.h"
|
||||||
#include "./utils.h"
|
#include "./utils.h"
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@ -204,35 +205,6 @@ void VP8BitWriterWipeOut(VP8BitWriter* const bw) {
|
|||||||
#define VP8L_WRITER_BITS (VP8L_WRITER_BYTES * 8)
|
#define VP8L_WRITER_BITS (VP8L_WRITER_BYTES * 8)
|
||||||
#define VP8L_WRITER_MAX_BITS (8 * (int)sizeof(vp8l_atype_t))
|
#define VP8L_WRITER_MAX_BITS (8 * (int)sizeof(vp8l_atype_t))
|
||||||
|
|
||||||
// endian-specific htoleXX() definition
|
|
||||||
// TODO(skal): move this to config.h, and collect all the endian-related code
|
|
||||||
// in a proper .h file
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#if !defined(_M_PPC)
|
|
||||||
#define htole32(x) (x)
|
|
||||||
#define htole16(x) (x)
|
|
||||||
#else // PPC is BIG_ENDIAN
|
|
||||||
#include <stdlib.h>
|
|
||||||
#define htole32(x) (_byteswap_ulong((unsigned long)(x)))
|
|
||||||
#define htole16(x) (_byteswap_ushort((unsigned short)(x)))
|
|
||||||
#endif // _M_PPC
|
|
||||||
#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || \
|
|
||||||
defined(__DragonFly__)
|
|
||||||
#include <sys/endian.h>
|
|
||||||
#elif defined(__APPLE__)
|
|
||||||
#include <libkern/OSByteOrder.h>
|
|
||||||
#define htole32 OSSwapHostToLittleInt32
|
|
||||||
#define htole16 OSSwapHostToLittleInt16
|
|
||||||
#elif defined(__native_client__) && !defined(__GLIBC__)
|
|
||||||
// NaCl without glibc is assumed to be little-endian
|
|
||||||
#define htole32(x) (x)
|
|
||||||
#define htole16(x) (x)
|
|
||||||
#elif defined(__QNX__)
|
|
||||||
#include <net/netbyte.h>
|
|
||||||
#else // pretty much all linux and/or glibc
|
|
||||||
#include <endian.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Returns 1 on success.
|
// Returns 1 on success.
|
||||||
static int VP8LBitWriterResize(VP8LBitWriter* const bw, size_t extra_size) {
|
static int VP8LBitWriterResize(VP8LBitWriter* const bw, size_t extra_size) {
|
||||||
uint8_t* allocated_buf;
|
uint8_t* allocated_buf;
|
||||||
|
50
src/utils/endian_inl.h
Normal file
50
src/utils/endian_inl.h
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// Copyright 2014 Google Inc. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by a BSD-style license
|
||||||
|
// that can be found in the COPYING file in the root of the source
|
||||||
|
// tree. An additional intellectual property rights grant can be found
|
||||||
|
// in the file PATENTS. All contributing project authors may
|
||||||
|
// be found in the AUTHORS file in the root of the source tree.
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Endian related functions.
|
||||||
|
|
||||||
|
#ifndef WEBP_UTILS_ENDIAN_INL_H_
|
||||||
|
#define WEBP_UTILS_ENDIAN_INL_H_
|
||||||
|
|
||||||
|
// some endian fix (e.g.: mips-gcc doesn't define __BIG_ENDIAN__)
|
||||||
|
#if !defined(__BIG_ENDIAN__) && defined(__BYTE_ORDER__) && \
|
||||||
|
(__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||||
|
#define __BIG_ENDIAN__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// endian-specific htoleXX() definition
|
||||||
|
// TODO(skal): add a test for htoleXX() in endian.h and others in autoconf or
|
||||||
|
// remove it and replace with a generic implementation.
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#if !defined(_M_PPC)
|
||||||
|
#define htole32(x) (x)
|
||||||
|
#define htole16(x) (x)
|
||||||
|
#else // PPC is BIG_ENDIAN
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define htole32(x) (_byteswap_ulong((unsigned long)(x)))
|
||||||
|
#define htole16(x) (_byteswap_ushort((unsigned short)(x)))
|
||||||
|
#endif // _M_PPC
|
||||||
|
#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || \
|
||||||
|
defined(__DragonFly__)
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
#include <libkern/OSByteOrder.h>
|
||||||
|
#define htole32 OSSwapHostToLittleInt32
|
||||||
|
#define htole16 OSSwapHostToLittleInt16
|
||||||
|
#elif defined(__native_client__) && !defined(__GLIBC__)
|
||||||
|
// NaCl without glibc is assumed to be little-endian
|
||||||
|
#define htole32(x) (x)
|
||||||
|
#define htole16(x) (x)
|
||||||
|
#elif defined(__QNX__)
|
||||||
|
#include <net/netbyte.h>
|
||||||
|
#else // pretty much all linux and/or glibc
|
||||||
|
#include <endian.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // WEBP_UTILS_ENDIAN_INL_H_
|
Loading…
Reference in New Issue
Block a user