업텍 IT 11 016
학위 프로젝트 30학점 2011년 12월
Android 환경에서 셋톱박스로서의 PandaBoard 평가
토르비욘 스방가르드
2
Faculty of Science and Technology UTH unit 방문 주소: Ångströmlaboratoriet Lägerhyddsvägen 1 House 4, Floor 0 우편 주소: Box 536 751 21 Uppsala 전화: 018 – 471 30 03 팩스: 018 – 471 30 00 웹사이트: http://www.teknat. uu. 참조/학생
추상적인
안드로이드 환경에서 셋톱박스로서의 PandaBoard에 대한 평가 원문보기 KCI 원문보기 인용
토르비욘 스방가르드
본 논문의 목적은 판다보드가 안드로이드 기반의 셋톱박스(STB)로서의 역할을 수행할 가능성을 평가하는 것이다. STB는 외부 신호를 연결된 TV에서 볼 수 있는 비디오로 변환하는 장치입니다. PandaBoard는 모바일 소프트웨어 개발을 위한 저비용 개발 플랫폼으로 Texas Instruments에서 개발 및 제조한 칩셋인 OMAP4를 기반으로 합니다.
논문 구현 단계에서 PandaBoard는 주로 스마트폰에서 사용되는 인기 있는 운영 체제인 Android를 실행하도록 구성되었습니다. DVB-T2 장치는 지상파 디지털 TV 방송을 수신하기 위해 PandaBoard의 USB 포트 중 하나에 연결되었습니다.
주요 장애물은 PandaBoard의 매우 유망한 비디오 가속 하드웨어 사양에도 불구하고 평가할 수 없다는 사실이었습니다. 논문 파일럿 연구 중에 하드웨어 가속 비디오 재생이 PandaBoard Android 포트에 대해 아직 지원되지 않는다는 것이 분명해졌습니다. 프로그래밍 가능한 OpenGL ES2.0 셰이더를 대신 사용하여 PandaBoard CPU를 최대한 오프로드했습니다.
이 논문은 PandaBoard에 있는 인상적인 비디오 가속 하드웨어 측면에서 결정적이지 않을 수 있지만, 이 논문은 Android 운영 체제를 실행하는 시스템에서 OpenGLES 2.0과 함께 듀얼 코어 ARM Cortex-A9 프로세서로 달성할 수 있는 것을 보여줄 것입니다.
논문 작업은 스톡홀름의 Kista에 있는 Syntronic Software Innovation 사무소에서 수행되었습니다.
인쇄자: Reprocentralen ITCISSN: 1401-5749, UPTEC IT11 016 심사관: Anders Jansson주제 심사관: Arnold Pears감독자: David Näslund
4
요약
이 보고서의 목적은 Android 기반 셋톱 박스(STB) 역할에서 PandaBoard 개발 기판의 잠재력을 평가하는 것입니다. STB는 외부 신호를 연결된 TV에 표시할 수 있는 비디오 스트림으로 변환하는 데 사용되는 장치입니다. PandaBoard는 소위 스마트폰용 소프트웨어 개발을 위한 개발 보드입니다. Pandaboard 카드는 Texas Instruments에서 개발 및 제조한 칩셋인 OMAP4를 기반으로 합니다.
학위 프로젝트의 구현 단계에서 PandaBoard 보드는 중고 Android용으로 구성되었습니다. Android는 주로 스마트폰에서 볼 수 있는 인기 있는 운영 체제입니다. DVB-T2 동글은 지상파 디지털 TV에 액세스하기 위해 PandaBoard의 USB 포트 중 하나에 연결되었습니다.
작업 과정에서 가장 큰 걸림돌은 PandaBoard 카드에서 하드웨어 가속 비디오 재생에 대한 매우 유망한 사양에도 불구하고 불행히도 Android 드라이버를 평가할 수 없다는 사실이었습니다. 논문의 예비 연구 중에 하드웨어 가속 비디오 재생이 여전히 PandaBoard의 Android 포트에서 지원되지 않는다는 것이 분명해졌습니다. 프로그래밍 가능한 OpenGL ES 2.0 셰이더가 대신 사용되어 PandaBoard의 CPU를 최대한 완화합니다.
이 에세이가 PandaBoard 카드의 비디오 가속을 위한 인상적인 하드웨어 측면에서 철저하지는 않지만 보고서에서는 Linux 배포판 Android가 있는 시스템에서 OpenGL ES 2.0과 함께 듀얼 코어 ARM Cortex-A9 프로세서로 달성할 수 있는 것을 설명합니다. 운영 체제로.
학위 프로젝트는 스톡홀름의 Kista에 있는 Syntronic Software Innovation 현장에서 수행되었습니다.
5
6
내용물
1 배경 111.1 PandaBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Ducati 하위 시스템. . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.1.2 팬드로이드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 DVB 프로젝트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3 스웨덴의 디지털 지상파 텔레비전 . . . . . . . . . . . . . . . . . . . . 13
1.3.1 과거와 현재 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3.2 미래의 DTTV . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 콘텐츠 보호 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.5 셋톱박스 요구 사항 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 문제 설명 172.1 Linux 커널 DVB 스택 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 DVB-T2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3 오디오 및 비디오 디코딩 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3가지 방법 19
4 구현 214.1 시스템 주변 장치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.1 USB 장치. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.1.2 HDMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1.3 SD 카드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 시스템 소프트웨어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2.1 DVB 유틸리티 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2.2 FFMpeg 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2.3 색 공간 변환 . . . . . . . . . . . . . . . . . . . . . . . . . . 264.2.4 OpenGL ES 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3 결과 및 평가. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.3.1 시스템 성능 . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.3.2 전력 소비 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5 결론 315.1 미해결 문제. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.1 오디오 재생 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315.1.2 가속 비디오 재생 . . . . . . . . . . . . . . . . . . . . . . . 31
6 향후 작업 33
참고문헌 35
7
목차 목차
PCTV nanoStick T2 290e PCB 37
8
용어 사전
ADB Android 디버그 브리지AVC Advanced Video CodingATSC Advanced Television Systems CommitteeCOFDM Coded Orthogonal Frequency Division ModulationDVB-T Digital Video Broadcasting - TerrestrialDVB-T2 Digital Video Broadcasting - Second Generation TerrestrialDTTV Digital Terrestrial TelevisionEPG Electronic Program GuideGLSL OpenGL Shading LanguageGPU Graphics Processing UnitHDTV High Definition TelevisionIVA-HD Image Video Accelerator - High DefinitionISS Imaging Sub SystemMPEG Moving Picture Experts GroupMUX MultiplexerOEM Original Equipment ManufacturersOFDM Orthogonal Frequency Division ModulationOMAP Open Multimedia Application PlatformOpenGL ES 2.0 Open Graphics Library for Embedded SystemsPCB 인쇄 회로 기판SDTV Standard Definition TelevisionSIMD Single Instruction Multiple DataSoC System-on-a-ChipSTB Set -Top-BoxTI 텍사스 인스트루먼트
9
목차 목차
10
1장
배경
1.1 판다보드
PandaBoard는 모바일 소프트웨어 개발을 위한 저전력 및 저비용 플랫폼입니다. 4세대 OMAP4(Open Multimedia Application Platform) 칩을 탑재했다. OMAP 브랜드 이름은 TI로 널리 알려진 미국의 반도체 및 컴퓨터 기술 회사인 Texas Instruments에서 개발하고 제조한 모바일 멀티미디어 애플리케이션용 SoC(시스템 온 칩) 제품군입니다.
PandaBoard에는 각 코어가 1GHz에서 실행되는 듀얼 코어 ARM Cortex-A9 프로세서, PowerVR SGX540 그래픽 처리 장치(GPU) 및 이미지 비디오 가속기 고화질(IVA-HD) 하위 시스템을 수용하는 OMAP4430 SoC가 장착되어 있습니다. OMAP4 제품군은 시장에 출시된 최초의 듀얼 코어 Cortex-A9 기반 아키텍처 중 하나입니다. Linux 전문가 및 매니아 커뮤니티는 웹사이트 PandaBoard.org를 통해 PandaBord를 지원합니다.
PandaBoard는 HDTV 표준 1080p에서 고화질 비디오 콘텐츠의 재생을 지원하며 아마도 "풀 HD"라는 마케팅 용어로 더 잘 알려져 있을 것입니다. PandaBoard의 고성능 비디오 미디어 지원은 전용 하드웨어인 Ducati Sub System 덕분에 가능합니다.
1.1.1 Ducati 하위 시스템
Ducati 하위 시스템은 2개의 ARM Cortex-M3 프로세서, Image VideoAccelerator - High Definition(IVA-HD) 하위 시스템 및 Imaging 하위 시스템(ISS)으로 구성됩니다.
IVA-HD 하위 시스템은 초당 30프레임에서 최대 1080p 해상도의 비디오를 인코딩 및 디코딩하기 위한 하드웨어입니다. H.264 코덱으로도 알려진 Mpeg-4AVC와 같은 여러 비디오 코덱을 지원합니다. ISS는 외부 카메라 센서 또는 메모리에서 들어오는 픽셀 데이터를 처리합니다. 이러한 하위 시스템의 목적은 메인 ARM Cortex-A9 CPU에서 비디오 및 이미지 처리를 오프로드하는 것입니다.
1.1.2 팬드로이드
Pandroid는 PandaBoard용 Android의 Texas Instruments 지원 포트입니다. Android는 Google에서 개발 및 유지 관리하는 모바일 장치용 운영 체제입니다. 오픈 소스 Linux 커널, 미들웨어, 즉 개발자와 애플리케이션이 사용할 수 있는 라이브러리를 기반으로 하는 완전한 시스템으로 구성됩니다. 애플리케이션은 사용자가 디스플레이에서 보고 상호 작용하는 실제 프로그램입니다.
Pandroid와 표준 Android의 차이점은 PandaBoard에 있는 하드웨어를 지원하는 여러 패치입니다. TI 특정 하드웨어와 같은
11
1.1. 판다보드 1장. 배경
그림 1.1: pandaboard.org의 PandaBoard 레이아웃(CC BY-SA 3.0)
아직 Linux 커널에 포함되어 있습니다. USB 마우스 지원과 같이 보다 직접적으로 실용적인 다른 패치도 포함되어 있습니다. 표준 Android는 터치 스크린 사용을 위해 설계되었으며 기본 USB 마우스 지원이 없습니다.
구현을 위해 2011년 3월에 출시된 Pandroid L27.10.2가 사용됩니다. Froyo라는 Android 버전 2.2의 코드를 기반으로 합니다. 이 Pandroid 릴리스에는 다음과 같은 주요 기능이 있습니다.
• HDMI/DVI를 통한 외부 모니터
• USB 키보드
• 마우스 커서가 있는 USB 마우스
• 와이파이/802.11n
• 블루투스
• 이더넷
• PowerVR SGX540 GPU 드라이버
이 릴리스에서는 OMAP4 Ducati Sub System이나 오디오 재생/녹음을 사용할 수 없습니다. 그러나 OpenGL ES 2.0은 PowerVR GPU 드라이버를 통해 지원됩니다.
12
1장. 배경 1.2. DVB 프로젝트
1.2 DVB 프로젝트
DVB(Digital Video Broadcast) 프로젝트는 공통 비디오 방송 표준을 개발하기 위해 1993년 9월에 설립되었습니다. 디지털 미디어 서비스 제공을 위한 개방형 표준에 관심을 가진 35개국의 250개 이상의 다양한 회사 및 조직으로 구성된 컨소시엄입니다[16].
DVB 사용이 가장 널리 퍼진 DTTV 표준이지만 몇 가지 대안이 존재합니다. DVB 표준을 사용하지 않는 몇몇 국가를 예로 들면; 미국은 ATSC(AdvancedTelevision Systems Committee) 표준을 사용하고 일본은 ISDB(Integrated Services DigitalBroadcasting) 표준을 사용합니다. DTTV 표준 개요는 1.2를 참조하십시오.
그림 1.2: DTTV 전 세계 커버리지[1]
현재 전 세계에는 DVB 프로젝트의 표준과 호환되는 5억 개 이상의 수신기가 있습니다.
DVB 프로젝트는 널리 사용되는 여러 표준을 생성했습니다. 가장 중요한 것은 DVB-S, DVB-C 및 DVB-T라고 합니다. S는 위성을, C는 케이블을, T는 지상파를 의미하며 독자가 짐작할 수 있듯이 이러한 매체에 대한 방송 표준을 나타냅니다. 이 논문의 초점은 DVB-T와 DVB-T2이며 후자는 차세대 지상파 표준입니다.
1.3 스웨덴의 디지털 지상파 텔레비전
1.3.1 과거와 현재
스웨덴에서 DTTV(Digital Terrestrial Television) 도입에 관한 정치적 논의는 1990년대 초에 시작되었습니다. 1995년 6월 Lars Jeding은 스웨덴 정부에서 아날로그 텔레비전에서 디지털 텔레비전으로의 전환 가능성을 조사하도록 임명되었습니다. Jeding은 자신의 보고서인 매스미디어에서 멀티미디어로 – 스웨덴 텔레비전의 디지털화[11]에서 스웨덴이 가능한 한 빨리 디지털 전송으로 전환해야 한다고 제안했습니다. 그는 DTTV가 "위성 또는 케이블을 통한 디지털 방송의 대안"을 제공할 것이며 "상업적 플레이어를 끌어들일 것"이라고 결론지었습니다. 생성된 보고서
13
1.4. 콘텐츠 보호 1장. 배경
1992 1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 2014
라스
땡땡
sre
포트
12월
아이시온
발가락
표
ishDTTV
빵
디카스
팅
DTTV
이슬라운
체드
잘
통나무
스위치
h-오프
DVB-T
2m
페그4
트란
스미스
이온
샐러리
체드
그림 1.3: 스웨덴의 DTTV 도입 역사적 일정
DTTV가 스웨덴에 도입되어야 하는지 여부에 대한 열띤 논쟁[4]. 그러나 1997년 11월 1일 스웨덴 의회는 DTTV로 넘어가기로 결정했습니다.
최종 보고서에 따르면 디지털 TV 위원회[5]
1.3.2 미래의 DTTV
모바일 TV의 표준; DVB-H는 2004년 11월에 등장했으며 2006년에 스웨덴에서 시험이 실시되었습니다. 시험의 긍정적인 결과[14]에도 불구하고 DVB-Hi는 현재 스웨덴에서 제공되지 않습니다. 배포되지 않은 이유는 무엇입니까? 그것은 모순적으로 대중의 관심 부족[18]과 Teracom이 HDTV를 위해 얻을 수 있는 모든 주파수 공간이 필요했기 때문인 것 같습니다.
DVB 프로젝트는 현재 3DTV, IPTV 및 차세대 핸드헬드 TV(DVB-NGH)에 대한 미래 표준을 개발하고 있습니다.
1.4 콘텐츠 보호
DVB-CSA(Common Scrambling Algorithm)는 Mpeg-2 전송 스트림 페이로드를 보호하는 데 사용되는 암호화 방법입니다. 주요 목적은 주로 유럽에서 디지털 방식으로 전송되는 유료 TV에 대한 스크램블링 및 조건부 액세스(CA) 사용을 지원하는 것입니다.
DVB-CSA는 ETSI(European Telecommunications Standards Institute)에서 지정하고 1994년 5월 DVB 컨소시엄에서 채택했습니다. 알고리즘은 최소 10년 동안 지속되도록 설계되었습니다. 거의 20년이 지난 후에도 여전히 강력한 솔루션으로 남아 있습니다. 그러나 DVB-CSA에 대한 위협은 기술 및 컴퓨팅 성능의 발전과 함께 증가했습니다.
OEM(주문자 상표 부착 생산자)은 소프트웨어에서 알고리즘을 구현할 수 없었으며 ETSI 관리인의 NDA(비공개 계약)에 따라서만 사용할 수 있었습니다. 이것은 보안상의 이유 때문이었습니다. 결과적으로 거의 10년 동안 CSA 알고리즘에 대해 공개적으로 알려진 것은 거의 없었습니다. 이것은 2002년 가을에 CSA를 소프트웨어로 구현한 FreeDec이라는 Windows 프로그램이 등장하면서 바뀌었습니다. FreeDec은 리버스 엔지니어링되었으며 결과는 웹에 게시되었습니다. 공개는 알고리즘에 대한 세부 정보가 대중에게 공개되었음을 의미합니다. 알고리즘이 알려졌을 때에도 성공한 공격은 없습니다.
CSA에 대한 자세한 내용은 이 논문의 범위를 벗어납니다.
방송사마다 다르며 일반적으로 암호화된 유료 TV 전송을 보는 데 필요한 스마트 카드에 구현됩니다. CSA의 실제 키는 공통 키라고 하며 일반적으로 10~120초마다 변경됩니다. CSA의 큰 관련성은 유럽의 모든 암호화된 디지털 유료 TV 전송이 다음을 사용하여 보호된다는 사실에 있습니다.
14
1장. 배경 1.5. 셋톱박스 요구 사항
CSA. 따라서 CSA의 실질적인 중단은 전송 스트림을 해독하는 데 사용되는 하드웨어를 교환해야 하는 모든 방송사에 영향을 미칩니다. [삼]
1.5 셋톱박스 요구사항
셋톱박스(STB)는 외부 신호를 연결된 TV에서 볼 수 있는 비디오로 변환하는 장치입니다. 신호 소스는 일반적으로 위성 접시(DVB-S), 이더넷 케이블(IPTV), UHF/VHF 안테나(DVB-T) 또는 단순히 동축 케이블(케이블 텔레비전, DVB-C)입니다. 여러 소스에서 수신할 수 있는 하이브리드 STB도 있습니다. 동일한 장치에서 DVB-S, DVB-T 및 DVB-C 수신의 조합과 같은 것입니다.
기존의 STB에는 일반적으로 연결된 TV에 오디오 및 비디오를 제공하는 것 외에 한 가지 추가 기능만 있습니다. 그들은 또한 다소 이해하기 쉬운 방식으로 전자 프로그램 가이드(EPG)를 제공할 수 있습니다. EPG 정보는 일반적으로 DVB 전송 스트림의 특정 EPG 패킷을 통해 배포됩니다.
STB에는 공통 인터페이스(DVB-CI[7])가 장착될 수 있습니다. 이 인터페이스는 서비스 공급자가 전송에 사용자 지정 암호화 알고리즘을 사용할 수 있도록 설계되었습니다.
DVB 복호화 메커니즘에 대한 자세한 내용은 FTA(Free-To-Air) 채널이라고 하는 암호화되지 않은 채널을 표시하는 데에만 초점을 맞추기 때문에 이 논문의 범위를 벗어납니다.
15
1.5. 셋톱박스 요구 사항 1장. 배경
16
제 2 장
문제 설명
이 논문의 주요 질문은 PandaBoard, 특히 OMAP4가 셋톱박스(STB)로 사용할 수 있을 만큼 성능면에서 충분히 강력한지 여부입니다. 이 논문에서 외부 신호는 유럽 디지털 지상파 텔레비전 표준 DVB-T와 그 후속 제품인 DVB-T2입니다.
대상 운영 체제는 Google에서 개발 및 유지 관리하는 Android입니다. Android는 주로 스마트폰 및 태블릿에서 발견되는 인기 있는 운영 체제입니다. ARM 프로세서의 주요 이점은 저전력 소비이며, 이것이 모바일 장치 및 임베디드 시스템에서 발견되는 이유입니다. ARM아키텍처의 약점은 최근까지 성능이었습니다. 멀티미디어 소비를 위해 저전력 ARM 기반 STB를 구성하는 것이 가능합니까?
논문 목표를 달성하기 위해 구현 단계에서 다음 작업을 고려했습니다.
1. 개발 환경 설정
2. SDCard를 사용하여 PandaBoard에서 Pandroid를 부팅합니다.
3. Pandroid Linux 커널에 DVB 지원 추가
4. 채널을 조정할 수 있는 애플리케이션 만들기
5. DVB 장치에서 전송 스트림 추출
6. 전송 스트림을 비디오 및 오디오 스트림으로 분할
7. 비디오 및 오디오 스트림 디코딩
8. 동기화된 오디오 및 비디오 재생
2.1 Linux 커널 DVB 스택
Android에서 USB DVB-T 동글을 사용하려면 Android Linux 커널에서 DVB 스택을 비활성화해야 합니다. 커널의 재구성 및 재컴파일이 필요합니다. DVB-T 및/또는 DVB-T2 USBdongle용 Linux 커널 드라이버 컴파일도 필수적입니다.
커널에서 DVB 스택이 활성화되면 Linux 커널 DVB-API와 인터페이스하기 위해 소프트웨어가 필요합니다. DVB-API는 채널 튜닝 및 스캔과 같은 작업에 사용됩니다. Linux DVB-API는 LinuxTv.org[17] 프로젝트에서 개발, 유지 관리 및 문서화합니다.
17
2.2. DVB-T2 2장. 문제 설명
2.2 DVB-T2
구현 목표 중 하나는 Teracom이 2010년 11월 스웨덴에서 도입한 새로운 DVB-T2 전송을 수신하고 표시할 수 있도록 하는 것입니다. 문제는 표준이 새롭고 이를 채택한 국가가 거의 없기 때문에 DVB-T2를 지원하는 소비자 하드웨어가 제한적이라는 것입니다. 사실 이 논문이 쓰여질 당시에는 단 하나의 DVB-T2 호환 USB 장치만 존재했습니다. PCTV Systems nanoStick T2 290e.Device 드라이버는 Windows 운영 체제에서만 공식적으로 지원되며 이는 Linux 커널용 드라이버가 존재하지 않음을 의미합니다. DVB-T2 목표는 nanoStick용 Linux 커널 드라이버에 직접적으로 의존합니다. 구현 단계를 위해 예약된 시간 동안 드라이버가 나타나지 않으면 드라이버가 이미 Linux 커널에 있는 DVB-T USB 장치가 대신 사용됩니다.
nanoStick 장치용 Linux 드라이버가 2011년 4월에 등장한 것으로 나타났습니다. 이는 논문 구현 단계가 끝나기 전에 이러한 드라이버를 Pandroid Linux 커널로 컴파일할 수 있음을 의미했습니다.
DVB-T2 또는 DVB-T 신호에서 데이터 스트림을 얻을 수 있게 되면 남은 문제는 전송 스트림에 포함된 다른 패키지를 추출하는 것입니다. 이 프로세스를 역다중화라고 합니다.
2.3 오디오 및 비디오 디코딩
전송 스트림의 오디오 및 비디오 패킷은 사용된 DVB 표준에 따라 인코딩됩니다. 스웨덴에서는 DVB-T를 사용하여 전송할 때 비디오 스트림이 MPEG-2를 사용하여 인코딩되고 오디오 스트림이 MPEG Audio Layer II(MP2) 또는 Dolby Digital(AC-3)로 인코딩됩니다. DVB-T2를 사용하여 전송된 비디오 스트림은 최신 MPEG-4 AVC(H.264라고도 함) 표준으로 인코딩되고 오디오는 MPEG-4 HE-AAC 표준으로 인코딩됩니다.
불행히도 Texas Instruments는 구현이 수행되었을 때 Pandroid에서 Ducati 하위 시스템에 대한 지원을 활성화할 수 없었습니다. 이것은 위에서 언급한 두 가지와 같은 비디오 스트림을 디코딩할 때 사용되어야 하는 PandaBoard의 전용 하드웨어를 사용할 수 없음을 의미했습니다. 이러한 상황에서 어떻게 비디오 디코딩이 가능할까요?
Texas Instruments의 지원 부족으로 인해 구현 단계에서 Pandroid에서 오디오 재생이 활성화되지 않습니다. Texas Instruments에서 이 문제를 해결하지 않으면 전송 스트림에 포함된 오디오를 재생할 수 없습니다.
18
3 장
행동 양식
이 논문에 대한 작업은 스톡홀름의 Kista에 있는 Syntronic Software Innovation 사무실에서 수행되었습니다. 처음 3-4주 동안 작업은 thePandaBoard에 대한 정보를 찾고 개발 환경을 설정하는 데 집중되었습니다. 개발 환경에는 Ubuntu 10.10(Maverick Meerkat)이 설치된 데스크톱 컴퓨터가 포함되었습니다. 대부분의 PandaBoard 문서에서 Ubuntu를 호스트 시스템으로 가정했기 때문에 Ubuntu는 자연스러운 운영 체제 선택이었습니다. 구현 코드뿐만 아니라 이 서면 보고서의 변경 사항을 추적하기 위해 버전 제어 시스템이 필요하다고 결정했습니다. GIT는 오픈 소스 커뮤니티에서 많은 인기를 얻었기 때문에 기본 시스템으로 선택되었습니다.
개방형 모바일 소프트웨어 개발 플랫폼 PandaBoard는 2010년 10월에 출시되었습니다. 이에 대한 주요 정보 출처는 PandaBoard.org웹 페이지에서 찾을 수 있습니다. 이 웹 페이지는 또한 커뮤니티 페이지로 작동하고 소프트웨어 개발자를 서로 연결하기 위한 것입니다. 메일링 리스트와 IRC 대화방에서도 정보를 찾을 수 있었습니다.
이 논문의 주요 목표 중 하나는 새로운 DVB-T2 전송을 수신하고 디코딩하는 것이었지만 PCTV nanoStick 290e USB 동글용 Linux 드라이버는 2011년 4월 8일까지 나타나지 않았습니다. nanoStick Linux 드라이버의 개발 진행에 대한 뉴스는 다음에서 찾을 수 있습니다. Steve Kerrison이라는 사람의 블로그[12]. nanoStick이 실제로 Linux에서 작동한다는 것이 확인되면 Syntronic에서 이러한 장치 중 하나를 주문했고 기존 시스템에서 제대로 작동하도록 Linux 커널을 패치하는 작업을 수행했습니다.
19
3장. 방법
20
4장
구현
4.1 시스템 주변기기
외부 시스템 하드웨어의 가장 중요한 부분은 물론 nanoStick DVB-T2usb 동글입니다. 그러나 채널을 변경하는 등 실시간으로 시스템과 상호 작용하기 위해서는 USB 마우스를 사용합니다. PandaBoard와 호스트 시스템을 연결하는 USB 케이블은 개발 및 디버깅 목적에 편리합니다. 화면은 물론 시스템에 연결되어야 하며 시스템 자체는 PandaBoad에 삽입된 메모리 스틱에서 실행되고 저장됩니다. 시스템 주변 장치의 개요는 그림 4.1에서 볼 수 있습니다.
그림 4.1: PandaBoard에 연결된 주변 장치
4.1.1 USB 장치
Android용 프로그램을 테스트하는 기본 방법은 Android 디버그 브리지(간단히 ADB)를 통해 애플리케이션을 전송하고 디버깅하는 것입니다. ADB 연결은
21
4.1. 시스템 주변 장치 4장. 구현
호스트 시스템의 USB 포트와 PandaBoard의 미니 USB 커넥터에 연결된 USB 케이블을 통해 설정됩니다. 또한 PandaBoard에는 디버깅에 사용할 수 있는 RS-232 포트가 있습니다. 이 프로젝트에는 직렬-usb 변환기가 사용되었지만 주로 ADB가 더 편리했기 때문에 제한된 범위에서만 사용되었습니다.
이 구현에 사용되는 유일한 HID 장치(Human Interface Device)는 anusb-mouse입니다. 표준 Android 시스템에는 Android 장치와의 기존 상호 작용 방식이 터치 스크린 인터페이스를 사용하는 것이므로 마우스 지원이 포함되어 있지 않습니다. Pandroid 배포판은 마우스를 지원하도록 패치되었습니다. topatch Pandroid가 Pandroid 홈페이지에 어떻게 문서화되어 있는지에 대한 지침.
시스템이 DVB-T 및 DVB-T2 신호를 수신하기 위해 PCTV nanoStick T2290e USB 동글이 USB 포트에 연결됩니다. 이 장치는 시장에서 DVB-T2 표준을 지원하는 최초의 소비자 제품이며 2011년 4월 현재 Linux 커널 드라이버를 지원하는 최초의 DVB-T2 장치입니다. nanoStick은 작은 안테나와 함께 배송되었지만 이러한 종류의 작은 안테나에서는 수신이 좋지 않습니다. 구현을 위해 다른 안테나가 대신 사용되었습니다.
PCTV 나노스틱 T2 290e
2010년 11월 1일 스웨덴 지상파 방송 서비스 회사인 Teracom은 스웨덴에서 새로운 DVB-T2 표준으로 전송을 시작했습니다. 몇 주 후인 2010년 11월 25일에 PCTV nanoStick T2 290e가 출시되었습니다. "세계 최초의 PC용 DVB-T2 수신기"라는 슬로건으로 추진됐지만, 반년이 지난 오늘날에도 PC용 소비자용 DVB-T2 기기는 거의 나오지 않고 있다.
그림 4.2: PCTV nanoStick T2 290e
nanoStick의 주요 구성 요소는 NXP TDA18271HDC2 튜너, Empia em28174 컨트롤러 칩 및 Sony CXD2820R 복조기입니다. 튜너와 컨트롤러 칩 드라이버는 다른 DVB-T 장치에서 사용되기 때문에 이전에 커널에 구현되었습니다. 문제는 Sony 복조기였습니다. Linux에서 작동하려면 새 코드를 작성해야 했습니다. nanoStick PCB의 사진은 부록 A에서 찾을 수 있습니다.
아래는 중요한 이정표에 도달했을 때 Steve의 블로그 항목에서 발췌한 것입니다. 핀란드의 Linux 커널 해커 Antti Palosaari가 드라이버 퍼즐의 마지막 조각을 놓은 것은 4월 초였습니다.
2011년 4월 8일 - 그렇게 시작합니다
또 다른 LinuxTV 개발자인 Antti Palosaari가 CXD2820R 모듈을 가지고 싸움에 뛰어듭니다! 아직 세부적으로 해결해야 할 부분이 많다.
22
4장. 구현 4.1. 시스템 주변기기
T2 지원이 제공되지만 작동하는 장치를 제공해야 합니다. 다음 주까지 테스트할 수는 없지만 예리한 해커라면 Antti의 git 저장소로 가서 확인해 볼 수 있습니다.
물론 이미 linux-media 메일링 리스트에 있는 사람들은 이미 이것을 알고 있을 것입니다. 그렇지 않은 사람들을 위해 여기에 메시지가 있습니다.
4.1.2 HDMI
LCD 화면은 HDMI-DVI 어댑터 케이블을 사용하여 연결됩니다. PandaBoard에는 2개의 HDMI 커넥터 슬롯이 있으며 그 중 하나는 HDMI 신호를 호스팅하고 다른 하나는 DVI 신호를 호스팅합니다. DVI 신호가 있는 HDMI 커넥터는 구현이 수행될 당시 Pandroid에서 활성화되지 않았습니다. DVI 포트가 있는 LCD 디스플레이에 HDMI 신호를 사용하는 데 아무런 문제가 없습니다.
4.1.3 SD 카드
PandaBoard 기본 부팅 장치는 Secure Digital 카드 슬롯입니다. 보안 디지털 플래시 메모리 카드인 SD 카드는 올바른 구성으로 포맷해야 하며 Linux 커널 및 Pandroid를 부팅하기 위해 필요한 부팅 이미지가 있어야 합니다. SD 카드는 PandaBoard 홈페이지의 지침에 따라 분할됩니다. 기본적으로 SD 카드는 하나의 부팅 파티션과 하나의 rootfs 파티션으로 분할됩니다. 부팅 파티션에는 세 가지 중요한 바이너리 이미지가 포함되어 있습니다. X-Loader, U-Boot 및 uImage. Android 파일 시스템은 rootfs 파티션에 상주합니다.
그림 4.3: SD 카드의 콘텐츠
X-loader는 u-boot 소스 코드에서 비롯된 작은 1단계 부트 로더이며 내부 정적 램에 로드됩니다. 내부 정적 램은 매우 작기 때문에
23
4.2. 시스템 소프트웨어 4장. 구현
x-loader는 최소한으로 제거되었으며 메모리를 초기화하고 두 번째 스테이지 로더인 U-Boot에 액세스하여 메인 메모리에 로드하는 데 필요한 주변 장치를 사용합니다.
Universal Bootloader 또는 Das U-Boot는 임베디드 장치용으로 널리 사용되는 오픈 소스 부트 로더입니다. 이름은 "잠수함"을 뜻하는 독일어인 Das Unterseeboot의 약어에서 유래되었습니다. U-Boots의 주요 기능은 Linux kerneluImage를 로드하는 것입니다.
Linux 커널 2.6.35는 Pandroid 웹 페이지의 지침에 따라 Android에서 사용하도록 구성 및 패치되었습니다. DVB 스택을 활성화하려면 Linux 컴파일 구성에서 사용자 지정 구성을 만들어야 합니다. Linux 2.6.35에 포함된 드라이버와 함께 DVB-T USB 동글을 사용할 때 커널 메뉴 구성 도구를 사용하고 커널에서 DVB-T 지원을 활성화하기만 하면 됩니다. 그러나 새로운 DVB-T2 USB 동글을 Linux와 함께 사용하려고 할 때 이것은 간단하지 않습니다. 우선 커널 드라이버 소스 코드는 2011년 4월에 공개되었으며 이 매우 실험적인 드라이버는 이 보고서를 작성할 당시에는 아직 공식적으로 Linux 커널에 포함되지 않았습니다. 그러나 Linux 커널용 실험적 멀티미디어 드라이버의 컴파일을 용이하게 하는 linuxtv.org에서 제공하는 스크립트가 있습니다. linuxtv.org에서 호스팅되는 LinuxTV 프로젝트는 Linux 2.6.xkernel에 포함된 DVB 드라이버 하위 시스템을 개발하고 유지합니다.
4.2 시스템 소프트웨어
기본 시스템은 광범위한 기술 영역을 다룹니다. 이러한 영역 중 일부는 OpenGL ES 2.0 하드웨어용 프래그먼트 셰이더 프로그래밍, 타사 라이브러리(예: FFMpeg) 활용, Linux 커널 패치, 구성 및 컴파일 등을 포함합니다. 주요 과제는 각 영역에 대한 솔루션을 찾는 것이었고 사용 가능한 시스템으로 서로 연결하십시오.
4.2.1 DVB 유틸리티 라이브러리
Linux에서 DVB 장치를 제어하려면 DVB 스택이 컴파일할 때 커널에 포함되어야 합니다. DVB 스택은 LinuxTV 프로젝트에서 개발 및 유지 관리합니다. DVB Utils 라이브러리의 코드는 부분적으로 LinuxTV에서 제공하는 dvb-apps[17]트리의 예제 코드를 기반으로 합니다.
DVB 장치가 MUX에 잠겨 있으면 장치에서 전송 스트림을 추출할 수 있습니다. 전송 스트림은 MPEG-2 사양의 일부입니다.
4.2.2 FFMpeg 라이브러리
FFMpeg 프로젝트는 멀티미디어 처리를 위해 여러 라이브러리를 호스팅하는 오픈 소스 및 크로스 플랫폼 프로젝트입니다. 가장 널리 사용되는 두 라이브러리는 libavcodec 및 libavformat입니다. 많은 미디어 형식은 오디오 및 비디오 데이터를 인코딩하는 데 사용해야 하는 코덱을 지정하지 않습니다. 이러한 미디어 형식은 오디오 및 비디오 스트림을 단일 스트림으로 결합하는 방법을 정의하는 컨테이너입니다. DVB의 경우 컨테이너 형식은 전송 스트림이라고 하며 MPEG-2 표준에 지정되어 있습니다. libavformatlibrary는 전송 스트림의 구문 분석 및 포함된 스트림의 분리 또는 디먹싱을 처리합니다. libavcodec 라이브러리는 오디오 및 비디오 스트림 디코딩을 처리합니다.
논문 구현에서 FFMpeg를 사용하기 위해 FFMpeg를 구성하고 컴파일할 때 다음 기능이 활성화되었습니다.
• 비디오 디코더: MPEG-2 및 MPEG-4 AVC(일명 h.264)
24
4장. 구현 4.2. 시스템 소프트웨어
그림 4.4: 간소화된 시스템 구조
• 오디오 디코더: MPEG-2 Audio Layer II(mp2) 및 MPEG-1 Layer 3(mp3)
• 디먹서: MPEG-2 전송 스트림
• NEON 최적화
DVB 장치가 mux에 잠기면 장치에서 전송 스트림을 읽을 수 있습니다. 각 mux는 일반적으로 여러 표준 해상도 텔레비전 채널을 포함하며 데이터를 읽는 데 관심이 있는 채널을 지정하는 데 필요합니다. 디먹싱이 완료되면 비디오 및 오디오 스트림과 같은 별도의 미디어 요소를 추출할 수 있습니다. DVB-T의 경우 비디오 스트림은 MPEG-2 비디오 형식으로 인코딩되고 DVB-T2의 경우 비디오 형식은 MPEG-4 AVC(h.264라고도 함)입니다. DVB 방송에 사용되는 오디오는 일반적으로 MPEG-2 Audio Layer II로 인코딩되지만 오디오 지원은 논문 구현에 포함되지 않습니다.
4.2.3 색 공간 변환
비디오 스트림이 디코딩되면 결과 제품은 YUV420P라는 형식의 비디오 프레임입니다. 이 형식은 비디오 압축 및 사람의 인식을 위해 사용됩니다. Yin YUV는 프레임 휘도 구성 요소입니다. 720x576 픽셀을 측정하고 0-255 값으로 프레임 밝기를 나타냅니다. U와 V는 Y 구성 요소 크기의 1/4에 불과한 두 색차 구성 요소입니다. 그 이유는 인간의 눈은 색상 정보에 비해 밝기에 훨씬 더 민감하기 때문에 인식 품질의 손실 없이 색상 구성 요소의 해상도를 줄일 수 있습니다. YUV420P의 숫자 420(때때로 4:2:0으로 표기됨)은 크로마 서브 샘플링을 나타냅니다.
25
4.2. 시스템 소프트웨어 4장. 구현
Y, U 및 V 성분에 대한 비율. 이것은 기본적으로 Y 구성요소가 있는 각 4x4 픽셀 정사각형 영역에 대해 두 개의 1x1 픽셀 색차 구성요소인 U와 V가 있음을 의미합니다. 이 관계는 그림 4.5에 설명되어 있습니다. 마지막으로 문자 P에 대한 설명이 필요합니다. 평면을 의미하며 그림 4.5에서 볼 수 있듯이 Y, U 및 V의 세 구성 요소가 세 개의 개별 평면에 그룹화되어 있음을 의미합니다.
그림 4.5: YUV420P SDTV 프레임 레이아웃
YUV420P 프레임을 화면에 렌더링하려면 RGB 형식으로 변환해야 합니다. 이 변환 프로세스는 효율적이고 빨라야 합니다. 구현 프로세스의 초기 단계에서 FFMpeg 프로젝트를 평가하고 FFMpeg의 일부인 libswscale이라는 라이브러리를 사용하여 몇 가지 실험을 수행했습니다. Libswscale에는 YUV 프레임을 RGB로 변환하는 몇 가지 기능이 있지만 실험 결과 PandaBoard에서 실시간 비디오 렌더링에 충분히 빠르지 않은 것으로 나타났습니다. 그 시점에서 고유한 문제가 식별되었습니다. 색 공간 변환은 어떻게 수행해야 합니까?
다음과 같은 결론이 내려졌습니다.
• Pandroid의 전용 Ducati 하위 시스템은 아직 지원하지 않습니다.
• FFMpeg의 libswscale이 충분히 빠르지 않았습니다.
libswscale 색 공간 변환 루틴[2]에 대한 NEON 최적화를 추가하는 작업이 일부 수행되었습니다. 그러나 코드는 매우 실험적인 것처럼 보였고 실행 가능한 솔루션으로 빠르게 무시되었습니다. 대신 초점은 Pandroid에서 지원되는 하드웨어로 이동했습니다. OpenGL ES 2.0. 프로그래밍할 수 있는 조각 셰이더가 있기 때문에 색 공간 변환을 수행하도록 선택되었습니다(Listings 4.1 참조). 텍스처의 개별 픽셀에서 매우 빠르게 임의 작업을 수행합니다. C와 유사한 OpenGL 프로그래밍 언어인 GLSL을 사용하여 프래그먼트 셰이더에서 이를 구현하는 방법을 연구하는 데 많은 노력을 기울였습니다.
실제 수학적 변환은 International Telecommunications Union에서 지정한 권장 사항에 따라 수행됩니다. 전송이 SDTV인지 HDTV인지에 따라 변환 내역에 차이가 있습니다. ITU-R BT.601[8]은 SDTV에 사용되고 ITU-R BT.1847[9]은 HDTV[13]에 사용됩니다. 그림 4.6은 변환을 보여줍니다.
26
4장. 구현 4.2. 시스템 소프트웨어
[10] 페이지 19-20에 따른 ITU-R BT.601에 해당하는 매트릭스. 구현 코드 복잡성을 최소화하기 위해 색 공간 변환에 관한 한 HDTV를 SDTV 전송으로 취급하기로 결정했습니다.
R601
G601
B601
=
1.164 0 1.5961.164 -0.391 -0.8131.164 2.018 0
와이 - 16U - 128V - 128
그림 4.6: SDTV에 사용되는 ITU-R BT.601에 따른 색 공간 변환 매트릭스
위 행렬의 YUV 값은 바이트 범위, 즉 0-255입니다. OpenGL의 픽셀 값은 0.0에서 1.0 사이이므로 그림 4.7에서 볼 수 있듯이 YUV 값을 256으로 나누어야 합니다.
와이 - 16
256U-128
256V - 128
256
=
와이 - 0.0625U - 0.5V - 0.5
그림 4.7: 샘플 크기 0-256에서 0.0-1.0으로 변환
1 Y = texture2D (Ytex , v texCoord ) . r - 0 . 0 625 ;2 U = texture2D (Utex , v texCoord ) . r - 0 . 5 ;3 V = texture2D(Vtex , v texCoord ) . r - 0 . 5 ;45 mat3 m = mat3 (1 . 164 , 1 . 164 , 1 . 164 ,6 0 . 0 , -0.392 , 2 . 017 , 7 1 . 596 , -0.813 , 0 . 0 ) ;8 vec3 rgb = m ∗ vec3 (Y, U, V) ;9 g l FragColor = vec4 ( rgb , 1 . 0 ) ;
Listing 4.1: OpenGL ES 2.0 프래그먼트 셰이더에서 YUV에서 RGB 색상 공간으로의 변환을 구현한 GLSL 코드
4.2.4 OpenGL ES 2.0
하드웨어 가속 비디오 디코딩에 사용되는 Ducati 하위 시스템에 대한 지원 부족으로 인해 OpenGL ES 2.0 조각 셰이더가 사용됩니다. 이러한 종류의 솔루션에 대한 영감은 여러 오픈 소스 프로젝트에서 나왔습니다. Dead Penguin[6]이라는 프로젝트가 있습니다. TheDead Penguin 프로젝트는 프래그먼트 셰이더에서 색 공간 변환을 수행하는 것 외에도 프래그먼트 셰이더에서 디인터레이싱을 수행합니다. 이 프로젝트의 향후 개선 가능성이 있는 매우 흥미로운 기능입니다. 또 다른 예는 아마도 더 영향력 있는 Chromium 프로젝트[15]입니다. 또한 OpenGL 조각 셰이더에서 색 공간 변환을 구현했습니다.
OpenGL ES 2.0 가속 하드웨어를 활용하기로 결정한 직후, 디코딩된 비디오 스트림을 회전할 수 있는 큐브로 표시하는 것이 흥미로울 것이라는 아이디어가 실현되었습니다. 윗면과 아랫면을 제외한 큐브 렌더링 영상의 각 면. 상단에는 Syntronic 로고와
27
4.3. 결과 및 평가 제4장 실행
바닥면은 Uppsala University 로고입니다. 큐브는 PandaBoard에 연결된 USB 마우스를 사용하여 회전할 수 있습니다.
4.3 결과 및 평가
이 논문에서 보고된 연구는 PandaBoard 모바일 소프트웨어 개발 플랫폼이 STB로 사용될 수 있는지 여부와 방법을 조사했습니다. 디지털 지상파 텔레비전의 수신 및 표시를 시연하는 프로토타입 시스템이 개발되었습니다. 프로토타입 시스템은 Android를 기반으로 하며 DVB-T 및 DVB-T2 수신을 위해 외부 USB 장치를 사용합니다. 시스템은 스웨덴 디지털 지상파 텔레비전 네트워크를 통해 전송된 암호화되지 않은 채널을 표시합니다.
가속 비디오 디코딩을 위한 전용 PandaBoard 하드웨어는 Pandroid에 대한 TI의 드라이버 지원 부족으로 인해 사용되지 않았습니다. 비디오 스트림을 렌더링하는 또 다른 방법은 FFMPEG 라이브러리를 사용하여 개발되었습니다. OpenGL ES 2.0 프래그먼트 쉐이더가 가속화된 색상 공간 변환에 사용될 수 있다는 것이 발견되었으며, 이 기술은 프로토타입 시스템에서 구현됩니다.
그림 4.8: 프로토타입 시스템
4.3.1 시스템 성능
시스템 성능은 화면에 렌더링되는 초당 프레임 수(FPS)를 측정하여 평가했습니다. 이 평가를 위해 채널 SVT1(SD) 및 SVT1HD를 비교하여 시스템 비디오 렌더링 성능에 대한 지표를 제공했습니다. FPS를 측정할 때 노드 인터레이스 또는 오디오 디코딩을 수행했습니다.
28
4장. 구현 4.3. 결과 및 평가
테스트 결과 SVT1(SD)을 볼 때 평균 70FPS에 도달한 것으로 나타났습니다. 비디오가 25FPS, 즉 필요한 것보다 280% 더 많은 fps로만 인코딩되기 때문에 70FPS가 좋습니다. 추가 처리 능력은 디인터레이싱 및 오디오 디코딩에 사용될 수 있습니다. SVT1HD를 보았을 때 평균 14,8 FPS가 측정되었습니다. 이 값은 25FPS의 비디오 스트림보다 59% 적습니다. 모든 프레임이 표시되지 않아 시청 환경이 좋지 않습니다.
4.3.2 소비 전력
시스템 소비전력은 전류계를 사용하여 측정하였다. 유휴 상태에서 시스템은 nanoStick DVB-T2 USB 장치가 연결되지 않은 상태에서 3,15와트를 소비합니다. 연결 후 전력 소비가 4와트로 증가하여 nanoStick 자체가 유휴 상태에서 0,5와트를 소비함을 나타냅니다. SDTV 채널이 조정되고 화면에 렌더링될 때 5,75W가 소모되고 CPU 로드는 평균 37%까지 올라갑니다. HDTV 채널을 볼 때 7W는 시스템에서 사용되고 CPU는 최대 95%-100 %.
29
4.3. 결과 및 평가 제4장 실행
30
5장
결론
5.1 미해결 문제
5.1.1 오디오 재생
문제 중 하나는 Pandroid에서 오디오 재생이었습니다. 이 프로젝트에서 사용되는 FFMPEG 라이브러리에는 DVB 방송에서 사용되는 오디오 스트림용 코덱이 포함되어 있습니다. 그러나이 기능은 PandaBoard 하드웨어에서 오디오를 출력하는 기능이 없었기 때문에 사용되지 않았습니다.
오디오 지원은 결국 Pandroid에 추가되었지만 불행히도 이것은 이 논문의 구현 단계 후에 수행되었습니다. 아래는 Pandroid 웹페이지의 변경 로그에서 발췌한 것입니다.
6/03/11 * 오디오가 어느 정도 작동하고 있습니다.
5.1.2 가속 비디오 재생
Pandaboard는 비디오 재생을 위한 훌륭한 하드웨어를 갖추고 있지만 사용할 수 없을 때는 그다지 가치가 없습니다. TI는 이 논문의 구현 단계에서 Pandroid에 대한 가속 비디오 재생을 지원하지 못했습니다. 비디오를 렌더링하기 위해 다른 솔루션을 찾았습니다. FFMPEG 라이브러리는 DVB-T 및 DVB-T2 표준에서 사용되는 필수 비디오 코덱을 지원합니다. ARM Cortex-A9 CPU에서 지원하는 NEON으로 더 잘 알려진 고급 SIMD(Single Instruction Multiple Data)를 활용하도록 구성되었습니다. NEON은 미디어 및 신호 처리 응용 프로그램을 위한 표준화된 가속을 제공합니다.
PandaBoard는 FFMPEG 라이브러리를 사용하여 잘 수행되었습니다. DVB-T로 수신한 SDTV 신호는 만족스러운 방식으로 화면에 렌더링되었습니다. 그러나 DVB-T2를 사용하여 수신한 HDTV 비디오는 시스템에 너무 많은 요구 사항이 있었고 비디오가 충분히 빠르게 렌더링되지 않아 프레임이 떨어지고 손상되었습니다.
31
5.1. 해결되지 않은 문제 5장. 결론
32
6장
미래의 일
불행히도 하드웨어 가속 비디오 재생은 이 논문의 프로토타입 시스템에서 구현할 수 없었습니다. PandaBoard에서 비디오 처리를 위한 이 전용 하드웨어의 성능에 대한 추가 평가는 향후 추구할 매우 흥미로운 개발 방향이 될 것입니다. TI가 Pandroid의 향후 버전에서 이러한 지원을 가능하게 할 때/만약.
STB의 오디오 지원은 물론 필수적이며 향후 시스템에 포함되어야 합니다. TI가 Pandroid에서 오디오를 활성화한 것으로 보이지만 이는 이 논문의 프로토타입 시스템이 완성된 이후였습니다.
STB에 필요한 프로토타입에는 없는 다른 사항은 EPG 지원(Electronic Program Guide)입니다. EPG 데이터는 MPEG2 전송 스트림으로 전송되며 기술적인 관점에서 비교적 쉽게 구현할 수 있습니다. 그러나 이 EPG 정보를 만족스러운 방식으로 소비자에게 제시하는 것은 쉬운 일이 아닙니다. 정보는 읽기 쉬워야 하고 데이터를 통한 탐색은 매우 직관적이어야 합니다.
원격 제어는 STB와의 시스템 상호 작용을 위한 전통적이고 아마도 가장 일반적인 장치입니다. 향후 구현에 유용할 수 있는 LIRC(Linux InfraredRemote Control)라는 오픈 소스 프로젝트가 있습니다. 그러나 리모콘이 최선의 방법은 아닐 수 있습니다. 미래의 STB 장치에 가장 적합한 상호 작용 장치가 무엇인지에 대한 추가 연구를 수행하는 것은 흥미로울 것입니다.
33
6장. 향후 작업
34
서지
[1] Wikipedia, 2010년 11월. http://en.wikipedia.org/wiki/File:Digital_
broadcast_standards.svg.
[2] Allmann, J. YUV에서 RGB 색 공간 변환으로의 NEON 최적화를 사용한 FFMpeg 포크. https://github.com/j0sh/ffmpeg/tree/swscale-neon/libswscale/
팔.
[3] Benoit, H. 디지털 텔레비전: MPEG-1, MPEG-2 및 DVB 시스템의 원리,2. 에드. 에드. Focal press/Elsevier, Burlington, MA, 2004.
[4] Brown, A. 스웨덴: 문화 주권에 대한 디지털 위협. 유럽의 Digital TerrestrialTelevision에서 A. Brown 및 R. G. Picard, Eds. Lawrence Erlbaum AssociatesPublishers, Mahwah, New Jersy, 2005, pp. 203–221.
[5] 디지털 TV 커미션. 디지털 TV 전환 : 2005.09.19 - 2007.10.15 : The Digital TV Commission 최종 보고서, KU 2004:04., http://www.sweden.gov.se/sb/d/574/a/113008 방문 2011년 2월 ed. 스웨덴 정부 공식 보고서, 2008:35. 프리체, 스톡홀름, 2008.
[6] Essen, L. Dead Penguin - 셋톱박스. http://www.deadpenguin.tv/.
[7] 유럽 통신 표준 협회(ETSI). EN 50221:"조건부 액세스 및 기타 디지털 비디오 방송 디코더 응용 프로그램에 대한 공통 인터페이스 사양", 1997년 2월. http://www.dvb.org/technology/
표준/En50221.V1.pdf.
[8] 국제 전기 통신 연합. 권장사항 ITU-R BT.601, 스튜디오용 디지털 텔레비전의 인코딩 매개변수. 제네바, 1992.
[9] 국제 전기 통신 연합. 권장 사항 ITU-R BT.1847,1280 x 720, 50Hz 환경에서 제작 및 국제 프로그램 교환을 위한 16:9 점진적 캡처 이미지 형식. 제네바, 2009.
[10] Jack, K. 비디오 Demystified: 디지털 엔지니어를 위한 핸드북, 4판, 4판. Newnes, 뉴턴, 메사추세츠, 미국, 2005.
[11] Jeding, L. 매스미디어에서 멀티미디어로 – 스웨덴 텔레비전의 디지털화, http://www.sweden.gov.se/sb/d/8430/a/737 방문 2011년 2월 ed. 스웨덴 정부 공식 보고서, 1996:25. 프리츠, 스톡홀름, 1996.
[12] Kerrison, Linux용 S. PCTV nanoStick T2 290e. http://stevekerrison.com/
290e/index.html.
35
참고문헌 참고문헌
[13] 스웨덴의 텔레비전. HDTV - 전문가 정보. http://svt.se/2.152197/1.
2408782/전문가.
[14] 테라콤. 소비자는 모바일 TV를 원합니다. http://www.dvb-h.org/PDF/
Stockholm-Trial-Release.pdf, 2007년 3월.
[15] Chromium 작성자. Chromium 프로젝트. http://src.chromium.org/
svn/trunk/src/media/tools/player_x11/gles_video_renderer.cc.
[16] DVB 프로젝트 사무실. dvb 프로젝트 소개 - 디지털 텔레비전을 위한 글로벌 표준 만들기. 자료표 http://www.dvb.org/technology/fact_sheets/DVB-Project_Factsheet.pdf. 2011년 2월 방문.
[17] LinuxTV 프로젝트. LinuxTV 프로젝트는 Linux 2.6.x 커널에 포함된 DVB 드라이버 하위 시스템을 개발하고 유지합니다. http://linuxtv.org/repo/.
[18] Zirn, T. Teracom은 모바일 TV-nat를 희생해야 할 수도 있습니다. http://computersweden.idg.se/2.2683/1.132101, 2007년 11월.
36
부록
PCTV 나노스틱 T2 290e PCB
그림 A.1: 상단에는 NXP TDA18271HDC2 튜너가 포함되어 있습니다. 사진 제공:Steve Kerrison
그림 A.2: 밑면에는 Empia em28174 컨트롤러 칩과 SonyCXD2820R 복조기가 있습니다. 사진 제공 스티브 케리슨
37