- 64비트 Win7에서 VCi가 죽은 이유는…
- 일상생활들/아이폰4
- 2011. 4. 13. 10:37
- C++, for, While, 오류
32비트에선 문제가 없고, 64비트에서만 문제가 발생해서 OS의 문제라고 쉽게 생각했다.
하지만…
1. 문제의 발단
(웃긴 건 atoi()의 wchar_t 버전은 있다는 거)
따라서, wchar_t에서 atof()를 사용하려면 char로 복사를 한 뒤에 atof()를 사용해야 한다.
2. 문제가 발생한 위치
CString cs=_T("23.976");
int iLen = cs.GetLength();
char *ch = new char[iLen+1];
int i=iLen;
while (i-- >= 0) ch[i] = (char)(cs.GetAt(i));
double d = atof(ch);
delete ch;
오류가 발생한 곳은 6행의 atof().
물론, atof() 자체에 버그가 있는 건 아니고, 인자로 넘어간 *ch가 0으로 정상종료되는 문자열이 아니었던 것이다.
진짜 문제는 5행의 while()에 있었다.
while (i-- >= 0)에서 i를 하나 줄이는 시점은 ch[i]=… 를 실행하기 전인데, 이걸 실행 후라고 착각한 것이다.
즉, 문자열을 복사할 때 "23.976(0)"이 아닌 "(?)23.976"이 복사된 것이고, 이에 따라 atof()는 오류를 발생시킨 것이다.
32비트 OS들에서 문제가 없던 건 단지 운이 좋았던 것 뿐이다. OTL
3. 해결
CString cs=_T("23.976");
int iLen = cs.GetLength();
char *ch = new char[iLen+1];
for (int i=0; i<=iLen; i++)
ch[i] = (char)(cs.GetAt(i));
double d = atof(ch);
delete ch;
지금 코드를 들여다보고 느낀 건데, 왜 저렇게 희안한 구조를 썼는지 모르겠다.
상식적으로 for()를 쓰면 되는데…
'일상생활들 > 아이폰4' 카테고리의 다른 글
앵그리 버드 실사판 광고 (T-Mobile) (1) | 2011.06.11 |
---|---|
<앵그리 버드>의 빨간새는 경상도 싸나이? (0) | 2011.04.24 |
64비트 Win7에서 VCi가 죽은 이유는… (12) | 2011.04.13 |
티스토리 모바일 페이지의 유튜브 동영상 재생불가 원인 확인 결과 (3) | 2011.02.24 |
아이폰 독(Dock) 삽질 개조기 (4) | 2011.02.22 |
VCi vs 다음 팟 인코더 성능 비교 (2) | 2011.02.20 |
-
totzz 2011.04.13 23:05
다시 vci를 쓸수있어서..정말감사한데..예전부터 이상하게 자막파일으 인코딩이 끝나도 입혀지지가안더군요..... 자막이 안보이내요. 계속;;
-
oneniner 2011.04.14 10:56
VCi 의 자막은 입혀지는 형태가 아닐텐데요~
아이폰에 가시면 자막이 내장된 mp4의 경우 플레이 콘트롤 옆에 키보드 모양의 아이콘이 형성이 됩니다.
그걸 터치하시면 자막 선택이 뜰겁니다~ ^^
-
-
totzz 2011.04.14 19:11
[2011.04.14 19:03:37.701] OS Info: Microsoft Windows XP Professional Service Pack 2 (build 2600)
[2011.04.14 19:03:37.794] Mem Info: 2511 MBytes of free physical memory (out of Total 3582 MBytes of physical memory, 29% in use)
[2011.04.14 19:03:37.872] File check completed: ffmpeg, neroAacEnc, MP4Box, mkvextract, OGMDemuxer, normalize, pcmdownmix, MediaInfo
[2011.04.14 19:03:37.966] Option: smaller than 4GB = 0
[2011.04.14 19:03:38.044] Option: Resolution check for iPhone = 5
[2011.04.14 19:03:38.137] Option: Kindness of iPhone = 1
[2011.04.14 19:03:38.137] Option: 30fps check = 0
[2011.04.14 19:03:38.137] Option: Create VCi-DC = 0
[2011.04.14 19:03:38.137] Option: Overwrite VCi-DC to DC = 0
[2011.04.14 19:03:38.137] Option: Pixel Aspect Ratio mode = 2
[2011.04.14 19:03:38.215] Option: Deinterlace = 0
[2011.04.14 19:03:38.215] Option: reencode AAC = 0
[2011.04.14 19:03:38.215] Option: designate Audio Language = 0
[2011.04.14 19:03:38.215] Option: Audio Language = 0
[2011.04.14 19:03:38.215] Option: Normalize Audio Volume = 0
[2011.04.14 19:03:38.215] Option: Big Subtitle = 0
[2011.04.14 19:03:38.215] Option: Temp Folder = C:\Users\Administrator\Desktop\VideoConverter4iPhone_v38e\temp\
[2011.04.14 19:03:38.231] Option: use External Save Folder = 1
[2011.04.14 19:03:38.231] Option: Save Folder = D:\아이튠\iTunes에 자동으로 추가\
[2011.04.14 19:03:38.309] Preparing job: 1 / 1
[2011.04.14 19:03:38.309] GetTickCount() result: 1207291
[2011.04.14 19:03:38.309] Source filename: C:\Users\Administrator\Desktop\House.S07E18.The Dig.HDTV.XviD-LOL.avi
[2011.04.14 19:03:40.493] containder format: AVI
[2011.04.14 19:03:40.493] internal audio count: 1 / internal subtitle count: 0
[2011.04.14 19:03:40.493] video format: MPEG4 Visual
[2011.04.14 19:03:40.493] CString → char* → atof (current FPS): 23.976 → 23.976
[2011.04.14 19:03:40.493] resolution: 624x352 / 23.976 fps / 958804 bps
[2011.04.14 19:03:40.493] Source file size: 349 MByte
[2011.04.14 19:03:40.493] external subtitle file: C:\Users\Administrator\Desktop\House.S07E18.The Dig.HDTV.XviD-LOL.smi
[2011.04.14 19:03:40.493] iInternalAudio = 0
[2011.04.14 19:03:40.493] Converting SAMI subtitle(s) to SRT
[2011.04.14 19:03:40.509] File info: AVI / MPEG4(624x352, 23.976fps, 0.958Mbps) / MP3(int) / SAMI(ext)
[2011.04.14 19:03:40.509] Extracting and Converting audio to PCM
[2011.04.14 19:03:40.509] - C: drive free space: 108,219MB
[2011.04.14 19:04:24.855] Audio extraction finished
[2011.04.14 19:04:24.855] Audio file name: C:\Users\ADMINI~1\Desktop\VIDEOC~1\temp\extractedaudio.wav
[2011.04.14 19:04:24.856] Downmixing PCM audio to 2.0
[2011.04.14 19:04:24.856] - C: drive free space: 107,744MB
[2011.04.14 19:04:27.220] Downmix audio failed
[2011.04.14 19:04:27.220] Converting audio to AAC
[2011.04.14 19:04:27.221] - C: drive free space: 107,744MB
[2011.04.14 19:05:27.250] Audio conversion finished
[2011.04.14 19:05:27.250] AAC Filename: C:\Users\ADMINI~1\Desktop\VIDEOC~1\temp\temp.aac
[2011.04.14 19:05:27.800] MP4Box video option: -add "C:\Users\ADMINI~1\Desktop\HOUSES~1.AVI"#video
[2011.04.14 19:05:27.800] source Pixel Aspect Ratio: 1 (1:1)
[2011.04.14 19:05:27.801] target Pixel Aspect Ratio: 1 (1:1)
[2011.04.14 19:05:27.801] MP4Box option: -ipod -add "C:\Users\ADMINI~1\Desktop\HOUSES~1.AVI"#video:delay=0 -par 1=1:1 -add "C:\Users\ADMINI~1\Desktop\VIDEOC~1\temp\temp.aac":delay=0 "D:\아이튠\ITUNES~1\progressing.mp4"
[2011.04.14 19:05:27.802] Muxing final MP4 file
[2011.04.14 19:05:27.802] - D: drive free space: 55,279MB
[2011.04.14 19:05:37.441] Mux finished
[2011.04.14 19:05:38.371] GetTickCount() result: 1327350
[2011.04.14 19:05:38.371] removing temporary files
[2011.04.14 19:05:38.470] job fnished
약 12회정도 인코딩 반복했지만.. 아이폰내에 플레이콘트롤옆에 키보드모양도없고.. 컴퓨터에서도 자막도 안보이고..자막이란거 자체가 안보이내요..ㄷ뭐가문제일까요 -
totzz 2011.04.15 00:55
혹시나해서 다른자막으로 실험해봤는데 안되내요..일단 저 로그에 사용됬던 자막파일은
http://blog.daum.net/realgasl/1
여기서 받은거에요..매일주소를몰라서;;
참 운영체제는 윈7 32비트입니다. -
Recent comment