Microsoft Word - 01.android_multimedia_구조_ _0.docx

Similar documents
Microsoft Word - eClipse_사용자가이드_

사용 설명서 이용 안내 사용 설명서의 내용은 제품의 펌웨어 버전에 따라 사용자에게 통보 없이 일부 변경될 수 있습니다. 제품의 특장점 기능을 살펴보려면 '특장점' 6쪽을 참조하세요. 제품 사용 중 문제가 발생하면 'A/S를 신청하기 전에' 53쪽을 참조하세요. 제품에

AVN2100Kor_Ç¥Áö110818F

PI ZH-CN

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft Word - src.doc

1부

.,,,,,....,. B ( ) (B),. 2

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

강연자소개 대외활동 동호회설립및운영자 (2004 년 12 월설립 ) 운영진 고현철, 김재훈, 유형목, 와함께국내에몇개남지않은임베디드리눅스를전문으로하는 community. 현재가입자수약만 4 천여명

K8815 초판 저작권 정보 본 설명서에 기술된 제품과 소프트웨어들은 보완을 목적으로 보관되는 경우를 제외하고는 ASUSTeK COMPUTER INC.(이하 ASUS )로부터의 서면 동의 없이 임의의 양식이나 수단을 통해 다른 언어로 번역, 저장매체로 보관

[Brochure] KOR_TunA

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

모바일 안드로이드 아키텍처

SH100_V1.4

Cloud Friendly System Architecture

PowerPoint 프레젠테이션

TTA Journal No.157_서체변경.indd

LG전자 서비스 센터 안내 사용 중 문의/불편 사항은 서비스센터 방문 전에 전화로 문의하세요 , , (수신자 부담) 상담원과 원격으로 사용자 휴대전화를 진단 및 상담할 수 있는 LG전자 원격상담 서비스도 가능합니

SMISyncW을 활용한 자막 병합

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint - 10Àå.ppt

RHEV 2.2 인증서 만료 확인 및 갱신

T-DMB lipsync issue 검토

Microsoft PowerPoint Android-구조.애플리케이션 기초(1.0h).pptx

XJ-A142_XJ-A147_XJ-A242_XJ-A247_XJ-A252_XJ-A257_XJ-M141_XJ-M146_XJ-M151_XJ-M156_XJ-M241_XJ-M246_XJ-M251_XJ-M256

User Guide

JVM 메모리구조

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Presentation

01서재현_ok.hwp

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

2 사용하기 전에 안전을 위한 주의사항 1 사용하기 전에 주의사항은 경고 와 주의 의 두 가지로 구분되어 있으며, 의미는 다음과 같습니다. >: 이 그림 기호는 위험을 끼칠 우려가 있는 사항과 조작에 대하여 주의를 환기시키기 위한 기호입니다. 이 기호가 있는 부분은 위

<30352DBDC5C0AFC1F82E687770>

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

2 사용하기 전에 안전을 위한 주의사항 1 사용하기 전에 주의사항은 경고 와 주의 의 두 가지로 구분되어 있으며, 의미는 다음과 같습니다. > : 이 그림 기호는 위험을 끼칠 우려가 있는 사항과 조작에 대하여 주의를 환기시키기 위한 기호입니다. 이 기호가 있는 부분은

파인드라이브를 사용해 주셔서 대단히 감사합니다. 제품을 사용하시기 전에 반드시 이 설명서를 읽어 주십시오. 제품의 수명은 올바른 사용법과 비례하며, 불완전한 사용은 제품 고장은 물론 차량손상과 교통사고의 원인이 될 수 있습니다. 본 문서는 MONSTER 3 모델을 기준

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

미쓰리 파워포인트

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Microsoft Word - 문필주.doc

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

제11장 프로세스와 쓰레드

사용 설명서 이용 안내 사용 설명서의 내용은 제품의 펌웨어 버전에 따라 사용자에게 통보 없이 일부 변경될 수 있습니다. 사용 설명서는 Windows XP 환경을 기준으로 설명하고 있으며 사용자의 OS 환경에 따라 다소 차이가 있을 수 있습니다. 제품에 사용된 음원, W

160322_ADOP 상품 소개서_1.0

vi 사용법

Microsoft PowerPoint - 13-em14-안드로이드.ppt [호환 모드]

Vostit Product Offerings

JAVA PROGRAMMING 실습 08.다형성

歯통신41호.PDF

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례

슬라이드 1

<C7D1B1B9C0FAC0DBB1C7C0A7BFF8C8B828C0FAC0DBB1C720B1E2BCFAC6F2B0A1B8A620C0A7C7D120B9FDC1A6B5B520B0B3BCB1B9E6BEC8BFACB1B8292E687770>

설명서 보기 본 카메라에는 내장 설명서가 탑재되어 있습니다. MENU (카메라 내장 설명서) 카메라 내장 설명서 MENU 항목 및 설정 값에 대한 설명이 표시됩니다. 1 2 MENU 버튼을 누릅니다. 원하는 MENU 항목을 선택한 다음에 버튼을누릅니다. (카메라 내장

PowerPoint 프레젠테이션

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

23

Windows Server 2012

PowerPoint 프레젠테이션

Gartner Day

( )부록


Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

서현수

2 3

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

Contents I. II. III. IV. V. e 서비스 개념도 서비스 구성 시스템 구성도 수능 리소스 유형 콘텐츠 흐름 ( 시연 내용 ) Social Platform 2

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

Scene7 Media Portal 사용

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Windows 8에서 BioStar 1 설치하기

BMP 파일 처리

LEICA C-LUX

.,,,,,.... ().,. B ( ) (B),. Dolby 2 Dolby Laboratories., Dolby D Dolby Laboratories.

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

SHT-KT3010AX 3070AXAF(3.1) R2 M.ai

슬라이드 1

Nikon KeyMission 360. KeyMission 360 ( 1.5) SnapBridge 360/170 ( 1.1). SnapBridge 360/170., SnapBridge 360/170 OS.. KeyMission 360/ SnapBridge 360/170

스마트폰 모바일 랩 세미나

보안공학연구회

목 차 3. EDIUS 시작 5. EDIUS NLE에서 K2-CAMP로 미디어 전송 5. 단계 1: EDIUS 타임라인에서 HQ 코덱으로 프로젝 트를 트랜스코딩 6. 단계 2-A: FTP를 통해 K2-CAMP에 파일 전송 9. 단계 2-B (다른방법): 외장 드라이브(

<3132BFF93136C0CFC0DA2E687770>

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

17장 클래스와 메소드

2 목차 목차 3 안전을 위한 주의 사항 32 엔터테인먼트 3 제품 설치 시 주의 사항 5 전원 및 AC 어댑터 관련 주의 사항 6 제품 이동 시 주의 사항 6 제품 사용 시 주의 사항 8 제품 청소 시 주의 사항 8 화면 잔상 시 주의 사항 8 리모컨 사용 시 주의

Microsoft PowerPoint - 04-UDP Programming.ppt

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

MVVM 패턴의 이해

Spring Boot

CyberLink Media Suite

DR-M140 사용 설명서

Transcription:

1. 안드로이드멀티미디어구조 1.1 안드로이드멀티미디어개요 여기언급되는모든내용은사용에제한이없습니다. 마음대로사용하시기바랍니다. 2011/07/02 AESOP Embedded Forum 고도리 ( 본명은비밀??? ㅎ ) 안드로이드의멀티미디어는어느 OS 혹은 platform에서와마찬가지로가장어려운부분에속한다. 일반리눅스의경우에서는 mplayer, ffmpeg, VLC player, xine 등과같은자기자신만의구조를갖는멀티미디어엔진의경우와 GStreamer와같은멀티미디어프레임워크구조를갖는엔진으로나뉠수있다. 윈도우즈계열에서도이와비슷하게 Direct show filter 등을이용한멀티미디어엔진과독자적인멀티미디어엔진을갖는플레이어들이존재한다. 안드로이드멀티미디어엔진은기존의 OS등에서사용되는멀티미디어엔진과는다른구조를보여준다. 기본적인구조는멀티미디어프레임워크구조가이미구성되어있고, 이기본적인구조에독자적인멀티미디어엔진을만들어서붙일수있는구조이다. 즉, 표준인터페이스가존재하고, 멀티미디어엔진은표준인터페이스만맞춘다면어떤것을장착해도상관이없도록되어있다. 이러한멀티미디어엔진에대한구글의해답은 2.1 버전까지는 OpenCORE에있었으며 2.2까지는 OpenCORE와 Stagefright를선택해서쓸수있는구조였고, 2.3에서부터는 Stagefright가기본적인안드로이드멀티미디어엔진으로사용되고있다. 위에서설명하였듯이 Android에서의멀티미디어는일반적인 PC에서의멀티미디어처리와는약간의거리가있게구성되어있다. 안드로이드의초기버전의경우 2.1 버전까지주로통신용인 Qualcomm 사의칩만을타겟으로제작한부분이많이보인다. 이는멀티미디어엔진을기존의통신용멀티미디어업체인 PacketVideo사의 OpenCORE를채용한것만보더라도안드로이드멀티미디어의구조는그방향이정해졌다고볼수있다. 하지만, 다행스러운일은안드로이드멀티미디어프레임워크의하부구조인멀티미디어엔진은고정된엔진을쓰도록강요하지지않고독자적인멀티미디어엔진을구성할수있도록개방된구조로되어있다. 이러한부분들을보면안드로이드의초기설계에있어서얼마나향후의발전에신경을썼는지, 소프트웨어개발사들의독자솔루션개발에대해개방적인구조를갖을수있도록새로운멀티미디어엔진에대한가능성을열어두었는지알수있는부분이다. 안드로이드멀티미디어엔진은기본적으로릴리즈될때서부터 OpenCORE를기반으로하고있다. 하지만 2.0 elcair 버전서부터는 OpenCORE의대안으로 stagefright를같이안드로이드소스에탑재하기시작했으며, 2.2 froyo 버전에서도 OpenCORE와 stagefright를선택해

서사용할수있도록제공을하였으나, 현재 (2011년 03월 ) 의시점에서의안드로이드버전인 Gingerbread(Android 2.3) 에서는기본적으로는 stagefright를사용할수있도록한상태이다. OpenCORE의경우소스에포함되어있지않지만, Froyo 버전의엔진을그대로사용할수는있다 ( 이는개발사의능력에따라서이다 ). 안드로이드멀티미디어의기본적인구현은안드로이드를지원하는대부분의 SoC 회사가 Linux BSP와 OpenMAX IL형식의 Hardware Codec을지원한다. 특정 SoC회사의경우에는커스터마이징된 OpenCORE까지도제공하거나별도의멀티미디어엔진을제공한다 (nvidia Tegra2의경우 ). 칩벤더에서제공하는대부분의상용멀티미디어엔진은많은종류의 demuxer/composer를지원할뿐아니라, Media Scanner, DRM Support까지도지원할수있도록구성을해놓았지만, 상용화에는부족함이있는경우가있기때문에실제로상용화까지가기위해서는전문적인솔루션회사의제품을이용하는것도하나의길이될수있다. OpenCORE는 Android를확장하려는구글의전략에가장치명적인약점이었고여러 SoC 제조사와단말제조사들이이러한부분을인력과시간을투입해서 Android 2.2 버전까지해결해왔지만 2.3 Gingerbread버전서부터는 stagefright에그자리를내주었다. 하지만, 이는또한여러 SoC 제조사와여러제품제조사들, 그리고 OpenCORE solution 제공회사들에게괴로운숙제를다시던져준것이되었고, OpenCORE 보다는간단한구조로되어있기는하지만, stagefright 그자체도그다지쉬운구조는아니어서아주난감한일이아닐수없다 ( 필자개인적으로도닭쫓던개지붕쳐다보는격이라고생각한다 ). 안드로이드멀티미디어엔진의경우실제적용에서는두방향의적용방식을볼수있는데하나는통신을위주로하는제품에의적용이고 ( 기본적으로 Qualcomm chip을기반으로한제품 ), 나머지하나는멀티미디어 Application Processor(Samsung System LSI의 S5PC110/V210) 를탑재한제품으로나눌수있다. Qualcomm chip을기반으로한제품은 Qualcomm 칩의원래의한계로인하여제한적인멀티미디어기능만을사용하는경우가많다 ( 이는필자의경험상 DualCore의경우도비슷하다고보여진다 ). 하지만, 멀티미디어 Application Processor(ex> S5PC110/V210) 를기반으로하는제품의경우통신은기본적으로지원하고, 통신이외에도 PC급의멀티미디어를지원할수있는성능을보여주고있다. 멀티미디어에그비중을많이둔제품의개발에서는상대적으로멀티미디어의 PC레벨의호환성을요구하게되므로많은노력과비용이들게된다. 하지만, 이러한제품이이미출시되었고점점이러한기능이기본적으로요구되고있기때문에앞으로나오게되는안드로이드제품은강력한멀티미디어기능을탑재해야할시장에서이미출시되어있는제품과경쟁할수있다. 이러한기능을갖추지못한제품은상대적으로통신위주의저가형시장을공략할수밖에없는상황이될것이다.

1.2 안드로이드멀티미디어에서구조와지원사양 안드로이드에서의멀티미디어프레임워크구조는크게네개의기본구성요소로나눌수있다. - Client - Server - Multimedia Engine - Codec interface 여기서 Codec Interface는다시 2가지계층으로나눌수있다. - OpenMAX IL - Hardware 혹은 Software codec 그림 1.01 안드로이드멀티미디어계층구조 안드로이드구조를그린그림 1.01에서 Libraries(Native Framework이라고한다 ) 쪽에있는 Media Framework는위에서설명한네개의부분에서 server, media engine, codec interface 세부분을하나로통틀어표현하는것이다. 안드로이드멀티미디어프레임워크구조부분을조금자세하게그린다면다음과같은그림 1.02처럼그려볼수있다. 여기서 Media engine이라고되어있는부분은 OpenCORE,

stagefright 혹은독자적인멀티미디어엔진으로교체될수있는부분이다. 멀티미디어프레임워크부분을구성하는가장중요한멀티미디어엔진부분에대한부분은뒤쪽에서다시자세하게설명한다. 여기서는멀티미디어엔진의기본적인구성요소만을나타내도록그림을구성하였다. 그림 1.02 안드로이드멀티미디어구조와멀티미디어엔진 안드로이드는멀티미디어프레임워크의구조와멀티미디어엔진의기본적인뼈대만을제공한다. 멀티미디어엔진의많은부분들은칩벤더, 제품제조사혹은멀티미디어솔루션제작사등이직접작성하도록구성되어있다. 안드로이드에서기본적으로지원하는파일의형식과포맷은다음과같다. - 이부분은 excel 파일에서추출한표를입력할것. 표 1.01 안드로이드멀티미디어엔진에서기본적으로지원하는코덱형식형식 Codec 기록읽기지원형식 AAC LC/LTP O 3GPP (.3gp) 및 MPEG-4 (.mp4,.m4a).raw 오디오 HE-AACv1 (AAC+) O AAC 미지원 (.aac) HE-AACv2 O

이미지 비디오 (enhanced AAC+) AMR-NB O O 3GPP (.3gp) AMR-WB O 3GPP (.3gp) MP3 O MP3 (.mp3) MIDI O 타입 0/1 (.mid,.xmf,.mxmf).rtttl/rtx (.rtttl,.rtx), OTA (.ota),imelody (.imy) Ogg Vorbis O Ogg (.ogg) PCM/Wave O WAVE (.wav) JPEG O O JPEG (.jpg) GIF O GIF (.gif) PNG O PNG (.png) BMP O BMP (.bmp) H.263 O O 3GPP (.3gp) H.264 O O 3GPP (.3gp) and MPEG-4 (.mp4) MPEG4 SP 3GPP (.3gp) 표 1.01을보면대부분통신용에가깝게포맷과형식이지원되고있는것을볼수있다. 여기서특이한점은 Ogg Vorbis의지원이다. 안드로이드내부에서사용되는대부분의음원은 mp3의형태가아니라 ogg file의형태를갖고있다. 위의지원형태에도볼수있듯이대부분의동영상엔진의지원은 software codec을위주로지원하도록되어있다. Gingerbread 소스의경우는레퍼런스폰인 Nexus-S에사용된 Samsung S.LSI의 S5PC110(POP type) 혹은이와동일한칩인 S5PV210(Single type) 의멀티미디어하드웨어코덱인 MFC(Multi-Fuction Codec) 을 OpenMAX IL을통해서지원할수있도록하고있다. 하지만, Audio/Video codec부분은여전히제한적으로지원하고있으며이와마찬가지로, 동영상을갖고있는 container(demuxer 혹은 parser) 와 composer(muxer) 등도제한적으로지원하고있다. 이와같은점은 PC등에서사용하는멀티미디어포맷의많은부분을지원하지않는것으로볼수있다. 상용화에는많은걸림돌이존재하며소프트웨어솔루션회사입장에서는이와같은점을이용해서틈새시장을창출할수있는기회가될수도있다. 현존하는 PC용의파일포맷들과코덱들을지원하고자한다면 Hardware 혹은많이최적화된 Software codec을이용한 video codec을지원하여야하며, 많은 parser들이 Android 멀티미디어엔진으로포팅되어있어야한다. 밑의표 1.02 는안드로이드에서확장으로지원해야할리스트를보여준다 ( 멀티미디어기기

로적용하기위한 ). 표 1.02 안드로이드에서지원하는멀티미디어형식과지원하지않는형식 Fileformat(Demuxer) Video Codec Audio Codec Video Output.MP4 H.264 AAC Software Renderer.MP3 H.263 MP3 Android 기본지.OGG MPEG4-SP AMR 원.MID Vorbis.WAV.AVI H264(H/W codec) Dolby-AC3 Hardware Renderer 확장지원부분.MKV H.263(H/W codec) DTS.WMV(.ASF) MPEG4-SP(H/W codec) WMV7/8 FLAC APE WMV9(H/W codec) WMA1/2(WMA7/8 ) 1.3 멀티미디어응용프로그램의함수호출과정 그림 1.03 안드로이더멀티미디어응용프로그램의간단한함수흐름도

안드로이드멀티미디어어플리케이션의함수호출흐름은그림 1.03에서보는것과같다. 앞에서언급한안드로이드멀티미디어구조의네부분에맞춰서설명하면다음과같다. 1> client 부분 - Multimedia Application - Multimedia JAVA API: Application Framework - Mutimedia JNI interface(libmedia_jni.so) - Multimedia Native client library(libmedia.so) 2> server 부분 - Multimedia Native server library(libmediaplayerservice.so) - Multimedia engine(midifile, libstagefrighplayer) Multimedia Engine의경우미디어파일혹은 URL에따라 Multimedia Engine은 MidiFile, Stagefright(libstagefrightplayer.so) 등으로구분될수있는데, 이는 2.3 Gingerbread 버전의경우이며, 2.2 froyo의경우는 MidiFile, Vorbis player, OpenCORE (libopencoreplayer.so) 로나누어볼수있다. 이러한부분을 Class 를기반으로그구조를그려보면다음과같다. 그림 1.04 안드로이드멀티미디어 Client/Server 의클래스구조

그림 1.04는위에서설명한멀티미디어응용프로그램에서의함수흐름을 Class별로구성을바꾼것이다. 여기서눈여겨봐야할부분은 MediaPlayer, MediaPlayerService, StagefrightPlayer 표현된안드로이드멀티미디어의기본구성요소들이다. 그리고, 이와더불어유심히봐야할부분은 MediaPlayer 클래스와 MediaPlayerService 클래스사이의통신구조인 Binder연결이다. MediaPlayer 클래스는 libmedia.so 소속으로안드로이드멀티미디어클라이언트부분의최종단부분을담당한다. 여기서부터 Binder통신을이용하여 MediaPlayerService에멀티미디어의기능을사용할수있도록요청하는역할을담당한다. MediaPlayerService 클래스는 libmediaplayerservice.so 1 를구성하는기본클래스로안드로이드멀티미디어서버부분의기본구조를담당하는클래스이다. 실제로이클래스가안드로이드멀티미디어프레임워크라고불리는부분이라고볼수있다. 이클래스는멀티미디어서비스의전체뼈대를구성하는클래스로구성요소들로는클라이언트와의인터페이스, 여러미디어타입에따른처리를담당하는멀티미디어엔진들이있다. 그림 1.04에서는그멀티미디어엔진의하나로 StagefrightPlayer 클래스를표시하고있으며, 이와같은엔진으로는 1 libmediaplayerservice.so 는안드로이드 mediaserver 를구성하는서버라이브러리들중하 나이다.

MidiFile 클래스, 2.2 froyo의경우는 PVPlayer 클래스와 VorbisPlayer 클래스등이존재한다. 물론이멀티미디어엔진은제조사에따라독자적인엔진으로구성할수도있다. 안드로이드멀티미디어프레임워크를이해하기위해서는기본적으로안드로이드멀티미디어응용프로그램이이벤트구동방식으로동작한다는것을이해해야하며, 각이벤트에따른상태의움직임을명확하게알고있어야한다. 이상태에따라멀티미디어서비스와그밑의멀티미디어엔진의함수호출과그함수의내용을어떻게구성하는지가결정된다. 다음의그림 1.05 2 는멀티미디어응용프로그램의상태다이어그램을보여준다. 여기서는 Application Framework에서의함수호출과이에따른서버로부터의응답을처리하는 Listener등에대해서다이어그램이그려져있다. 그림 1.05 안드로이드 MediaPlayer 클래스의상태변화도 2 이그림은 Google developer site에서참고한것이다. http://developer.android.com/reference/android/media/mediaplayer.html

그림에있는각상태에서상태의변화를일으키기위해호출되는함수들은 client(application) 에서 server(media player service - server) 쪽으로 binder를이용해서호출되는함수들의이름들이다. 위의상태다이어그램을다시자세하게 Native Framework에서의클라이언트서부터서버로의함수호출과이에따른서버로부터클라이언트로전달되는메시지를포함한그림은다음절에서설명된다. 1.4 안드로이드멀티미디어플레이어의구조 이절에서는안드로이드멀티미디어플레이어가어떻게클라이언트서버구조로동작하는

지에대한설명을실제코드를보면서설명한다. 여기서사용하는멀티미디어플레이어는일반적인응용프로그램의형태는아니다. 즉, JAVA 로작성된코드가아니다. JAVA 에서하는기능을그대로사용할수있도록클라이언트쪽의라이브러리인 libmedia.so의 MediaPlayer 클래스를 C++ 코드를이용해서작성한것이다. 하지만일반플레이어에서동작하는것과같이동일한역할을수행하는 Native console application이다. 멀티미디어플레이어의구조는두부분으로나누어서정리할수있는데클라이언트부분은 libmedia.so를사용해서 MediaPlayerService 클래스로접근하는 gvideo라는응용프로그램을위주로살펴버고서버쪽의경우는안드로이드멀티미디어서비스인 mediaserver를시작으로 MediaPlayerService 클래스의동작에대해서살펴본다. 그림 1.06 안드로이드미디어플레이어생성시함수호출 그림 1.07 안드로이드미디어플레이어에서의 setdatasource() 호출흐름

그림 1.08 미디어플레이어생성후미디어플레이어의 start 함수호출시함수의흐름

일단클라이언트와서버의동작을함수단위의호출흐름으로설명하면그림 1.06 ~ 1.08과같은그림이된다. 여기서는 MediaPlayer의초기화와 MediaPlayer를 start시켜서미디어컨텐츠 play를시작하는간단한 flow를나타낸다. 물론여기의함수흐름보다는좀더많은흐름이있으나이그림에서는클라이언트의함수호출중중요한 2가지인 setdatasource와 start 함수위주로설명하였다. 더자세한코드의흐름은밑에서설명한다. 이프로그램은 Android native console multimedia player이고, 작성된이유는안드로이드에서멀티미디어엔진을작성할때자바응용프로그램을사용하지않고, 서버단의멀티미디어엔진의기능을하나하나테스트할수있도록작성된테스트프로그램이다. 이프로그램을사용하는잇점은 JAVA 엔지니어의도움없이 C/C++ 을주로다루게되는네이티브프레임워크엔지니어혼자서멀티미디어엔진을작성할수있다. 그리고 UI를이용하는 JAVA 어플리케이션보다콘솔에서명령어를이용해서멀티미디어엔진을구동할수있는프로그램이다. 이코드는개발용코드이고, 두가지버전이존재한다. - gvideo1: 오직멀티미디어플레이어서버와엔진을구동시켜서동작을확인하는응용프로그램 - gvideo2: gvideo1 프로그램을확장해서서버에서클라이언트쪽으로보내는이벤트메시지처리루틴을추가한버전 소스는