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
[46944] Re:Re:이미지 용량이 자꾸 커집니다. ( 영상 소켓 )
신명준 [k1bad] 1377 읽음    2006-11-01 14:37
답변 감사드립니다.^^
다른 문제가 아니고 영상의 크기를 줄이니 해결되었습니다.
결국 큰 영상을 클라이언트에서 보려면 jpg파일을 분할해서 보내야 할 것 같습니다.
stretchdraw를 하니 영상이 많이 깨지고요...
TMemoryStream을 분할해서 보내고 나중에 합쳐서 디스플레이 하는
작업이 필요할 것 같습니다.
쓰레드로 큐를 만들라는 이야기를 봤는데 도무지 감이 안오네요
분할하는 방법부터 모르니~~ 
조언좀 부탁드리겠습니다.

유영인  Cuperido 님이 쓰신 글 :
: 안녕하세요
:
: 우선 JpegImage를 해제해 주는 부분이 코드에서 보이지 않네요.
: 함수 아래에 delete jpg1; 부분을 추가해 주시는 것이 좋을것 같고요.
:
: 그리고 MemoryStream의 누수가 걱정되신다면
: (빌더 버젼에 따라서 MemoryStream 누수 버그가 있다는 리포트를 봤습니다)
:
: #include <memory>
: 헤더를 추가해 주시고,
:
: std::auto_ptr<TMemoryStream> rstream(new TMemoryStream);
: 이런식으로 선언을 해서 사용하신다면, MemoryStream 도
: 자동 해제가 될 수 있도록 사용할 수 있습니다.
:
: 또한, 만약 소켓에서 받는 통신이 Thread 형식이라면,
: 전역 변수인 rstream에 동시에 접근이 가능하지 않도록
: CriticalSection 등의 장치를 해주셔야 합니다.
:
:
: cuperido
:
:
: 신명준 님이 쓰신 글 :
: : 일반적인 방법으로 화상 통신을 구현하고 있습니다.
: :
: : 서버측에서 영상을  캡쳐를 하고 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:이미지 용량이 자꾸 커집니다. ( 영상 소켓 ) 신명준 1377 2006/11/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.