PCM 오디오 (2 채널, 48kHz, 24 비트)로 엔디안을 바꾸는 프로그램을 만들었지 만 하나의 채널 만 올바르게 바뀌었고 두 번째 엔 여전히 엔디안이 거의 없습니다. CoolEdit 2000에서 출력). 아무도 내 코드에서 잘못된 점을 알려줄 수 있습니까?pcm 오디오의 스왑 엔디안
inline int endian_swap(unsigned int x)
{
unsigned char c1, c2, c3, c4;
c1 = x & 255;
c2 = (x >> 8) & 255;
c3 = (x >> 16) & 255;
c4 = (x >> 24) & 255;
return ((int)c1 << 24) + ((int)c2 << 16) + ((int)c3 << 8) + c4;
}
int main()
{
FILE *fpIn, *fpOut;
short x;
fpIn = fopen("audio.pcm", "rb");
fpOut = fopen("out.pcm", "wb");
int test = sizeof(short);
int count = 0;
int swaped = 0;
while(fread(&x, sizeof(int), 1, fpIn) == 1)
{
swaped = endian_swap(x);
fwrite(&swaped, sizeof(int), 1, fpOut);
}
system("pause");
return 0;
}
감사합니다.
'endian_swap()은 어떻게 구현 되나요? – sharptooth
죄송합니다. – Luke
전에 endian_swap()을 추가하지 않았습니다. 두 버그 (Oli Charlesworth와 mtrw에 언급 됨)의 조합으로 어느 채널도 괜찮아 보입니다. –