KR101090981B1 - 3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치 - Google Patents

3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치 Download PDF

Info

Publication number
KR101090981B1
KR101090981B1 KR1020110043507A KR20110043507A KR101090981B1 KR 101090981 B1 KR101090981 B1 KR 101090981B1 KR 1020110043507 A KR1020110043507 A KR 1020110043507A KR 20110043507 A KR20110043507 A KR 20110043507A KR 101090981 B1 KR101090981 B1 KR 101090981B1
Authority
KR
South Korea
Prior art keywords
image
layer
buffer
display panel
rgb
Prior art date
Application number
KR1020110043507A
Other languages
English (en)
Inventor
김정진
박철
Original Assignee
주식회사 쓰리디누리
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 쓰리디누리 filed Critical 주식회사 쓰리디누리
Priority to KR1020110043507A priority Critical patent/KR101090981B1/ko
Priority to US13/271,398 priority patent/US8860716B2/en
Priority to JP2011225972A priority patent/JP2012085301A/ja
Priority to CN201110397069.9A priority patent/CN102780892B/zh
Application granted granted Critical
Publication of KR101090981B1 publication Critical patent/KR101090981B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

예컨대 안드로이드와 같은 모바일 운영 플랫폼을 기반으로 하는 휴대형 3차원 디스플레이 장치에서 추가적인 하드웨어 사용을 최소화하면서 소프트웨어에 의해 고속으로 스테레오스코픽 영상신호를 처리하는 방법과, 이를 구현하는 3차원 디스플레이 장치.
영상신호 처리 방법은 디스플레이 패널을 포함하는 하드웨어 수단을 직접 제어하는 커널 계층과, 상기 하드웨어 수단을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 휴대형 단말기에서 구현하기에 적합한 것이다. 먼저 하나 이상의 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하여, 제1 프레임 버퍼에 저장한다. 인코딩된 영상신호를 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원한다. 이어서, YUV 영상신호를 RGB 영상신호로 변환하고, 커널 계층에서 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여, 믹싱된 스테레오스코픽 영상신호를 제2 프레임 버퍼에 저장한다. 마지막으로, 커널 계층에서 제1 및 제2 프레임 버퍼에 저장된 신호들을 오버레이에 의해 하드웨어적으로 합성하여 디스플레이 패널에 전달한다.

Description

3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치{3D Video Signal Processing Method and Portable 3D Display Apparatus Implementing the Same}
본 발명은 영상 표시 장치 및 방법에 관한 것으로서, 보다 상세하게는, 3차원 디스플레이 장치와 이러한 장치에서의 영상신호 처리 방법에 관한 것이다.
인간의 시각 시스템은 많은 깊이 단서(depth cue)를 사용하여 가시공간 내에서 물체들의 상대적인 위치를 파악한다. 이러한 단서는 원근조절(Accommodation), 수렴(Convergence), 양안시차(Binocular Disparity), 운동시차(Motion Parallax) 등의 생리학적 요소와, 선형원근, 음영, 농담원근, 다른 물체에 의한 가림, 텍스쳐 구배, 색상 등의 심리적 요소를 포함한다. 생리학적 깊이 단서들 중에서, 원근조절이란 눈이 3차원 공간의 특정 영역에 초점을 맞추고자 할 때 수정체의 초점거리를 변화시키는 것을 말한다. 원근조절은 수렴과 함께 사용된다. 수렴은 관찰자가 유한의 거리에 있는 점을 주시할 때 두 눈이 모두 안쪽으로 회전하여 두 시선이 주시점에서 교차하는 것을 말한다. 양안시차는 좌우측 눈이 약 65 밀리미터 떨어져 있어서 서로 다른 영상을 받아들인다는 사실에서 기인하는 것으로서, 3차원 장면을 볼 때 좌우측 망막에 투사되는 영상들의 차이를 말한다. 이와 같은 양안시차는 시각 시스템이 깊이 감각 내지 입체시(Stereopsis)에서 사용하는 결정적인 깊이 단서가 된다.
3차원 디스플레이 장치는 위와 같은 인간의 시각 인지 메커니즘을 활용하여 3차원 영상을 표시한다. 다양한 3차원 영상 표시 방식이 제시된 바 있는데, 본 출원이 행해지는 시점에서 기술적 실현가능성과 입체감 표시능력 측면에서 가장 부각되고 있는 것은 스테레오스코픽 방식이라 할 수 있다. 스테레오스코픽 3D 디스플레이 시스템에 있어서는, 사람의 눈과 마찬가지로 약 65 밀리미터 떨어진 두 개의 이미지 센서로 촬영된 2개의 영상을 사람의 좌안과 우안에 독립적으로 입력되게 함으로써, 양안시차를 시뮬레이션하여 깊이 지각 내지 입체시를 가능하게 해준다.
스테레오스코픽 이미지 쌍을 구성하는 2개의 영상 즉, 좌영상과 우영상이 이용자의 좌안과 우안에 각각 정확히 입력되도록 하여 간섭을 일으키지 않도록 하는 것이 필요하다. 간섭을 배제하기 위한 방법으로는 디스플레이 패널에 위상변조판을 장착하여 좌우 영상이 서로 직교하는 편광을 갖도록 하고 사용자가 착용하는 편광 안경에 장착된 편광 필터가 좌영상 및 우영상이 각각 좌안과 우안에만 입력되도록 하는 편광 안경 방식, 좌우 영상을 교대로 디스플레이 패널에 표시하고 사용자의 능동형 안경이 좌안 셔터와 우안 셔터를 교대로 개방되도록 편광 안경 방식, 렌티큘러 렌즈에 의해 빛의 경로를 조절하거나 패럴랙스 배리어에 의해 영상을 부분적으로 가려서 좌우 영상이 좌안과 우안에 각각 전달되도록 하는 방식 등이 사용되고 있다.
본 출원이 행해지는 시점에서 스테레오스코픽 3D 디스플레이 시스템이 가장 널리 실시되는 형태는 텔레비전 수신기라 할 수 있지만, PC용 모니터, 스마트폰, 태블릿PC와 같은 데이터 처리장치에서 스테레오스코픽 3D 디스플레이를 구현하기 위한 시도도 행해지고 있다. 데이터 처리장치에서의 3D 영상신호의 처리는 통상적으로 멀티미디어 플레이어와 같은 응용 프로그램에 의해 이루어진다. 그런데, 원본 영상신호를 단순히 디코딩하고 포맷을 변환하여 재생하는 2D 영상 재생의 경우에 비하여, 3D 영상 재생 시에는 3D 영상신호를 디코딩하여 좌영상과 우영상을 믹싱하는 과정을 수행해야만 하기 때문에 컴퓨팅 부담이 증가된다.
데스크탑 PC나 노트북 PC와 같은 데이터 처리장치에서는 마이크로프로세서의 성능이 충분히 우수하기 때문에 응용 프로그램에 의해 3D 영상신호를 처리하는데 큰 문제가 없다고 할 수 있다. 이에 반하여 스마트폰이나 태블릿PC와 같은 휴대형 기기는 전력소모 및 발열 등을 감안하여 PC용 프로세서에 비하여 처리속도가 느린 임베디드 프로세서를 채택하고 있는데, 이러한 저속의 임베디드 프로세서는 응용 프로그램에 의해 3D 영상신호를 고성능 PC의 마이크로프로세서처럼 처리할 수가 없다. 따라서 휴대형 기기에서 응용 프로그램에 의해 3D 영상을 재생하고자 하는 경우에는 프레임율 내지 비트율이나 해상도를 희생시킬 수밖에 없는 실정이다. 특히, 안드로이드 플랫폼을 채택하는 기기에서와 같이 응용 프로그램이 C/C++과 같은 네이티브 코드로 작성된 것이 아니라 달빅 가상 머신(Dalvic VM)과 같은 가상머신이 처리할 바이너리 코드로 작성되어 경우에는, 실행속도의 문제가 더욱 심각하다고 할 수 있다. 아울러, 응용 프로그램만으로 3D 영상을 재생하고자 하는 경우에는, 프로그램의 크기가 커져서 부팅 시간이 많이 걸리게 되는 문제가 있다.
이를 감안하여, 일부 기기에서는 임베디드 프로세서 이외에 별도의 3D 전용영상신호처리 칩셋을 부가하여 3D 영상을 재생한다. 이를 위하여, 예컨대 안드로이드 플랫폼의 경우에는 HAL(Hardware Abstraction Layer)를 통해 외부 하드웨어를 이용한 영상처리 및 하드웨어 가속 기능을 구현할 수 있도록 되어 있다. 그렇지만, 추가적인 3D 전용 칩셋의 채택은 기기의 원가와 가격을 상승시키고 인쇄기판상의 점유공간의 증가 요인으로 작용하는 문제점이 있다.
본 발명은 이와 같은 문제점을 해결하기 위한 것으로서, 예컨대 안드로이드와 같은 모바일 운영 플랫폼을 기반으로 하는 휴대형 3차원 디스플레이 장치에서 프로세서 이외의 추가적인 하드웨어 사용을 최소화하면서 소프트웨어에 의해 고속으로 스테레오스코픽 영상신호를 처리하는 방법을 제공하는 것을 기술적 과제로 한다.
또한, 본 발명은 모바일 운영 플랫폼을 기반으로 동작하면서, 휴대가 가능하고, 3D 전용 칩과 같은 추가적인 하드웨어를 최소화하면서 고속으로 스테레오스코픽 영상을 재생할 수 있는 3차원 디스플레이 장치를 제공하는 것을 다른 기술적 과제로 한다.
상기 기술적 과제를 달성하기 위한 본 발명의 영상신호 처리 방법의 한 형태에 따르면, 영상신호 처리 방법은 디스플레이 패널을 포함하는 하드웨어 수단과, 상기 하드웨어 수단을 직접 제어하는 커널 계층과, 상기 하드웨어 수단을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 휴대형 단말기에서 구현하기에 적합한 것이다.
영상신호를 처리함에 있어서는, 먼저 하나 이상의 평면 영상 서피스를 응용프로그램/미들웨어 계층에서 생성하여 제1 프레임 버퍼에 저장한다. 그리고, 인코딩된 영상신호를 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원한다. 이어서, 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 커널 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여, 믹싱된 스테레오스코픽 영상신호를 제2 프레임 버퍼에 저장한다. 마지막으로, 커널 계층에서 제1 및 제2 프레임 버퍼에 저장된 신호들을 오버레이에 의해 하드웨어적으로 합성하여 상기 디스플레이 패널에 전달한다. 이에 따라 디스플레이 패널을 통해 스테레오스코픽 3차원 영상이 일반 평면 영상과 함께 표출될 수 있게 된다.
바람직한 실시예에 있어서, 상기 평면 영상 서피스를 제1 프레임 버퍼에 저장함에 있어서는, 먼저 응용프로그램/미들웨어 계층에서 복수의 평면 영상 서피스를 생성한 후, 응용프로그램/미들웨어 계층에서 상기 복수의 평면 영상 서피스를 합성하여 상기 제1 프레임 버퍼에 저장하게 된다.
바람직한 실시예에 있어서, 믹싱된 스테레오스코픽 영상신호를 생성하여 제2 프레임 버퍼에 저장함에 있어서는, 먼저 상기 YUV 영상신호를 RGB 영상신호로 변환하여 믹스 버퍼에 저장한다. 그리고, 믹스 버퍼에 저장된 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱해서 상기 믹싱된 스테레오스코픽 영상신호를 RGB 버퍼에 저장하여, 상기 RGB 버퍼에 저장되어 있는 믹싱된 스테레오스코픽 영상신호가 제2 프레임 버퍼에 전달되도록 하게 된다. 여기서, YUV 영상신호를 RGB 영상신호로 변환하는 것은 커널 계층에서 수행되는 것이 바람직하다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 3차원 디스플레이 장치의 한 형태에 따르면, 3차원 디스플레이 장치는 원본 영상신호를 받아들이고 디멀티플렉싱하여 압축된 영상 신호를 추출하고, 상기 압축된 영상 신호를 디코딩하여 표시하는 것으로서, 전면에 패럴랙스 배리어가 마련되어 있는 디스플레이 패널; 상기 디스플레이 패널을 구동하는 디스플레이 컨트롤러; 상기 디스플레이 컨트롤러를 통하여 상기 디스플레이 패널에 표시될 영상의 적어도 일부를 각각 저장하기 위한 제1 및 제2 프레임 버퍼; 및 상기 디멀티플렉싱 동작과 상기 디코딩 동작을 제어하며, 상기 디스플레이 패널을 직접 제어하는 커널 계층과, 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 프로그램을 실행하는 마이크로프로세서를 구비한다.
상기 마이크로프로세서는 (a) 하나 이상의 일반 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하여 상기 제1 프레임 버퍼에 저장하는 기능과; (b) 인코딩된 영상신호를 상기 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원하는 기능과; (c) 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 커널 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여, 믹싱된 스테레오스코픽 영상신호를 상기 제2 프레임 버퍼에 저장하는 기능과; (d) 상기 커널 계층에서 상기 제1 및 제2 프레임 버퍼에 저장된 신호들을 오버레이에 의해 하드웨어적으로 합성하여 상기 디스플레이 패널에 전달하는 기능;을 수행한다.
위와 같은 영상신호 처리 방법은 예컨대 스마트폰이나 태블릿PC와 같은 디스플레이 장치에 탑재되어 실행될 수 있는 프로그램을 기반으로 구현될 수 있다. 상기 디스플레이 장치는 디스플레이 패널; 상기 디스플레이 패널을 구동하는 디스플레이 컨트롤러; 상기 디스플레이 컨트롤러를 통하여 상기 디스플레이 패널에 표시될 영상의 적어도 일부를 저장하기 위한 제1 및 제2 프레임 버퍼; 상기 디스플레이 패널을 직접 제어하는 커널 계층과 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 계층에 따라 소정을 기능을 수행하는 마이크로프로세서;를 구비하는 것이 바람직하다.
상기 프로그램은 (a) 하나 이상의 일반 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하여 상기 제1 프레임 버퍼에 저장하는 기능; (b) 인코딩된 영상신호를 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원시키는 기능; (c) 상기 YUV 영상신호를 RGB 영상신호로 변환되도록 하고, 상기 커널 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상이 믹싱되도록 하며, 믹싱된 스테레오스코픽 영상신호가 상기 제2 프레임 버퍼에 저장되도록 하는 기능; 및 (d) 상기 커널 계층에서 상기 제1 및 제2 프레임 버퍼에 저장된 신호들이 오버레이에 의해 하드웨어적으로 합성되어 상기 디스플레이 패널에 전달되도록 하는 기능;을 수행할 수 있게 되어 있는 것이 바람직하다.
상기 기술적 과제를 달성하기 위한 본 발명의 영상신호 처리 방법의 다른 형태에 따르면, 영상신호 처리 방법은 디스플레이 패널을 포함하는 하드웨어 수단과, 상기 하드웨어 수단을 직접 제어하는 커널 계층과, 상기 하드웨어 수단을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 휴대형 단말기에서 구현하기에 적합한 것이다.
영상신호를 처리함에 있어서는, 먼저 하나 이상의 평면 영상 서피스를 생성하여, 평면 영상 레이어 버퍼에 저장한다. 그리고, 인코딩된 영상신호를 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원한다. 이어서, 커널 계층에서 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 응용프로그램/미들웨어 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여 믹싱된 스테레오스코픽 영상신호를 입체 영상 레이어 버퍼에 저장한다. 마지막으로, 상기 응용프로그램/미들웨어 계층에서 평면 영상 레이어 버퍼 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하여, 프레임 버퍼를 통해 상기 디스플레이 패널에 전달한다. 이에 따라 디스플레이 패널을 통해 스테레오스코픽 3차원 영상이 상기 평면 영상과 함께 표출될 수 있게 된다.
바람직한 실시예에 있어서는, 상기 평면 영상 서피스를 평면 영상 레이어 버퍼에 저장할 때, 평면 영상 서피스를 복수 개 생성하여 상기 복수의 평면 영상 서피스 각각에 대응하여 마련된 복수의 평면 영상 레이어 버퍼들에 각각 저장한다. 이러한 경우, 영상을 합성할 때에는 상기 평면 영상 레이어 버퍼들 및 입체 영상 레이어 버퍼에 저장된 신호들을 모두 합성하게 된다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 3차원 디스플레이 장치의 한 형태에 따르면, 3차원 디스플레이 장치는 전면에 패럴랙스 배리어가 마련되어 있는 디스플레이 패널; 상기 디스플레이 패널에 표시될 영상을 저장하는 프레임 버퍼; 및 상기 디멀티플렉싱 동작과 상기 디코딩 동작을 제어하며, 상기 디스플레이 패널을 직접 제어하는 커널 계층과, 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 프로그램을 실행하는 마이크로프로세서:를 구비한다.
상기 마이크로프로세서는 (a) 하나 이상의 평면 영상 서피스를 생성하여, 평면 영상 레이어 버퍼에 저장하는 기능과; (b) 인코딩된 영상신호를 상기 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원하는 기능과; (c) 상기 커널 계층에서 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 응용프로그램/미들웨어 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여 믹싱된 스테레오스코픽 영상신호를 입체 영상 레이어 버퍼에 저장하는 기능과; (d) 상기 응용프로그램/미들웨어 계층에서 상기 평면 영상 레이어 버퍼 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하여, 상기 프레임 버퍼를 통해 상기 디스플레이 패널에 전달하는 기능;을 수행한다.
위와 같은 영상신호 처리 방법은 예컨대 스마트폰이나 태블릿PC와 같은 디스플레이 장치에 탑재되어 실행될 수 있는 프로그램을 기반으로 구현될 수 있다. 상기 디스플레이 장치는 디스플레이 패널; 상기 디스플레이 패널을 구동하는 디스플레이 컨트롤러; 상기 디스플레이 컨트롤러를 통하여 상기 디스플레이 패널에 표시될 영상을 저장하기 위한 프레임 버퍼; 상기 디스플레이 패널을 직접 제어하는 커널 계층과 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 계층에 따라 소정을 기능을 수행하는 마이크로프로세서;를 구비하는 것이 바람직하다.
상기 프로그램은 (a) 하나 이상의 평면 영상 서피스를 생성하여, 평면 영상 레이어 버퍼에 저장하는 기능; (b) 인코딩된 영상신호를 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원시키는 기능; (c) 상기 커널 계층에서 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 응용프로그램/미들웨어 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상이 믹싱되도록 하며 믹싱된 스테레오스코픽 영상신호가 입체 영상 레이어 버퍼에 저장되도록 하는 기능; 및 (d) 상기 응용프로그램/미들웨어 계층에서 상기 평면 영상 레이어 버퍼 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하여, 프레임 버퍼를 통해 상기 디스플레이 패널에 전달되도록 하는 기능;을 수행할 수 있게 되어 있는 것이 바람직하다.
본 발명에 따르면, 스마트폰이나 태블릿PC와 같은 휴대형 기기에서 스테레오스코픽 영상을 재생함에 있어서 소프트웨어 특히 미들웨어와 커널 계층의 활용을 극대화하여 스테레오스코픽 영상신호를 처리한다. 특히, 본 발명은 3D 영상을 재생함에 있어서 가장 많은 시간을 요하는 좌우 영상 믹싱 과정을 안드로이드 플랫폼에서 복수의 이미지를 블렌딩 내지 머징하는 프로세스를 활용하여 구현한다. 이에 따라 PC용 프로세서에 비하여 처리속도가 느린 임베디드 프로세서를 채택하는 휴대형 기기에서 프로세서 이외의 추가적인 하드웨어 사용을 최소화하면서, 프레임율이나 비트율 또는 해상도를 희생시킴이 없이 고속으로 3D 영상을 재생할 수 있게 되는 효과가 있다.
본 발명에 따르면, 소프트웨어 계층구조 상에서 운영체제 커널이나, 미들웨어 내지 라이브러리 파일들의 수나 크기를 그다지 증가되지 않는 장점이 있다.
아울러, 프로세서 이외의 추가적인 하드웨어 사용이 최소화되기 때문에, 기기의 원가나 가격이 상승하는 것을 억제할 수 있다는 장점이 있다.
나아가, 바람직한 실시예에 따르면 사용자가 디스플레이 화면의 크기, 사용자의 눈과 디스플레이 사이의 거리에 따라 좌우영상 간의 시차를 조절할 수 있기 때문에, 어지럼증이 없이 3D 영상을 시청할 수 있게 되고 장치의 효용과 만족도가 높아진다는 이점이 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 보다 구체적으로 설명한다. 첨부된 도면에서 동일하거나 대응되는 구성요소에 대해서는 가급적 동일한 참조번호를 부여하고 중복된 설명은 간략화한다. 도면 중,
도 1은 본 발명에 의한 3차원 디스플레이 장치의 일 실시예의 블록도;
도 2는 도 1에 도시된 마이크로프로세서에 의해 실행되는 3D 영상 재생 프로그램의 기능적인 블록도;
도 3은 좌영상과 우영상을 믹싱하는 과정을 보여주는 도면;
도 4는 도 1의 디스플레이 장치에서 실행되는 안드로이드 플랫폼과 응용프로그램에 대한 레이어 계층구조를 보여주는 도면;
도 5는 도 4의 레이어 계층구조에 있어서 3D 영상 디스플레이를 위한 자바단 및 네이티브단 클래스들의 구성 예를 구체적으로 보여주는 블록도;
도 6은 도 1의 디스플레이 장치에서 칼라 스페이스 변환 및 좌우 영상 믹싱 프로세스를 구현하기 위한 출력단의 일 실시예의 상세 블록도;
도 7a 및 도 7b는 도 6에 도시된 실시예에 있어서 3D 영상 처리를 위한 함수들의 실행 순서를 보여주는 흐름도;
도 8은 도 6의 믹싱 프로세스를 채택하는 실시예에 있어서의 3차원 영상 표시 과정을 전체적으로 보여주는 흐름도;
도 9는 도 1의 디스플레이 장치에서 칼라 스페이스 변환 및 좌우 영상 믹싱 프로세스를 구현하기 위한 출력단의 다른 실시예의 상세 블록도;
도 10은 도 9에 도시된 실시예에 있어서 3D 영상 처리를 위한 함수들의 실행 순서를 보여주는 흐름도;
도 11은 도 9의 믹싱 프로세스를 채택하는 실시예에 있어서의 3차원 영상 표시 과정을 전체적으로 보여주는 흐름도; 그리고
도 12는 영상 재생 중에 화면에 표시되는 메뉴의 일 예를 보여주는 도면이다.
도 1을 참조하면, 본 발명의 바람직한 실시예에 따른 3차원 디스플레이 장치(이하, '디스플레이 장치'라고 함)는 네트웍 인터페이스부(10), 비휘발성 메모리(20), 마이크로프로세서(30), 휘발성 메모리(40), LCD 컨트롤러(50), LCD 패널(52), 패럴랙스 배리어(54), 배리어 컨트롤러(56), 터치패널(60), 터치패널 컨트롤러(62)를 포함한다. 일 실시예에 있어서, 상기 디스플레이 장치는 휴대용 멀티미디어 재생장치(PMP)이다. 다른 실시예에 있어서는, 상기 디스플레이 장치가 PMP 기능 즉 멀티미디어 동영상 재생 기능을 구비하는 스마트폰이나 태블릿PC가 될 수도 있다.
도 1에서, 네트웍 인터페이스부(10)는 예컨대 802.11 b/g/n 규격에 준거한 무선LAN을 통하여 외부의 액세스포인트 장치에 접속하기 위한 것으로서, 디스플레이 장치가 외부의 인터넷 서버와 통신할 수 있게 해준다. 특히, 본 발명에 있어서, 네트웍 인터페이스부(10)는 디스플레이 장치가 스트리밍 서버로부터 3D 동영상 데이터 스트림을 수신할 수 있게 해준다.
비휘발성 메모리(20)는 장치 내부에 고정 설치되거나 외부에 착탈될 수 있는 것으로서 3D 동영상 파일을 저장한다.
마이크로프로세서(30)는 네트웍 인터페이스부(10)를 통하여 스트리밍 서버로부터 수신되는 데이터 스트림 또는 비휘발성 메모리(20)에 저장되어 있는 동영상 파일을 디멀티플렉싱하여 압축된 영상 신호를 추출하고, 상기 압축된 동영상 데이터를 디코딩하여 3D 영상신호를 복원한다. 그리고, 마이크로프로세서(20)는 3D 영상신호를 좌우 영상신호로 분리하고 좌우 영상을 믹싱한다. 바람직한 실시예에 있어서, 마이크로프로세서(20)에 의해 실행되는 디멀티플렉싱, 디코딩, 믹싱 등의 3D 영상 재생 과정은 안드로이드 플랫폼과, 이를 근간으로 하는 응용 프로그램에 의해 구현된다.
휘발성 메모리(40)는 마이크로프로세서(20)의 동작 과정에서 발생되는 데이터에 대한 물리적인 버퍼 기능을 제공한다.
일 실시예에 있어서, 메모리(20)에 저장되어 있는 동영상 파일은 MPEG4 형식으로 되어 있고, MPEG4 컨테이너로부터 추출된 영상 신호는 H.264 형식으로 압축되어 있을 수 있다. H.264 형식으로 압축된 영상 신호는 디코딩 과정을 통해서 압축이 해제되어 YUV 포맷의 영상신호로 변환된다. 그리고, YUV 포맷의 3D 영상신호는 후술하는 마이크로 프로세서(30) 내부의 포스트프로세서에 의해 RGB 포맷으로 변환되고, LCD 패널(52)에 적합하게 영상의 크기와 방향이 조정된다. 이에 따라, 마이크로프로세서(20)는 RGB 포맷의 Side-by-side 방식 3D 영상신호를 획득하고 이로부터 좌우 영상을 분리한 후 믹싱할 수 있게 된다.
LCD 컨트롤러(50)는 마이크로프로세서(20)로부터 믹싱된 영상신호를 받아들이고, 믹싱된 영상이 LCD 패널(52)에 표시되도록 한다.
바람직한 실시예에 있어서, 본 발명의 디스플레이 장치는 편광안경이나 셔터안경을 사용하기 곤란하다는 휴대형 기기의 환경을 감안하여 패럴랙스 배리어 방식으로 좌우 영상을 표출한다. 도 1에서, 패럴랙스 배리어(54)는 LCD 패널(52)의 전면에 설치되며, LCD 패널(52)을 부분적으로 가려서 좌우 영상이 좌안과 우안에 각각 전달되도록 하게 된다. 배리어 컨트롤러(56)는 LCD 패널(52)에서 표출되는 영상이 2D 영상인지 3D 영상인지에 따라 패럴랙스 배리어(54)를 선택적으로 활성화시켜서, 표출되는 영상이 3D 영상일 때에만 패럴랙스 배리어(54)가 켜지도록 하게 된다. 바람직한 실시예에 있어서, 2D 영상 또는 3D 영상의 선택은 원본 영상신호에 포함된 제어신호(예컨대, 프로그램 사양정보(PSI:Program Specific Information)에 포함된 영상속성 필드)를 토대로 마이크로프로세서(20)에 의해 자동으로 수행된다. 한편, 도 12에 도시된 바와 같이 영상 재생 중에 화면에 표시되는 포맷 선택 메뉴를 통하여 사용자가 2D 재생 또는 3D 재생 중 하나를 임의로 선택할 수도 있다.
터치패널(60)은 디스플레이 장치에 대한 입력기능을 제공하며, 터치패널 컨트롤러(62)는 터치 패널(60)에서 감지된 신호를 디지털 좌표 신호로 변환하여 마이크로프로세서(30)에 제공한다.
도 2는 마이크로프로세서(20)에 의해 실행되는 3D 영상 재생 프로그램의 기능적인 블록도이다. 프로그램은 기능적으로 디멀티플렉싱부(32), 디코딩부(34), 포스트프로세서(36), 및 좌우영상 믹싱부(38)를 포함한다.
디멀티플렉싱부(32)는 스트리밍 서버로부터 수신되는 데이터 스트림 또는 비휘발성 메모리(20)에 저장되어 있는 동영상 파일을 디멀티플렉싱하여, 컨테이너로부터 압축된 영상 신호를 추출한다. 일 실시예에 있어서, 컨테이너로부터 추출된 영상 신호는 H.264 형식으로 압축되어 있을 수 있다. 일 실시예에 있어서, 디멀티플렉싱부(32)는 OpenCORE 미디어 프레임웍으로 구현된다.
디코딩부(34)는 상기 압축된 영상 신호를 디코딩하여, 3D 영상신호를 복원한다. 일 실시예에 있어서, 상기 3D 영상신호는 좌우 영상이 Side-by-side 방식으로 배치되어 있고, YUV 포맷의 휘도 및 색차를 표현한다. 바람직한 실시예에 있어서, 디코딩부(34)는 OpenCORE 프레임웍 내에 있는 H.264 디코더에 의해 구현되며, H.264 디코더는 OpenMAX 미디어 프레임웍에 의해 관리된다.
포스트 프로세서(36)는 YUV 포맷의 3D 영상신호를 받아들이고, 칼라 스페이스를 RGB 포맷으로 변환하며, LCD 패널(52)에 적합하게 영상의 크기와 방향을 조정한다. 바람직한 실시예에 있어서는 포스트 프로세서(36)가 소프트웨어에 의해 구성되지만, 변형된 실시예에 있어서는 포스트 프로세서(36)가 2D 영상 처리를 위한 하드웨어 칩셋(chipset)으로 구성될 수도 있다.
좌우영상 믹싱부(38)는 포스트 프로세서(36)로부터 RGB 포맷의 3D 영상신호를 받아들이고, 도 3과 같이 좌영상과 우영상을 수직라인 단위로 교대로 배치함으로써 좌우 영상을 패럴랙스 배리어(54)의 특성에 맞게 믹싱한다.
한편, 바람직한 실시예에 있어서 도 2에 도시된 디멀티플렉싱부(32), 디코딩부(34) 및 좌우영상 믹싱부(38)를 구성하거나 제어하는 프로그램은 하나의 프로그램 파일로서 되어 있는 것이 아니라, 다수의 네이티브(Native)단 서비스들(즉, 안드로이드 플랫폼의 라이브러리) 및 커널 단에 있는 다수의 클래스 오브젝트들로 분산되어 구현되며, JNI를 통해서 자바단(Java)단 서비스들(즉, 응용 프로그램 레벨)에서의 클래스 오브젝트들과 인터페이스된다.
도 4는 도 1의 디스플레이 장치에서 실행되는 안드로이드 플랫폼과 응용프로그램에 대한 레이어 계층구조를 보여준다.
도 4 및 여타의 도면과 이하의 설명에 있어서, 3D 영상신호의 처리에 관한 응용프로그램은 물론 라이브러리 및 응용 프로그램 프레임웍은 안드로이드 표준에 준거한 응용프로그램, 라이브러리 및 응용 프로그램 프레임웍이 본 발명에 의하여 수정된 것임을 유의해야 한다. 즉, 오픈 핸드셋 얼라이언스(OHA:Open Handset Alliance)가 최초에 공개한 이후 구글(Google)사는 안드로이드 플랫폼과 관련하여 리눅스(Linux) 커널과, 포괄적 라이브러리 세트, 사용자 인터페이스에 대한 표준을 정하고 이를 보완해오고 있는데, 이러한 안드로이드 플랫폼은 완전 개방형 플랫폼을 지향하여 소스코드가 모두 공개되고 있고, 누구라도 이를 이용하여 소프트웨어와 기기를 제작할 수 있도록 하고 있다. 특히 안드로이드 플랫폼에서의 영상 재생과 관련하여 구글(Google)사는 아래 설명과 유사한 서비스 프레임웍과 클래스 오브젝트들에 대한 프로토타입을 제시하고 있다. 그렇지만, 상기 서비스 프레임웍 및 프로토타입은 2차원 영상의 블렌딩과 2차원적 합성에 관한 것이 지나지 않으며, 본 발명자들은 이와 같은 2차원 영상의 블렌딩과 2차원적 합성에 관한 프레임웍을 수정하여 3차원 영상을 구현하기 위한 좌우 영상의 믹싱 방법을 발명한 것임을 유의해야 한다.
도 4에서, 안드로이드 플랫폼은 응용 프로그램, 응용 프로그램 프레임웍, 라이브러리, 리눅스 커널 등의 레이어를 포함한다.
본 발명의 바람직한 실시예에 있어서, 응용 프로그램은 3D 영상 재생을 지원하는 멀티미디어 플레이어(100)를 포함한다. 멀티미디어 플레이어(100)는 전체적인 화면 구성을 위한 사용자 인터페이스(UI) 처리 함수(102), 메뉴 표시/처리 함수(104), 재생 제어 함수(106)를 포함한다. UI 처리 함수(102)는 초기화면과 재생중인 화면의 전체적인 구성을 정하고 사용자 요구에 따라 변경한다. 특히, 바람직한 실시예에 따르면, UI 처리 함수(102)는 도 12에 도시된 바와 같이 조작 메뉴(500)를 표시할 수 있어서, 사용자가 영상을 2D 형식으로 표시할지 3D 형식으로 표시할지 선택할 수 있도록 하고, 좌우 영상간의 시차(Disparity)를 조정할 수 있게 해주며, 사용자의 선택에 따라 재생 제어 함수(106)가 재생을 제어하도록 하게 된다. 메뉴 표시/처리 함수(104)는 각 메뉴 단계별로 사용자가 하위 메뉴를 선택하거나, 원본 파일의 리소스를 선택할 수 있게 해준다. 이와 같은 멀티미디어 플레이어(100)는 자바 바이트 코드로 프로그래밍될 수 있다. 그밖에, 주소록 관리, 통화, 웹 브라우징 등을 위한 응용 프로그램이 도 1의 디스플레이 장치에 마련될 수 있다.
응용 프로그램 프레임웍은 멀티미디어 플레이어(100) 등 응용 프로그램에서 이용할 수 있는 API를 규정하고 있는 레이어이다. 특히, 패키지 매니저(110)는 멀티미디어 플레이어(100)와 같은 응용 프로그램의 설치를 관리한다. Activity 매니저(112)는 응용 프로그램의 생명주기(Life Cycle)를 관리한다. 윈도우 매니저(114)는 윈도우 즉, LCD 패널(52)에 표시할 전체 화면 구성을 관리한다. 뷰 시스템(116)는 사용자 인터페이스를 관리한다. 리소스 매니저(118)는 재생할 원본 데이터의 리소스를 관리한다. 그밖에, 응용 프로그램 간의 데이터 공유를 관리하기 위한 컨텐트(Content) 매니저, 상태 바의 통지(Alert) 표시를 관리하기 위한 통지 매니저, 통화 기능을 관리하기 위한 통화 매니저, 위치정보를 관리하기 위한 로케이션 매니저 등이 응용 프로그램 프레임웍에 마련될 수 있다.
라이브러리 계층은 많은 응용 프로그램으로부터 범용적으로 이용되는 기능을 파일화한 것이다. 각 응용 프로그램은 응용 프로그램 프레임웍을 통해서 각 라이브러리 파일들을 호출하여 실행할 수 있다. 특히, 서피스 매니저(Surface Manager; 120)는 복수의 화면들을 합성하기 위한 라이브러리이다. 미디어 프레임웍(122)은 영상 파일의 재생과 기록을 위한 라이브러리이다. OpenGL/ES는 그래픽 엔진이며, 표준 c-라이브러리(libc; 126)는 표준적인 C언어 라이브러리이다. 그밖에, 관계형 데이터베이스에 대한 SQLite, 비트맵과 벡터 폰트의 렌더링을 실행하는 FreeType, 브라우저 표시를 실행하기 위한 HTML 렌더링 엔진인 Webkit, 2D 그래픽 엔진인 SGL 라이브러리와, SSL 라이브러리 등이 포함될 수 있다. 라이브러리 계층의 모든 라이브러리는 C 또는 C++ 언어로 작성되는 것이 바람직하다.
리눅스 커널은 플랫폼의 중추적인 부분으로서, 디스플레이 장치의 하드웨어 컴포넌트들을 제어한다. 특히, 디스플레이 드라이버(130), 오디오 드라이버(132), 키패드 드라이버(134), 배리어 드라이버(136)는 각각 LCD 패널(52), 스피커(미도시됨), 터치패널(60), 패럴랙스 배리어(54)의 동작을 제어한다. 그밖에, 카메라, 블루투스, 플래시 메모리, USB 인터페이스, WiFi 인터페이스 등 주변장치에 대한 커널 프로그램과, 전력관리 프로그램이 포함될 수 있다.
한편, 도 4에는 도시되지 않았지만, 자바 언어에 준거한 코어 라이브러리와, 자바 바이트 코드를 실행하는 가상머신인 달빅(Dalvik) 가상머신이 포함된다.
도 4의 레이어 계층구조에 있어서, 응용 프로그램 및 응용 프로그램 프레임웍의 자바 레이어는 매개체인 JNI(Java Native Interface)를 통해서 C/C++ 라이브러리와 연결될 수 있다. 즉, JNI는 달빅 가상머신 위에서 동작하는 안드로이드 응용 프로그램들은 C/C++과 같은 네이티브 코드로 작성된 프로그램에 비하여 처리속도가 느린 단점이 있지만, JNI를 통해서 C/C++ 네이티브 코드 라이브러리를 최대한 활용함으로써 처리속도를 향상시킬 수 있게 된다. 본 발명의 디스플레이 장치에 있어서, 3D 영상 재생을 위한 멀티미디어 플레이어(100)는 2D 영상처리를 위해 마련되어 있는 C/C++ 네이티브 코드 라이브러리에 3D 영상처리 기능을 추가하고 JNI를 통해 기능을 제어하도록 수정하였다.
도 5는 도 4의 레이어 계층구조에 있어서 3D 영상 디스플레이를 위한 자바단 및 네이티브단 클래스들의 구성 예를 구체적으로 보여준다. 편의상, 네이티브단의 각 클래스 내의 함수를 '메쏘드' 그리고 클래스로 되어있지 않은 라이브러리 프로그램을 '함수'라 칭하기로 한다.
도 5에 도시된 클래스들을 살펴보기에 앞서, 몇가지 용어에 대하여 먼저 설명한다.
안드로이드 표준에 있어서, '뷰(View)'는 그리기 또는 키 스트록이나 여타의 상호작용 이벤트 처리를 위한 사각 영역으로서, 사용자 인터페이스(UI)를 위한 기본 구성단위이다. View 클래스는 이러한 View 영역을 나타내고 점유하는 기능을 수행한다.
각 액티비티는 하나 이상의 '윈도우(Window)'를 가질 수 있고, Window는 하나 이상의 서피스(Surface)를 가질 수 있다. 여기서, Window는 화면에 표시될 창 요소의 형태(look and feel), 위치, 메뉴 등의 구성을 나타낸다. Window 클래스는 최상위 레벨 윈도우의 형태와 특성, 배경 등을 정의하는 추상 클래스이다. 따라서 Window 클래스에 속하는 하나의 인스턴스가 최상위 View로 사용된다.
서피스(Surface)는 화면상에 그리기를 위해 마련되고 스크린 합성자(Composer)에 의해 관리되는 버퍼를 의미한다. Surface는 SurfaceView 클래스에 의해 생성되며, Surface 클래스에 그 속성이 정해진다.
따라서, 응용 프로그램 수행 중에 복수의 Surface가 생성되고 유지될 수 있으며, SurfaceView 클래스에 의해 이들 중 일부가 Window로서 결합된다. 이때, 모든 Window는 하단의 Surface 오브젝트들을 사용하여 구현된다. 그리고, WindowManager 클래스의 제어 하에 최상위 Window에 관련된 Surface들이 프레임 버퍼에 전달됨으로써, 최상위 Window가 View 영역에 표시된다고 할 수 있다. 이와 같은 View 내지 View 그룹들을 사용하여 UI와 출력영상이 구성된다.
도 5를 참조하면, 응용 프로그램인 멀티미디어 플레이어(100) 내에 있는 VideoView 클래스 인스턴스(200)(이하, '클래스 인스턴스'를 편의상 '클래스'라 칭함)는 자바 바이트 코드로 작성되며, 사용자가 재생할 미디어를 스트리밍 서버 또는 메모리(20)로부터 탐색하고, 파일의 크기를 계산하며, 디스플레이 옵션을 선택할 수 있게 해준다. 또한, VideoView 클래스(200)는 사용자 입력 검출, 재생 동작의 시작, 일시정지, 재시작, 종료위치탐색 등의 기능을 구현할 수 있게 해준다. 아울러, VideoView 클래스(200)는 멀티미디어 플레이어(100)의 실행이 개시될 때 SurfaceView 클래스(210)에 대하여 서피스(Surface) 할당을 요구한다.
MediaPlayer 클래스(202)는 자바 바이트 코드로 작성되며, 오디오/비디오 파일 및 스트림의 재생을 제어한다. VideoView 클래스(200)에 의해 재생 제어 기능이 선택되면 선택에 따른 파라미터가 MediaPlayer 클래스(202)에 전달되며, 이에 따라 MediaPlayer 클래스(202)는 사용자의 선택에 따라서 파일 및 스트림 재생을 제어하게 된다.
SurfaceView 클래스(210)는, 자바 바이트 코드로 작성되는 것으로서, 그리기를 위한 Surface가 스크린의 정확한 위치에 임베딩된 상태로 생성될 수 있게 해주며, 생성된 surface의 포맷과 크기를 조절할 수 있게 해준다. 하나의 응용 프로그램은 하나 이상의 Surface를 할당받으며, 특히 본 발명에 있어서, Surface는 멀티미디어 플레이어(100)의 VideoView 인스턴스(200)의 요구에 따라 생성될 수 있다. Surface 할당에는 WindowManager 클래스(230)가 관여할 수도 있다.
Surface는 SurfaceView를 점유하고 있는 윈도우의 뒤에서 Z축방향 즉 패널면에 수직인 가상축을 따라 배치되는데, SurfaceView 클래스(210)는 윈도우에 구멍을 뚫어서 Surface들이 적절히 디스플레이될 수 있도록 하게 된다. 이때, View 계층구조에 따라 Surface들의 합성이 정확히 관리된다. 한편, Surface는 SurfaceView에 관련된 Window가 보일 수 있는(visible) 상태에 있을 때 생성된다.
SurfaceView 클래스(210)의 기능은 포스트 프로세서(36)를 관리하는 LayerBuffer 클래스(250)와 연동된다. 또한, SurfaceView 클래스(210)는 WindowManager 클래스(220)를 통하여 SurfaceFlinger 클래스(262)를 제어하게 된다.
Surface 클래스(212)는, SurfaceView 클래스(210)에 의해 Surface가 생성될 때, 생성되는 Surface에 대한 블러링, 디밍, 회전, 감추기, 프리징 등과 같은 표시 속성을 정의한다.
SurfaceHolder 인터페이스(214)는 Surface 자체 즉, Surface를 점유하고 있는 버퍼에 대한 추상적 인터페이스이다. SurfaceHolder 인터페이스(214)는 Surface의 크기 및 포맷을 조절하고, Surface 내에 있는 픽셀을 편집하거나, Surface에 대한 변경내용을 모니터링할 수 있게 해준다.
WindowManager 클래스(220)는 화면 관리를 위한 JAVA 응용 프로그램 프레임웍 단의 API이다. 특히 본 발명에 따르면, 스테레오스코픽 영상 쌍을 구성하는 좌우 영상을 믹싱하기 위하여 네이티브 단의 SurfaceComposer 클래스(260)를 통해 SurfaceFlinger 클래스(262)를 제어함으로써 Surface들이 프레임 버퍼에 전달되는 것을 제어하게 된다.
MediaPlayer 클래스(230)는 MediaPlayer 클래스(202)로부터 전달받은 파라미터에 따라 MediaPlayerService 클래스(232)가 적절한 미디어 서브시스템 내지 플레이어를 선택하도록 하고, MediaPlayerService 클래스(232)를 통해 미디어 재생을 제어한다. 또한, MediaPlayer 클래스(230)는 미디어의 재생 상태를 MediaPlayer 클래스(202)에 알려준다.
MediaPlayerServiceClient 클래스(232)는 MediaPlayer 클래스(230)를 통해 전달받은 파라미터에 따라 미디어 서브시스템(240)을 선택하고, 재생할 미디어를 스트리밍 서버 또는 메모리(20)로부터 탐색하며, 탐색된 미디어를 미디어 서브시스템(240)이 디멀티플렉싱하고 디코딩하도록 한다. 본 발명의 디스플레이 장치가 재상할 수 있는 미디어는 3D 영상에 한정되지 않으며, 2차원 영상이나 오디오가 될 수 있고, 이들 각각에 대해 다양한 포맷의 신호를 재생할 수 있다. 이를 위하여, MediaPlayerServiceClient 클래스(232)는 재생할 미디어에 적합한 미디어 서브시스템(240) 또는 사용자가 사전에 선택한 종류의 서브시스템을 선택한다.
도면에는 편의상 하나의 미디어 서브시스템(240)만이 도시되어 있지만, 복수의 시스템이 마련될 수 있음은 위에서 언급한 바와 같다. 도시된 실시예에 있어서, 미디어 서브시스템(240)은 패킷비디오사(PacketVideo Corp.)의 OpenCORE 프레임웍을 토대로 구현되며, PlayerDriver 클래스(242)와, PVPlayer 클래스(244)와, 비디오 코덱(246) 및 오디오 코덱(미도시됨)을 포함한다.
PlayerDriver 클래스(242)는 PVPlayer 클래스(244)에 대한 쓰레드를 생성하고, PVPlayer 클래스가 미디어 데이터를 디멀티플렉싱하여 컨테이너로부터 압축된 영상신호를 추출하도록 한다. 비디오 코덱(246)은 압푹된 영상신호를 디코딩하여 영상신호를 복원한다. 복원된 영상신호는 YUV 포맷으로 되어 있는 Side-by-side 방식의 3D 영상신호일 수 있다.
AndroidSurfaceOutput 클래스(248)는 비디오 코덱(246)으로부터 출력되는 YUV 영상신호를 LayerBuffer 클래스(250)에 전달한다.
LayerBuffer 클래스(250)는 YUV 영상신호에 대한 비트 스트림을 받아들이고, 이후의 RGB 칼라 스페이스로의 변환과 좌우 영상 믹싱 과정에 사용할 수 있도록 YUV 영상신호 데이터를 관리한다.
SurfaceComposer 클래스(260)는 SurfaceFlinger 클래스(262)를 제어하여, 포스트 프로세서(36)에 의해 변환된 RGB 영상신호가 좌우 영상이 믹싱될 수 있도록 한다.
SurfaceFlinger 클래스(262)는, SurfaceComposer 클래스(260)의 제어 하에, 영상 신호를 LCD 패널(52)에 표시하는 프레임 버퍼를 관리한다. 일반적으로 SurfaceComposer 클래스(260)는 개별 응용 프로그램에 할당된 Surface들을 프레임 버퍼에 렌더링함으로써 중층적인(Layered)인 구조를 가지는 Surface들을 통합하는 역할을 담당한다.
도 6은 도 1의 디스플레이 장치에서 칼라 스페이스 변환 및 좌우 영상 믹싱 프로세스를 구현하기 위한 출력단의 일 실시예를 보여준다. 도시된 출력단의 프로세스는 스테레오스코픽 영상쌍을 구성하는 좌우 영상을 믹싱하여 3D 영상을 구성하고, 상기 3D 영상과 함께 하나 이상의 일반 평면 영상을 합성(Composition)하여 출력할 수 있다. 여기서, 복수의 일반 평면 영상은 SurfaceFlinger 클래스(262A)에 의해 소프트웨어적으로 합성(Software Composition)된다. 그리고, 합성된 평면 영상과 3D 입체 영상은 프레임 버퍼(296, 298)의 오버레이 기능을 통해 LCD 컨트롤러(50)에서 하드웨어적으로 합성(Hardware Composition)된다.
제1 및 제2 레이어 버퍼(270A, 270B)는 SurfaceFlinger 클래스(262A)에 의해 사용되는 서피스 버퍼로서, 자바 어플리케이션인 각종 액티비티에 의해 생성되는 일반 평면 영상(즉, 정지 영상) 서피스들을 각각 저장한다. 상기 평면 영상은 일반적인 렌더링 특성을 가진 영상으로서, 예컨대 텍스트, 렌더링된 3D 영상, 3D 영상 콘텐츠 재생 과정에서 부수적으로 표시되는 타이틀 정보 및 메뉴 정보가 될 수 있다.
SurfaceFlinger 클래스(262A)는 여러 서피스(Surface)들을 하나로 모아서 제1 프레임 버퍼(296)에 렌더링함으로써, 제1 및 제2 레이어 버퍼(270A, 270B)에 저장된 서피스 데이터와 같이 중층적인(Layered)인 구조의 메모리 데이터를 합성하는 기능을 수행한다.
상기 일반 평면 영상은 화면에 변화가 그다지 많지 않기 때문에 SurfaceFlinger 클래스(262A)가 소프트웨어적으로 합성을 하더라도 시스템에 크게 영향을 주지 않는다. 그렇지만, 동영상 표시 또는 카메라(도 1에는 미도시되어 있음)의 프리뷰를 수행하기 위한 서피스를 SurfaceFlinger 클래스(262A)에 의해 일반 평면 영상 서비스와 함께 합성하면 모바일 운용 시스템에 부하가 커질 수 있는 원인이 될 수 있다. 이에 따라, 본 실시예에 있어서 SurfaceFlinger 클래스(262A)는 일반 평면 영상 서피스들만을 합성하고, 믹싱된 3D 영상 서피스는 합성하지 아니한다.
본 실시예에 따르면, 3D 동영상 표시 또는 카메라 프리뷰를 처리하기 위한 전용의 프레임 버퍼로써, 제2 프레임 버퍼(298)가 마련된다. LCD 컨트롤러(50)는 제1 및 제2 프레임 버퍼(296, 298)를 오버레이 기능을 통해 하드웨어적으로 합성하여 LCD 패널(52)에 전달하며, 이에 따라 매우 빠른 영상신호 처리가 가능해진다. 이러한 기능을 제어하는 API를 V4L2(Video 4 Linux 2)라고 한다. 그리고 이러한 V4L2 API는 LayerBuffer(250) 클래스를 통해서 AndroidSurfaceOutput(248) 클래스로 전달되어 해당 클래스의 제어를 받는다.
한편 커널 단에는, 동영상 처리를 위하여 YUV 버퍼(280)와, 포스트 프로세서(36)와, 2D/3D 스위치(282A)와, RGB 버퍼(284A)와, Mix 버퍼(290A)가 추가적으로 마련되고, 영상 믹싱 프로세스(292A)가 수행된다.
YUV 버퍼(280)는 LayerBuffer 클래스(250)를 통해서 YUV 영상신호를 받아들여 버퍼링하며, 포스트 프로세서(36)는 ServiceFlinger 클래스(262A) 또는 LayerBuffer 서비스(250)의 관리 하에 YUV 영상신호를 RGB 영상신호로 변환한다.
2D/3D 스위치(282A)는 재생되는 영상신호가 2D 영상신호인 경우에는 포스트 프로세서(36)에 의해 출력되는 RGB 영상신호를 곧바로 RGB 버퍼(284A)에 전달하고, 재생되는 영상신호가 3D 영상신호인 경우에는 상기 RGB 영상신호를 Mix 버퍼(290A)에 전달하여 영상 믹싱 프로세스(292A)가 RGB 영상신호 내에 포함된 좌우 영상을 믹싱하도록 하게 된다.
바람직한 실시예에 있어서, 영상신호가 2D 영상신호인지 또는 3D 영상신호인지의 판단은 원본 영상신호에 포함된 제어신호(예컨대, 프로그램 사양정보(PSI:Program Specific Information)에 포함된 영상속성 필드)를 토대로 이루어진다. 상기 판단이 응용 프로그램 계층에서 이루어져 판단 결과가 2D/3D 스위치(282A)에 전달될 수도 있고, 2D/3D 스위치(282A)가 직접 이와 같은 판단을 할 수도 있다. 한편, 영상 재생 중에 화면에 표시되는 포맷 선택 메뉴를 통하여 사용자가 2D 재생 또는 3D 재생 중 하나를 임의로 선택하는 바에 따라 2D/3D 스위치(282A)가 스위칭 동작을 변경할 수도 있다. 다른 한편으로, 단말기에 2D/3D 선택을 위한 기계적 스위치가 마련될 수도 있다.
영상 믹싱 프로세스(292A)는 Mix 버퍼(290A)에 저장된 RGB 영상에 포함된 좌우 영상을 세로로 한 라인씩 믹싱한다. 본 실시예에 있어서, 상기 영상 믹싱 프로세스(292A)는 커널단에서 수행되는 프로세스이며, 이에 따라 본 실시예에 있어서의 좌우 영상의 믹싱은 안드로이드 프레임웍 내의 미들웨어 단에서 처리되는 것이 아니라 커널단에서 바로 처리된다.
3D 좌우 영상의 믹싱 과정을 보다 구체적으로 살펴보면, 영상 믹싱 프로세스(292A)는 Mix 버퍼(290A)에 저장된 영상신호 비트스트림을 RGB 버퍼(284A)로 전송함에 있어서 비트스트림을 순차적으로 전송하는 것이 아니라, Side-by-side 포맷의 3D RGB 영상에서 좌영상에 해당하는 부분과 우영상에 해당하는 부분으로부터 픽셀들을 교대로 추출하여 복사(copy)하게 된다. 즉, 영상 믹싱 프로세스(292A)는 도 3의 좌측에 도시된 RGB 영상에서 각 주사선 단위로 좌영상의 첫 번째 픽셀을 추출하여 RGB 버퍼(284A)의 첫 번째 픽셀 위치에 전송하고, 우영상의 첫 번째 픽셀을 추출하여 RGB 버퍼(274A)의 두 번째 픽셀 위치에 배치한다. 그 다음, 영상 믹싱 프로세스(292A)는 Mix 버퍼(290A)로부터 좌영상의 두 번째 픽셀을 추출하여 RGB 버퍼(284A)의 세 번째 픽셀 위치에 배치하고, 우영상의 두 번째 픽셀을 추출하여 RGB 버퍼(284A)의 네 번째 픽셀 위치에 배치한다. 이와 같은 과정이 3D RGB 영상 전체에 대하여 수행됨으로써, RGB 버퍼(284A)에는 좌영상과 우영상이 수직라인 단위로 교대로 배치된 믹스된 영상이 저장된다.
이와 같은 출력단에 있어서, 먼저 SurfaceFlinger 클래스(262A)에 의해 처리되는 일반적인 자바 어플리케이션용 평면 영상 서피스의 흐름을 살펴보면, 각각의 자바 어플리케이션에 할당된 서피스들은 소프트웨어적 합성 기능을 하는 SurfaceFlinger 클래스(262A)에 의해서 합성되어 제1 프레임 버퍼(296)로 전달된다.
이에 반하여, 동영상 재생 또는 카메라 프리뷰 어플리케이션 과정에서 처리되는 서피스는 SurfaceFlinger 클래스(262A)에 의하여 소프트웨어적인 합성을 하는 경우 성능이 저하될 수 있기 때문에, SurfaceFlinger(262A)를 통하지 않고 전용으로 할당된 제2 프레임 버퍼(298)로 직접적으로 전달된다. 그리고, 제1 및 제2 프레임 버퍼(296, 298)는 LCD 컨트롤러(50)에서 하드웨어적으로 합성된다.
동영상 서피스에 대한 처리 과정을 살펴보면, YUV 버퍼(280)에 저장된 YUV 영상은 포스트 프로세서(36)에 의해서 RGB 영상으로 변환되고 LCD 패널(52)의 화면 크기에 맞게 스케일링된다. 2D/3D 스위치(282A)가 2D 모드로 설정되어 있으면, 일반적인 2D 영상은 RGB 버퍼(284A)에 바로 저장된 후 제2 프레임 버퍼(298)로 전달된다. 한편, 2D/3D 스위치(282A)가 3D 모드로 설정되어 있으면, 포스트 프로세서(36)로부터 출력된 RGB 영상은 Mix 버퍼(290A)로 복사된다. Mix 버퍼(290A)에 저장된 영상 내에 있는 좌우 영상은 영상 믹싱 프로세스(292A)에 의하여 믹싱된 후 RGB 버퍼(284A)에 저장된다.
이후, RGB 버퍼(284A)에 저장되어 있는 믹싱된 RGB 비트스트림은 동영상 전용의 제2 프레임 버퍼(298)에 전달된다. 두 개의 프레임 버퍼(296, 298)에 저장된 데이터는 오버레이에 의해 LCD 컨트롤러(50)에서 하드웨어적으로 합성된다. 합성된 3D 영상은 LCD 패널(52)에 표시됨으로써, 패럴랙스 배리어(54)의 전면에 있는 사용자가 타이틀 명칭 및/또는 메뉴와 함께 스테레오스코픽 3D 영상을 인식할 수 있게 된다.
본 실시예에 따르면, 3D 동영상의 믹싱에 관련된 Surface의 흐름이 미들웨어 단 즉, Native단으로 복사되지 않고 커널단에서 바로 처리가 되며 또한 SurfaceFlinger 클래스(262A)에 의해서 소프트웨어적으로 합성되어지지 않기 때문에 전반적인 처리 시간이 단축되는 효과가 있다.
도 7a 및 도 7b는 도 6에 도시된 실시예에 있어서 3D 영상 처리를 위한 함수들의 실행 순서를 보여준다.
비디오 코덱(246)으로부터 디코딩된 YUV 영상신호가 타이머 동기에 따라 나오게 되면, AndroidSurfaceOutput 클래스(250)에서 오디오와의 동기를 위해 정해진 시간마다 멤버 함수인 writeAsync() 함수가 실행된다(제300단계). writeAsync() 함수는 디코딩된 YUV 영상신호의 RGB 신호로의 변환을 위해 포스트 프로세서의 버퍼에 영상신호를 복사할 수 있도록 WriteFrameBuffer() 함수를 호출한다(제302단계). WriteFrameBuffer() 함수는 디코딩된 미디어 비트스트림을 LayerBuffer 클래스(250)의 서브 클래스인 SurfaceLayerBuffer 클래스에 전달한다.
디코딩된 YUV 영상신호 비트스트림은 SurfaceLayerBuffer 클래스 내에 있는 postBuffer() 함수에 의해 LayerBuffer 클래스(250)에게 전달되고(제304단계), 다시 LayerBuffer 클래스(250) 내에 있는 postBuffer() 함수에 의해 LayerBuffer 클래스(250)의 다른 서브 클래스인 BufferSource 서비스에게 전달된다(제306단계).
BufferSource 클래스의 postBuffer() 함수는 YUV 영상신호 비트스트림이 YUV 버퍼(280)에 저장된 상태에서 포스트 프로세서(36)를 제어하여 포스트 프로세서(36)가 YUV 영상신호를 RGB 영상신호로 변환하도록 하며(제308단계), 이를 위해 V4L2 API를 호출한다.
제310단계 내지 제324단계에서는 YUV 영상신호를 RGB 영상신호로 변환하기 위한 함수들이 계층구조를 타고 호출되고, 결국 제324단계에서 포스트 프로세서(36)에게 YUV를 RGB로 변환을 시작하게 하는 제어 신호가 부여되어 RGB로의 칼라 스페이스 변환이 이루어진다.
먼저, 제310단계에서는, YUV 영상의 비트스트림을 전송할 데이터들의 물리적 주소가 상기 BufferSource 클래스 내에 있는 fimc_set_DMA_address() 함수에 의해 설정된다.
제312단계에서 YUV 신호를 RGB 신호로 변환하는데 사용할 버퍼의 크기가 fimc_V4L2_queue() 함수에 의해 정의된 후, 커널 단의 디바이스 드라이버를 실행시키기 위한 ioctl() 함수가 호출되어 실행된다(314단계).
제316단계부터의 프로그램 흐름은 커널 단의 V4L2 인터페이스 드라이버에 의해 수행되는 커널단의 디바이스 드라이버에서의 커널 프로세스이다. 제316단계에서, 커널 단의 V4L2 인터페이스 드라이버가 구동되기 시작하여 변환한 YUV 신호의 소스와 포스트 프로세서(36)의 상태를 확인한다. 그리고, V4L2_ioctl() 함수에 의해 포스트 프로세서(36)가 오픈된다. fimc_qbuf() 함수는 현재 수행하고 있는 태스크의 종류가 예컨대 '비디오 캡쳐'인지 '비디오 출력'인지를 확인하고, '비디오 출력' 태스크가 수행되고 있는 경우 fimc_qbuf_output() 함수를 호출한다(제318단계). fimc_qbuf_output() 함수는 버퍼 상태가 포스트 프로세서(36)로의 DMA가 가능한지 여부를 확인한 후 버퍼를 인커밍 큐에 추가한다(제320단계). 이어서, 변환할 영역 내의 위치가 fimc_qbuf_output_dma_auto() 함수에 의해 갱신되면서(제322단계), fimc_outdev_start_camif() 함수에 의해 포스트 프로세서(36)에 의한 RGB 변환 작업이 진행된다(제324단계).
제326단계 내지 제330단계는 포스트 프로세서(36)가 YUV에서 RGB로의 칼라 스페이스 변환을 완료한 후 발생하는 인터럽트에 의해서 실행되는 인터럽트 서비스 루틴으로서 좌우 영상 믹싱 과정을 실행하는 단계이다.
각각의 프레임에 대하여 YUV 영상으로부터 RGB 영상으로의 칼라 스페이스 변환이 완료될 때마다, 포스트 프로세서(36) 내에서 인터럽트가 발생되고 fimc_irq() 함수가 호출된다(제326단계). '비디오 출력' 모드 하에서, fimc_irq() 함수는 Fimc_irq_out() 함수를 호출하며(제328단계), 이 함수는 Fimc_irq_out_dma() 함수를 호출한다.
Fimc_irq_out_dma() 함수는 RGB 비트스트림에 대하여 좌우 영상 믹싱 과정을 실행한 후에 RGB 버퍼(284A)를 거쳐 제2 프레임 버퍼(298)로 전송한다(제330단계).
이를 보다 상세히 설명하면, RGB 비트스트림이 순차적으로 전송되는 것이 아니라, Side-by-side 포맷의 3D RGB 영상에서 좌영상에 해당하는 부분과 우영상에 해당하는 부분으로부터 픽셀이 교대로 추출되어 전송된다. 즉, Fimc_irq_out_dma() 함수는 영상 내의 각 주사선 단위로 좌영상의 첫 번째 픽셀을 추출하여 RGB 버퍼(284A)의 첫 번째 픽셀 위치에 전송하고, 우영상의 첫 번째 픽셀을 추출하여 RGB 버퍼(284A)의 두 번째 픽셀 위치에 배치한다. 그 다음, Fimc_irq_out_dma() 함수는 좌영상의 두 번째 픽셀을 추출하여 RGB 버퍼(284A)의 세 번째 픽셀 위치에 배치하고, 우영상의 두 번째 픽셀을 추출하여 RGB 버퍼(284A)의 네 번째 픽셀 위치에 배치한다. 이와 같은 과정이 영상 전체에 대하여 수행됨으로써 좌우 영상이 믹싱되며, RGB 버퍼(284A)에는 좌영상과 우영상이 수직라인 단위로 교대로 배치되어 믹스된 영상이 저장될 수 있다.
Fimc_irq_out_dma() 함수에 의해, 믹싱된 RGB 비트스트림은 동영상 전용의 제2 프레임 버퍼(298)로 DMA 전송될 수 있다.
도 8은 도 6의 믹싱 프로세스를 채택하는 실시예에 있어서의 3차원 영상 표시 과정을 전체적으로 보여준다.
사용자는 멀티미디어 플레이어(100)의 실행을 선택한 후 파일을 선택한다(제350단계). 이때, 파일을 먼저 선택하여 멀티미디어 플레이어(100)가 실행되도록 할 수도 있다.
제352단계에서, 멀티미디어 플레이어(100)의 VideoView 클래스(200)는 SurfaceView 클래스(210)에 대하여 Surface 할당을 요청한다. SurfaceView 클래스(210)는 Surface를 생성, 관리하지만 직접 생성하는 것이 아니라, Surface를 종합적으로 관리하는 WindowManager 클래스(220)에게 Surface를 요청한다. 요청을 받은 WindowManager 클래스(220)는 JNI 인터페이스를 통하여 SurfaceFlinger 클래스(262)에 Surface를 요청하고, SurfaceFlinger 클래스(262)가 Surface를 할당한다. 할당된 Surface는 이를 실제로 사용할 MediaPlayer(230)에게 전달될 수 있는 상태로 된다.
제354단계에서, VideoView 클래스(200)는 MediaPlayer 클래스(202)를 통하여 영상 재생을 실행할 MediaPlayer 엔진(244)을 찾는다. 이에 따라, 예컨대 PVPlayer가 선택될 수 있다. VideoView 클래스(200)는 선택된 MediaPlayer 엔진(244)에게 할당된 Surface와 선택된 파일을 전달한다. 이어서, PVPlayer(244)는 실행할 준비를 하고, PlayerDriver(242)를 통하여 OpenCORE 프레임웍 내에 있는 비디오 코덱(246)이 실행되도록 한다. 그리고, PVPlayer(244)는 출력으로 사용할 Surface와 AndroidSurfaceOutput 클래스(246)를 통하여 연결한다.
제356단계에서는 PVPlayer(244)가 실행됨에 따라 원본 데이터에 대한 디멀티플렉싱 및 디코딩이 이루어진다. 여기서, 원본 데이터는 스트리밍 서버로부터 수신되는 데이터 스트림일 수도 있고 메모리(20)에 저장되어 있는 멀티미디어 파일로서, 영상, 오디오, 데이터 등 복수의 컨텐츠가 복합적으로 구성된 컨테이너 구조를 가지고 있을 수 있다. PVPlayer(244)는 원본 데이터를 디멀티플렉싱하여 컨테이너 내에 있는 동영상 소스를 추출하고, 비디오 코덱(246)은 압축된 상태의 동영상 소스를 디코딩되어 YUV 비디오 프레임 데이터를 출력한다. 출력되는 YUV 영상신호는 PlayerDriver(242) 및 AndroidSurfaceOutput 클래스(248)를 통해 LayerBuffer 클래스(250)에 전달된다.
제358단계에서, LayerBuffer 클래스(250)에 전달된 YUV 영상신호는 그 하부 서비스인 SurfaceLayerBuffer 클래스의 제어 하에 포스트 프로세서(36)에 의해 RGB 영상신호로 변환된다. 포스트 프로세서(36)에 변환된 RGB 영상신호는 할당된 Surface 버퍼 즉, RGB 버퍼(284A)로 전달된다.
RGB 영상신호가 2D 영상신호인 경우. 영상신호는 RGB 버퍼(284A)에서 커널 단의 제2 프레임 버퍼(298)에 전달된 다음, LCD 컨트롤러(50)에서 일반 평면 영상에 상응하는 서피스들(Surface1, Surface2)과 하드웨어 합성된 후 LCD 패널(52)를 통해 영상으로 표출된다. 한편, RGB 영상신호가 3D 영상신호인 경우에는, SurfaceFlinger 클래스(262)는 RGB 영상신호로의 칼라 스페이스 변환이 완료된 영상에 대하여 오버레이 기능을 수행하도록 포스트 프로세서(36)의 오버레이 클래스를 실행시킨다. 이에 따라, RGB 영상신호 내에 포함된 좌우 영상 쌍은 픽셀 단위로 교대로 믹싱되어 RGB 버퍼(284A)에 저장된 후, 제2 프레임 버퍼(298)로 DMA 전송된다. 믹싱된 RGB 영상은 제1 프레임 버퍼(296) 내에 저장된 일반 평면 영상에 상응하는 서피스들(Surface1, Surface2)과 LCD 컨트롤러(50)에서 합성된 후, LCD 패널(52)를 통해 3D 영상으로 표출되어 입체효과를 나타내게 된다(제360단계).
제356단계 내지 제360단계는 원본 데이터의 재생이 완료될 때까지 반복적으로 수행된다.
도 9는 도 1의 디스플레이 장치에서 칼라 스페이스 변환 및 좌우 영상 믹싱 프로세스를 구현하기 위한 출력단의 다른 실시예를 보여준다. 도시된 출력단의 프로세스는 스테레오스코픽 영상쌍을 구성하는 좌우 영상을 믹싱하여 3D 영상을 구성하고, 상기 3D 영상과 함께 하나 이상의 일반 평면 영상을 합성(Composition)하여 출력할 수 있다. 여기서, 복수의 일반 평면 영상과 3D 영상은 모두 SurfaceFlinger 클래스(262B)에 의해 소프트웨어적으로 합성된다.
본 실시예에 있어서, 네이티브 단에는 제1 내지 제3 레이어 버퍼(270A~270C)와, 2D/3D 스위치(282B)와, Mix 버퍼(290B)가 마련되고, 영상 믹싱 프로세스(292B)가 수행된다.
제1 및 제2 레이어 버퍼(270A, 270B)는 SurfaceFlinger 클래스(262B)에 의해 사용되는 일반적인 서피스 버퍼로서, 자바 어플리케이션인 각종 액티비티에 의해 생성되는 일반 평면 영상 서피스들을 각각 저장한다. 상기 평면 영상은 일반적인 렌더링 특성을 가진 영상으로서, 예컨대 텍스트, 렌더링된 3D 영상, 3D 영상 콘텐츠 재생 과정에서 부수적으로 표시되는 타이틀 정보 및 메뉴 정보가 될 수 있다.
제3 레이어 버퍼(270C)는 3D 동영상 표시 또는 카메라 프리뷰를 처리하기 위한 버퍼이다. 제3 레이어 버퍼(270C)에 저장되는 동영상 데이터는 커널 단으로부터 공급될 수 있다. 커널 단에서, YUV 버퍼(280)는 LayerBuffer 클래스(250)를 통해서 YUV 영상신호를 받아들여 버퍼링하며, 포스트 프로세서(36)는 ServiceFlinger 클래스(262A) 또는 LayerBuffer 서비스(250)의 관리 하에 YUV 영상신호를 RGB 영상신호로 변환한다. 변환된 RGB 영상신호는 RGB 버퍼(284B)에 저장된다. 2D/3D 스위치(282B)는 재생되는 영상신호가 2D 영상신호인 경우에는 RGB 버퍼(284B)에 저장된 RGB 영상신호를 곧바로 제3 레이어 버퍼(270C)에 전달하고, 재생되는 영상신호가 3D 영상신호인 경우에는 상기 RGB 영상신호를 Mix 버퍼(290B)에 전달하여 영상 믹싱 프로세스(292B)가 RGB 영상신호 내에 포함된 좌우 영상을 믹싱하도록 하게 된다. 믹싱된 RGB 영상신호는 제3 레이어 버퍼(270C)에 저장된다.
좌우 영상의 믹싱 과정을 보다 구체적으로 살펴보면, 영상 믹싱 프로세스(292B)는 Mix 버퍼(290B)에 저장된 영상신호 비트스트림을 제3 레이어 버퍼(270C)로 전송함에 있어서 비트스트림을 순차적으로 전송하는 것이 아니라, Side-by-side 포맷의 3D RGB 영상에서 좌영상에 해당하는 부분과 우영상에 해당하는 부분으로부터 픽셀들을 교대로 추출하여 복사(copy)하게 된다. 즉, 영상 믹싱 프로세스(292B)는 각 주사선 단위로 좌영상의 첫 번째 픽셀을 추출하여 제3 레이어 버퍼(270C)의 첫 번째 픽셀 위치에 전송하고, 우영상의 첫 번째 픽셀을 추출하여 제3 레이어 버퍼(270C)의 두 번째 픽셀 위치에 배치한다. 그 다음, 영상 믹싱 프로세스(292B)는 Mix 버퍼(290B)로부터 좌영상의 두 번째 픽셀을 추출하여 제3 레이어 버퍼(270C)의 세 번째 픽셀 위치에 배치하고, 우영상의 두 번째 픽셀을 추출하여 제3 레이어 버퍼(270C)의 네 번째 픽셀 위치에 배치한다. 이와 같은 과정이 3D RGB 영상 전체에 대하여 수행됨으로써, 제3 레이어 버퍼(270C)에는 좌영상과 우영상이 수직라인 단위로 교대로 배치된 믹스된 영상이 저장된다.
SurfaceFlinger 클래스(262B)는 일반 평면 영상 서피스(Surface1, Surface2)와 함께 동영상 서피스(Surface3)를 하나로 모아서 프레임 버퍼(296)에 렌더링함으로써, 제1 내지 제3 레이어 버퍼(270A~270C)에 저장된 중층적인(Layered)인 구조의 데이터를 합성하는 기능을 수행한다.
이와 같은 출력단에 있어서, 먼저 일반적인 자바 어플리케이션용 평면 영상 서피스의 흐름을 살펴보면, 각각의 자바 어플리케이션에 할당된 서피스들은 소프트웨어적 합성 기능을 하는 SurfaceFlinger 클래스(262B)에 의해서 합성되어 프레임 버퍼(296)로 전달된다.
본 실시예에 따르면, 동영상 재생 또는 카메라 프리뷰 어플리케이션 과정에서 처리되는 서피스(Surface3)도 SurfaceFlinger 클래스(262B)에 의하여 소프트웨어적인 합성된다.
동영상 서피스에 대한 처리 과정을 살펴보면, YUV 버퍼(280)에 저장된 YUV 영상은 포스트 프로세서(36)에 의해서 RGB 영상으로 변환되고 LCD 패널(52)의 화면 크기에 맞게 스케일링된다. 2D/3D 스위치(282B)가 2D 모드로 설정되어 있으면, 일반적인 2D 영상은 제3 레이어 버퍼(270C)에 바로 저장된 후, SurfaceFlinger 클래스(262B)에 전달되어 다른 서피스들과 함께 합성되어 프레임 버퍼(296)로 전달된다. 한편, 2D/3D 스위치(282B)가 3D 모드로 설정되어 있으면, RGB 버퍼(284B)에 저장된 RGB 영상은 네이티브 단의 Mix 버퍼(290B)로 복사된다. Mix 버퍼(290B)에 저장되어 있는 믹싱된 RGB 영상 내에 있는 좌우 영상은 영상 믹싱 프로세스(292B)에 의하여 믹싱된 후 제3 레이어 버퍼(270C)로 전달된다. 그리고 믹싱된 RGB 영상은 SurfaceFlinger 클래스(262B)에 전달되어 다른 서피스들과 함께 합성되어 프레임 버퍼(296)로 전달됨으로써, LCD 패널(52)에 타이틀 명칭 및/또는 메뉴와 함께 3D영상으로써 표시된다.
이후, 제3 레이어 버퍼(270C)에 저장된 3D RGB 비트스트림은 SurfaceFlinger 클래스(262B)에 전달되어 다른 Surface들과 합성된다. 합성된 영상은 프레임 버퍼(296)로 전달되고 LCD 컨트롤러(50)를 통하여 LCD 패널(52)에 표시됨으로써, 패럴랙스 배리어(54)의 전면에 있는 사용자에게 스테레오스코픽 3D 영상이 인지될 수 있게 된다.
본 실시예에 따르면 동영상 Surface의 흐름이 미들웨어 단 즉, Native 단으로 복사되어 처리되며 SurfaceFlinger 클래스(262B)에 의해서 다른 서피스에 의해 소프트웨어적으로 합성되어지기 때문에, 도 6에 도시된 실시예에 비해 전체적인 합성 처리 시간이 다소 늘어날 수 있지만 소형 LCD를 구비하는 단말기, 또는 실사 영상보다는 에니메이션 영상 특히 렌더링에 의한 폴리곤 숫자가 적은 에니메이션 영상을 처리하는 단말기에 적합하게 사용될 수 있다.
도 10은 도 9에 도시된 실시예에 있어서 3D 영상 처리를 위한 함수들의 실행 순서를 보여준다.
비디오 코덱(246)으로부터 디코딩된 YUV 영상신호가 타이머 동기에 따라 나오게 되면, AndroidSurfaceOutput 클래스(250)에서 정해진 시간마다 멤버 함수인 writeAsync() 함수가 실행된다(제300단계). writeAsync() 함수는 디코딩된 YUV 영상신호의 RGB 신호로의 변환을 위해 포스트 프로세서의 버퍼에 영상신호를 복사할 수 있도록 WriteFrameBuffer() 함수를 호출한다(제302단계). WriteFrameBuffer() 함수는 디코딩된 미디어 비트스트림을 LayerBuffer 클래스(250)의 서브 클래스인 SurfaceLayerBuffer 클래스에 전달한다.
디코딩된 YUV 영상신호 비트스트림은 SurfaceLayerBuffer 클래스 내에 있는 postBuffer() 함수에 의해 LayerBuffer 클래스(250)에게 전달되고(제304단계), 다시 LayerBuffer 클래스(250) 내에 있는 postBuffer() 함수에 의해 LayerBuffer 클래스(250)의 다른 서브 클래스인 BufferSource 서비스에게 전달된다(제306단계).
BufferSource 클래스의 postBuffer() 함수는 YUV 영상신호 비트스트림이 YUV 버퍼(280)에 저장된 상태에서 포스트 프로세서(36)를 제어하여 포스트 프로세서(36)가 YUV 영상신호를 RGB 영상신호로 변환하도록 하게 된다(제308단계).
YUV 영상신호로부터 RGB 영상신호로의 변환이 완료되면, 콜백(callback) 함수인 LayerBuffer 클래스(250)의 onDraw() 함수가 호출된다(제410단계). onDraw() 함수는 Side-by-side 포맷의 3D RGB 영상에서 좌영상에 해당하는 부분과 우영상에 해당하는 부분으로부터 픽셀을 교대로 추출하여 새로운 Surface 상에 삽입, 배치한다. 즉, onDraw() 함수는 영상 내의 각 주사선 단위로 첫 번째 좌영상 픽셀을 추출하여 새로운 Surface의 첫 번째 픽셀 위치에 배치하고, 첫 번째 우영상 픽셀을 추출하여 새로운 Surface의 두 번째 픽셀 위치에 배치한다. 그 다음, onDraw() 함수는 두 번째 좌영상 픽셀을 추출하여 새로운 Surface의 세 번째 픽셀 위치에 배치하고, 두 번째 우영상 픽셀을 추출하여 새로운 Surface의 네 번째 픽셀 위치에 배치한다. 이와 같은 과정이 영상 전체에 대하여 수행됨으로써, 좌우 영상이 믹싱되며 새로이 형성된 화면에서는 좌영상과 우영상이 수직라인 단위로 교대로 배치될 수 있게 된다.
좌우 RGB 영상의 믹싱이 완료되면, BufferSource 서비스의 onDraw() 함수는 완료 신호를 SurfaceFlinger 클래스(262B)로 전달하여, SurfaceFlinger 클래스(262B)가 믹싱된 RGB 영상 데이터를 다른 서피스들(Surface1, Surface2)과 함께 프레임 버퍼(296)로 출력할 수 있도록 한다(제412단계).
도 11은 도 9의 믹싱 프로세스를 채택하는 실시예에 있어서의 3차원 영상 표시 과정을 전체적으로 보여준다.
사용자는 멀티미디어 플레이어(100)의 실행을 선택한 후 파일을 선택한다(제450단계). 이때, 파일을 먼저 선택하여 멀티미디어 플레이어(100)가 실행되도록 할 수도 있다.
제452단계에서, 멀티미디어 플레이어(100)의 VideoView 클래스(200)는 SurfaceView 클래스(210)에 대하여 Surface 할당을 요청한다. SurfaceView 클래스(210)는 Surface를 생성, 관리하지만 직접 생성하는 것이 아니라, Surface를 종합적으로 관리하는 WindowManager 클래스(220)에게 Surface를 요청한다. 요청을 받은 WindowManager 클래스(220)는 JNI 인터페이스를 통하여 SurfaceFlinger 클래스(262)에 Surface를 요청하고, SurfaceFlinger 클래스(262)가 Surface를 할당한다. 할당된 Surface는 이를 실제로 사용할 MediaPlayer(230)에게 전달될 수 있는 상태로 된다.
제454단계에서, VideoView 클래스(200)는 MediaPlayer 클래스(202)를 통하여 영상 재생을 실행할 MediaPlayer 엔진(244)을 찾는다. 이에 따라, 예컨대 PVPlayer가 선택될 수 있다. VideoView 클래스(200)는 선택된 MediaPlayer 엔진(244)에게 할당된 Surface와 선택된 파일을 전달한다. 이어서, PVPlayer(244)는 실행할 준비를 하고, PlayerDriver(242)를 통하여 OpenCORE 프레임웍 내에 있는 비디오 코덱(246)이 실행되도록 한다. 그리고, PVPlayer(244)는 출력으로 사용할 Surface와 AndroidSurfaceOutput 클래스(246)를 통하여 연결한다.
제456단계에서는 PVPlayer(244)가 실행됨에 따라 원본 데이터에 대한 디멀티플렉싱 및 디코딩이 이루어진다. 여기서, 원본 데이터는 스트리밍 서버로부터 수신되는 데이터 스트림일 수도 있고 메모리(20)에 저장되어 있는 멀티미디어 파일로서, 영상, 오디오, 데이터 등 복수의 컨텐츠가 복합적으로 구성된 컨테이너 구조를 가지고 있을 수 있다. PVPlayer(244)는 원본 데이터를 디멀티플렉싱하여 컨테이너 내에 있는 동영상 소스를 추출하고, 비디오 코덱(246)은 압축된 상태의 동영상 소스를 디코딩되어 YUV 비디오 프레임 데이터를 출력한다. 출력되는 YUV 영상신호는 PlayerDriver(242) 및 AndroidSurfaceOutput 클래스(248)를 통해 LayerBuffer 클래스(250)에 전달된다.
제458단계에서, LayerBuffer 클래스(250)에 전달된 YUV 영상신호는 그 하부 서비스인 SurfaceLayerBuffer 클래스의 제어 하에 포스트 프로세서(36)에 의해 RGB 영상신호로 변환된다. 포스트 프로세서(36)에 변환된 RGB 영상신호는 할당된 Surface 버퍼 즉, RGB 버퍼(284B)로 전달된다.
RGB 영상신호가 2D 영상신호인 경우. 영상신호는 SurfaceFlinger 클래스(262B)의 제어 하에 제3 레이어 버퍼3(270C)에 전달된 후 SurfaceFlinger 클래스(262B)에 의해 일반 평면 영상 서피스들(Surface1, Surface2)과 소프트웨어적으로 합성된다. 합성된 영상신호는 프레임 버퍼(296)에 전달됨으로써, LCD 패널(52)을 통해 영상으로 표출된다. 한편, RGB 영상신호가 3D 영상신호인 경우에는, RGB 버퍼(284B)에 저장된 RGB 영상신호가 Mix 버퍼(290B)에 복사되고, 영상 믹싱 프로세스(292B)를 통해 믹싱된다. 믹싱된 3D RGB 영상은 제3 레이어 버퍼3(270C)에 전달된 후 SurfaceFlinger 클래스(262B)에 의해 일반 평면 영상 서피스들(Surface1, Surface2)과 소프트웨어적으로 합성된다(제460단계). 합성된 영상신호는 프레임 버퍼(296)를 거쳐 LCD 패널(52)를 통해 영상으로 표출되며, 패럴랙스 배리어(54)의 작용에 의해 영상이 입체효과를 나타내게 된다.
제456단계 내지 제460단계는 원본 데이터의 재생이 완료될 때까지 반복적으로 수행된다.
본 발명의 3D 디스플레이 장치에서 멀티미디어 플레이어(100)는 LCD 패널(52) 상에 표시되는 UI 상에서 실행 아이콘으로 존재할 수 있다. 아이콘이 선택되면, 프로그램이 실행되면서 재생할 수 있는 파일 목록이 표시되고, 파일을 선택하면 파일이 재생된다. 한편, 웹 사이트에 접속한 상태에서, 미디어 파일을 선택하거나 미디어 파일이 포함된 페이지를 선택하면 해당 미디어 파일이 스트리밍 방식으로 제공될 수 있다.
바람직한 실시예에 있어서는, 도 12에 도시된 바와 같이 영상 재생 중에 화면에 조작 메뉴(500)가 표시될 수 있다. 조작 메뉴(500)는 '시작/일시정지' 버튼(502)과, '재시작' 버튼(504)과, '전화면으로 이동' 버튼(506)과, '2D/3D 선택' 버튼(508)과, '시차(Disparity) 증가' 버튼(510)과, '시차 감소' 버튼(512)을 포함할 수 있다. 여기서, '전화면으로 이동' 버튼(506)은 동영상을 재생 이전으로의 화면 이동을 지시하는데 사용된다. '2D/3D 선택' 버튼(508)은 사용자가 2D 영상을 표시할지, 3D 영상을 표시할 지를 지시하는데 사용된다. '시차(Disparity) 증가' 버튼(510)과 '시차 감소' 버튼(512)은 좌우 영상간의 시차(Disparity)를 조정하기 위한 조작 버튼이다. 사용자가 '시차 증가' 버튼(510)을 누르면 좌우 영상 믹싱시에 적용할 옵셋값이 증가한다. 즉, 사용자가 '시차(Disparity) 증가' 버튼(510)을 누르면, 믹싱 과정에서 좌영상에 대하여 우영상을 우측으로 1 픽셀만큼 쉬프트시킨 후 믹싱을 수행한다. 한편, 사용자가 '시차 감소' 버튼(512)을 누르면 좌우 영상 믹싱시에 적용할 옵셋값이 감소한다. 즉, 사용자가 '시차 감소' 버튼(512)을 누르면, 믹싱 과정에서 좌영상에 대하여 우영상을 좌측으로 1 픽셀만큼 쉬프트시킨 후 믹싱을 수행한다. 이에 따라 LCD 패널(52)의 크기나 사용자의 시청습관 특히 사용자의 양안과 LCD 패널(52)의 거리에 따라 최적의 시차가 형성되도록 함으로써 어지럼증을 감소시키고 3D 영상의 만족도를 높일 수 있게 된다.
이상에서 본 발명의 바람직한 실시예를 설명하였지만, 본 발명은 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다양한 방식으로 변형될 수 있고 다른 구체적인 형태로 실시될 수 있다.
예컨대, 이상의 설명에서는 원본 파일 또는 스트리밍 데이터가 H.264 규격으로 인코딩되어 있는 경우를 중심으로 설명하였지만, 다른 규격으로 인코딩된 파일 내지 스트리밍 데이터가 디코딩될 수도 있다.
위에서는 입력 영상이 Side-by-side 방식으로 포맷팅되어 있는 것을 기준으로 설명하였지만, 입력 영상이 Top-down 방식, 타일 방식 또는 여타의 방식으로 포맷팅되어 있어도 유사한 방식으로 영상신호가 처리될 수 있다.
바람직한 실시예에서는 포스트 프로세서가 소프트웨어에 의해 구현되는 실시예를 중심으로 설명하였지만, 이러한 실시예가 변형된 실시예에서는 포스트 프로세서가 하드웨어적으로 구성될 수도 있음은 물론이다.
한편, 미디어 프레임웍으로서 OpenCORE를 사용하는 실시예에 대하여 설명하였지만, OpenCORE가 복잡하고 수정 변환이 매우 어려운 점을 감안하여, 안드로이드 플랫폼에 따라서는 OpenCORE 대신에 Stagefright를 사용할 수도 있고 여타의 프레임웍이 사용될 수도 있다.
도 9 내지 도 11의 실시예와 관련하여, 칼라 스페이스 변환만이 커널 단에서 이루어지고 좌우 영상의 믹싱은 미들웨어에서 이루어지는 경우를 중심으로 설명하였지만, 칼라 스페이스 변환과 함께 좌우 영상의 믹싱도 커널 단에서 이루어질 수 있다.
한편, 위에서는 구체적으로 언급하지 않았지만, 프레임 버퍼들(296, 298)은 마이크로프로세서(30)에 마련될 수도 있고, LCD 컨트롤러(50)에 마련될 수도 있다. 프레임 버퍼들(296, 298)이 LCD 컨트롤러(50)에 마련되는 경우, 후술하는 특허청구범위에 있어서 "디스플레이 컨트롤러"는 LCD 패널(52)의 발광 동작을 수행하고, 프레임 버퍼들(296, 298)의 영상 비트스트림이 직접 또는 오버레이에 의해 LCD 패널(52)에 전달되는 것을 조절하는 코어 기능 수행부를 지칭하는 의미로 사용된다.
본 발명에 의한 디스플레이 장치를 구현하기 위한 응용 프로그램 및 라이브러리 프로그램 유닛들은 기록매체에 기록된 상태로 배포됨으로써, 패럴랙스 배리어를 구비하거나 착탈될 수 있는 단말기에 탑재되어 실행될 수 있다. 여기서, 상기 단말기는 휴대형 단말기에 한정되는 것은 아니며 TV, 데스크탑 PC, 노트북 PC 등 고정형 내지 반고정형 단말기도 포함된다.
그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (16)

  1. 디스플레이 패널을 포함하는 하드웨어 수단과, 상기 하드웨어 수단을 직접 제어하는 커널 계층과, 상기 하드웨어 수단을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 휴대형 단말기에 있어서,
    (a) 평면 영상을 나타내는 하나 이상의 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하여, 제1 프레임 버퍼에 저장하는 단계;
    (b) 인코딩된 영상신호를 상기 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원하는 단계;
    (c) 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 커널 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여, 믹싱된 스테레오스코픽 영상신호를 제2 프레임 버퍼에 저장하는 단계; 및
    (d) 상기 커널 계층에서 상기 제1 및 제2 프레임 버퍼에 저장된 신호들을 오버레이에 의해 하드웨어적으로 합성하여 상기 디스플레이 패널에 전달하는 단계;
    를 포함하여, 상기 디스플레이 패널을 통해 스테레오스코픽 3차원 영상이 표출되도록 하는 3차원 영상신호 처리방법.
  2. 청구항 1에 있어서, 상기 (a) 단계가
    상기 응용프로그램/미들웨어 계층에서 복수의 평면 영상 서피스를 생성하는 단계; 및
    상기 응용프로그램/미들웨어 계층에서 상기 복수의 평면 영상 서피스를 합성하여 상기 제1 프레임 버퍼에 저장하는 단계;
    를 포함하는 3차원 영상신호 처리방법.
  3. 청구항 1에 있어서, 상기 (c)단계가
    (c1) 상기 YUV 영상신호를 RGB 영상신호로 변환하여 믹스 버퍼에 저장하는 단계; 및
    (c2) 상기 믹스 버퍼에 저장된 상기 RGB 영상신호 내에 포함된 상기 좌영상과 상기 우영상을 믹싱해서 상기 믹싱된 스테레오스코픽 영상신호를 RGB 버퍼에 저장하여, 상기 RGB 버퍼에 저장된 상기 믹싱된 스테레오스코픽 영상신호가 상기 제2 프레임 버퍼에 전달되도록 하는 단계;
    를 포함하는 3차원 영상신호 처리방법.
  4. 청구항 3에 있어서, 상기 (c1) 단계가 상기 커널 계층에서 수행되는 3차원 영상신호 처리방법.
  5. 원본 영상신호를 받아들이고 디멀티플렉싱하여 압축된 영상 신호를 추출하고, 상기 압축된 영상 신호를 디코딩하여 표시하는 디스플레이 장치에 있어서,
    전면에 패럴랙스 배리어가 마련되어 있는 디스플레이 패널;
    상기 디스플레이 패널을 구동하는 디스플레이 컨트롤러;
    상기 디스플레이 컨트롤러를 통하여 상기 디스플레이 패널에 표시될 영상의 적어도 일부를 각각 저장하기 위한 제1 및 제2 프레임 버퍼; 및
    상기 디멀티플렉싱 동작과 상기 디코딩 동작을 제어하며, 상기 디스플레이 패널을 직접 제어하는 커널 계층과, 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 프로그램을 실행하여 다음 처리기능을 수행하는 마이크로프로세서:
    (a) 하나 이상의 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하여 상기 제1 프레임 버퍼에 저장하는 기능과;
    (b) 인코딩된 영상신호를 상기 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원하는 기능과;
    (c) 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 커널 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여, 믹싱된 스테레오스코픽 영상신호를 상기 제2 프레임 버퍼에 저장하는 기능과;
    (d) 상기 커널 계층에서 상기 제1 및 제2 프레임 버퍼에 저장된 신호들을 오버레이에 의해 하드웨어적으로 합성하여 상기 디스플레이 패널에 전달하는 기능;
    을 구비하여, 상기 디스플레이 패널을 통해 스테레오스코픽 3차원 영상을 표출할 수 있는 휴대형 3차원 디스플레이 장치.
  6. 청구항 5에 있어서, 상기 마이크로프로세서가 상기 (a)처리기능을 수행함에 있어서, 복수의 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하고 합성하여 상기 제1 프레임 버퍼에 저장할 수 있는 휴대형 3차원 디스플레이 장치.
  7. 청구항 5에 있어서, 상기 (c)처리기능이
    (c1) 상기 YUV 영상신호를 RGB 영상신호로 변환하여 믹스 버퍼에 저장하는 기능; 및
    (c2) 상기 믹스 버퍼에 저장된 상기 RGB 영상신호 내에 포함된 상기 좌영상과 상기 우영상을 믹싱해서 상기 믹싱된 스테레오스코픽 영상신호를 RGB 버퍼에 저장하여, 상기 RGB 버퍼에 저장된 상기 믹싱된 스테레오스코픽 영상신호가 상기 제2 프레임 버퍼에 전달되도록 하는 기능;
    을 포함하는 휴대형 3차원 디스플레이 장치.
  8. 청구항 7에 있어서, 상기 (c1)처리기능이 상기 커널 계층에서 수행되는 휴대형 3차원 디스플레이 장치.
  9. 디스플레이 패널; 상기 디스플레이 패널을 구동하는 디스플레이 컨트롤러; 상기 디스플레이 컨트롤러를 통하여 상기 디스플레이 패널에 표시될 영상의 적어도 일부를 저장하기 위한 제1 및 제2 프레임 버퍼; 상기 디스플레이 패널을 직접 제어하는 커널 계층과 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 계층에 따라 소정을 기능을 수행하는 마이크로프로세서;를 구비하는 휴대형 단말기에 탑재되어 실행될 수 있는 프로그램을 기록한 기록매체로서, 상기 프로그램이
    (a) 평면 영상을 나타내는 하나 이상의 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하여 상기 제1 프레임 버퍼에 저장하는 기능;
    (b) 인코딩된 영상신호를 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원시키는 기능;
    (c) 상기 YUV 영상신호를 RGB 영상신호로 변환되도록 하고, 상기 커널 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상이 믹싱되도록 하며, 믹싱된 스테레오스코픽 영상신호가 상기 제2 프레임 버퍼에 저장되도록 하는 기능; 및
    (d) 상기 커널 계층에서 상기 제1 및 제2 프레임 버퍼에 저장된 신호들이 오버레이에 의해 하드웨어적으로 합성되어 상기 디스플레이 패널에 전달되도록 하는 기능;
    을 구비하여, 상기 디스플레이 패널을 통해 스테레오스코픽 3차원 영상이 표출되도록 하는 휴대형 단말기용 프로그램을 기록한 기록매체.
  10. 청구항 9에 있어서, 상기 (a) 기능을 수행함에 있어서, 복수의 평면 영상 서피스를 상기 응용프로그램/미들웨어 계층에서 생성하고 합성하여 상기 제1 프레임 버퍼에 저장되도록 하는 프로그램을 기록한 기록매체.
  11. 디스플레이 패널을 포함하는 하드웨어 수단과, 상기 하드웨어 수단을 직접 제어하는 커널 계층과, 상기 하드웨어 수단을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 휴대형 단말기에 있어서,
    (a) 평면 영상을 나타내는 하나 이상의 평면 영상 서피스를 생성하여, 평면 영상 레이어 버퍼에 저장하는 단계;
    (b) 인코딩된 영상신호를 상기 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원하는 단계;
    (c) 상기 커널 계층에서 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 응용프로그램/미들웨어 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여 믹싱된 스테레오스코픽 영상신호를 입체 영상 레이어 버퍼에 저장하는 단계; 및
    (d) 상기 응용프로그램/미들웨어 계층에서 상기 평면 영상 레이어 버퍼 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하여, 프레임 버퍼를 통해 상기 디스플레이 패널에 전달하는 단계;
    를 포함하여, 상기 디스플레이 패널을 통해 스테레오스코픽 3차원 영상이 표출되도록 하는 3차원 영상신호 처리방법.
  12. 청구항 11에 있어서, 상기 (a) 단계에서, 상기 평면 영상 서피스를 복수 개 생성하여 상기 복수의 평면 영상 서피스 각각에 대응하여 마련된 복수의 평면 영상 레이어 버퍼들에 각각 저장하고,
    상기 (d) 단계에서, 상기 평면 영상 레이어 버퍼들 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하는 3차원 영상신호 처리방법.
  13. 원본 영상신호를 받아들이고 디멀티플렉싱하여 압축된 영상 신호를 추출하고, 상기 압축된 영상 신호를 디코딩하여 표시하는 디스플레이 장치에 있어서,
    전면에 패럴랙스 배리어가 마련되어 있는 디스플레이 패널;
    상기 디스플레이 패널에 표시될 영상을 저장하는 프레임 버퍼; 및
    상기 디멀티플렉싱 동작과 상기 디코딩 동작을 제어하며, 상기 디스플레이 패널을 직접 제어하는 커널 계층과, 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 프로그램을 실행하여 다음 처리기능을 수행하는 마이크로프로세서:
    (a) 평면 영상을 나타내는 하나 이상의 평면 영상 서피스를 생성하여, 평면 영상 레이어 버퍼에 저장하는 기능과;
    (b) 인코딩된 영상신호를 상기 응용프로그램/미들웨어 계층의 관여 하에 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원하는 기능과;
    (c) 상기 커널 계층에서 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 응용프로그램/미들웨어 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상을 믹싱하여 믹싱된 스테레오스코픽 영상신호를 입체 영상 레이어 버퍼에 저장하는 기능과;
    (d) 상기 응용프로그램/미들웨어 계층에서 상기 평면 영상 레이어 버퍼 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하여, 상기 프레임 버퍼를 통해 상기 디스플레이 패널에 전달하는 기능;
    을 구비하여, 상기 디스플레이 패널을 통해 스테레오스코픽 3차원 영상을 표출할 수 있는 휴대형 3차원 디스플레이 장치.
  14. 청구항 13에 있어서,
    상기 마이크로프로세서가 상기 (a)처리기능을 수행함에 있어서, 상기 평면 영상 서피스를 복수 개 생성하여 상기 복수의 평면 영상 서피스 각각에 대응하여 마련된 복수의 평면 영상 레이어 버퍼들에 각각 저장하고,
    상기 (d)처리기능을 수행함에 있어서는 상기 평면 영상 레이어 버퍼들 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하는 휴대형 3차원 디스플레이 장치.
  15. 디스플레이 패널; 상기 디스플레이 패널을 구동하는 디스플레이 컨트롤러; 상기 디스플레이 컨트롤러를 통하여 상기 디스플레이 패널에 표시될 영상을 저장하기 위한 프레임 버퍼; 상기 디스플레이 패널을 직접 제어하는 커널 계층과 상기 디스플레이 패널을 통해 동영상이 표출되도록 상기 커널 계층을 제어하는 응용프로그램/미들웨어 계층을 구비하는 계층에 따라 소정을 기능을 수행하는 마이크로프로세서;를 구비하는 휴대형 단말기에 탑재되어 실행될 수 있는 프로그램을 기록한 기록매체로서, 상기 프로그램이
    (a) 평면 영상을 나타내는 하나 이상의 평면 영상 서피스를 생성하여, 평면 영상 레이어 버퍼에 저장하는 기능;
    (b) 인코딩된 영상신호를 디코딩하여, 스테레오스코픽 영상 쌍을 나타내는 YUV 영상신호를 복원시키는 기능;
    (c) 상기 커널 계층에서 상기 YUV 영상신호를 RGB 영상신호로 변환하고, 상기 응용프로그램/미들웨어 계층에서 상기 RGB 영상신호 내에 포함된 좌영상과 우영상이 믹싱되도록 하며 믹싱된 스테레오스코픽 영상신호가 입체 영상 레이어 버퍼에 저장되도록 하는 기능; 및
    (d) 상기 응용프로그램/미들웨어 계층에서 상기 평면 영상 레이어 버퍼 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하여, 프레임 버퍼를 통해 상기 디스플레이 패널에 전달되도록 하는 기능;
    을 구비하여, 상기 디스플레이 패널을 통해 스테레오스코픽 3차원 영상이 표출되도록 하는 휴대형 단말기용 프로그램을 기록한 기록매체.
  16. 청구항 15에 있어서, 상기 (a) 기능을 수행함에 있어서, 상기 평면 영상 서피스를 복수 개 생성하여 상기 복수의 평면 영상 서피스 각각에 대응하여 마련된 복수의 평면 영상 레이어 버퍼들에 각각 저장하고,
    상기 (d) 기능을 수행함에 있어서는 상기 평면 영상 레이어 버퍼들 및 입체 영상 레이어 버퍼에 저장된 신호들을 합성하는 프로그램을 기록한 기록매체.
KR1020110043507A 2010-10-13 2011-05-09 3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치 KR101090981B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020110043507A KR101090981B1 (ko) 2011-05-09 2011-05-09 3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치
US13/271,398 US8860716B2 (en) 2010-10-13 2011-10-12 3D image processing method and portable 3D display apparatus implementing the same
JP2011225972A JP2012085301A (ja) 2010-10-13 2011-10-13 3次元映像信号処理方法及びこれを具現する携帯型3次元ディスプレイ装置
CN201110397069.9A CN102780892B (zh) 2011-05-09 2011-12-02 三维图像处理方法及实施该方法的便携式三维显示设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110043507A KR101090981B1 (ko) 2011-05-09 2011-05-09 3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치

Publications (1)

Publication Number Publication Date
KR101090981B1 true KR101090981B1 (ko) 2011-12-08

Family

ID=45505837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110043507A KR101090981B1 (ko) 2010-10-13 2011-05-09 3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치

Country Status (2)

Country Link
KR (1) KR101090981B1 (ko)
CN (1) CN102780892B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103796064A (zh) * 2014-02-21 2014-05-14 深圳创维-Rgb电子有限公司 播放方法、播放器及显示设备
CN104574260A (zh) * 2015-01-09 2015-04-29 青岛海信移动通信技术股份有限公司 一种图像信息的生成方法和装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105763950A (zh) * 2014-12-19 2016-07-13 中兴通讯股份有限公司 一种弹幕显示方法及系统
CN106657757B (zh) * 2015-11-04 2020-06-09 阿里巴巴集团控股有限公司 一种相机应用的图像预览方法、装置及相机应用系统
CN105530479A (zh) * 2015-12-28 2016-04-27 深圳市科漫达智能管理科技有限公司 一种基于移动终端的视频数据处理方法及系统
CN106469039B (zh) * 2016-09-28 2019-05-03 华为技术有限公司 图像显示方法及系统
CN107169950A (zh) * 2017-06-02 2017-09-15 江苏北方湖光光电有限公司 一种高分辨率图像融合处理电路
CN107527317B (zh) * 2017-07-18 2020-11-10 西安电子科技大学 基于图像处理的数据传输系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4361435B2 (ja) * 2004-07-14 2009-11-11 株式会社エヌ・ティ・ティ・ドコモ 動画像復号方法、動画像復号プログラム、動画像復号装置、動画像符号化方法、動画像符号化プログラム及び動画像符号化装置
EP2105032A2 (en) * 2006-10-11 2009-09-30 Koninklijke Philips Electronics N.V. Creating three dimensional graphics data
US7982733B2 (en) * 2007-01-05 2011-07-19 Qualcomm Incorporated Rendering 3D video images on a stereo-enabled display
JP4657313B2 (ja) * 2008-03-05 2011-03-23 富士フイルム株式会社 立体画像表示装置および方法並びにプログラム
US8054316B2 (en) * 2008-11-14 2011-11-08 Nvidia Corporation Picture processing using a hybrid system configuration

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103796064A (zh) * 2014-02-21 2014-05-14 深圳创维-Rgb电子有限公司 播放方法、播放器及显示设备
CN103796064B (zh) * 2014-02-21 2017-05-31 深圳创维-Rgb电子有限公司 播放方法、播放器及显示设备
CN104574260A (zh) * 2015-01-09 2015-04-29 青岛海信移动通信技术股份有限公司 一种图像信息的生成方法和装置
CN104574260B (zh) * 2015-01-09 2018-10-16 青岛海信移动通信技术股份有限公司 一种图像信息的生成方法和装置

Also Published As

Publication number Publication date
CN102780892A (zh) 2012-11-14
CN102780892B (zh) 2015-01-07

Similar Documents

Publication Publication Date Title
US8860716B2 (en) 3D image processing method and portable 3D display apparatus implementing the same
KR101090981B1 (ko) 3차원 영상신호 처리방법 및 이를 구현하는 휴대형 3차원 디스플레이 장치
US11303881B2 (en) Method and client for playing back panoramic video
US9741316B2 (en) Method and system for displaying pixels on display devices
WO2017113488A1 (zh) 一种虚拟现实设备中显示2d应用界面的方法和装置
TW201243822A (en) Mirroring graphics content to an external display
WO2017185761A1 (zh) 2d视频播放方法及装置
US11843755B2 (en) Cloud-based rendering of interactive augmented/virtual reality experiences
CN102714747A (zh) 立体视频图形覆盖
KR102257132B1 (ko) 몰입형 비디오 컨텐츠를 생성 및 렌더링하기 위한 방법들, 시스템들 및 매체들
CN116672702A (zh) 一种图像渲染方法和电子设备
CN112055256A (zh) 一种全景图像的图像处理方法及显示设备
CN114710702A (zh) 一种视频的播放方法和装置
Hutchison Introducing DLP 3-D TV
US8712225B2 (en) Playback device for stereoscopic viewing, integrated circuit, and program
US20110285821A1 (en) Information processing apparatus and video content playback method
US11297378B2 (en) Image arrangement determination apparatus, display controlling apparatus, image arrangement determination method, display controlling method, and program
CN110597577A (zh) 一种头戴可视设备及其分屏显示方法和装置
US10593122B1 (en) Mirroring edge pixels
CN116634207A (zh) 一种基于iptv业务的vr全景视频播放方法和系统
CN112235562B (zh) 一种3d显示终端、控制器及图像处理方法
De Almeida et al. Integration of Fogo Player and SAGE (Scalable Adaptive Graphics Environment) for 8K UHD Video Exhibition
US20220345679A1 (en) 3d display system and 3d display method
CN115665461B (zh) 一种视频录制方法及虚拟现实设备
CN113268302B (zh) 一种头戴式显示设备的显示模式切换方法、装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161201

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181203

Year of fee payment: 8