C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46931] 이미지 용량이 자꾸 커집니다. ( 영상 소켓 )
신명준 [k1bad] 1212 읽음    2006-10-31 15:54
일반적인 방법으로 화상 통신을 구현하고 있습니다.

서버측에서 영상을  캡쳐를 하고 JPEG로 만들어서 클라이언트로 날려줍니다.

지금은 만드는 과정이라 연속영상이 아니라 버튼을 누르면 한 프레임씩

캡쳐하도록하였는데 서버에서 데이터를 날려주기 전에 영상을 저장하고 (a.jpg)

클라이언트에서 받은 프레임을 파일로 저장해서(b.jpg) 비교를 하고 있습니다.

버튼을 누를때마다 클라이언트의 화면이 변하지 않더라구요

그래서 찾아보니까 전송된 이미지가 계속 누적되고 있습니다.

b.jpg 용량이 프레임수 만큼 계속 누적이 됩니다. (25k + 24k + 25k ......  )

아무래도 TMemoryStream을 사용하면서 포인터가 계속 증가하는것 같습니다.

그렇다고 " rstream->Position = 0; " 를 아무곳에나 넣어주니깐 에러가 나더라구요

아래는 클라이언트 소켓에서 데이터를 읽고 디스플레이 하는 부분입니다.

void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket)
{
        TJPEGImage *jpg1 = new TJPEGImage();
        int len=Socket->ReceiveLength();
        Socket->ReceiveBuf(temp,len);

        rstream->Write(temp,len);
        rstream->Position = 0;

        jpg1->LoadFromStream(rstream);
        Edit2->Text=rstream->Position;
        jpg1->SaveToFile("b.jpg");
        PaintBox322->Canvas->Draw(0,0,jpg1);
}
//---------------------------------------------------------------------------

첫 프레임만 동작하고 두번째부터는 화면이 갱신되지 않습니다.
스트림에 포인터 문제인것 같습니다. 수정좀 부탁드리겠습니다.

+ -

관련 글 리스트
46931 이미지 용량이 자꾸 커집니다. ( 영상 소켓 ) 신명준 1212 2006/10/31
46933     Re:이미지 용량이 자꾸 커집니다. ( 영상 소켓 ) 유영인 Cuperido 1235 2006/10/31
46944         Re:Re:이미지 용량이 자꾸 커집니다. ( 영상 소켓 ) 신명준 1378 2006/11/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.