Q&A

  • TVideo의 한계성질문입니다.
간단한 화상챗 프로그램을 만들었습니다.
우선 TVideo와 Indy 를 사용하였습니다.

화상패킷이 만들어지는
TVideo 콜백 안에서하는일은

lpvhdr.lpData->bmp 변환->jpg 변환-> jpg 압축->메모리스트림 담기->
메모리스트림->서버와 클라이이언트간의 지정된 Record Set 패킷안에 담기->Indy 날림

화상패킷을 받아들이는 Indy Client 에선

지정된 RecordSet 을 jpg로 변환 Image 콤포넌트에 뿌림

이런식으로 일을 처리하게끔해놓았습니다.
대충 눈에 티가안날정도로 jpg를 압축하니 한패킷당 4000 바이트 이내가 나오는데
질문1) 화상에 무리가가지않고 더이상 줄이는 방법은 없는지요?

그리고 콜백함수내에 매번 패킷을 보내는게아니라 5번에 한번씩보내도록 해놓았는데
이또한 Cpu점유율이 높진않았지만 무시할수준은 아닙니다.
질문 2) 위와같은 방법으로 말고 다른방법으로  Cpu 점유율은 낮출순 없는지요?

lpvhdr.lpData->bmp->jpg->jpg 압축->Memory Stream->패킷에담기

꽤많은 가공과정을 거칩니다 위와같이하니 화상패킷용량자체는 1/10 수준으로 줄었지만
이또한 개선과정이 필요할듯합니다
질문 3) 가공과정을 줄이고또한 용량또한 줄일방법은 없는지요?

나름대로 고생해서 만들었지만 선뜻 다른사람에게 써보라고하기엔
너무 부끄럽습니다.
개선과정이있으면 여지없이 지적해주십시요


ps) 화상패킷을 틀린부분만 날리는 방법이있다고했는데 TVideo로는 어디로가야할지모르겠습니다.

2  COMMENTS
  • Profile
    채팅 2005.10.29 05:47
    bmp를 jpeg로 압축하고 다시 압축할 필요가 있을까요?
    jpg자체가 압축알고리듬을 사용하므로 한번더 압축하더라도 큰 효과가없을 것 같군요 (jpg를 zip으로 압축해보면 큰 차이가 없습니다.)
    그냥 bmp -압축stream-> 클라이언트에서 bmp복원 보여주기 하는 것으로 충분할 것 같군요


  • Profile
    이중철 2005.10.29 04:12
    마지막 질문내용만요

    Wavelet 변환 알고리즘이라는 것이 있습니다.

    뭐 내용은 잘 모르겠고 하여간 이것을 기반으로 만들어진것이

    H.264L H.264 이라는 것이고

    H.264L은 JPEG2000 이라고도 합니다.

    H.264 로 전송하면 변환된 부문만 전송(이게 맞나 DCP라고 하는 예측 패턴? 일단 저도 잘 모름ㅠㅠ)이

    되므로 매우 적은양의 패킷을 보냅니다.

    H.264로 압축하는 것은 PC로 하면 1시간 동영상을 압출하는데 6시간 이상 걸린다고 하네요

    참고로 압축이 MPEG보다도 훨씬 많이 되더라도 H.264가 화질이 더 좋다고 합니다.

    그리고 JPEG2000 포맷도 JPEG하고 같은 사이즈의 압축일때 JPEG보다 화질은 더 좋다고 합니다.

    참고로 Wavelet의 압축스텝이 있는데 높이면 높일수로 압축이 됩니다

    화질이요 글쎄요 ㅠㅠ 한번도 보지 못했으니 어떤지는 몰라요

    ^^ 일단 압축률 높이면 많이 작아지겠죠

    어줍잖은 지식으로 답변했네요 제가 이쪽분야가 아니라서 ^^