diff --git a/trunk/src/core/srs_core.cpp b/trunk/src/core/srs_core.cpp index 5cd92389a..9d600b6b5 100644 --- a/trunk/src/core/srs_core.cpp +++ b/trunk/src/core/srs_core.cpp @@ -85,3 +85,22 @@ std::string srs_dns_resolve(std::string host) return ipv4; } +bool srs_is_little_endian() +{ + // convert to network(big-endian) order, if not equals, + // the system is little-endian, so need to convert the int64 + static int little_endian_check = -1; + + if(little_endian_check == -1) { + union { + int32_t i; + int8_t c; + } little_check_union; + + little_check_union.i = 0x01; + little_endian_check = little_check_union.c; + } + + return (little_endian_check == 1); +} + diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 0dfce3578..09ffa95e1 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -99,6 +99,8 @@ extern void srs_update_system_time_ms(); extern std::string srs_replace(std::string str, std::string old_str, std::string new_str); // dns resolve utility, return the resolved ip address. extern std::string srs_dns_resolve(std::string host); +// whether system is little endian +extern bool srs_is_little_endian(); /** * disable copy constructor of class diff --git a/trunk/src/kernel/srs_kernel_stream.cpp b/trunk/src/kernel/srs_kernel_stream.cpp index 2137e30df..2f16560bc 100644 --- a/trunk/src/kernel/srs_kernel_stream.cpp +++ b/trunk/src/kernel/srs_kernel_stream.cpp @@ -30,6 +30,9 @@ SrsStream::SrsStream() { p = bytes = NULL; size = 0; + + // TODO: support both little and big endian. + srs_assert(srs_is_little_endian()); } SrsStream::~SrsStream() diff --git a/trunk/src/main/srs_main_server.cpp b/trunk/src/main/srs_main_server.cpp index b8534dd96..271a876ec 100644 --- a/trunk/src/main/srs_main_server.cpp +++ b/trunk/src/main/srs_main_server.cpp @@ -53,6 +53,9 @@ void handler(int signo) int main(int argc, char** argv) { int ret = ERROR_SUCCESS; + + // TODO: support both little and big endian. + srs_assert(srs_is_little_endian()); #ifdef SRS_GPERF_MP HeapProfilerStart("gperf.srs.gmp");