os/mm/mmplugins/lib3gp/impl/src/endian.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include <3gplibrary/mp4config.h>
sl@0
    17
sl@0
    18
/*
sl@0
    19
 * Function:
sl@0
    20
 *
sl@0
    21
 *   mp4_u16 u16endian(mp4_u16 u)
sl@0
    22
 *
sl@0
    23
 * Description:
sl@0
    24
 *
sl@0
    25
 *   This function converts the input parameter u between network byte
sl@0
    26
 *   order (big endian) and current computer byte order.
sl@0
    27
 *
sl@0
    28
 *   Note: Intel based Windows system is little endian.
sl@0
    29
 *         ARM based Symbian OS is little endian.
sl@0
    30
 *
sl@0
    31
 * Parameters:
sl@0
    32
 *
sl@0
    33
 *   u     Input value
sl@0
    34
 *
sl@0
    35
 * Return value:
sl@0
    36
 *
sl@0
    37
 *   Converted value
sl@0
    38
 *
sl@0
    39
 */
sl@0
    40
mp4_u16 u16endian(mp4_u16 u)
sl@0
    41
{
sl@0
    42
  mp4_u16 result;
sl@0
    43
sl@0
    44
  ((mp4_u8 *)&result)[0] = ((mp4_u8 *)&u)[1];
sl@0
    45
  ((mp4_u8 *)&result)[1] = ((mp4_u8 *)&u)[0];
sl@0
    46
sl@0
    47
  return result;
sl@0
    48
}
sl@0
    49
sl@0
    50
sl@0
    51
/*
sl@0
    52
 * Function:
sl@0
    53
 *
sl@0
    54
 *   mp4_u32 u32endian(mp4_u32 u)
sl@0
    55
 *
sl@0
    56
 * Description:
sl@0
    57
 *
sl@0
    58
 *   This function converts the input parameter u between network byte
sl@0
    59
 *   order (big endian) and current computer byte order.
sl@0
    60
 *
sl@0
    61
 *   Note: Intel based Windows system is little endian.
sl@0
    62
 *         ARM based Symbian OS is little endian.
sl@0
    63
 *
sl@0
    64
 * Parameters:
sl@0
    65
 *
sl@0
    66
 *   u     Input value
sl@0
    67
 *
sl@0
    68
 * Return value:
sl@0
    69
 *
sl@0
    70
 *   Converted value
sl@0
    71
 *
sl@0
    72
 */
sl@0
    73
mp4_u32 u32endian(mp4_u32 u)
sl@0
    74
{
sl@0
    75
  mp4_u32 result;
sl@0
    76
sl@0
    77
  ((mp4_u8 *)&result)[0] = ((mp4_u8 *)&u)[3];
sl@0
    78
  ((mp4_u8 *)&result)[1] = ((mp4_u8 *)&u)[2];
sl@0
    79
  ((mp4_u8 *)&result)[2] = ((mp4_u8 *)&u)[1];
sl@0
    80
  ((mp4_u8 *)&result)[3] = ((mp4_u8 *)&u)[0];
sl@0
    81
sl@0
    82
  return result;
sl@0
    83
}
sl@0
    84
sl@0
    85
sl@0
    86
/*
sl@0
    87
 * Function:
sl@0
    88
 *
sl@0
    89
 *   mp4_i32 i32endian(mp4_i32 i)
sl@0
    90
 *
sl@0
    91
 * Description:
sl@0
    92
 *
sl@0
    93
 *   This function converts the input parameter i between network byte
sl@0
    94
 *   order (big endian) and current computer byte order.
sl@0
    95
 *
sl@0
    96
 *   Note: Intel based Windows system is little endian.
sl@0
    97
 *         ARM based Symbian OS is little endian.
sl@0
    98
 *
sl@0
    99
 * Parameters:
sl@0
   100
 *
sl@0
   101
 *   i     Input value
sl@0
   102
 *
sl@0
   103
 * Return value:
sl@0
   104
 *
sl@0
   105
 *   Converted value
sl@0
   106
 *
sl@0
   107
 */
sl@0
   108
mp4_i32 i32endian(mp4_i32 i)
sl@0
   109
{
sl@0
   110
  mp4_i32 result;
sl@0
   111
sl@0
   112
  ((mp4_u8 *)&result)[0] = ((mp4_u8 *)&i)[3];
sl@0
   113
  ((mp4_u8 *)&result)[1] = ((mp4_u8 *)&i)[2];
sl@0
   114
  ((mp4_u8 *)&result)[2] = ((mp4_u8 *)&i)[1];
sl@0
   115
  ((mp4_u8 *)&result)[3] = ((mp4_u8 *)&i)[0];
sl@0
   116
sl@0
   117
  return result;
sl@0
   118
}
sl@0
   119
sl@0
   120
sl@0
   121
/*
sl@0
   122
 * Function:
sl@0
   123
 *
sl@0
   124
 *   mp4_u64 u64endian(mp4_u64 u)
sl@0
   125
 *
sl@0
   126
 * Description:
sl@0
   127
 *
sl@0
   128
 *   This function converts the input parameter u between network byte
sl@0
   129
 *   order (big endian) and current computer byte order.
sl@0
   130
 *
sl@0
   131
 *   Note: Intel based Windows system is little endian.
sl@0
   132
 *         ARM based Symbian OS is little endian.
sl@0
   133
 *
sl@0
   134
 * Parameters:
sl@0
   135
 *
sl@0
   136
 *   u     Input value
sl@0
   137
 *
sl@0
   138
 * Return value:
sl@0
   139
 *
sl@0
   140
 *   Converted value
sl@0
   141
 *
sl@0
   142
 */
sl@0
   143
mp4_u64 u64endian(mp4_u64 u)
sl@0
   144
{
sl@0
   145
  mp4_u64 result;
sl@0
   146
sl@0
   147
  ((mp4_u8 *)&result)[0] = ((mp4_u8 *)&u)[7];
sl@0
   148
  ((mp4_u8 *)&result)[1] = ((mp4_u8 *)&u)[6];
sl@0
   149
  ((mp4_u8 *)&result)[2] = ((mp4_u8 *)&u)[5];
sl@0
   150
  ((mp4_u8 *)&result)[3] = ((mp4_u8 *)&u)[4];
sl@0
   151
  ((mp4_u8 *)&result)[4] = ((mp4_u8 *)&u)[3];
sl@0
   152
  ((mp4_u8 *)&result)[5] = ((mp4_u8 *)&u)[2];
sl@0
   153
  ((mp4_u8 *)&result)[6] = ((mp4_u8 *)&u)[1];
sl@0
   154
  ((mp4_u8 *)&result)[7] = ((mp4_u8 *)&u)[0];
sl@0
   155
sl@0
   156
  return result;
sl@0
   157
}
sl@0
   158
sl@0
   159
// End of File