提交SMOD ATSC IMX APP版本 V122

This commit is contained in:
2026-07-16 14:35:59 +08:00
commit 7601c270d5
485 changed files with 255032 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
/*------------------------------------------------------------------------------
Copyright 2016-2021 Sony Semiconductor Solutions Corporation
Last Updated : 2021/03/17
Modification ID : 20296cf3c58ed20c30b28973676221f35297d656
------------------------------------------------------------------------------*/
#include "sony_common.h"
/* Utility function */
#define MASKUPPER(n) (((n) == 0) ? 0 : (0xFFFFFFFFU << (32 - (n))))
#define MASKLOWER(n) (((n) == 0) ? 0 : (0xFFFFFFFFU >> (32 - (n))))
/* Convert N (<32) bit 2's complement value to 32 bit signed value */
int32_t sony_Convert2SComplement(uint32_t value, uint32_t bitlen)
{
if((bitlen == 0) || (bitlen >= 32)){
return (int32_t)value;
}
if(value & (uint32_t)(1 << (bitlen - 1))){
/* minus value */
return (int32_t)(MASKUPPER(32 - bitlen) | value);
}
else{
/* plus value */
return (int32_t)(MASKLOWER(bitlen) & value);
}
}
uint32_t sony_BitSplitFromByteArray(uint8_t *pArray, uint32_t startBit, uint32_t bitNum)
{
uint32_t value = 0;
uint8_t *pArrayRead;
uint8_t bitRead;
uint32_t lenRemain;
if (!pArray){
return 0;
}
if ((bitNum == 0) || (bitNum > 32)){return 0;}
pArrayRead = pArray + (startBit/8);
bitRead = (uint8_t)(startBit % 8);
lenRemain = bitNum;
if(bitRead != 0){
if(((int32_t)lenRemain) <= 8 - bitRead){
value = (*pArrayRead) >> ((8 - bitRead) - lenRemain);
lenRemain = 0;
}else{
value = *pArrayRead;
pArrayRead++;
lenRemain -= 8 - bitRead;
}
}
while(lenRemain > 0){
if(lenRemain < 8){
value <<= lenRemain;
value |= (*pArrayRead >> (8 - lenRemain));
pArrayRead++;
lenRemain = 0;
}else{
value <<= 8;
value |= (uint32_t)(*pArrayRead);
pArrayRead++;
lenRemain -= 8;
}
}
value &= MASKLOWER(bitNum);
return value;
}