'vlc'에 해당되는 글 1건

VLC player

linux 2011. 1. 4. 19:57
경기도 개발과제로 4CH 차량용 DVR 을 개발중에 있습니다.

모든 국책이 그렇겠지만 마감 며칠을 앞두고 급하게 개발을 진행하고 있습니다.

원래 이러면 안되지만 제가 있는 조직이 워낙 일정관리가 안되는 조직이라 이런일이 발생하는 군요.

우선 업무 분장을 다음과 같이 나눴습니다.

김무겸 : DVR app 개발
김유석 : VLC player 개발 환경 구축 및 1차 컴파일 테스트. 이후에는 김무겸씨와 함께 VLC 수정
김영태 : 차눈-I 프로젝트 GPS 버전 RTC 드라이버 수정

데모를 위해서 VLC 플레이어를 수정해야 합니다

1. VLC 플레이어 소스 받기
  다음 사이트에서 VLC 소스를 받았습니다.
 
  http://www.videolan.org/vlc/download-sources.html
 
  소스명은 vlc-1.0.2.tar.bz2 입니다.

2. subversion 등록하기
  개발시에는 무조건 서브버전을 사용합니다.

3. dbus lib 설치
   sudo aptitude install libdbus-1-dev libmad0-dev libavcodec-dev libavformat-dev libswscale-dev libpostproc-dev libxcb-shm0-dev libxcb-xv0-dev libxcb-keysyms1-dev liblua5.1-0-dev lua50 liba52-0.7.4-dev libqt4-dev libsdl-dev libsdl-image1.2-dev libfribidi-dev libgcrypt-dev

4. configure
   이번 프로젝트에서는 QT 나 skin2 를 사용할 예정이 아니므로 비활성화 시켰습니다.
  ./configure --prefix=$PWD/output --disable-qt4 --disable-skins2 --enable-xosd --with-x --enable-debug

5. make
  make

6. install
  make install


=======================
디버깅 및 분석
=======================

아래 문서 참조하시면 좀 더 편할 겁니다.

http://wiki.videolan.org/Documentation:Hacker%27s_Guide




모든 app 의 시작은 main() 입니다. vlc 에서는 다음 파일에서 부터 시작합니다.

vlc.c:main()

main() 을 살펴보면 처음부분은 모두 환경 정리하는 코드입니다.

로케일, 인터럽트 핸들링 등등 그 이후에 src/control/core.c:libvlc_new() 를 호출합니다. 이 함수가 참 중요한 함수로 생각됩니다.

libvlc_new() ===
 libvlc_new() 로 들어가면 libvlc_InternalCreate(); 를 호출하여 libvlc_init_t 구조체를 생성하는데 이 구조체가 참 중요한 역활을 할 것으로 추정합니다. 어떤 역활을 하는지는 나중에 살펴보면 알겠지요.

 libvlc_InternalInit() 를 호출하여 이전에 생성한 구조체들을 초기화 하거나 CPU 가 무엇인지등을 체크하고 옵션을 파싱하는 등의 역활을 수행합니다.

__vlc_object_create() : vlc 오브젝트를 생성하고 초기화 해 줍니다.

==========================================
libvlc_new()
  vlc app 을 위한 각종 자료구조등을 생성하는 역활을 합니다. 이 함수 시작하면 다음 문장이 있는데 vlc 에서 중요하게 사용되는 internal instance 를 생성하는 역활을 수행합니다.

    libvlc_int_t *p_libvlc_int = libvlc_InternalCreate(); => 요 함수 통과하면 instance 생성하고 기본값으로 설정해 줍니다.

   그러고 나서 libvlc_InternalInit() 를 호출해서 필요한 설정값을 제대로 채워서 만들어 줍니다.

   방금전에 말한 요함수 libvlc_InternalInit() 요거 소스 살펴보면 딱 감이 옵니다. 아주 중요한 함수입니다.


 

1. 윈도우 생성용 함수
CreateWindow()
이 함수에서 기본창을 생성해 줍니다.

2. 윈도우에 영상을 그리는 함수
DisplayVideo()
이 함수가 계속 호출되면서 영상을 해당 윈도우에 그려 줍니다.
 

'linux' 카테고리의 다른 글

media player 개발  (0) 2011.02.07
X window programming site  (0) 2011.01.10
subversion  (0) 2011.01.04
vplay  (0) 2010.10.08
오디오 코덱 드라이버 개발할 때 업무 순서  (0) 2010.10.08
블로그 이미지

김유석0

,