IJG jpeg lib의 사용과 mmap
글쓴이: masician / 작성시간: 토, 2005/09/03 - 3:23오후
IJG(independent jpeg group)의 jpeg library를 사용하고 있습니다. 이 라이브러리는 raw 이미지를 jpeg으로 압축할 때 출력을 FILE* 타입으로 하고 있습니다.
- IJG : http://www.ijg.org/
/* file create/open, note to "wb" */ jpg_fp = fopen("tempw.jpg", "wb"); if (!jpg_fp) { perror("fopen"); return; } jpeg_create_compress(&cinfo); jpeg_stdio_dest(&cinfo, jpg_fp);
문제점) 저는 1초에 수 십번 정도 webcam으로 들어오는 영상을 jpeg 압축을 수행하고, 그 결과를 TCP를 통해 호스트에 보낼 생각인데, 파일 형태로 read/write 하는경우 그 효율이 좋지 않을 것 같습니다.
나름대로 해결책으로 생각한 것은 mmap을 사용하여 메모리의 일부를 파일처럼 사용하는 것입니다. 그러나 mmap은 FILE* 형태의 파일 핸들을 사용하는 것이 아니라 int 형태의 file descriptor를 사용하기때문에 어떻게 해결해야할지 모르겠네요.
Forums:
으음.. 프로그래밍에 대해선 모르지만.실시간으로 데이터를 내보내기
으음.. 프로그래밍에 대해선 모르지만.
실시간으로 데이터를 내보내기 위해선 UDP 를 써야 하지 않을까요?
말씀하신 작업같으면 거의 스트리밍수준인데.
TCP 로는 느리지 않을까 생각하는데요...
Re: IJG jpeg lib의 사용과 mmap
fopen(3)으로 연 것은 fileno(3)를 통해 정수값인 파일기술자로 변경할 수 있습니다. 반대의 경우, 즉 open(2)으로 연 것은 fdopen(3)으로 다시 열어서 FILE * 타입을 만들어줄 수도 있습니다.
그리고 위에 분도 말씀하셨지만, 실시간 영상이라면, TCP보단 UDP를 쓰는 것이 낫겠습니다.
----
http://nohmad.tumblr.com/
Re: IJG jpeg lib의 사용과 mmap
감사합니다^^
원래 UDP를 사용하여 구현하려고 하였는데, 압축된 영상이 쪼개져서 전송되게 되게 되는데 수신부에서 올바르게 처리하기 위해서는 UDP로는 해야할 것(쪼개진 내용이 순서대로 들어오지 않기 때문에^^)이 너무 많아서 TCP로 구현하였습니다. 현재는 그럭저럭 퍼포먼스가 나오지만 결코 좋은 방법은 아닌 것 같네요. 혹시 유사한 경험이 있으신 분들의 조언이 필요할 것 같습니다.
wavelet 에 대해서 한번 찾아보시면 도움이 되실지 모르겠습니다.
wavelet 에 대해서 한번 찾아보시면 도움이 되실지 모르겠습니다.
작성자님 저에게 라이브러리 파일좀 보내주세요~
저도 님하고 똑같은 프로그램을 구현하려고 라이브러리를 쓰고 있는데
라이브러리를 인클루드 시키면 찾지 못합니다.
라이브러리 파일과 인클루드 시키는 방법좀 알려주세요
개발환경은 visual studio 2005 입니다. 제 메일은 skypraza@paran.com 입니다. 그럼 수고하세요
댓글 달기