Free Essay

Android Internet Tv

In:

Submitted By thangng90
Words 15886
Pages 64
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA ĐIỆN TỬ - VIỄN THÔNG

SVTH: NGUYỄN HỒNG THẮNG
MSSV: 0820156

INTERNET TV
TRÊN NỀN TẢNG ANDROID

KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN
NGÀNH ĐIỆN TỬ - VIỄN THÔNG
CHUYÊN NGÀNH: MÁY TÍNH VÀ HỆ THỐNG NHÚNG

NGƯỜI HƯỚNG DẪN KHOA HỌC
TS. HUỲNH HỮU THUẬN
CN. TRẦN HOÀNG ĐẠT

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2012

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
TP. HCM, tháng 7 năm 2012
Giáo viên hướng dẫn

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
..............................................................................................................................................
TP. HCM, tháng 7 năm 2012
Giáo viên phản biện

LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành bày tỏ lòng biết ơn và kính trọng sâu sắc đến thầy, TS
Huỳnh Hữu Thuận và thầy Trần Hoàng Đạt, những người đã tận tình giúp đỡ em trong suốt quá trình làm luận văn này. Thầy đã mở ra cho em một hướng nghiên cứu khoa học rất mới mẻ và lý thú, đồng thời tạo mọi điều kiện thuận lợi, hỗ trợ phương tiện, trang thiết bị đầy đủ để em có thể hoàn thành tốt bài luận văn này. Bên cạnh đó, em luôn nhận được những lời chỉ dẫn quý báu trong những lúc gặp khó khăn trong quá trình thực hiện luận văn.
Em cũng xin thể hiện sự kính trọng và lòng biết ơn đến Quý Thầy Cô trong khoa
Điện tử - Viễn thông, Thầy Cô đã trang bị cho em rất nhiều kiến thức, kĩ năng cần thiết và đã giúp đỡ em tận tình trong suốt quá trình bốn năm đại học. Những kiến thức cơ bản cũng như chuyên ngành mà em lĩnh hội được từ bài giảng của các Thầy Cô là vô cùng quý giá đối với em.
Nhân đây, con xin gửi lời cảm ơn sâu sắc đến Ba, Mẹ và những người thân trong gia đình đã giúp đỡ, động viên con trong suốt quá trình học tập và làm luận văn.
Cuối cùng, mình cũng xin gửi lời cảm ơn đến tất cả các bạn cùng lớp 08DVT, cảm ơn các bạn đã chia sẻ những kiến thức, kĩ năng quý báu và đã quan tâm động viên mình trong suốt quá trình học tập, nghiên cứu và hoàn thành luận văn này.
Thành phố Hồ Chí Minh, năm 2012
Nguyễn Hồng Thắng

Internet TV trên nền tảng Android

LỜI MỞ ĐẦU
Hiện nay, trên thị trường thiết bị điện tử đã xuất hiện các loại Internet Tivi có khả năng kết nối Internet để thực hiện các công việc như lướt web, check mail, xem bản đồ trực tuyến, chơi game, xem video trên các trang trực tuyến (Youtube), tham gia mạng xã hội
(facebook, twitter)... Tuy nhiên do giá thành còn khá cao so với tivi thường nên chưa được phổ biến. Do đó, nhiều nhà sản xuất đã có các giải pháp mang đến cho các Tivi thường các tính năng của một Internet Tivi với một mức giá chấp nhận được - đó là các
TV box.
Các TV box này là các board mạch nhúng chạy một hệ điều hành nào đó, hỗ trợ các kết nối như Ethernet và Wifi, mang lại khả năng truy cập Internet và kết nối với tivi thông qua các chuẩn kết nối như S-Video, VGA, DVI, HDMI. Ưu điểm của giải pháp tivi box là giá thành rẻ - dưới 200 USD (do các thành phần trên board thường chỉ gồm một vi xử lí ARM đơn/đa nhân, bộ nhớ từ 512MB – 1GB và các thành phần giao tiếp Ethernet, Wifi hoặc USB), nhỏ gọn và linh hoạt (có thể sử dụng cho các tivi đời cũ). Do đó, nhiều nhà sản xuất đã tham gia thị trường này, bên cạnh các nhà sản xuất nhỏ, còn có các công ty, tập đoàn lớn như Google, Sony, Apple...
Trên thị trường hiện nay, đa số các sản phẩm tivi box sử dụng hệ điều hành Android của
Google. Nguyên nhân trước hết là do Android là một hệ điều hành mã nguồn mở, do đó nhà sản xuất không tốn các chi phí về bản quyền để triển khai nó trên sản phẩm của mình, do đó góp phần làm giảm giá thành sản phẩm. Thứ hai, Android được Google phát triển dành cho các thiết bị nhúng nói chung và thiết bị di động nói riêng nên nó rất gọn nhẹ, thích hợp với các hệ thống giới hạn về năng lực xử lí và bộ nhớ. Thứ ba, Android có khả năng tùy biến rất cao, điều này giúp cho nhà sản xuất có thể tùy chỉnh, loại bỏ một số thành phần của hệ điều hành cho phù hợp với yêu cầu của sản phẩm. Cuối cùng, Android có một cộng đồng các công ty, lập trình viên phát triển ứng dụng rất đông và mạnh mẽ.
Ngoài sự hỗ trợ từ phía nhà sản xuất, người dùng còn được hỗ trợ từ một cộng đồng các

5

Internet TV trên nền tảng Android

nhà phát triển, lập trình viên rất đông đảo và tài năng. Trên kênh phân phối ứng dụng chính của Android là Google Play, hiện có hơn 600.000 ứng dụng. Do đó các ứng dụng, hỗ trợ cho các thiết bị chạy hệ điều hành Android là vô cùng phong phú.
Trong luận văn này sẽ đề cập đến các vấn đề liên quan đến việc thực hiện một TV box
Android dựa trên board phát triển Texas Instruments Pandaboard.
Các nội dung được sẽ được trình bày trong luận văn này:
Chương I: Tìm hiểu tổng quan về TI Pandaboard, các thành phần và khối xử lí quan trọng trên board.
Chương II: Tìm hiểu tổng quan về hệ điều hành Android, các thành phần của hệ điều hành và sơ lược về việc phát triển ứng dụng cho hệ điều hành Android.
Chương III: Tìm hiểu về các khái niệm liên quan đến hình ảnh, video và sơ lược về các thư viện hỗ trợ về hình ảnh, video được sử dụng khi phát triển ứng dụng.
Chương IV: Giới thiệu về các ứng dụng đã xây dựng sau khi đã nhúng Android lên
Pandaboard, trình bày các lưu đồ giải thuật của các ứng dụng này và kết quả thực hiện.
Chương V: Kết luận và đề xuất các hướng phát triển.

6

Internet TV trên nền tảng Android

MỤC LỤC
DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT.........................................................................10
DANH MỤC CÁC BẢNG.........................................................................................................11
DANH MỤC CÁC HÌNH ẢNH.................................................................................................12
CHƯƠNG 1: TỔNG QUAN VỀ BOARD PHÁT TRIỂN TI PANDABOARD.........................13
1.1 Sơ lược về TI Pandaboard................................................................................................13
1.2 Các thành phần chính trên Pandaboard.............................................................................13
1.3 Vi xử lí TI OMAP4430.....................................................................................................15
1.4 Tổng quan về bootloader của OMAP...............................................................................17
1.5 Khối xử lí hình ảnh Ducati của OMAP4430.....................................................................21
1.5.1 Khối IVA-HD............................................................................................................22
1.5.2 Khối ISS.................................................................................................................... 24
1.5.2.1 Khối ISP............................................................................................................. 25
1.5.2.2 Khối SIMCOP....................................................................................................25
1.6 Cộng đồng phát triển cho Pandaboard..............................................................................26
CHƯƠNG 2: TÌM HIỂU VỀ HỆ ĐIỀU HÀNH ANDROID......................................................27
2.1 Open Handset Allience.....................................................................................................27
2.2 Hệ điều hành Android.......................................................................................................27
2.3 Các ràng buộc về thiết kế..................................................................................................28
2.4 Các tính năng của hệ điều hành Android..........................................................................29
2.5 Ứng dụng thực tế..............................................................................................................31
2.6 Thiết kế ứng dụng trên nền tảng Android.........................................................................31
2.7 Các thành phần của HĐH Android...................................................................................32
2.7.1 Linux Kernel ............................................................................................................32
2.7.2 System Libraries........................................................................................................33
2.7.3 Android Run Time.....................................................................................................33
2.7.3.1 Core libraries......................................................................................................33
7

Internet TV trên nền tảng Android

2.7.3.2 Máy ảo Dalvik....................................................................................................33
2.7.4 Application Framework.............................................................................................34
2.7.5 Application Layer......................................................................................................35
2.8 Định dạng .dex của máy ảo Dalvik...................................................................................36
2.9 Zygote..............................................................................................................................38
2.10 Kiến trúc register-based của máy ảo Dalvik...................................................................38
2.11 Bảo mật........................................................................................................................... 39
2.12 Application Life Cycle....................................................................................................40
2.12.1 Activity stack...........................................................................................................40
2.12.2 Activity state............................................................................................................ 41
CHƯƠNG 3: CÁC THƯ VIỆN HỖ TRỢ KHI PHÁT TRIỂN ỨNG DỤNG.............................43
3.1 Tổng quan về media file...................................................................................................43
3.2 Multimedia container format............................................................................................43
3.3 Các định dạng media được Android hỗ trợ.......................................................................45
3.4 Thư viện FFmpeg............................................................................................................48
3.4.1 Tổng quan về thư viện FFmpeg.................................................................................48
3.4.2 Các thành phần của FFmpeg.....................................................................................48
3.4.3 Các dự án có sử dụng FFmpeg .................................................................................49
3.5 Các dạng codec, định dạng và giao thức hỗ trợ từ FFmpeg..............................................49
3.5.1 Các dạng codec hỗ trợ...............................................................................................49
3.5.2 Định dạng container được hỗ trợ...............................................................................51
3.5.3 Các giao thức được hỗ trợ.........................................................................................51
3.6 Thư viện libavcodec.........................................................................................................52
3.6.1 Tổng quan.................................................................................................................. 52
3.6.2 Các codec của libavcodec..........................................................................................52
3.6.2.1 Video codec........................................................................................................52
3.6.2.2 Audio codec.......................................................................................................53

8

Internet TV trên nền tảng Android

3.6.3 Các thư viện phụ thuộc libavcodec............................................................................54
3.6.4 Các ứng dụng sử dụng libavcodec.............................................................................54
3.7 Simple DirectMedia Layer...............................................................................................55
3.7.1 Tổng quan.................................................................................................................. 55
3.7.2 Thiết kế của SDL.......................................................................................................55
3.7.3 Sử dụng trên các nền tảng khác nhau........................................................................56
CHƯƠNG 4: CÁC ỨNG DỤNG ĐÃ XÂY DỰNG...................................................................57
4.1 Ứng dụng xem video từ các ổ lưu trữ...............................................................................57
4.1.1 Lưu đồ giải thuật cho decode thread..........................................................................60
4.1.2 Lưu đồ giải thuật cho hàm audio callback.................................................................62
4.1.3 Lưu đồ giải thuật cho phần hiển thị video.................................................................63
4.2 Ứng dụng xem video từ một server nội bộ.......................................................................65
4.3 Ứng dụng xem video từ YouTube.....................................................................................66
4.4 Kết quả đạt được............................................................................................................... 68
CHƯƠNG 5: KẾT LUẬN VÀ ĐỀ XUẤT HƯỚNG PHÁT TRIỂN..........................................71
TÀI LIỆU THAM KHẢO..........................................................................................................72

9

Internet TV trên nền tảng Android

DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT

C
CPU

Central Processing Unit

Đơn vị xử lí trung tâm

H
HDMI

High-Definition Multimedia

Chuẩn xuất hình ảnh và âm thanh

Interface

chất lượng cao

J
JTAG

Join Test Action Group

Cổng giao tiếp dành cho việc debug

N
NDK

Native Development Kit

Bộ công cụ phát triển ứng dụng
Android với ngôn ngữ C/C++

O
OS

Operating System

Hệ điều hành

S
SDK

Software Development Kit

Bộ công cụ phát triển phần mềm

T
TI

Texas Instruments

Tập đoàn bán dẫn của Mĩ

U
UART

Universial Asynchronous

Chuẩn truyền dữ liệu bất đồng bộ,

Receiver/Transmitter

hường dùng cho giao tiếp COM

V
VGA

Video Graphic Array

Chuẩn hiển thị đồ họa máy tính

10

Internet TV trên nền tảng Android

DANH MỤC CÁC BẢNG
Bảng 1.1: cấu hình sơ lược của TI Pandaboard ….......................................................... 13
Bảng 1.2: thứ tự boot với sự lựa chọn đầu tiên là thiết bị ngoại vi ................................ 22
Bảng 1.3: thứ tự boot với sự lựa chọn đầu tiên là bộ nhớ ….......................................... 23
Bảng 2.1: các phiên bản của HĐH Android …............................................................... 32
Bảng 2.2: yêu cầu tối thiểu của một thiết bị chạy HĐH Android ….............................. 32
Bảng 2.3: so sánh định dạng .class và .dex …................................................................ 43
Bảng 3.1: các định dạng media được hỗ trợ trong Android …....................................... 51
Bảng 3.2: các định dạng và thông số video được khuyên dùng …................................. 52

11

Internet TV trên nền tảng Android

DANH MỤC CÁC HÌNH ẢNH
Hình 1.1: Sơ đồ các thành phần chính trên Pandaboard …............................................ 14
Hình 1.2: Hình ảnh thực tế Pandaboard …..................................................................... 15
Hình 1.3: các khối xử lí bên trong OMAP4430 …......................................................... 16
Hình 1.4: sơ đồ minh họa quá trình boot của Pandaboard …......................................... 17
Hình 1.5: vị trí các điện trở tại các đường SYSBOOT …............................................... 21
Hình 1.6: sơ đồ các thành phần của khối Ducati …........................................................ 22
Hình 1.7: sơ đồ kết nối của khối IVA-HD trong OMAP4430 ….................................... 23
Hình 1.8: sơ đồ kết nối của khối ISS trong OMAP4430 …............................................ 24
Hình 2.1: các thành phần của HĐH Android ….............................................................. 32
Hình 2.2: cấu trúc của định dạng .class và định dạng .dex …......................................... 37
Hình 2.3: activity stack của HĐH Android….................................................................. 41
Hình 4.1: mô hình các khối xử lí audio/video …............................................................ 58
Hình 4.2: lưu đồ giải thuật cho decode thread ….............................................…............60
Hình 4.3: lưu đồ giải thuật cho khối decode loop …....................................................... 61
Hình 4.4: lưu đồ giải thuật cho hàm audio callback …...............................................….62
Hình 4.5: lưu đồ giải thuật cho hàm video_display() ….............................................… 64
Hình 4.6: giao diện Android 4.0 trên Pandaboard .......................................................... 69
Hình 4.7: giao diện chương trình xem video từ server ....................................................69
Hình 4.8: giao diện chương trình xem video từ ổ lưu trữ ............................................... 70
Hình 4.9: giao diện chương trình xem video từ YouTube .............................................. 70

12

Internet TV trên nền tảng Android

CHƯƠNG 1: TỔNG QUAN VỀ BOARD PHÁT TRIỂN TI PANDABOARD
1.1 Sơ lược về TI Pandaboard
Pandaboard là một board phát triển dựa trên nền tảng vi xử lí TI OMAP4430 với cấu hình khá cao và có cộng đồng phát triển rất đông.
Vi xử lí

TI OMAP4430 (1GHz Dual-Core
ARM Cortex A9)

Memory

1 GB Low-Power DDR2 RAM

Video

HDMI, DVI-D và cổng LCD mở rộng Audio

3.5'' audio in/out

Wireless

802.11 b/g/n và Bluetooth 2.1

Cổng mở rộng

1 USB OTG, 2 USB host, 1 general purpose expansion header (I2C,
GPMC, USB, MMC, DSS, ETM)

Debug

JTAG, UART

Storage

SD/MMC card
Bảng 1.1: cấu hình sơ lược của TI Pandaboard

1.2 Các thành phần chính trên Pandaboard
Các thành phần chính trên board gồm có:


OMAP4430 Processor



TWL6030 (Phoenix) Power Management Companion Device



TWL6040 (Phoenix) Audio Companion Device



POP Mobile LPDDR2 SDRAM Memory



HDMI Connector (Type A) – for OMAP4430 HDMI Transmitter output



HDMI Connector (Type A) – for DVI-D output source via OMAP4 parallel display output •

Audio Input & Output Connector (3.5mm)



SD/SDIO/MMC Media Card Cage
13

Internet TV trên nền tảng Android



UART via RS-232 interface via 9-pin D-Sub Connector



LS Research Module – 802.11b/g/n, Bluetooth, FM

Ngoài ra, Pandaboard còn có các cổng kết nối được sử dụng cho các tính năng mở rộng theo yêu cầu của người sử dụng. Các cổng mở rộng bao gồm:


Camera Connector (J17)



LCD Expansion Connector (J1 và J4)



Generic Expansion Connector (J3 và J6)



Composite Video Header (J12)

Hình 1.1: Sơ đồ các thành phần chính trên Pandaboard

14

Internet TV trên nền tảng Android

Hình 1.2: Hình ảnh thực tế Pandaboard
1.3 Vi xử lí TI OMAP4430
Khối xử lí trung tâm của Pandaboard là SoC TI OMAP4430 - một vi xử lí dựa trên kiến trúc OMAP™. Kiến trúc này được thiết kế cho các ứng dụng xử lí ảnh tốc độ cao, hỗ trợ các chức năng:


Hỗ trợ video streaming đến độ phân giải full HD (1920 x 1080 p, 30fps)



Hỗ trợ mobile gaming 2D/3D



Hỗ trợ video conferencing



Hỗ trợ ảnh chất lượng cao (đến 16 Mp)

Đồng thời, TI OMAP4430 còn hỗ trợ các hệ điều hành:


Windows™ CE, WinMobile™



Symbian OS™



Linux®



Palm OS™
15

Internet TV trên nền tảng Android

TI OMAP4430 bao gồm nhiều khối xử lí có chức năng chuyên biệt:


Khối vi xử lí Cortex™ – A9, gồm 2 core ARM® Cortex-A9



Khối DSP



Khối IVA-HD (Image and Video Accelerator High Defination)



Khối vi xử lí Cortex™ M3, gồm 2 core ARM Coretex – M3



Khối hiển thị



Khối xử lí ảnh (ISS), gồm khối ISP (Image Signal Processor) và khối SIMCOP (Still
Image Coprocessor)



Khối 2D/3D graphic accelerator



Khối emulation

Hình 1.3: các khối xử lí bên trong OMAP4430
OMAP4430 còn bao gồm các kĩ thuật quản lí năng lượng dành cho các sản phẩm di động có khả năng xử lí mạnh được tích hợp bên trong chip, bao gồm:

16

Internet TV trên nền tảng Android



On-chip memory



External memory interface



Memory management



Level 3 (L3) and level 4 (L4) interconnects



System and connecting peripherals

1.4 Tổng quan về bootloader của OMAP
Quá trình boot HĐH của OMAP trải qua nhiều bước, tại mỗi bước sẽ thực hiện quá trình khởi tạo với các mức độ khác nhau và thực hiện việc cấu hình đủ để có thể load và thực thi bước tiếp theo. Hình bên dưới minh họa chuỗi boot bao gồm ROM code, x-loader, uboot và kernel.

Hình 1.4: sơ đồ minh họa quá trình boot của Pandaboard

17

Internet TV trên nền tảng Android



Các chân SYSBOOT trên OMAP4430:
ROM code sẽ cố gắng để boot từ các thiết bị ngoại vi khác nhau và các bộ nhớ, bao gồm: serial (UART3), SD card, eMMC, NAND và USB. Thứ tự mà các thiết bị này được
ROM code tìm kiếm để load x-loader được xác định bởi một số chân trên vi xử lí OMAP gọi là các chân SYSBOOT.
Pandaboard sử dụng OMAP4430, vi xử lí này có 8 chân SYSBOOT, và thứ tự boot mặc định trên Pandaboard là USB rồi đến SD card.
Trong trường hợp muốn thay đổi thứ tự boot trên Pandaboard thì cần chú ý các điểm sau:
Hai chân đầu tiên (SYSBOOT[7:6]) điều khiển các chế độ clock của OMAP4430 (cho phép/không cho phép sử dụng bộ dao động nội (internal oscillator) để cho phép sử dụng các bộ dao động ngoài). Trên Pandaboard thì hai chân này được thiết lập với giá trị là
“11” và không nên thay đổi.
Sáu chân còn lại (SYSBOOT[5:0]) xác định nguồn và thứ tự boot từ bộ nhớ hoặc thiết bị ngoại vi. Chân SYSBOOT[5] sẽ xác định rằng bộ nhớ hay thiết bị ngoại vi sẽ được chọn để boot đầu tiên. Bảng 1.2 cho biết thứ tự boot với thiết bị ngoại vi được chọn đầu tiên và bảng 1.3 cho biết thứ tự boot với bộ nhớ là sự lựa chọn đầu tiên.

18

Internet TV trên nền tảng Android

Bảng 1.2: thứ tự boot với sự lựa chọn đầu tiên là thiết bị ngoại vi

19

Internet TV trên nền tảng Android

Bảng 1.3: thứ tự boot với sự lựa chọn đầu tiên là bộ nhớ
Để thay đổi thứ tự boot, có thể thêm hoặc gỡ bỏ các điện trở từ các đường
SYSBOOT[5:0]. Các đường SYSBOOT[5:0] có các điện trở nội kéo xuống (pull-down) yếu, nếu loại bỏ các điện trở này thì các đường tương ứng sẽ có giá trị '0' khi reset và nếu thêm các điện trở có giá trị 3.3K hoặc nhỏ hơn thì các đương tương ứng sẽ có giá trị '1' khi reset. Hình 1.5 cho biết vị trí của các điện trở tại các đường SYSBOOT[5:0]. Các điện trở được nối với OMAP4430 theo cách sau:
◦ R123: SYSBOOT0
20

Internet TV trên nền tảng Android

◦ R136: SYSBOOT1
◦ R128: SYSBOOT2
◦ R119: SYSBOOT3
◦ R135: SYSBOOT4
◦ R137: SYSBOOT5

Hình 1.5: vị trí các điện trở tại các đường SYSBOOT
1.5 Khối xử lí hình ảnh Ducati của OMAP4430
Khối xử lí hình ảnh Ducati của OMAP4430 bao gồm 2 vi xử lí ARM® Cortex-M3, khối
IVA-HD và khối ISS. Hai vi xử lí Cortex-M3 được có tên lần lượt là Sys M3 và App M3 và đây chính là thành phần xử lí chính (MPU) của khối Ducati. Hình bên dưới mô tả sơ đồ khối của khối Ducati, các mũi tên mô tả chiều thực hiện của phần mềm.

21

Internet TV trên nền tảng Android

Hình 1.6: sơ đồ các thành phần của khối Ducati
Dual Core Cortex-A9 MPU là OMAP4 Host Processor chạy các hệ điều hành bậc cao
(High Level Operating System – HLOS) như Linux hoặc Android ở chế độ Symetric
Multi Processing (SMP). Nó sử dụng khối Ducati cho việc gia tốc xử lí video và hình ảnh. Một trong hai vi xử lí Cortex-M3 (Sys M3) sẽ chạy Notify Driver với nhiệm vụ là chấp nhận các lệnh từ HLOS và chuyển đến cho vi xử lí Cortex-M3 còn lại (App M3)
Các phần mềm multimedia của hệ thống Ducati sẽ thực thi trên App M3. Thành phần
OMX (OpenMAX™) trên App M3 sẽ khởi tạo các API cần thiết cho việc xử lí video hoặc hình ảnh trên khối IVA-HD hoặc khối ISS.
Ở chiều ngược lại, App M3 có thể giao tiếp trực tiếp với vi xử lí Dual Core Cortex-A9.
1.5.1

Khối IVA-HD

Khối IVA-HD (Image Video Accelerator - High Definition) bao gồm các bộ tăng tốc phần cứng cho phép encode và decode video ở độ phân giải 1080p với tốc độ 30 fps.

22

Internet TV trên nền tảng Android

Hình 1.7: sơ đồ kết nối của khối IVA-HD trong OMAP4430
Các codec được hỗ trợ hiện tại và các tính năng:
Khối IVA-HD hỗ trợ nhiều chuẩn mã hóa/nén video. Các chuẩn video dưới đây đang được hỗ trợ, với khả năng lên đến độ phân giải 1920x1080 tại 30fps (1080p30).


H.264: Baseline Profile (BP), Main Profile (MP), High Profile (encode & decode)



H.264: Fast Profile/RCDO (encode & decode)



MPEG-4: Simple Profile (SP), Advanced Simple Profile (encode & decode)



DivX 5.x và cao hơn (encode & decode)



H.263: Các Profile 0 và 3 cho decode, Profile 0 cho encode



Sorenson Spark: V0 và V1 (decode)



MPEG-2: Simple Profile (SP), Main Profile (MP) (encode & decode)



MPEG-1 (encode & decode)



VC-1/WMV9/RTV: Simple Profile, Main Profile, Advanced Profile (encode & decode) •

On2®VP6/VP7 (decode)



RealVideo® 8/9/10 (decode)



AVS 1.0 (encode & decode)



JPEG (và MPEG) Baseline (encode & decode)



H.264 Annex G (SVC) Scalable Baseline Profile hỗ trợ đến 480p – 720p30
23

Internet TV trên nền tảng Android



H.264 Annex H (MVC) hỗ trợ đến 720p30.

1.5.2

Khối ISS

Khối ISS (Image Subsystem) có chức năng chính là xử lí các dữ liệu pixel đến từ các cảm biến hình ảnh bên ngoài, dữ liệu từ bộ nhớ hoặc dữ liệu đến từ giao tiếp Share level 2 của khối IVA-HD cho việc encode bằng hardware. Cùng với các thành phần của nó, như là các giao tiếp, khối ISP (Image Signal Processing) và khối SIMCOP
(Still Image Coprocessor), ISS là thành phần chính trong các ứng dụng multimedia như camera viewfinder, video record và still image capture.

Hình 1.8: sơ đồ kết nối của khối ISS trong OMAP4430
Các tính năng ISS hỗ trợ:


Viewfinder với zoom số, video stablization, video rotation.



Quay video ở độ phân giải 1080p 30fps với zoom số, video stablization, video
24

Internet TV trên nền tảng Android

rotation.


Chụp hình lên đến 16MPix với zoom số và rotation.



Chụp hình khi đang quay video.
1.5.2.1

Khối ISP

Khối ISP (Image Signal Processor) được thiết kế để đảm nhận các công việc tiền xử lí/hậu xử lí trên dữ liệu pixel.
ISP hỗ trợ các tính năng sau:


On-the-play processing hoặc memory-to-memory processing



Băng thông lên đến 200MPix/s



Tập hợp dữ liệu thống kê



Image pipe interface front-end raw data processing



RGB to YUV data processing



Khối Hardware 3A statistics dành cho real-time auto focus, auto exposure và auto white balance



Hai bộ real-time resizer



Video port để giao tiếp với bộ thu (receiver) và điều hướng dữ liệu đến ISP

1.5.2.2

Khối SIMCOP

Khối SIMCOP (Still Image COProcessor) được thiết kế để encode, decode và xử lí dữ liệu hình ảnh. SIMCOP là là bộ máy xử lí theo kiểu block-based memory-tomemory. Nó fletch các block từ bộ nhớ hệ thống và lưu vào các bộ nhớ local. Các bộ gia tốc khác sẽ lấy dữ liệu, thực hiện xử lí và lưu kết quả trở lại bộ nhớ local.
Từ đây, dữ liệu có thể tiếp tục được xử lí bởi các bộ gia tốc khác hoặc được lưu trở lại bộ nhớ hệ thống. Khối SIMCOP cần một bộ phận xử lí bên ngoài (CPU) để thực hiện các tác vụ điều khiển và cấu hình; trong thiết kế hiện tại, CPU này là
Cortex App M3.
SIMCOP cho phép thực hiện các ứng dụng sau:

25

Internet TV trên nền tảng Android



Single shot High Quality Image Capture (Lens Distortion Correction, Noise
Filtering, JPEG Encode, có và không có rotation) với độ phân giải lên đến 166
Mega Pixel.



JPEG Decoding (có và không có rotation) với độ phân giải lên đến 16 Mega
Pixel.



Burst mode (High Speed) Image Capture (JPEG Encode, có và không có rotation) với độ phân giải lên đến 16 Mega Pixel.



Video Noise Filter based Video Capture.

1.6 Cộng đồng phát triển cho Pandaboard


Omappedia

Website chính thức: http://omappedia.com/wiki/Main_Page
Chứa nhiều thông tin về các project thực hiện trên nền tảng OMAP. Cung cấp các bản build sẵn của các hệ điều hành khác nhau (Android, ArchLinux, Ubuntu, Symbian...) dùng để port lên Pandaboard. Ngoài ra còn có nhiều bài hướng dẫn cách build hệ điều hành để port lên Pandaboard.


Linaro

Website chính thức: http://www.linaro.org/
Linaro là một tổ chức kĩ thuật phi lợi nhuận, tập trung vào việc củng cố và tối ưu các phần mềm mã nguồn mở cho kiến trúc ARM, bao gồm GCC toolchain, Linux kernel,
ARM power management, xử lí ảnh và đa phương tiện.
Mỗi tháng, Linaro cung cấp 2 bản build cho 2 hệ điều hành Android và Ubuntu cho
Pandaboard.

26

Internet TV trên nền tảng Android

CHƯƠNG 2: TÌM HIỂU VỀ HỆ ĐIỀU HÀNH ANDROID
2.1 Open Handset Allience
Ngày 5 tháng 11 năm 2007, Open Handset Allience, một tổ chức bao gồm các công ty, tập đoàn Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group,
Motorola, Nvidia, Qualcom, Samsung Electronics, Sprint Nextel, T-Mobile và Texas
Instruments được thành lập. Mục tiêu của Open Handset Allience là phát triển các chuẩn mở cho các thiết bị di động. Cùng ngày, Open Handset Allience cũng giới thiệu sản phẩm đầu tiên của họ là Android, một nền tản di động xây dựng trên nhân Linux 2.6.
Vào ngày 9 tháng 12 năm 2008, thêm 14 thành viên mới gia nhập, gồm ARM Holdings,
Atheros Communications, Asustek Computer Inc, Garmin Ltd, Huawei Technologies,
PacketVideo, SoftBank, Sony Ericsson, Toshiba Corp và Vodafone Group Pic.
2.2 Hệ điều hành Android
Android là hệ điều hành dành cho các thiết bị di động dựa trên nền tảng Linux. Android được phát triển bởi Open Handset Allience, đứng đầu là Google.
Google phát hành Android dưới hình thức mã nguồn mở, dưới giấy phép Apache. Dự án mã nguồn mở Android (Android Open Source Project) được phát triển bởi Google chịu trách nhiệm duy trì và phát triển Android. Phiên bản đầu tiên của Android được phát hành vào ngày 23/09/2008. Thiết bị chạy hệ điều hành Android đầu tiên là chiếc điện thoại T-Mobile G1 được ra mắt vào tháng 10 năm 2008. Từ đó đến nay, HĐH Android đã phát triển rất mạnh mẽ và hiện nay Android là hệ điều hành phổ biến nhất trên điện thoại di động.
Nền tảng phần cứng chủ yếu của Android là kiến trúc ARM. Nền tảng x86 được hỗ trợ từ dự án Android x86.
Các phiên bản của hệ điều hành Android:
Phiên bản
Android beta

Tên mã

Ngày phát hành
05/11/2007
27

Internet TV trên nền tảng Android

Android 1.0

23/09/2008

Android 1.1

09/02/2009

Android 1.5

Cupcake

30/04/2009

Android 1.6

Donut

15/09/2009

Android 2.0/2.1

Éclair

26/10/2009

Android 2.2.x

Froyo

20/05/2010

Android 2.3.x

Gingerbread

06/12/2010

Android 3.x

Honeycomb

22/02/2011

Ice Cream Sandwich

19/10/2011

Android 4.0.x

Android 4.1.x
Jelly Bean
26/06/2012
Bảng 2.1: các phiên bản của HĐH Android
2.3 Các ràng buộc về thiết kế
Nền tảng Android được tạo ra cho các thiết bị giới hạn về khả năng xử lí, bộ nhớ và lưu trữ. Yêu cầu tối thiểu cho một thiết bị Android theo bảng sau:
Tính năng

Yêu cầu tối thiểu

Chipset

200 MHz processor

Memory

32 MB RAM, 32 MB Flash

Storage

Mini hoặc Micro SD

Display

QVGA TFT LCD hoặc lớn hơn, 16-bit color

USB
Standard mini-B USB interface
Bảng 2.2: yêu cầu tối thiểu của một thiết bị chạy HĐH Android
Hầu hết các điện thoại thông minh với đầy đủ tính năng đều vượt quá các yêu cầu tối thiểu này và các thiết bị luôn được tiếp tục cải tiến về cấu hình. Tuy nhiên, những yêu cầu tối thiểu này chỉ ra rằng, nền tảng Android tập trung vào các thiết bị ràng buộc về hiệu năng, do đó nền tảng Android phải hỗ trợ các điều sau:


Giới hạn tốc độ xử lí



Giới hạn bộ nhớ (RAM)



Không có swap space



Chạy nguồn pin
28

Internet TV trên nền tảng Android



Các thiết bị rất đa dạng



Sandboxed application runtime

2.4 Các tính năng của hệ điều hành Android


Handset layouts: hệ điều hành Android có khả năng tương thích để mở rộng, bao gồm
VGA, thư viện đồ họa 2D, thư viện đồ họa 3D dựa trên đặc tả OpenGL ES 2.0 và các tính năng như các smartphone khác.



Storage: SQLite, cơ sở dữ liệu quan hệ nhỏ gọn, sử dụng cho mục đích lưu trữ dữ liệu. •

Connectivity: Android hỗ trợ các công nghệ kết nối bao gồm GSM/EDGE, IDEN,
CDMA, EV-DO, UMTS, Bluetooth, Wifi, LTE, NFC và WiMAX.



Messaging: Các kiểu tin nhắn gồm SMS và MMS, kèm theo dịch vụ Android Push
Messaging.



Multiple language support: hỗ trợ nhiều ngôn ngữ.



Web browser: Trình duyệt web trên Android dựa trên engine mã nguồn mở WebKit kèm theo engine Chrome V8 JavaScript.



Java support: Tuy ứng dụng Android được viết bằng Java, tuy nhiên trong hệ thống không sử dụng máy ảo Java nên Java bytecode sẽ không được thực thi. Việc hỗ trợ
J2ME có thể được cung cấp từ ứng dụng của bên thứ ba.



Media support: Android hỗ trợ các định dạng audio/video/still media sau: WebM,
H.263, H.264 (trong 3GP hoặc MP4 container), MPEG-4 SP, ARM, ARM-WB (trong
3GP container), AAC, HE-AAC (trong MP4 hoặc 3GP container), MP3, MIDI, Ogg
Vorbis, FLAC, WAV, JPEG, PNG, GIF, BMP, WebP.



Streaming media support: RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 tag). Adobe Flash Streaming (RTMP) và
HTTP Dynamic Streaming được hỗ trợ thông qua Flash plugin. Apple HTTP Live
Streaming được hỗ trợ thông qua RealPlayer cho Android và dành cho phiên bản
Android 3.0 trở lên.

29

Internet TV trên nền tảng Android


Additional hardware support: Android có thể sử dụng video/still camera, touchscreen,
GPS, cảm biến gia tốc (accelerometer), con quay hồi chuyển (gyroscope), cảm biến áp suất (barometer), cảm biến từ (magnetometer), gaming control, cảm biến gần
(proximity) và cảm biến áp lực (pressure sensor), cảm biến nhiệt độ (thermometer),
2D bit blit và đồ họa 3D.



Multi-touch: Android có hỗ trợ cảm ứng đa điểm.



Bluetooth: hỗ trợ A2DP, AVRCP, gửi file (OPP), truy xuất phone book (PBAP), gọi điện bằng giọng nói và gửi danh bạ giữa các điện thoại. Bàn phím, chuột và joystick
(HID) qua bluetooth được hỗ trợ từ Android 3.1 trở lên.



Video calling: Android không có ứng dụng hệ thống hỗ trợ video calling, tuy nhiên vẫn có thể hỗ trợ thông qua ứng dụng của bên thứ ba qua cả hai giao thức mạng
UMTS (như trên Samsung Galaxy S) và qua IP. Video calling thông qua Google Talk có sẵn trên Android 2.3.4 trở lên. Phiên bản Gingerbread cho phép điện thoại Nexus S có thể thực hiện Internet call với một tài khoản SIP. Skype 2.1 cung cấp tính năng video calling cho Android 2.3 trở lên, bao gồm hỗ trợ camera trước.



Multitasking: Android là hệ điều hành hỗ trợ rất tốt multitasking.



Voice based features: thực hiện Google search thông qua giọng nói đã có sẵn từ phiên bản đầu tiên của Android. Chức năng điều khiển bằng giọng nói để gọi, soạn thảo, điều hướng... được hỗ trợ từ Android 2.2 trở lên.



Tethering: Android hỗ trợ tethering, cho phép điện thoại có thể được sử dụng như một
Wifi hotspot. Trước 2.2 điều này được hỗ trợ thông qua ứng dụng bên thứ ba.



Screen capture: Android hỗ trợ chức năng chụp ảnh màn hình bằng cách nhấn phím nguồn và phím volume-down cùng lúc. Trước Android 4.0, điều này chỉ có thể được thực hiện thông qua các nhà sản xuất hoặc ứng dụng bên thứ ba.



External storage: Hầu hết các thiết bị Android đều có kèm theo khe cắm thẻ nhớ microSD để đọc thẻ nhớ với định dạng FAT32, Ext3 và Ext4. Để có thể sử dụng các thiết bị lưu trữ khác như USB flash drive và USB HDD, một số máy tính bảng

30

Internet TV trên nền tảng Android

Android có kèm theo cổng USB 'A'. Định dạng FAT32 được nhận bởi Linux Kernel
VFAT driver, trong khi các định dạng hệ thống khác như NTFS, HFS Plus và exFAT cần có các driver của bên thứ ba để có thể được nhận dạng.
2.5 Ứng dụng thực tế
Lúc đầu, Android được thiết kế chủ yếu để dành cho điện thoại thông minh và máy tính bảng, tuy nhiên do tính chất mở và khả năng tùy biến và mở rộng cao của Android đã cho phép nó có mặt trên các thiết bị điện tử khác, bao gồm laptop và netbook, smartbook, ebook reader và smart TV (Google TV). Ngoài ra, Android còn có thể được ứng dụng trong các thiết bị điện tử gia dụng như đồng hồ đeo tay, headphone, hệ thống âm thanh trên xe hơi, smart glass (Project Glass), tủ lạnh, hệ thống điều hướng trên xe hơi, hệ thống nhà tự động, game console, gương, camera, media player và máy chạy bộ.
2.6 Thiết kế ứng dụng trên nền tảng Android
Các ứng dụng được phát triển cho nền tảng Android phần lớn được viết bằng ngôn ngữ
Java, một ngôn ngữ lập trình phổ biến hiện nay. Để giúp cho việc phát triển ứng dụng cho Android dễ dàng hơn, Google đã cung cấp cho người lập trình một bộ SDK
(Software Development Kit) gồm các thư viện API (Application Programing Interface) phục vụ cho việc lập trình. Bộ SDK này hoàn toàn miễn phí và đi kèm theo đó là các tài liệu hướng dẫn sử dụng khá đầy đủ.
Bên cạnh bộ SDK, Google còn cung cấp bộ NDK (Native Development Kit) giúp cho người lập trình có thể tận dụng các thư viện, ứng dụng có sẵn đã được phát triển trên các ngôn ngữ C/C++. NDK gồm các tool dùng cho việc compile các thư viện, ứng dụng viết bằng ngôn ngữ C/C++ thành mã có thể thực thi được trên Android.

31

Internet TV trên nền tảng Android

2.7 Các thành phần của HĐH Android

Hình 2.1: các thành phần của HĐH Android
HĐH Android gồm 5 thành phần cơ bản:


Linux Kernel



System Libraries



Android Run Time



Application Framework



Application Layer
2.7.1

Linux Kernel

Nhân Linux phiên bản 2.6 cung cấp các dịch vụ lõi, bao gồm dịch vụ quản lí driver của phần cứng, các dịch vụ quản lí bộ nhớ, tiến trình, quản lí năng lượng, quản lí kết
32

Internet TV trên nền tảng Android

nối mạng và bảo mật.
Trong quá trình port HĐH Android lên một thiết bị mới, công việc đầu tiên cần làm là build các driver của phần cứng với nhân Linux.
2.7.2

System Libraries

Nằm phía trên Linux Kernel, thư viện hệ thống bao gồm nhiều thư viện C/C++ lõi như libc (C Standard Library), SSL (Secure Socket Layer) và các thư viện:


Media library phục vụ các ứng dụng liên quan đến video và audio



Surface manager phục vụ quản lí việc hiển thị hình ảnh trên thiết bị



Graphics library bao gồm SGL và OpenGL phục vụ các ứng dụng hình ảnh 2D/3D



SQLite hỗ trợ các ứng dụng sử dụng cơ sở dữ liệu



SSL và WebKit hỗ trợ cho trình duyệt mặc định và Internet security

2.7.3

Android Run Time

Android run time là cái tạo nên sự khác biệt của Android so với các HĐH cho di động cũng dùng nhân Linux (như WebOS, MeeGo...). Android run time là thành phần chạy các ứng dụng của HĐH, nó bao gồm 2 thành phần: core libraries và máy ảo Dalvik.
2.7.3.1

Core libraries

Một tập các thư viện dùng trong việc biên dịch ứng dụng viết bằng Java, bao gồm
3 thành phần chính:


Các thư viện tương thích Java



Các thư viện đặc trưng cho máy ảo Dalvik (system info, debugging...)



Các thư viện tiện ích của hãng thứ ba (Apache http client 4.0)

2.7.3.2

Máy ảo Dalvik

Java được chọn là ngôn ngữ chính để viết ứng dụng cho nền tảng Android. Java được biết đến như là ngôn ngữ “viết một lần, chạy trên tất cả”. Khả năng này của
Java được thực hiện dựa trên nền tảng là máy ảo Java (Java Virtual Machine –
JVM). Mặc dù mục tiêu này đã được thực hiện tốt trên các môi trường desktop
(Java Standard Edition - JSE) và server (Java Enterprise Edition – JEE), tuy nhiên
33

Internet TV trên nền tảng Android

trên môi trường di động (Java Micro Edition – JME) nó đã có sự phân mảnh với nhiều cấu hình, profile và package dẫn đến bắt buộc phải có sự chỉnh sửa trên ứng dụng để có thể hỗ trợ các thiết bị khác nhau.
Khi Google chọn Java là ngôn ngữ để phát triển ứng dụng cho Android, họ đã từ bỏ cả JME và JVM để thay thế bằng máy ảo do chính Google thiết kế - máy ảo
Dalvik (Dalvik Virtual Machine) với tính năng just-in-time compilation (từ
Android 2.2) chạy Dalvik dex-code được dịch từ Java bytecode. Google cũng sử dụng các thư viện thay thế và sử dụng giới hạn các thư viện Java chuẩn.
Mọi ứng dụng trên Android chạy trên một tiến trình riêng cùng với một máy ảo
Dalvik riêng cho tiến trình đó. Máy ảo Dalvik được viết với khả năng cho phép thiết bị có thể chạy nhiều máy ảo Dalvik một cách hiệu quả.
Các ứng dụng viết bằng ngôn ngữ Java sẽ được biên dịch thành bytecode dưới dạng các file .class tương thích với máy ảo Java. Sau đó, một tool tên là dx được sử dụng để chuyển đổi các file .class (không phải tất cả) sang định dạng .dex. Các class sẽ được include trong một file .dex duy nhất. Các chuỗi và các hằng số trùng nhau sẽ chỉ được include một lần trong file .dex để giảm dung lượng. Java bytecode sẽ được sẽ được chuyển đổi sang một dạng tập lệnh mà máy ảo Dalvik có thể sử dụng. Một file .dex chưa nén có dung lượng nhỏ hơn một file .jar (Java
Archive) được nén từ các file .class. Máy ảo Dalvik hoạt động dựa vào các chức năng cung cấp bởi Linux kernel như thread và quản lí bộ nhớ.
Khác với máy ảo Java - máy ảo dạng stack machine, máy ảo Dalvik là máy ảo dựa trên kiến trúc register. Dalvik được cung cấp dưới dạng mã nguồn mở theo giấy phép Apache.
Máy ảo Dalvik được tối ưu cho các hệ thống giới hạn về bộ nhớ, vì khi chuyển đổi các file .class thành file .dex, nó tận dụng các thông tin giống nhau từ các class khác nhau để giảm tối đa dung lượng của ứng dụng khi cài đặt trên hệ thống.
2.7.4

Application Framework

Cung cấp các lớp (Java) để sử dụng khi viết ứng dụng Android. Nó còn cung cấp một
34

Internet TV trên nền tảng Android

lớp trừu tượng để truy cập phần cứng, quản lí giao diện người dùng và tài nguyên của ứng dụng.
2.7.5

Application Layer

Đây là nơi các ứng dụng, kể cả ứng dụng hệ thống và ứng dụng của bên thứ ba được xây dựng dựa trên các thư viện API. Các ứng dụng sẽ chạy trên các Android run time riêng và sử dụng các lớp và dịch vụ cung cấp bởi Application Framework.
Các thành phần trong một ứng dụng:


Activity: tầng trình bày của ứng dụng. Activity sử dụng các View tạo thành giao diện người dùng để hiển thị thông tin và phản ứng lại các tương tác của người dùng với thiết bị. So sánh với lập trình ứng dụng trên HĐH Windows, Activity tương ứng với Form.



Service: các ứng dụng chạy nền (background), cập nhật thông tin cho dữ liệu hoặc cho các Activity đang chạy, kích hoạt Notification khi cần thiết. Service được sử dụng cho các công việc xử lí cần tiếp tục chạy ngay cả khi ứng dụng không còn tương tác với người dùng (không còn hiển thị trên màn hình).



Content Provider: cung cấp khả năng quản lí và chia sẻ dữ liệu giữa các ứng dụng.
Chúng ta có thể cấu hình Content Provider trong ứng dụng để cho phép các ứng dụng khác có thể truy xuất dữ liệu từ ứng dụng của mình và ngược lại, chúng ta có thể sử dụng Content Provider cung cấp bởi các ứng dụng khác để truy xuất dữ liệu của ứng dụng đó.



Intent: sử dụng để gửi thông điệp theo kiểu broadcast hoặc đến một Activity hay một Service cụ thể để yêu cầu thực hiện một công việc cụ thể. Nếu gửi theo kiểu broadcast, HĐH sẽ đưa ra quyết định Activity nào sẽ thực hiện công việc đó.



Broadcast Receiver: tạo và đăng kí một Broadcast Receiver cho phép lắng nghe các Intent được broadcast bởi một ứng dụng nào đó với một lọc (filter) cụ thể.
Nếu một Intent tương ứng được nhận, ứng dụng sẽ tự động khởi chạy và thực hiện công việc tương ứng của Intent đó.
35

Internet TV trên nền tảng Android



Widget: cho phép các thành phần của ứng được thêm vào màn hình chính (home screen). •

Notification: một phương pháp cho phép thông báo các thông tin cho người sử dụng mà không làm ảnh hưởng đến Activity đang chạy.

2.8 Định dạng .dex của máy ảo Dalvik
Trong môi trường Java chuẩn, Java source code được biên dịch thành Java bytecode và được chứa trong các file .class. Các file .class này được đọc bởi máy ảo Java (JVM). Mỗi một class trong Java sẽ tạo ra một file .class, ví dụ trong một ứng dụng gồm một public class, một static inner class và ba anonymous class thì sau khi được biên dịch sẽ tạo ra năm file .class.
Trên nền tảng Android, Java source code vẫn được biên dịch thành các file .class. Nhưng sau khi các file .class được tạo ra, một công cụ gọi là dx được sử dụng để các file .class thành .dex (Dalvik Executable file). Trong khi một file .class chỉ chứa một class thì file
.dex lại chứa nhiều class và file .dex này sẽ được đọc bởi máy ảo Dalvik.
File .dex được tối ưu cho việc sử dụng bộ nhớ và được thiết kế chủ yếu theo cách chia sẻ dữ liệu. Hình 2.2 cho thấy sự khác biệt giữ định dạng .class và .dex

36

Internet TV trên nền tảng Android

Hình 2.2: cấu trúc của định dạng .class và định dạng .dex
Định dạng .dex chia sẻ các biến hằng đặc trưng cho từng kiểu dữ liệu (constant pool) như là cơ chế chính để bảo toàn bộ nhớ. Một constant pool chứa tất cả các biến hằng dạng chữ được sử dụng trong class, bao gồm giá trị của các hằng kiểu chuỗi trong code cũng như là tên của các trường, biến, lớp, interface và phương thức. Thay vì chứa các giá trị này xuyên suốt các class, chúng được tham chiếu bởi chỉ số của chúng trong constant pool. Trên hình 2.2, constant pool của file .class và file .dex được tô màu xanh. Trong trường hợp file .class, mỗi class có riêng một constant pool không đồng nhất. Constant pool này chứa tất cả các kiểu hằng (trường, biến, class...) được trộn lẫn vào nhau. Ngược lại, một file .dex chứa nhiều class, tất cả chúng chia sẻ cùng một constant pool đặc trưng cho từng kiểu dữ liệu, do đó loại trừ được hiện tượng trùng lặp.

37

Internet TV trên nền tảng Android

2.9 Zygote
Vì mỗi ứng dụng chạy trên một máy ảo Dalvik riêng nên các máy ảo Dalvik phải được khởi tạo thật nhanh khi một ứng dụng mới được chạy và sự không gian chiếm trong bộ nhớ của mỗi máy ảo Dalvik là phải nhỏ. Android sử dụng một khái niệm gọi là Zygote để cho phép chia sẻ code giữa các máy ảo Dalvik và cung cấp thời gian khởi động nhanh cho các máy ảo mới. Thiết kế của Zygote giả định rằng có một số lượng lớn các lớp thư viện lõi và các cấu trúc heap tương ứng được cùng sử dụng bởi nhiều ứng dụng. Nó cũng giả định rằng những cấu trúc heap này thường là read-only. Nói cách khác, các dữ liệu và các lớp này sử dụng bởi nhiều ứng dụng sẽ không thay đổi. Các đặc điểm này được khai thác để tối ưu việc chia sẻ bộ nhớ giữa các tiến trình.
Zygote là một máy ảo được khởi chạy lúc boot system. Khi tiến trình của Zygote chạy, nó sẽ khởi tạo một máy ảo Dalvik, máy ảo này sẽ load trước và khởi tạo các thư viện lõi.
Thường các thư viện lõi này là read-only và do đó là một ứng cử viên tốt cho việc load trước và chia sẻ giữa các tiến trình. Một khi Zygote đã khởi tạo xong, nó sẽ chờ các yêu cầu từ một socket, yêu cầu này đến từ runtime process và chỉ định rằng nó cần khởi tạo một máy ảo mới dựa trên Zygote. Bằng cách sinh ra một máy ảo mới từ Zygote, thời gian khởi tạo ứng dụng được giảm xuống.
Các thư viện lõi thường chỉ có thể đọc từ các ứng dụng. Khi các class này được ghi, vùng nhớ từ Zygote process sẽ được sao chép sang các tiến trình của các máy ảo mà Zygote sinh ra và ghi lên các vùng nhớ đó. Cách hành xử “copy-on-write”này tối ưu cho việc chia sẻ bộ nhớ trong khi vẫn ngăn các ứng dụng cản trở các ứng dụng khác và cung cấp tính bảo mật giữa các ứng dụng và tiến trình.
Trong máy ảo Java truyền thống, mỗi máy ảo phải sao chép tất cả các class thư viện lõi và các heap object liên quan. Không có sự chia sẻ bộ nhớ giữa các máy ảo.
2.10

Kiến trúc register-based của máy ảo Dalvik

Thông thường, các máy ảo thường được xây dựng trên kiến trúc stack-based được ưa chuộng hơn các máy ảo dựa trên kiến trúc register-based. Nguyên nhân nhày là do các máy ảo dựa trên kiến trúc stack-based thường dễ thực hiện, dễ dàng viết compiler back38

Internet TV trên nền tảng Android

end (do hầu hết các máy ảo được thiết kế để chạy một loại ngôn ngữ và một mật độ code nhất định (nghĩa là các lệnh thực thi của kiến trúc stack-based thường nhỏ hơn các lệnh thực thi cho kiến trúc register-based)). Tuy nhiên sự đơn giản này đi kèm với cái giá là hiệu năng. Các nghiên cứu chỉ ra rằng kiến trúc register-based thường yêu cầu ít lệnh thực thi hơn đến 47% so với các máy ảo xaay dựng trên kiến trúc stack-based. Mặc khác độ dài của code cho kiến trúc register-based lớn hơn 25% so với code của kiến trúc stackbased, tuy nhiên điều này chỉ làm tăng thời gian load lệnh của máy ảo register-based lên
1.07% so với máy ảo stack-based và con số này không đáng kể. Hiệu năng tổng thể của một máy ảo register-based là nó thực thi với thời gian ít hơn đến 32.3% so với máy ảo stack-based với cùng một chuẩn benchmark.
Do máy ảo Dalvik chạy trên các thiết bị giới hạn về khả năng xử lí, sự lựa cho kiến trúc register-based cho Dalvik là phù hợp. Mặc dù kích thước mã lệnh tăng đến 25% so với mã lệnh của kiến trúc stack-based nhưng nhờ sự chia sẻ constant pool của định dạng .dex đã được trình bày ở trên, kích thước code được giảm đến 50% so với sử dụng máy ảo
Java với định dạng .class.

Bảng 2.3: so sánh định dạng .class và .dex
2.11Bảo mật
Kiến trúc bảo mật của Android đảm bảo rằng “mặc định, không có một ứng dụng nào có quyền thực hiện bất cứ hoạt động nào có thể làm ảnh hưởng xấu đến các ứng dụng khác, đến hệ điều hành hoặc người sử dụng. Điều này bao gồm đọc và ghi các dữ liệu riêng tư của người dùng (như danh bạ hoặc email), đọc và ghi lên các file của các ứng dụng khác, thực hiện truy xuất mạng, giữ cho thiết bị luôn thức...” Đặc tính này không chỉ được thực thi trong giới hạn máy ảo Dalvik, mà nó xuyên suốt các cấp của hệ điều hành, các cấp
39

Internet TV trên nền tảng Android

của framework.
Mỗi ứng dụng chạy trên một máy ảo Dalvik riêng cho nó và máy ảo Dalvik này chạy trên một tiến trình riêng. Mỗi tiến trình được cấp một user ID riêng và chỉ có thể sử dụng giới hạn các tính năng của hệ thống và chỉ có thể truy xuất dữ liệu của nó. Do đó, một ứng dụng không thể can thiệp vào một ứng dụng khác. Nếu ứng dụng yêu cầu thêm một quyền nào đó, ứng dụng đó phải khai báo nó thông qua file Manifest lúc phát triển ứng dụng. Các quyền này sẽ được kiểm tra khi cài đặt ứng dụng bởi framework và người dùng và được cấp quyền bởi hệ điều hành khi khởi chạy.
Để bảo toàn tài nguyên bộ nhớ và để tăng tốc độ khởi chạy ứng dụng, như đã nêu ở trên, máy ảo Dalvik sẽ chia sẻ các thư viện lõi, read-only giữa các tiến trình máy ảo. Việc chia sẻ được thực hiện một cách bảo mật bằng cách chỉ cấp quyền đọc cho các tiến trình này mà không cho phép chúng quyền thay đổi.
2.12

Application Life Cycle

Trong HĐH Android, các ứng dụng không tự mình điều khiển life cycle của các tiến trình
(process) của nó mà công việc này do Android run time đảm nhận.
Android run time quản lí và điều khiển việc chấm dứt các tiến trình của ứng dụng dựa vào mức ưu tiên của từng ứng dụng. Mức ưu tiên của ứng dụng được qui định bởi trạng thái (state) của các Activity trong ứng dụng đó.
2.12.1 Activity stack
Trạng thái của một Activity được quyết định dựa vào vị trí của nó trong Activity stack. Activity stack là một tập tất cả các Activity đang chạy, Activity stack truy xuất theo kiểu LIFO (last-in-first-out). Khi một Activity mới được khởi chạy, Activity hiện tại đang tương tác với người dùng(foreground Activity) sẽ được đưa vào đỉnh của
Activity stack. Sau đó, nếu người dùng bấm phím Back trên thiết bị, Activity mới này sẽ đóng lại và Activity trên đỉnh của stack sẽ được đưa lên và trở thành foreground
Activity.

40

Internet TV trên nền tảng Android

Hình 2.3: activity stack của HĐH Android
Như đã nói ở trên, mức ưu tiên của ứng dụng được quyết định bởi mức ưu tiên cao nhất của các Activity thuộc về ứng dụng đó. Khi trình quản lí bộ nhớ của Android lựa chọn ứng dụng nào sẽ bị chấm dứt để lấy lại tài nguyên bộ nhớ, nó sẽ sử dụng
Activity stack để xác định mức ưu tiên của ứng dụng dựa vào các Activity của ứng dụng đó.
2.12.2 Activity state
Khi một Activity được khởi tạo cho đến khi đóng lại, nó sẽ được đưa vào stack hoặc lấy ra từ stack như hình trên. Trong quá trình đó, Actvity sẽ chuyển tiếp từ qua bốn trạng thái sau:


Active: khi Activity đang ở trên đỉnh của stack thì nó là foreground Activity và nó sẽ tương tác trực tiếp với người dùng. Android bằng mọi giá sẽ giữ nó tồn tại, đồng thời nếu cần thiết sẽ kill các Activity nằm bên dưới nó trong stack để đảm bảo có đủ tài nguyên cho nó sử dụng. Khi một Activity mới được khởi chạy và ở trạng thái active, foreground Activity lúc này sẽ chuyển sang trạng thái paused.



Paused: trong trường hợp một Activity có thể được thấy trên màn hình nhưng người dùng không thể tương tác với nó được (do có một Activity khác trong suốt hoặc hiển thị không toàn màn hình nằm chồng lên nó) thì Activity đó đang ở trạng
41

Internet TV trên nền tảng Android

thái paused. Lúc này, Activity cũng được đối xử như lúc nó đang ở trạng thái active nhưng nó sẽ không nhận input từ người dùng. Trong một vài trường hợp,
Android sẽ kill paused Activity để lấy tài nguyên cho active Activity. Khi một
Activity hoàn toàn bị che khuất trên màn hình, nó sẽ chuyển sang trạng thái stopped. •

Stopped: khi một Activity không còn được nhìn thấy trên màn hình, nó ở trạng thái stopped. Lúc này, Activity đó vẫn còn nằm trên bộ nhớ và vẫn còn giữ các thông tin về trạng thái của nó lúc còn active. Tuy nhiên, lúc này nó sẽ có trở thành một trong những mục tiêu bị kill khi hệ thống cần thêm bộ nhớ. Khi một Activity được đóng lại hoặc thoát ra, nó chuyển sang trạng thái inactive.



Inactive: sau khi một Activity bị kill hoặc thoát ra và trước khi nó được khởi chạy lại, nó ở trạng thái inactive. Activity ở trạng thái này đã được gỡ ra khỏi stack.

Sự chuyển đổi giữa các trạng thái là không xác định và tất cả được quản lí bởi trình quản lí bộ nhớ của Android. Khi cần thêm tài nguyên, Android sẽ bắt đầu đóng các ứng dụng có chứa các inactive Activity, theo sau đó là các ứng dụng có chứa stop
Activity. Trong trường hợp xấu nhất, Android sẽ đóng các ứng dụng có chứa paused
Activity.

42

Internet TV trên nền tảng Android

CHƯƠNG 3: CÁC THƯ VIỆN HỖ TRỢ KHI PHÁT TRIỂN ỨNG DỤNG
3.1 Tổng quan về media file
Audio/video file chứa nhiều thành phần cơ bản. Một file, bản thân nó được gọi là một container, và định dạng của container xác định vị trí của thông tin trong file đó. Ví dụ cho conatiner là AVI và QuickTime. Chứa bên trong container là các stream (audio stream, video stream...) - một chuỗi các yếu tố dữ liệu xếp theo thời gian. Các yếu tố dữ liệu này được gọi là các frame. Mỗi stream sẽ được encode bởi các dạng codec khác nhau. Codec sẽ quy định cách dữ liệu được encode và decode. Ví dụ cho codec là DivX và MP3. Sau đó, packet sẽ được đọc từ các stream. Packet là các mẩu dữ liệu chứa các bit đã được decode thành các raw frame mà chúng ta có thể thao tác trên chúng trong ứng dụng. Cho các mục đích khác nhau, mỗi packet có thể chứa một frame hoàn chỉnh hoặc nhiều frame
(trong trường hợp của audio).
3.2 Multimedia container format
Container của một multimedia file (như .mp4, .avi, .ogg...) được sử dụng để xác định và xen các dạng dữ liệu khác nhau trong một file. Các định dạng container đơn giản có thể chứa các loại định dạng audio khác nhau, trong khi các định dạng container phức tạp hơn có thể hỗ trợ nhiều audio và video stream, phụ đề, thông tin của chapter và meta-data
(tag) cùng với các thông tin đồng bộ cần thiết cho việc playback các stream cùng một lúc. Thông thường các header, chứa các metadata và các chunk đồng bộ được xác định bởi định dạng container.
Các bộ phận của định dạng container có nhiều tên khác nhau: “chunk” trong RIFF và
PNG, “atom” trong QuickTime/MP4, “packet” trong MPEG-TS và “segment” trong
JPEG. Thành phần chính của một chunk được gọi là “data” hoặc “payload”. Hầu hết các định dạng container có các chunk được xếp liên tục, mỗi chunk có một header, trong khi
TIFF (Tagged Image File Format) chứa các offset. Việc module hóa các chunk giúp cho việc phục hồi các chunk khác dễ dàng hơn trong trương hợp file bị hư hoặc bị mất frame
43

Internet TV trên nền tảng Android

hoặc bit slip, còn offset hỗ trợ cho việc sửa lỗi khi xảy ra bit slip.
Các định dạng container dành riêng cho audio:


AIFF (định dạng IFF, sử dụng trong nền tảng MAC OS)



WAV (định dạng RIFF, sử dụng trong nền tảng Windows)



XMF (Extensible Music Format)



Các định dạng container dành riêng cho hình ảnh:



FITS (Flexible Image Transport System)



TIFF (Tagged Image File Format)

Các định dạng container khác có thể chứa nhiều dạng audio, video cũng như dữ liệu media khác. Các định dạng multimedia container phổ biến là:


3GP (sử dụng trong điện thoại di động, dựa trên ISO base media file format)



ASF (container cho Microsoft WMA và WMV)



AVI (container chuẩn của Microsoft Windows, dựa trên RIFF)



DVR-MS (“Microsoft Digital Video Recording”, định dạng container độc quyền cho video, phát triển bởi Microsoft dựa trên ASF)



Flash Video (FLV, F4V) (container cho video và audio từ Adode System)



IFF (định dạng container độc lập với nền tảng đầu tiên)



Matroska (MKV) (không giới hạn cho bất kì code hoặc hệ thống nào, nó có thể chứa gần như tất cả. Nó là chuẩn mở và là định dạng container mã nguồn mở)



MJ2 - định dạng file Motion JPEG 2000, dựa trên ISO base media file format được quy định trên MPEG-4 Part 12 và JPEG 2000 Part 12.



QuickTime File Format (container chuẩn cho video từ Apple Inc.)



MPEG program stream (container chuẩn cho MPEG-1 và MPEG-2 elemetary stream trên các thiết bị media tin cậy như đĩa, được sử dụng trên các đĩa DVD-Video)



MP4 (container chuẩn cho audio và video dành cho MPEG-4 multimedia portfolio, dựa trên ISO base media file format được quy định trên MPEG-4 Part 12 và JPEG
44

Internet TV trên nền tảng Android

2000 Part 12)


Ogg (container chuẩn cho định dạng audio từ Xiph.org - Vorbis và định dạng video
Theora)



RM (RealMedia, container chuẩn cho RealVideo và RealAudio)

Ngoài ra còn có các định dạng container khác ít thông dụng hơn như NUT, MXF, GXF, ratDVD, SVI, VOB và DivX Media Format.
3.3 Các định dạng media được Android hỗ trợ
Các giao thức mạng hỗ trợ:


RTSP (RTP, SDP)



HTTP/HTTPS progressive streaming



HTTP/HTTPS live streaming draft protocol:
▪ MPEG-2 TS media files only
▪ Protocol version 3 (Android 4.0 and above)
▪ Protocol version 2 (Android 3.x)
▪ Not supported before Android 3.0

Bảng bên dưới liệt kê các hỗ trợ định dạng media đi kèm với nền tảng Android, các thiết bị có thể được nhà sản xuất hỗ trợ thêm một số định dạng khác.
Type

Audio

Format/Code c AAC
LC/LTP

Encoder

Decoder

Details

Supported File
Type(s)
/Container
Formats

x

x

Mono/Stereo content in any combination of standard bit rates up to 160 kbps and sampling rates from 8 to
48kHz

• 3GPP (.3gp)
• MPEG-4
(.mp4, .m4a)
• ADTS raw
AAC (.aac, decode in
Android 3.1+, encode in
Android 4.0+,
ADIF not supported) • MPEG-TS (.ts,

HE-AACv1
(AAC+)

x

HE-AACv2
(enhanced
AAC+)

x

45

Internet TV trên nền tảng Android not seekable,
Android 3.0+)
AMR-NB

x

x

4.75 to 12.2 kbps 3GPP (.3gp) sampled @ 8kHz

AMR-WB

x

x

9 rates from 6.60 3GPP (.3gp) kbit/s to 23.85 kbit/s sampled @
16kHz

x
(Android 3.1+)

Mono/Stereo (no FLAC (.flac) multichannel). only
Sample rates up to 48kHz (but up to 44.1kHz is recommended on devices with
44.1kHz output, as the 48 to
44.1kHz
downsampler does not include a low-pass filter).
16-bit
recommended; no dither applied for 24-bit.

MP3

x

Mono/Stereo 8- MP3 (.mp3)
320 Kbps constants (CBR) or variable bitrate (VBR)

MIDI

x

MIDI Type 0 and
1. DLS Version 1 and 2. XMF and
Mobile XMF.
Support for ringtone formats
RTTTL/RTX,
OTA, and iMelody Vorbis

x

PCM/WAVE

x

FLAC

• Type 0 and 1
(.mid, .xmf,
.mxmf)
• RTTTL/RTX
(.rtttl, .rtx)
• OTA (.ota)
• iMelody (.imy)

• Ogg (.ogg)
• Matroska
(.mkv, Android
4.0+)
8- and 16-bit linear PCM

WAVE (.wav)

46

Internet TV trên nền tảng Android
(rates up to limit of hardware)
Image

JPEG

x

GIF

x

Base + progressive JPEG (.jpg)

x x BMP

x

PNG (.png)

x

PNG

GIF (.gif)
BMP (.bmp)

WEBP
Video

x
(Android 4.0+)

x
(Android 4.0+)

WebP (.webp)

H.263

x

x

• 3GPP (.3gp)
• MPEG-4
(.mp4)

x
(Android 3.0+)

x

H.264 AVC

MPEG-4 SP

Baseline Profile
(BP)

x

VP8

• 3GPP (.3gp)
• MPEG-4
(.mp4)
• MPEG-TS (.ts,
AAC audio only, not seekable,
Android 3.0+)
3GPP (.3gp)

x
Streamable only
(Android 2.3.3+) in Android 4.0 and above

• WebM
(.webm)
• Matroska
(.mkv, Android
4.0+)

Bảng 3.1: các định dạng media được hỗ trợ trong Android
Định dạng video được khuyên dùng
Bảng dưới liệt kê các thông số và profile của video encoding được Android media framework hỗ trợ.
SD (Low quality)

SD (High quality)

HD (Not avaiable on all devices) Video codec

H.264 Baseline Profile

H.264 Baseline Profile

H.264 Baseline Profile

Video resolution

176 x 144 px

480x360 px

1280 x 720 px

Video frame rate

12 fps

30 fps

30 fps

Video bitrate

56 Kbps

500 Kbps

2 Mbps

Audio codec

AAC-LC

AAC-LC

AAC-LC

Audio channel

1 (mono)

2 (stereo)

2 (stereo)

47

Internet TV trên nền tảng Android
Audio bitrate

24 Kbps

128 Kbps

192 Kbps

Bảng 3.2: các định dạng và thông số video được khuyên dùng
3.4 Thư viện FFmpeg
3.4.1

Tổng quan về thư viện FFmpeg

FFmpeg là một dự án phần mềm miễn phí, bao gồm các thư viện và các chương trình dùng để xử lí dữ liệu multimedia. Các thành phần đáng chú ý nhất của ffmpeg là libavcodec, thư viện codec cho audio/video; libavfromat, thư viện dùng cho việc mux và demux audio/video file và chương trình ffmpeg command line dùng cho việc transcoding audio/video file.
FFmpeg được pháp hành dưới giấy phép GNU Lesser General Public 2.1+ hoặc giấy phép GNU General Public 2+ (dựa trên các tùy chọn được cho phép).
Dự án FFmpeg được khởi xướng bởi Fabrice Bellard và được duy trì bởi Michael
Neidermayer từ năm 2004.
FFmpeg được pháp triển dưới môi trường GNU/Linux, tuy nhiên nó có thể được biên dịch lại dưới hầu hết các hệ điều hành thông dụng hiện nay, bao gồm Mac OS X,
Microsoft Windows, Amiga OS và HĐH thừa kế của nó Morph OS. Hầu hết các nền tảng điện toán và kiến trúc tập lệnh vi xử lí đều hỗ trợ ffmpeg, như x86 (IA-32 và x86-64), PPC (Power PC), ARM, DEC Alpha, SPARC và MIPS.
3.4.2

Các thành phần của FFmpeg

Dự án FFmpeg bao gồm các thành phần sau:


ffmpeg: công cụ với giao diện command-line dùng để chuyển đổi định dạng của file video sang một định dạng khác. Nó còn có thể bắt và encode trong thời gian thực từ TV card.



ffserver: chương trình server dùng streaming multimedia theo giao thức HTTP và
RTSP dành cho live broadcast.



ffplay: chương trình chơi audio/video đơn giản dựa trên thư viện SDL và ffmpeg.



ffprobe: công cụ với giao diện command-line dùng để đọc thông tin của media file. 48

Internet TV trên nền tảng Android



libswresample: là một thư viện chứa các hàm dùng cho resampling audio.



libavresample: là thư viện chứa các hàm dùng cho resampling audio từ dự án
Libav, khác biệt hoàn toàn so với libswresample.



libavcodec: là thư viện chứa tất cả các encoder và decoder của FFmpeg cho audio/video. •

libavutil: là thư viện tiện ích sử dụng cho các thành khác của FFmpeg. Thư viện bao gồm adler32, crc, md5, sha1, Izo decompressor, Base64 encoder/decoder, dé encrypter/decrypter, rc4 encrypter/decrypter và aes encrypter/decrypter.



libpostproc: là thư viện chứa các hàm dùng cho video postprocessing.



libswscale: là thư viện chứa các hàm dùng cho việc chuyển đổi image scaling và colorspace/pixelformat. •

libavfilter: là sự thay thế cho vhook cho phép audio/video được thay đổi hoặc kiểm tra giữa decoder và encoder.

3.4.3

Các dự án có sử dụng FFmpeg

FFmpeg được sử dụng bởi nhiều dự án mã nguồn mở cũng như các dự án độc quyền, bao gồm ffmpeg2theora, VLC, MPlayer, HandBrake, Blender, Google Chrome,
YouTube, Facebook...
FFmpeg xử lí nội dung của HTML5 audio và video trong Origyn Web Browser cho
HĐH MorphOS.
Một số giao diện đồ họa người dùng cho FFmpeg đã và đang được phát triển, bao gồm Avanti, Winff và Miro Video Converter.
3.5 Các dạng codec, định dạng và giao thức hỗ trợ từ FFmpeg
3.5.1

Các dạng codec hỗ trợ



Snow



FFV1



Các chuẩn video ITU-T: H.261, H.262/MPEG-2 Part 2, H.263 và H.264/MPEG-4
AVC
49

Internet TV trên nền tảng Android



Các chuẩn tiếng nói: G.711 μ-law, G.711 A-law, G.721, G.722, G.722.2, G.723,
G.723.1, G.726, G729



Các chuẩn video ISO/IEC MPEG: MPEG-1 Part 2, H.262/MPEG-2 Part 2 và
H.264/MPEG-4 AVC



Các chuẩn audio ISO/IEC MPEG: MP1, MP2, MP3, AAC, HE-AAC và MPEG-4
ALS



Các chuẩn hình ảnh ISO/IEC/ITU-T JPEG: JPEG, JPEG-LS và JPEG 2000



Các chuẩn video SMPTE: VC-1, VC-2, VC-3 và DPX image



Các chuẩn audio SMPTE: SMPTE 302M



Các chuẩn liên quan DVD Forum / Dolby audio codec: MLP và AC-3



Các chuẩn tiếng nói 3GPP: ARM-NB, ARM-WB



Các codec tiếng nói liên quan GSM: Full Rate



Các codec video liên quan Windows Media Player: Microsoft RLE, Microsoft
Video 1, Cinepak, Indeo 2, 3 và 5, Motion JPEG, Microsoft MPEG-4 v1, v2 và v3, WMV1, WMV2 và WMV3



Các codec audio liên quan Windows Media Player: WMA1, WMA2 và WMA Pro



Các codec tiếng nói liên quan Windows Media Player: WMA Voice và MS-GSM



Các codec video liên quan RealPlayer: RealVideo 1, 2, 3 và 4



Các codec audio liên quan RealPlayer: RealAudio 3, 6, 7, 8, 9 và 10



Các codec tiếng nói liên quan RealPlayer: RealAudio 1, 2, 4 và 5



Các codec video liên quan QuickTime: Cinepak, Motion JPEG, ProRes, Sorenson
3 Codec, Animation_codec



Các codec audio liên quan QuickTime: QDesign Music Codec 2 và ALAC



Các codec video liên quan Adobe Flash Player: Screen video, Screen video 2,
Sorenson 3 Codec, VP6 và Flash Video (FLV)



Các codec audio liên quan Adobe Flash Player: Adobe SWF ADPCM và
50

Internet TV trên nền tảng Android

Nellymoser Asao


Xiph.Org: Theora, Speex, Vorbis và FLAC



Sony: ATRAC1 và ATRAC3



NTT: TwinVQ



On2: Duck TrueMotion 1, Duck TrueMotion 2, VP3, VP5, VP6 và VP8



RAD Game Tools: Smacker video và Bink video



Truespeech



RenderWare: TXD

3.5.2

Định dạng container được hỗ trợ



ASF



Maxis XA



AVI và cả input từ AviSynth



MPEG program stream



BFI



MPEG stransport stream (bao



CAF



FLV



GXF, General eXchange Format,

gồm AVCHD)


MXF, Material eXchange Format,
SMPTE 377M

SMPTE 360M



MSN Webcam stream



IFF



Ogg



RL2



OMA



ISO base media file format (bao



TXD

gồm QuickTime, 3GP và MP4)



WTV



Matroska (bao gồm WebM)

3.5.3

Các giao thức được hỗ trợ



Chuẩn IETF: TCP, UDP, Gopher, HTTP, RTP, RTSP và SDP



Các giao thức liên quan Apple: RealMedia RTSP/ RDT



Các giao thức liên quan RealMedia: RealMedia RTSP/RDT



Các giao thức liên quan Adobe: RTMP, RTMPT, RTMPE, RTMPTE và RTMPS
51

Internet TV trên nền tảng Android



Các giao thức liên quan Microsoft: MMS qua TCP và MMS qua HTTP

3.6 Thư viện libavcodec
3.6.1

Tổng quan

libavcodec bao gồm phần mềm miễn phí và thư viện mã nguồn mở phát hành dưới giấy phép LGPL (GNU Lesser General Public) dành cho việc encode và decode dữ liệu media. libavcodec là một thành phần được tích hợp trong nhiều ứng dụng và framework trong lĩnh vực multimedia. Các trình chơi media nổi tiếng như MPlayer, xine và VLC sử dụng libavcodec như bộ máy decode chính cho phép chơi nhiều định dạng audio và video trên các nền tảng hỗ trợ libavcodec. Nó còn được sử dụng trong các ứng dụng chỉnh sửa và chuyển đổi video như Avidemux, Mencoder trong việc encode và decode. libavcodec còn chứa các bộ thực thi decoder và đôi khi là encoder cho các định dạng độc quyền và không phát hành các đặc tả cho chúng.
3.6.2

Các codec của libavcodec

3.6.2.1

Video codec



Asus v1



FFV1



Asus v2



H.261



AVS (decode)



H.263



CamStudio (decode)



H.264/MPEG-4 AVC (native



Cinepak (decode)

decoder, encoding through



Creative YUV (decode)

x264)



Dirac (decode)



Huffyuv



DNxHD



id Software RoQ Video



Duck TrueMotion v1 (decode)



Intel Indeo (decode)



Duck TrueMotion v2 (decode)



Lagarith (decode)



Flash Screen Video



LOCO (decode)
52

Internet TV trên nền tảng Android



Mimic (decode)



VC-1 (decode)



MJPEG



Smacker video (decode)



MPEG-1



Snow



MPEG-2/H.262



Sorenson SVQ1



MPEG-4 Part 2



Sorenson SVQ3 (decode)



On2 VP3, VP5, VP6 (decode)



Theora (native decoder,



On2 VP8 (native decoder,

encoding through libtheora)

encoding through libvpx)



Sierra VMD Video (decode)



Apple ProRes



Vmware Vmnc (decode)



Apple Computer QuickDraw



Westwood Studios VQA

(decode)

(decode)



QuickTime Graphics SMC



WMV – version 7 và version 8



RealVideo RV10 và RV20



WMV – version 9 (decode)



RealVideo RV30 và RV40



Wing Commander/Xan Video

(decode)
3.6.2.2

(decode)

Audio codec



8SVX (decode)



E-AC-3



AAC



FLAC (24/32 bit decode)



AC-3



GSM 06.10 (native decoder,



ARM (decode)



ARM-WB (decode)



Intel Music Coder (decode)



Apple Lossless



Meridian Lossless Packing /



ATRAC3 (decode)



Cook Codec (decode)



Mokey's Audio (decode)



DTS



MP2



EA ADPCM (decode)



MP3 (native decoder,

encoding through libgsm)

Dolby TrueHD (decode)

53

Internet TV trên nền tảng Android

encoding through LAME)



TwinVQ (decode)

Nellymoser Asao Codec in



Vorbis

Flash



WavPack (decode)



QCELP (decode)



Windows Media Audio 1



QDM2 (decode)



Windows Media Audio 2



RealAudio 1.0



Windows Media Audio 9



RealAudio 2.0 (decode)



Shorten (decode)



Truespeech (decode)



TTA (decode)



3.6.3

Professional (decode)


Windows Media Audio Voice
(decode)

Các thư viện phụ thuộc libavcodec



libavformat (thành phần của FFmpeg)



libgegl (thành phần tùy chọn của GEGL)



libgimp (thành phần của GIMP)



libmpcodecs, libmpdemux (thành phần của MPlayer)

3.6.4


Các ứng dụng sử dụng libavcodec
XMMS2

Video player:
GOM player



Chỉnh sửa video:

KMPlayer

Audacity

FFplay

SoX

MPlayer



Video converter:

VLC xine •

FFmpeg
HandBrake

Audio player:

Mencoder

Audacious

SUPER

Rockbox

Transcode

54

Internet TV trên nền tảng Android

ffmpeg2theora


VoIP:

aLinphone


Multimedia Streaming Server:

aEkiga

FFserver

aQuteCom

VLC media player

3.7 Simple DirectMedia Layer
3.7.1

Tổng quan

Simple DirectMedia Player là một thư viện dành cho các ứng dụng đa phương tiện, được phát hành dưới dạng mã nguồn mở, miễn phí và đa nền tảng được viết bằng ngôn ngữ C cung cấp một giao diện đơn giản cho các thành phần đồ họa, âm thanh và thiết bị nhập (input device) trên nhiều nền tảng khác nhau.
SDL có từ “layer” trong tên gọi bởi vì thực tế nó là một wrapper xung quanh các hàm đặc trưng cho hệ điều hành. Mục đích chính của dự án SDL là cung cấp một framework chung để truy xuất đến các hàm hệ thống này. Để thực hiện những mục tiêu cao hơn, nhiều thư viện khác đã được xây dựng phía trên SDL.
Các nhà phát triển phần mềm sử dụng SDL để viết game cho máy tính hoặc các ứng dụng đa phương tiện mà có thể chạy trên các hệ điều hành khác nhau bao gồm
Android, AmigaOS, AmigaOS 4, FreeBSD, BeOS/Haiku, iOS, Linux, Mac OS 9,
Mac OS X, MorphOS, OpenVMS, PlayStation Portable, Syllable, Symbian, webOS và Windows. SDL quản lí video, các sự kiện, audio kĩ thuật số, CD-ROM, âm thanh, thread, shared object loading, mạng và timer.
3.7.2

Thiết kế của SDL

SDL tự bản thân nó rất đơn giản, nó chỉ hoạt động như một wrapper mỏng và đa nền tảng, hỗ trợ cho 2D pixel operation, âm thanh, truy xuất tập tin, xuử lí sự kiện (event), định thời (timing), quản lí thread... Nó thường được sử dụng để hỗ trợ cho OpenGL bằng cách thiết lập ngõ ra đồ họa, cung cấp sự quản lí input từ chuột, bàn phím mà những điều này không nằm trong khả năng của OpenGL.
Thư viện SDL được chia thành các hệ thống con (subsystem), như video (quản lí các chức năng surface và OpenGL), audio, CD-ROM, joystick và timer. Bên cạnh các thư
55

Internet TV trên nền tảng Android

viện đơn giản và hỗ trợ ở mưc thấp này, còn có vài thư viện chính thức riêng cung cấp thêm các chức năng khác. Chúng bao gồm các thư viện chuẩn và được cung cấp qua trang web chính thức và kèm theo các tài liệu chính thức:


SDL_image: hỗ trợ nhiều định dạng hình ảnh



SDL_mixer: các hàm audio phức tạp, dành cho sound mixing



SDL_net: hỗ trợ kết nối mạng



SDL_ttf: hỗ trợ hiển thị các phông chữ TTF (TrueType font)



SDL_rtf: hỗ trợ hiển thị định dạng RTF (Rich Text Format) đơn giản

Ngoài ra, các thư viện không chuẩn cũng tồn tại. Ví dụ: SDL_Collide trên
Sourceforge tạo ra bởi Amir Taaki.
Thư viện SDL được viết bằng ngôn ngữ C chuẩn, nhưng hỗ trợ binding tốt cho C++ và nhiều ngôn ngữ lập trình khác như: Ada, C#, Eiffel, Erlang, Euphoria, Guile,
Haskell, Java, Lisp, Lua, ML, Objetive C, Pascal, Perl, PHP, Pike, Pliant, Python,
Ruby và Smalltalk.
SDL được phát hành dưới dạng mã nguồn mở, dưới giấy phép LGPL, điều này làm cho SDL trở thành một sự lựa chọn phổ biến cho các ứng dụng đa phương tiện.
3.7.3

Sử dụng trên các nền tảng khác nhau

Theo cách mà SDL được thiết kế, hầu hết source của nó được chia nhỏ thành các module riêng rẽ cho các hệ điều hành khác nhau để gọi chức năng từ hệ thống. Khi
SDL được biên dịch trên các hệ điều hành khác nhau, các module tương ứng sẽ được chọn ứng với hệ thống mà SDL đang được biên dịch.
Trên Microsoft Windows, SDL sử dụng mặc định GDI backend, cũng có tùy chọn cho
DirectX backend. Các phiên bản cũ của SDL sử dụng DirectX 5 nhưng phiên bản hiện tại SDL 1.2 mặc định yêu cầu DirectX 7.
Trên các nền tảng X Window System, bao gồm Linux và OpenVMS, SDL sử dụng
Xlib để giao tiếp với hệ thống X11 cho đồ họa và sự kiện.
Trên Mac OS X, SDL sử dụng Quartz.
56

Internet TV trên nền tảng Android

CHƯƠNG 4: CÁC ỨNG DỤNG ĐÃ XÂY DỰNG
Trong khuôn khổ luận văn này đã xây dựng được hai ứng dụng trên HĐH Android 4.0 đã được nhúng lên TI Pandaboard để cho phép TV sau khi được kết nối với Pandaboard qua giao tiếp DVI-D/HDMI sẽ có chức năng tương tự như Internet TV, tức là có thể xem video từ các nguồn trực tuyến trên mạng hoặc từ một server nội bộ; đồng thời có thể xem video chứa trong thẻ nhớ hoặc các ổ lưu trữ (USB, HDD). Hai ứng dụng đã xây dựng:


Ứng dụng có tên YouTube Videos: cho phép xem video từ một nguồn rất lớn trên
Internet là YouTube, có khả truy xuất để tìm kiếm theo loại hoặc tên video cụ thể.



Ứng dụng có tên Fetel Player có hai chức năng:
◦ Cho phép xem video từ các ổ lưu trữ (thẻ nhớ, USB, HDD)
◦ Cho phép xem video từ một server nội bộ

4.1 Ứng dụng xem video từ các ổ lưu trữ
Ứng dụng được xây dựng dựa trên dự án mã nguồn mở dolphin-player thực hiện bởi tác giả Aatral Arasu. Ứng dụng có khả năng chơi video với nhiều định dạng khác nhau và với nhiều độ phân giải khác nhau.
Các định dạng ứng dụng này hỗ trợ:


Audio: mp3, wma, ogg, mp2, flac, aac, ac3, amr, pcm, wav, au, aif, 3g2 và m4a



Video: mp4, wmv, avi, mkv, dv, rm, mpg, mpeg, flv, divx, swf, dat, h264, h263, h261, 3gp, 3gpp, asf, mov, m4v, vob

Ứng dụng bao gồm 3 thành phần chính:


Thành phần hỗ trợ tìm kiếm file trên thiết bị (file explorer)



Thành phần giao diện người dùng để điều khiển khi xem video (start, stop, seek, thay đổi aspect ratio)
57

Internet TV trên nền tảng Android



Thành phần xử lí audio/video

Các thành phần hỗ trợ tìm kiếm file và giao diện điều khiển được viết bằng ngôn ngữ
Java. Trong khi đó, do thành phần xử lí audio/video khá phức tạp nên được viết bằng ngôn ngữ C để tăng tốc độ xử lí đồng thời tận dụng sức mạnh của hai thư viện C là thư viện ffmpeg - hỗ trợ decode audio/video và thư viện SDL - hỗ trợ hiển thị video lên màn hình và phát audio qua phần cứng âm thanh.
Để thành phần giao diện điều khiển viết bằng ngôn ngữ Java có thể giao tiếp và điều khiển thành phần xử lí video viết bằng ngôn ngữ C thì tại thành phần ngôn ngữ C cần xây dựng các Java Interface để chương trình Java có thể sử dụng.
Mô hình chi tiết thành phần xử lí audio/video có thể minh họa bằng hình bên dưới

Hình 4.1: mô hình các khối xử lí audio/video
Chương trình được chia thành các module nhỏ, mỗi module là một thread thực hiện một công việc cụ thể.


Module Decode: đây là thread thực hiện các công việc

58

Internet TV trên nền tảng Android

◦ Đọc file
◦ Tìm các audio stream và video stream có trong file
◦ Lấy các thông tin về codec của audio stream và video stream
◦ Tìm kiếm các codec cho audio stream và video stream trong thư viện xem các codec đó có được hỗ trợ hay không.
◦ Đối với audio stream, lấy thêm các thông tin quan trọng để hỗ trợ việc phát âm thanh thông qua SDL như sample rate, định dạng phát, channel, độ lớn của buffer... Sau đó, khởi động thành phần audio trên thiết bị.
◦ Khởi tạo hai hàng đợi (queue) để chứa các packet được đọc từ audio stream và video stream.
◦ Khởi tạo video thread và thiết lập hàm callback cho audio.
◦ Đọc các packet từ audio stream và video stream sử dụng các codec tương ứng và đặt các packet này vào các hàng đợi tương ứng của audio, video.


Module Audio: sau khi thành phần audio trên thiết bị đã được khởi động trong thread decode, thì SDL sẽ gọi hàm callback đã được thiết lập cho audio để lấy dữ liệu cho audio buffer phục vụ việc phát âm thanh. Do đó trong hàm callback của audio sẽ thực hiện các công việc
◦ Lấy các packet từ hàng đợi của audio.
◦ Decode các packet này thành các frame audio
◦ Đặt các frame này vào audio buffer của thiết bị.



Module video: đây là thread thực hiện các công việc sau
◦ Khởi tạo thêm một hàng đợi khác dùng để chứa các frame video sau khi đã decode ◦ Đọc các packet từ hàng đợi video
◦ Decode các packet thành các frame video

59

Internet TV trên nền tảng Android

◦ Đặt các frame này vào hàng đợi video frame.


Module Event Loop: khối này nằm trong hàm main và chức năng chính là chờ đợi các sự kiện từ các thread khác gửi đến và đưa ra các xử lí thích hợp. Trong trường hợp của video, thì khi nhận được sự kiện FF_REFRESH, thì nó sẽ gọi tới hàm thực hiện chức năng hiển thị video lên màn hình.



Module Video Display: thực hiện các nhiệm vụ sau
◦ Tính toán thời gian để đưa ra các tín hiệu FF_REFRESH
◦ Thiết lập các thông số cho việc hiển thị (width, height, offset...)
◦ Chuyển đổi frame đã được decode sang định dạng YUV (Y'CbCr)
◦ Hiển thị frame lên màn hình.

4.1.1

Lưu đồ giải thuật cho decode thread

Hình 4.2: lưu đồ giải thuật cho decode thread
60

Internet TV trên nền tảng Android

Lưu đồ giải thuật cho khối decode loop:

Hình 4.3: lưu đồ giải thuật cho khối decode loop
Hàm stream_component_open(VideoState *is, int stream_index)thực hiện các chức năng sau:


Kiểm tra chỉ số của các stream được lấy sau khi gọi hàm av_find_stream_info() xem có hợp lệ hay không (chỉ số không lớn hơn

tổng số stream)


Nếu stream đó là audio stream thì sẽ tiến hành lấy các đặc tả của audio stream đó phục vụ cho việc phát audio trên thiết bị thông qua SDL như:
▪ freq: sample rate của audio
▪ format: định dạng khi phát âm thanh (giá trị mặc định là AUDIO_S16SYS)
▪ channel: số kênh khi phát (ví dụ mono hay stereo, .v..v..)
▪ sample: kích thước của buffer
61

Internet TV trên nền tảng Android

▪ userdata: dữ liệu phục audio phục vụ việc phát


Sau đó, sẽ dùng hàm SDL_OpenAudio(&wanted_spec, &spec) để khởi động bộ phận audio trên thiết bị với đặc tả lấy từ audio stream trên, nếu hệ thống không thể hỗ trợ đặc tả đó, nó sẽ sử dụng đặc tả mặc định của hệ thống và trả về một con trỏ &spec cho biết thông tin về đặc tả này.



Tìm các codec trong thư viện tương ứng với codec của stream.



Nếu là audio stream thì sẽ khởi tạo một hàng đợi (queue) dùng để chứa các audio packet sau khi được đọc từ stream.



Nếu là video stream thì sẽ khởi tạo một hàng đợi dùng để chứa các video packet sau khi đọc từ stream và khởi tạo video thread.

4.1.2

Lưu đồ giải thuật cho hàm audio callback

Hình 4.4: lưu đồ giải thuật cho hàm audio callback
62

Internet TV trên nền tảng Android

Cách thức sử dụng thư viện SDL cho việc play audio là: trước tiên ta cần thiết lập các tùy chọn cho audio như sample rate, số lượng channel và cuối cùng là thiết lập hàm callback và userdata. Khi bắt đầu play audio, SDL sẽ liên tục gọi hàm callback này và yêu cầu ghi dữ liệu audio vào audio buffer với kích thước xác định.
4.1.3

Lưu đồ giải thuật cho phần hiển thị video

Khi module Event Loop nhận được sự kiện FF_REFRESH, nó sẽ gọi hàm video_refresh_timer(void *userdata) để thực hiện công việc hiển thị video bằng

việc gọi hàm video_display(VideoState *is) lên màn hình và tính toán thời gian để phát đi sự kiện FF_REFRESH kế tiếp.

Module video thread chỉ thực hiện công việc là lấy các video packet từ hàng đợi video, decode thành các frame và đặt các frame đó vào một hàng đợi khác.

63

Internet TV trên nền tảng Android

Lưu đồ giải thuật của hàm video_display(VideoState *is)

Hình 4.5: lưu đồ giải thuật cho hàm video_display()

64

Internet TV trên nền tảng Android

4.2 Ứng dụng xem video từ một server nội bộ
Ứng dụng này chủ yếu dựa vào thành phần xử lí audio/video đã được xây dựng cho ứng dụng trên, kết hợp với thành phần khởi tạo, quản lí việc tải file và kích hoạt thành phần xử lí audio/video khi file video buffer đã đầy.
Việc truyền video từ server đến board thông qua giao thức FTP. Trên server (máy tính) sẽ xây dựng sẵn một FTP server để đáp ứng các FTP request gửi từ board. Cách thức truyền dựa trên phương pháp progressive download, phương pháp này cho phép người dùng có thể chơi file video trong lúc đang download file video đó.
Trên Android SDK không hỗ trợ sẵn các thư viện dùng cho các FTP request, do vậy cần sử dụng thêm các API ngoài là các API thuộc thư viện org.apache.common.net_2.0.0.v2. Dựa vài thư viện này có thể tạo ra một số phương thức cho các FTP request cơ bản như:


ftpConnect(String ftpServer, String username, String pssw, int port):

kết nối đến FTP server với địa chỉ, username, password và port xác định.


ftpDisconnect(): ngắt kết nối đến FTP server.



getCurrentDirectory(): lấy đường dẫn thư mục hiện hành



ftpChangeDirectory(String directory_path): đi đến thư mục với đường dẫn

xác định


ftpPrintFilesList(String dir_path): liệt kê tất cả các thư mục và file trong thư

mục với đường dẫn xác định.


ftpDownload(String srcFilePath, String desFilePath) : download file với

đường dẫn xác định và lưu với đường dẫn xác định.

65

Internet TV trên nền tảng Android

4.3 Ứng dụng xem video từ YouTube
Ứng dụng được xây dựng dựa trên thư viện google-api-java-client. Thư viện được sử dụng trong các ứng dụng có liên quan đến một số dịch vụ của Google như Google+,
YouTube, Picasa... và yêu cầu truy xuất đến cơ sở dữ liệu của Google thông qua giao thức
HTTPS. Thư viện google-api-java-client cung cấp các API giúp cho việc truy xuất đến cơ sở dữ liệu của Google dễ dàng hơn.
Trong trường hợp truy xuất cơ sở dữ liệu của YouTube như tìm kiếm một video theo tên cụ thể hoặc theo phân loại, cần gửi một gói tin HTTPS GET đến cơ sở dữ liệu của
YouTube, khi đó server sẽ trả về một file chứa các kết quả tìm kiếm kèm theo thông tin cụ thể của từng kết quả đó. Ví dụ, ta muốn lấy các feef của video tên Ice Age 4, thể loại là
Film & Animation và yêu cầu trả về 10 kết quả và sắp xếp theo số lượng đánh giá (rating) thì điều cần làm là gửi một HTTPS GET với nội dung truy vấn như sau: https://gdata.youtube.com/feeds/api/videos?v=2&alt=jsonc&q=ice%20age %204&category=Film&orderby=rating&max-results=10
Các từ khóa trong câu truy vấn này:


alt: định dạng của kết quả khi trả về, ở đây định dạng là JSONC



q: từ khóa tìm kiếm (các khoảng trắng được thay bằng %20)



category: phân loại, trong trường hợp này là Film



orderby: sắp xếp theo, trường hợp này là rating



max-results: số lượng tối đa kết quả trả về, trường hợp này là 10

Khi đó, server sẽ trả về một file chứa các kết quả tìm được dưới định dạng JSONC (tương tự như định dạng xml, cũng bao gồm các node), bao gồm các thông tin sau (lấy từ một kết quả trong file trả về:


Số lượng kết quả tìm được

'totalItems': 1391,



ID của video trên YouTube

'id': 'zocutif0cQY',



Ngày được tải lên

'uploaded': '2011-01-07T20:19:01.000Z',



Ngày cập nhật gần nhất

'updated': '2012-07-10T02:21:23.000Z',
66

Internet TV trên nền tảng Android


Người tải lên

'uploader': 'foxmovies',



Thể loại

'category': 'Film',



Tên video

'title': 'Ice Age 4: Scrat Continental Crack Up
HD',



Mô tả

'description': 'ICE AGE 4',



Tag

'tags': ['showreel', 'Ice', 'Age', 'continental',
'crack', 'up',],



Link đến hình đại diện cho video (thumbnail), có 2 link với 2 chất lượng thấp –
SQ và cao - HQ
'thumbnail': {
'sqDefault': 'http://i.ytimg.com/vi/zocutif0cQY/default.jpg',
'hqDefault': 'http://i.ytimg.com/vi/zocutif0cQY/hqdefault.jpg'
},



Link chỉ đến địa chỉ của video (link xem video) trên YouTube, cũng có 2 loại, phiên bản thường và phiên bản cho di động
'player': {
'default': 'https://www.youtube.com/watch? v=zocutif0cQY&feature=youtube_gdata_player', 'mobile': 'https://m.youtube.com/details?v=zocutif0cQY'
},



Link trực tiếp để play video, có 3 link, 2 dành cho streaming theo giao thức RTSP và một là link video cho flash player
'content': {
'1':
'rtsp://v5.cache3.c.youtube.com/CiILENy73wIaGQkGcfQnti6HzhMYDSANFEgGUgZ2aWRlb3MM/0/0/
0/video.3gp',
'5': 'https://www.youtube.com/v/zocutif0cQY?version=3&f=videos&app=youtube_gdata',
'6':
'rtsp://v6.cache4.c.youtube.com/CiILENy73wIaGQkGcfQnti6HzhMYESARFEgGUgZ2aWRlb3MM/0/0/
0/video.3gp'
},

67

Internet TV trên nền tảng Android



Một số thông tin khác
'duration': 161,
'aspectRatio': 'widescreen',
'rating': 4.955546,
'likeCount': '4627',
'ratingCount': 4679,
'viewCount': 1530449,
'favoriteCount': 3033,
'commentCount': 783,

Trong ứng dụng, dựa vào thư viện google-api-java-client để soạn các truy vấn gửi đến cơ sở dữ liệu của YouTube, ta có thể lấy về các thông tin như link đến thumnail để lấy hình ảnh đại diện cho video, một số thông tin đến video như duration, viewcount, uploader... và link trực tiếp cho flash player của video ta có thể xây dựng ứng dụng với các chức năng cơ bản như tìm video, tìm kiếm theo phân loại và xem video đã lựa chọn.
4.4 Kết quả đạt được
Luận văn đã hoàn thành được mục tiêu đề ra, sau khi kết nối với Pandaboard thông qua giao tiếp HDMI để hiển thị hình ảnh, TV thường đã có được các chức năng như Internet
TV như lướt web, xem video trực tuyến cũng như check mail, facebook...

68

Internet TV trên nền tảng Android

Hình 4.6: giao diện Android 4.0 trên Pandaboard

Hình 4.7: giao diện chương trình xem video từ server

69

Internet TV trên nền tảng Android

Hình 4.8: giao diện chương trình xem video từ ổ lưu trữ

Hình 4.9: giao diện chương trình xem video từ YouTube

70

Internet TV trên nền tảng Android

CHƯƠNG 5: KẾT LUẬN VÀ ĐỀ XUẤT HƯỚNG PHÁT TRIỂN
Về cơ bản, luận văn đã hoàn thành các mục tiêu đề ra, với Android TV box dựa trên
Pandaboard, các TV thường đã có đầy đủ các tính năng như Internet TV.
Tuy nhiên, đối với các ứng dụng đã phát triển vẫn còn có các hạn chế sau:


Đối với khối xử lí audio/video bằng ngôn ngữ C, khi xem các video chất lượng cao (độ phân giải 1280x720 hoặc 1920x1080) thì chương trình bắt đầu gặp hiện tượng giật. Điều này là do chương trình chủ yếu thực hiện công việc decode bằng phần mềm nên ở các độ phân giải cao do kích thước frame lớn nên tốc độ decode giảm đáng kể.



Đối với chương trình xem video từ server, giao thức FTP chỉ phù hợp với các file video có kích nhỏ (khoảng dưới 200MB) do vừa phải download file vừa ghi file lên một file tạm. Còn đối với các file video dung lượng cao hơn thì cần chuyển sang các giao thức real-time streaming khác như RTSP, HTTP Live Streaming...

Các hướng phát triển


Đối với khối xử lí video, cần phát triển các phương pháp tận dụng năng lực phần cứng (khối Ducati tích hợp bên trong SoC OMAP4430) để tăng tốc quá trình decode. •

Đối với chương trình xem video từ server, thay thế giao thức FTP bằng các giao thức real-time streaming như RTSP hay HTTP Live Streaming để dướng tới các ứng dụng chia sẻ video chất lượng cao thời gian thực.

71

Internet TV trên nền tảng Android

TÀI LIỆU THAM KHẢO
[1] Sayed Y. Hashimi, Satya Komatineni, “Pro Android”, 2009, pp.1-19.
[2] Reto Meier, “Professional Android™ 2 Application Development”, 2010, pp.17-84.
[3] Texas Instruments, “OMAP4430 Multimedia Device Silicon Revision 2.0”, version J,
2010, pp.1071-1083.
[4] Pandaboard.org, “OMAP™ 4 Pandaboard System Reference Manual”, revision 0.4,
2010, pp.14-24.

72

Similar Documents

Free Essay

Google Tv

...Google TV could be a telco’s best friend in the battle for the multiscreen market, says Rob Gallagher 04 February 2011 Rob Gallagher Telecoms operators once thought they would rule the world. They foresaw a future where people would communicate, access the Internet and watch TV via their mobile phones, PCs and a number of as-yet-unimagined screens. And thanks to their brands, customer relationships and control of the wired- and wireless-broadband networks that would carry the new services, telecoms operators would be best-positioned to profit. It didn’t quite work out like that. But not for the operators’ lack of trying. Throughout the course of the last decade, many sought to expand the control they have over their networks to almost every element of the new-media industry, from content and delivery platforms to devices and embedded software. Unfortunately, the operators overestimated their ability to control these other parts of the value chain, most strikingly in the mobile phone market. Consumers shunned the operators’ mobile portals when they found they could access their favorite PC-based Internet services “over the top” (OTT) of their mobile networks. Pouring salt into the wound, the content, devices and software companies have proved much more effective at entering each other’s markets than the operators have. Search engine Google’s Android mobile operating system (OS), for example, has effectively achieved take-up operator efforts could only ever dream of. Apple’s iTunes...

Words: 2259 - Pages: 10

Premium Essay

Google Swot - Datamonitor

...STRENGTHS | WEAKNESSES | * Strong broad band image provides edge over competitors * Robust financial performance strengthens investors’ confidence and provides capital for future growth avenues * Wide portfolio of offerings * Net Sales/Employee: 2010 * Liquidity Ratios – leader in Current and Quick Ratios | * Patent infringement lawsuits may affect financial condition and operating results * Profitability Ratios 2010 trailing Baidu and Microsoft in: * NPM, ROA, ROE, * Productivity Ratios 2010: * SG&A/Net Sales – trailing Baidu * COGS/Net Sales – trailing Baidu and MS | OPPORTUNITIES | THREATS | * Strategic Acquisitions to further strengthen the company’s portfolio * Rising popularity of Android to increase market share * Robust outlook for mobile advertising market provides growth opportunity * Entry into mobile payments market * Serving additional customer groups or market segments * Integrating forward or backward * Acquiring companies with attractive technological expertise or capabilitiesFurther penetration into international markets | * Intense competition may affect revenues and profitability * Slowdowns in market growth * Economy slowdown in both domestic and international markets * Board of Directors at risk for corporate conflcit * Loss of operation in China * Adverse economic conditions that threaten critical suppliers or distributors * Web spam and content farms may decrease Google’s search...

Words: 4083 - Pages: 17

Premium Essay

Google

...1) In 2013 Google was the leading Internet search firm. Google owned 67 percent market share in search from home and work computers and a 97 percent share of searches performed by mobile devices. The two main competitors for Google in the search engine industry for market share is Microsoft Corporation’s Bing and Yahoo Inc.’s search. (Blystone, 2015). Google is well known and a leader in the search engine industry that the company became a verb. When people search for something on the Internet such as for a recipe they say, “ I goggled the recipe” (Blystone, 2015). The competition in the search engine industry for Google does come from the two related search engines yahoo search and Bing. However, the major competition in the search engine industry stems from searches with in websites and apps that offer more than just searches, such as Amazon, Inc. and Facebook, Inc. For example, Facebook Inc.’s CEO Mark Zuckerberg articulated that the company’s assets could be used to compete with search engines. Facebook Inc. can compete with search engines by the website uniquely being positioned to answer questions people may have such as, what sushi restaurants my friends have been to recently and liked? These query-based searches that can be done on Facebook potentially offer consumer something they could not do anywhere else (Blystone, 2015). Apple Inc. also created feature and operating system on their iPhone, iWatches, and Apple TV Siri that acts as a virtual personal assistant. With...

Words: 2270 - Pages: 10

Free Essay

Blackberry

...BUSN 226-Marking Rubric-Assignment #1 Your Name:___________________________________ Your Student #_________________________________ |Rubric attached to front of assignment | /1 | |Cover page and introduction & typed page numbers |/5 | |Four summaries ( if article not different from other group members, summary will not be marked) |/40 | |Direct quote and in-text reference included in each |/8 | |summary , using proper format | | |Ref Works bibliography addressing all four articles, with works cited in alphabetical order by author |/8 | | | | |Original articles attached in same order as shown in bibliography (each article different from group members) |/8 | | | | |Late? ...

Words: 5543 - Pages: 23

Free Essay

Apple's Future

...ERIC BALDWIN Apple’s Future: Apple Watch, Apple TV, and/or Apple Car? Since the release of the iPod in 2001, Apple had been probably the most successful technology company in the world. It revolutionized three businesses in the next 10 years: music, smartphones, and tablets. When Steve Jobs died in 2011, it was up to his successor, Tim Cook, to revolutionize the next set of industries. In 2015, Cook appeared to have three potential targets: watches (wearables), television, and cars. All three were bets on highly uncertain futures. Watches were off to a promising start in their first quarter of shipments, but it was far too early to declare victory. Television seemed ripe for disruption, but many firms had tried and failed to change the TV landscape. And cars, of course, represented the biggest opportunity as well as the biggest leap for Apple. Financially, Tim Cook and his team were unconstrained: Apple was the most profitable company on the planet in the fourth quarter of 2014, generating $18 billion in net income (Exhibit 1). However, Steve Jobs had famously said that Apple’s success came “from saying no to 1,000 things to make sure we don’t get on the wrong track or try to do too much. We’re always thinking about new markets we could enter, but it’s only by saying no that you can concentrate on the things that are really important.”1 The big questions for Tim Cook and his team included: Were watches, TVs, and car the right focus? Was Apple doing down the...

Words: 11550 - Pages: 47

Premium Essay

At&T Marketing Research

...that opens the company’s product and services to customers who want to create their own worlds. Previously, the company has been riding on a crest of popularity of Apple’s iPhone, but lost its exclusivity, giving its main competitor (Verizon) a chance to get a piece of the golden goose. As an alternative, AT&T can continue to market the iPhone while at the same time extending its hand in the Android market. The Android market is wider as compared to that of the iPhone; this can help AT&T to maintain its youthful touch by offering its services to the internet-craze generation. Therefore, AT&T must try to balance its move; the acquiring of a new image for the consumer market (as in the Android market) while at the same time continue to appeal to professionals, corporate and government customers (in the iPhone market). This may prove to be a challenge. This marketing plan analyzes the company's competitive position before attempting to offer concrete action plans and recommendations for the execution of the plan. The Android market looks prospective and increased emphasis on Android...

Words: 6045 - Pages: 25

Premium Essay

Suumer Project

... BC Webwise for their guidance and constant supervision as well as for providing necessary information regarding the project & also for their support in completing the project. I would like to express my gratitude towards my parents & member of BC Webwise for their kind co-operation and encouragement which help me in completion of this project. I would also like to express my special gratitude to Mr. V.V. Naik, Course Coordinator (MET Institute of Management Studies) for giving me an opportunity to take this project and complete it successfully. 2|Page Table of Contents Sr No. 1 2 3 4 Particulars Need & Justification Introduction Company Background and Information Data Collection & Data analysis & Interviews 4.1 4.2 4.3 Mobile Internet Mobile TV Trends in Mobile Device Screen Size Page No. 1 2-5 6-7 12-13 8-10 11-15 16-18 19-20 21-24 25-26 27-29 30-37 38-40 41-43 44-46 47 48-49 50 4.4 Smartphone Usage in India [Overview, Numbers...] 4.5 Recent Smartphone trends 4.6 4.7 4.8 5 6 7 8 9 10 Mobile Apps 3G in India Scenario worldwide Case Study - Chevrolet The Question Answered Recommendations and Suggestions Conclusion A peep in the Future Bibliography 3|Page Need & Justification We have seen the recent shift from the traditional media being taken over...

Words: 15727 - Pages: 63

Premium Essay

Smartphone

...loosing market share in different countries because of the new generation smart phones made by Android and Apple corp. The reason is, these days, the functions that people want from the cellphone is a lot different from the primary users. At first only making calls was the need but now people look for special gadgetes like – music and video players, camera, internet, personal organizer etc. with the changing demands the cell phone producing companies are also modifying, recreating and introducing new model of cellphones. The new generation cellphones are more like a mini computer in hand. Research question and Significance to knowledge This paper will highlight on how the idea of smartphone evloved and what are the extra ordinary and distinctive features of smart phone that are drawing the customers towards it. Also answers to questions like – what is the present market growth rate of smart phone industry, Why company like Nokia is being threatened to loose market share to Android and Apple corp, what are the reasons behind the rapid growing smart phone industry,what is the future of smart phone, what the customers want from their smart phone,could there be any more technological advancement – will be found out through this paper. Literature review For the past few days, many newspapers; like – The guardian,The daily star, Prothom-alo etc, The economist, various internet blog sites and tv networks and new agencies like – CBS and The Reuters, have been highlighting the rapid growth...

Words: 851 - Pages: 4

Premium Essay

Samsung Vrio Analysis

...Masters Programmes ------------------------------------------------- Assignment Cover Sheet Question: [Analyze a strategic issue facing Samsung Electronics Company] “This is to certify that the work I am submitting is my own. All external references and sources are clearly acknowledged and identified within the contents. I am aware of the University of Warwick regulation concerning plagiarism and collusion. No substantial part(s) of the work submitted here has also been submitted by me in other assessments for accredited courses of study, and I acknowledge that if this has been done an appropriate reduction in the mark I might otherwise have received will be made.” Introduction Samsung Electronics Company (SEC), Ltd founded in 1969 is a South Korean multinational electronics company and is the flagship subsidiary of the Samsung Group, accounting for 70% of the group's revenue. Since the introduction of monochrome television sets in 1971, it has grown on average 38 percent a year, broadening its product range from simple consumer electronics and home appliances to advanced information and communication equipment, computers and peripherals and semiconductors (Renee, 2007) . It is currently the world's largest manufacturer of mobile and smart phones, LCD Panels and televisions and displaced Apple Inc. as the largest technology company in 2011 (Renee, 2007). Industry boundary Samsung electronics has the following divisions * Consumer electronics (CE)...

Words: 5080 - Pages: 21

Premium Essay

Wala Lng

...expected to be released in June, Scarsella said. Wow, cool gadgets!  3. Windows 7 Phone. These phones came out in 2010, but more models are coming out, especially if sales of current versions are good, Scarsella said. Success will depend on size and quality of apps in their new app market and new hardware across carriers in the U.S., he said. 4. Internet TV/Streaming Media. Either via TV or set top box the Internet is coming back to the living room, according to Scarsella. TVs will have fully-integrated apps, features, and Web. "Pretty much TVs are going to have all of the capabilities of a smartphone, but on your wall," he said. Expect new set-top boxes with Google TV, and other boxes with Android to hit the market in 2011. Remember the tech gadgets 3-D TV? It was a hot topic at CES last year, but paying more than $100 for a pair of clunky glasses didn't really catch on. Manufacturers got the message and this year are coming out with glasses-free 3-D TVs and computer monitors, Scarsella said. 5. Android Phones. This will be the biggest shaker for 2011, Scarsella said, with the new dual-core powered phones and Android 3.0 Gingerbread for tablets. Such phones are making portable gaming systems such as the Sony PSP obsolete. 6. Cloud Gaming. While smartphones make gaming cheap -- a few dollars instead of $30 for a game -- the new trend of cloud gaming is picking...

Words: 827 - Pages: 4

Premium Essay

Sdfs

...About the Company Bharti Airtel Limited, commonly known as Airtel, is an Indian telecommunications services company headquartered at New Delhi, India. It operates in 20 countries across South Asia, Africa and the Channel Islands. Airtel has GSM network in all countries, providing 2G, 3G and 4G services depending upon the country of operation. Airtel is the world's third-largest mobile telecommunications company with over 261 million subscribers across 20 countries as of August 2012. It is the largest cellular service provider in India, with 185.92 million subscribers as of September 2012. Airtel is the largest provider of mobile telephony and second largest provider of fixed telephony in India, and is also a provider of broadband and subscription television services. It offers its telecom services under the airtel brand, and is headed by Sunil Bharti Mittal. Products and services Mobile Services Airtel operates in all telecom circles of India, and is the 6th most valued brand according to an annual survey conducted by Brand Finance and The Economic Times in 2010. 3G On May 18, 2010, 3G spectrum auction was completed and Airtel will have to pay the Indian government   122.95 billion (US$2.32 billion) for spectrum in 13 circles, the most amount spent by an operator in this auction. Airtel won 3G licences in 13 telecom circles of India: Delhi, Mumbai, Andhra Pradesh, Karnataka, Tamil Nadu, Uttar Pradesh (east), Rajasthan, West Bengal, Himachal Pradesh, Bihar, Assam, North...

Words: 1559 - Pages: 7

Premium Essay

Google’s Competitive Strategy

...Google’s Competitive Strategy Tiffin University MGT622 Strategic Management Li Wang 2015.02.12 Google’s Competitive Strategy Google was the leading Internet search firm in 2012, with a nearly 67 percent market share in search from home and work computers and a 95 percent share in searches performed from mobile devices (Gamble, 2012). It started out as a search engine company but in the next few years it added various products such as Gmail, Maps, Earth, and YouTube that all of them has millions of users and become benchmarks in their own industry. In 2007, Google developed its operating system Android and released an open source browser Chrome that both had considerable market share. However, its social network product Google Plus released in 2011 faced a failure by competing with Facebook, Google believed it would finally grow to challenge Facebook though. Due to its target market and special product attributes, Google can be seen as a company that “concentrates on well-defined market niche keyed to a particular product”. So Google applies a focused differentiation strategy. “Successful competitive strategies are resource-based. For a company’s competitive strategy to succeed in delivering good performance and the intended competitive edge over rivals, it has to be well-matched to a company’s internal situation and underpinned by an appropriate set of resources, know-how, and competitive capabilities” (Thompson, 2012). To succeed in the focused differentiation strategy...

Words: 1000 - Pages: 4

Free Essay

Doing Business in Japan

...Smartphones in the market (HTC, Palm, Samsung..) but non of them created such a customer experience as the iPhone did. The iPhone became the ultimate portable office in the pocket of its owner. Sending and receiving emails and instant messages became easier, browsing content at the internet and navigation as well plenty application and capabilities. Everyone realized that the man with the iPhone will win – the iPhone became a big advantage for any business man. In addition, the leisure culture starts changing. The ease of browsing internet content with the iPhone anywhere, accessing Facebook and reading emails was significant. Playing gaming at you free time with the iPhone became an addiction to everyone. Apple with great precision has read the map and introduces the first iPad on 2010 which became a game change in the portable PC industry. With a larger screen size, the iPad was the ultimate entertainment device at your leisure. Same as the iPhone, the iPad created superior customer experience and dominate the market on 2010-1. In parallel, Google Android OS (operating system) tablets developed by Samsung, Motorola and other vendors Tablets (Blackberry) introduced to the market late 2010. Though Google Android OS was inferior Vs. Apple at the beginning, its competitive advantage was the...

Words: 2918 - Pages: 12

Free Essay

Why the Connected Experience Is Yet to Be Televised

...Why the connected experience revolution is yet to be televised Tony Duarte Connected TVs and second screen experiences have disappointed. Why? Where does the future lie and how to get there? This white paper considers the answers. © 2013 – All rights reserved Fluxx Ltd. | 11th March 2013 fluxx.uk.com Table of Contents Executive Summary The Connected Dream The Fragmented Reality Consumers Broadcast Industry Connected Device Technology Smart TVs Mobile Devices Synchronisation and Mobile Payments Future Imperfect Smart TV Second Screen Advertising and Retail Sociable TV Steps Towards the Connected Dream Living the Dream Appendix 3 4 5 5 6 8 8 10 12 13 13 14 16 17 18 21 23 Why the connected experience revolution is yet to be televised 2 Executive Summary Connected experiences which seamlessly fuse second screens and connected TVs have been ‘the future of TV’ for so long it almost feels like a returning series. Playing along with a quiz show; requesting a product sample during an advert; taking a breakfast news feature with you on your morning commute so you can finish watching; all could be routine. Despite the enablers and technology being in place this seismic shift in the viewing experience stubbornly refuses to mainstream. Why? A number of obstacles stand in the way: • Consumers brought up on a passive, linear TV experience show ingrained lean-back behaviour • The broadcast industry can be risk averse and ambivalent about commissioning multiplatform...

Words: 8579 - Pages: 35

Free Essay

Bitlocker

...Subscribe Sign In Join Home News Reviews How-To Video Business Laptops Tablets Phones Hardware Security Software Gadgets Security Games Productivity Audio Business Software Photography Utility software How to Encrypt Your Windows PC More Stories in this Series Security software Business security , Encryption , file management, encryption How to Use BitLocker to Encrypt Your Hard Drive By Eric Geier, PCWorld Oct 26, 2011 7:00 PM e-mail print Even without knowing your Windows password, intruders can easily gain access to files and passwords stored by Windows and other programs on your computer. They can do this by booting into their own operating system (Windows or Linux) from a special disc or USB flash drive. After doing so, they can access your hard drives just as you can when you're logged into Windows. The only way to protect your data completely is by using encryption. You can encrypt select files, but to protect your system files and saved passwords, you must encrypt your entire hard drive. This operation takes more time and effort than encrypting select files does, but it offers more security--and it's great for laptops and netbooks that can easily go missing. If your computer is running the Ultimate or Enterprise edition of Windows 7 or Vista, you can use Microsoft’s included BitLocker feature to...

Words: 1352 - Pages: 6