0
ADTS 인코딩 된 aac 파일의 헤더를 읽으려면 어떻게해야합니까? 전체 aac 파일을 읽기 위해 각 프레임의 버퍼 길이를 확보해야합니다. 그러나 나는 올바른 가치를 얻을 수 없습니다. 여기서 헤더를 판독하고, 각 프레임 (비트 30-43)에 대한 버퍼 길이를 얻기 내 코드이며, 빅 엔디안 가정했을 때이 코드로 얻는 FRAMESIZE가 65C++에서 파일에서 ADTS 헤더를 읽는 방법은 무엇입니까?
main(){
ifstream file("audio_adts.m4a", ios::binary);
char header[7],buf[1024];
int framesize;
while(file.read(header,7)) {
memset(buf ,0 , 1024);
/* Get header bit 30 - 42 */
framesize = (header[3]&240|header[4]|header[5]&1);
cout << "Framesize including header: "<<framesize<<endl;
file.read(buf,framesize);
/*Do something with buffer*/
}
return 0;
}
, 45, 45, 45 , -17 그리고 음수 값 때문에 멈 춥니 다. 실제 framesizes 주위 첫 번째 헤더 (200)
Hexdump에서는 다음과 같습니다
가0x000000: ff f9 50 40 01 3f fc
는 어떻게 알 수 있습니까 (당신의 음의 값 오류에 대한 원인) 비트 조작 이런 종류의 일을 부호 확장 문제의 모든 종류에 실행으로
또한,
unsigned char
에char
변경 올바른 가치가 아닌가? 입력은 무엇이며 예상되는 결과는 무엇입니까? – wimh내 편집을 참조하십시오. 프레임의 길이는 약 200 – user2212461
입니다. 따라서 첫 번째 헤더의 경우 65가되지만 200 정도가 될 것입니다. 헤더가 7 바이트이므로 첫 번째 헤더의 hexdump를 게시 할 수 있습니까? – wimh