본문 바로가기

YUV 포멧 YUV 포멧에서 Y은 휘도, UV은 색상을 표현하며, 색과 빛을 별도로 구성한다. 사람은 밝기에 더 민감하므로 Y에 데이터를 더 많이 할당하였다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ YUV 포멧 형식에 따라 데이터 구성이 조금씩 달라진다. YUV 444: 각각 4 byte 사용 YUV 422: Y가 4 byte, UV는 각 2 byte 사용 YUV 411: Y가 4 byte, UV는 각 1 byte 사용 YUV 420: 데이터 크기는 411과 동일하지만 Y을 반으로 자르고 UV 사이에 배치한다. Y0 U Y1 V Y: 명암 V: Cb, 색에서 파란 성분 U: Cr, 색에서 붉은 성분 YUV와 RGV 간에 변환하는 수식 YUV --> RGB R =.. 더보기
ThreadPool 개념과 구조 들어가기 Thread Pool은 여러 개의 쓰레드를 두고 사용자 요청이 오면 쓰레드에 할당하여 작업을 수행하는 프로그래밍 기법을 말한다. Thread 여러 개를 Pool에 놓아두고 필요에 의해 꺼내쓰고, 다 쓰면 다시 Pool에 넣어두는 개념이다. 이런 비슷한 것이 BufferPool이라는 것도 있다. 쓰레드는 생성하는데 자원이 많이 필요하며, Context Switching에 의한 성능 저하가 발생한다. 그렇기 때문에 Thread Pool에 미리 thread를 생성해두고, 생성된 쓰레드로 사용을 제한하면, 시스템 자원을 효율적으로 사용할 수 있게 된다. 작성자: http://ospace.tistory.com/,2011.01.31 (ospace114@empal.com) ThreadPool 요구사항 Thr.. 더보기
Chain of responsibility 들어가기 하나의 요청을 일련의 여러 객체에게 순서로 요청을 처리하며 요청을 각각의 객체로 전달이 되며, 중간에 요청 처리가 중단될 수도 있다. 일련의 여러 객체는 동적으로 구성이 가능하다. 작성자: http://ospace.tistory.com/,2010.10.22 (ospace114@empal.com) 코드 기본형태 기본 클래스로 연쇄 체인을 관리하는 객체 import java.util.* abstract class Logger { public enum Cat { ERR, NOTICE, DEBUG } protected Cat mask protected Logger next; // 다음 연쇄되는 객체 저장용 public void setNext ( Logger next ) { this.next = next.. 더보기
Mina로 본 네트웍 프레임워크 들어가기 여기서는 비동기 기반의 네트워크 프레임워크 구조에 대해서 다루려고 한다. Mina에 대해 깊숙히 분석하기 위한 목적도 아니다. 비동기 프레임워크에 대해 필요한 사항이나 고려사항에서 아는데로 다루고려 한다. 작성자: http://ospace.tistory.com/,2010.10.22 (ospace114@empal.com) 고려사항 비동기 기반이기 때문에 메시지 전달 처리에 대한 고려가 필요하다. 비동기 기반에 처리를 할 경우에는 이벤트가 필요하다. 네트워크 객체에서는 하위에 소켓과 상위 프로그램 간에 필요한 이벤트 종류를 파악해야 한다. 이벤트 종류 먼저 어떤 종류의 이벤트가 필요한지 파악해 보자. 일단 이벤트의 방향에 따라서 구분되야 한다. 즉, 소켓에서 프로그램 방향과 프로그램에서 소켓 방향이.. 더보기
MFC 메시지맵 구조 MFC에서 윈도우 메시지 처리하는 구조는 독특해보였다. C++이지만 전혀 OOP형태가 아닌 구조였다. 이는 처음 MFC을 접하면서 느낀 부분이였다. 그리고 이 구조는 C++의 가상함수에 의한 성능하락과 메모리 사용 증가 문제점을 극뽁(?)하고자 대안으로 사용한 방법임을 알게되었다. 언젠가 이 메시지 맵 구조를 파악해보리라했는데 시간이 너무 많이 지나게 되었다. 늦었지만, 최근 나름 이를 정리해서 올리려고 한다. 작성:http://ospace.tistory.com/(ospace114@empal.com) 2012.01.04 기본구조 아래 구조는 나름대로 단순화하고 필요한 부분만 추가하였다. MFC와 비교하기 어려울 수 있지만 이해를 돕기위해서 수정하였다. MessageTarget 이 핵심 부분이다. 그리고 .. 더보기
errno같은 리턴 에러값 프레임워크 들어가기 기존 c에서 사용하는 에러 반환은 errno을 사용하고 있다. 이는 시스템 내에서 사용하는 구조이다. 개발하는 프로그램에서 errno같은 에러처리 구조를 만들려고 한다. 작성자: http://ospace.tistory.com/ ,2011.11.08 (ospace114@empal.com) 요구 사항 thread-safe 새로운 에러 코드 유지보수 쉽게함 에러 코드를 문자열로 변환 다국어 지원 Thread-safe 사용 방안으로 기존 errno을 재활용과 TLS(Thread Local Storage)을 사용 가능하다. 그리고, 반환 값 자체를 에러 코드로 사용한다. 기존 errno 사용 errno은 리눅스와 윈도우 둘 다 지원한다. 그러나 오래된 운영체제 버전에서는 thread-safe하지 않을 수.. 더보기
함수 호출과정 분석 C와 C++에서 함수 호출하는 과정을 어셈블리 수준에서 살펴볼려고 한다. 이는 나중에 함수 호출 규약을 살펴볼때 중요한 기반 지식이 되므로 한번은 꼭 살펴보는 것이 좋다. 이제 함수 호출 과정에 대한 여행을 떠나보자. 작성: http://ospace.tistory.com/(ospace114@empal.com), 2010.12.28 샘플 소스 코드 여기서 사용할 샘플 코드는 아래와 같다. 간단한 함수와 클래스의 맴버함수를 사용했다. 이 글에서는 C에 대한 호출과 C++에 대한 호출을 살펴볼 예정이다. 사실 기본적인 골격은 같지만 C++인 경우 this객체에 대한 처리가 추가되었을 뿐이다. 이 부분에 대한 차이만 있다. 각 함수는 간단한 인자를 더해서 그 결과를 반환하는 형태이다. 함수 호출에 대해서 단계별.. 더보기
코드 문서화 작성: http://ospace.tistory.com/,2011.01.07 (ospace114@empal.com) 아래 내용은 예전에 작성한 내용이다. 다시 조만간 정리해야할 것 같다. Doxygen도 사용하기 조금 복잡한 형태이다. 다른 표기형태도 고려가 필요하다. Doxygen 헤더파일 주요 설명 /* \헤더파일 대표 이름 !헤드라인 주요설명 -.\ \n -.\ \n */ 클래스나 구조체 설명 /** 타이틀 설명 \auth 작성자 \todo 해야할일 */ 함수 설명 //! 타이틀 및 간력 설명 //! 추가설명 //! \return 리턴값 int func (int n1, ///< 인자1 설명 int n2, ///< 인자2 설명 ) { int num; ///< 변수명 } 기타 /** 여러줄 설명 */ /.. 더보기

반응형