Cấu trúc khai báo loại dòng thành phần

Một phần của tài liệu (Luận văn thạc sĩ) NGHIÊN CỨU MÔ HÌNH TRUYỂN HÌNH LAI GHÉP HBBTV VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA (Trang 67 - 73)

liệu kèm theo.

Khai báo dòng sự kiện

Cũng như mọi dòng thành phần khác, để đầu thu có thể nhận diện, dòng thành phần mang thơng tin kích hoạt sự kiện phải được khai báo trong PMT của kênh xác định. Thông tin khai báo theo cấu trúc sau:

Bảng 4.14: Cấu trúc khai báo loại dòng thành phần [10] Số Số

bit

Diễn giải

stream_type 8 0xC, cho biết đây là dòng mang stream descriptors (ISO/IEC 13818-6)

resevered 3

elementary_PID 13 Mã nhận diện gói của dịng

resevered 4

es_info_len 12 chiều dài thông tin bên dưới (byte)

descriptors

stream_identifier_descriptor

tag 8 0x52 (stream_identifier_descriptor) length 8 1 (byte cho field component_tag)

component_tag 8 Gán nhãn nhận diện dòng để tham chiếu (tag) trong đối tượng StreamEventMessage trong OC

4.5.3 Sự kiện ‘do-it-now’

Việc cập nhật thông tin trong AIT bằng cách chèn thêm ứng dụng và gán mã kiểm soát AUTOSTART được xem là cách đồng bộ đơn giản không cần thông tin đồng bộ. Cách này thường được dùng cho những ứng dụng tự động kích hoạt vào thời điểm nào đó khi chương trình diễn ra như quảng cáo tương tác, hiển thị thơng tin thêm cho chương trình… Một số ứng dụng cần đồng bộ nhiều lần và có kèm

58

theo dữ liệu cho mỗi sự kiện như gameshow chẳng hạn, nhất thiết phải kết hợp với dịng thơng tin đồng bộ.

“Do-it-now” là dạng sự kiện mà đầu thu sẽ báo cho ứng dụng ngay khi nhận được từ dòng truyền. Đây là sự kiện độc lập, việc đồng bộ không dựa vào thông tin thời gian hệ thống. Sự kiện “do-it-now‟ có event_id được quy định trong vùng giá trị từ 0x0001 đến 0x3FFF. Đầu thu cần phải xử lý đặc biệt để đảm bảo khả năng nhận được sự kiện với độ tin cậy cao nhất.

Với mỗi ứng dụng, không yêu cầu đầu thu phải theo dõi nhiều dòng con mang sự kiện “do-it-now”. Vì vậy, nếu nhiều sự kiện được định nghĩa tham chiếu đến dịng con khác nhau thì chỉ có một dịng con được dùng để nhận sự kiện. Phía phát phải truyền tất cả sự kiện cho một ứng dụng trong các gói có cùng PID.

Đầu thu dành riêng một bộ lọc section để theo dõi sự kiện trong dịng truyền nếu có ứng dụng đăng ký nhận sự kiện này. Bộ lọc nhận diện đúng sự kiện cần nhận dựa vào giá trị event_id (trường table_id_extension) trong section.

Mỗi khi nhận được sự kiện, đầu thu kiểm tra xem sự kiện có event_id nhận được có được định nghĩa trong OC khơng. Nếu có, sẽ tiếp tục kiểm tra event_id để chắc chắn là sự kiện “do-it-now” và kích hoạt ngay. Section sự kiện được truyền lặp lại nhiều lần trong khoảng thời gian nhất định với ba thơng số chính table_id, event_id, version_number. Đầu thu tiến hành xử lý sự kiện ngay lần đầu tiên nhận được. Chuỗi section kế tiếp sẽ bị bỏ qua cho đến khi event_id hay version_number mới được phát hiện.

Thực ra, chuẩn MHP trước đây cũng như trong một số tài liệu của DVB có định nghĩa vài loại sự kiện khác, khơng được kích hoạt ngay mà chỉ được kích hoạt sau một khoảng thời gian định trước. Kiểu đồng bộ này dựa trên dịng thơng tin thời gian bổ sung như dòng NPT (Normal Play Time, dựa trên thông tin PCR của chương trình) hay dịng DVB Timeline.

HbbTV chỉ hỗ trợ duy nhất loại sự kiện „do-it-now‟. Đây là loại sự kiện được sử dụng phổ biến. Trước hết do tính linh hoạt, có thể sử dụng „do-it-now‟ trong mọi trường hợp cần đồng bộ theo thời gian biểu. Kế đến là tính đơn giản vì đứng độc lập khơng dựa vào dịng thơng tin thời gian bổ sung, giúp dễ dàng cho người viết ứng

59

dụng. Sau cùng là tính an tồn, bởi trong trường hợp đồng bộ dựa trên dịng thơng tin thời gian NPT chẳng hạn, nếu giá trị PCR được phát sinh lại khi truyền qua một hệ thống khác, thời điểm đồng bộ sẽ khơng cịn chính xác.

Điều cần lưu ý khi thực hiện đồng bộ là độ trễ khi thông tin báo hiệu được gửi tới ứng dụng. Độ trễ này tùy thuộc khả năng theo dõi và phân phối sự kiện của đầu thu. Rất khó để đồng bộ chính xác đến từng khung hình.

Qua báo cáo chương đã đưa ra quy tắc hoạt động và phương thức truyền tín hiệu của 2 dạng ứng dụng trong truyền hình lai ghép HbbTV, từ đó có cái nhìn tổng quan hơn về cơ chế hoạt động của truyền hình lai ghép HbbTV. Vậy để lập trình một ứng dụng trên nền tảng HbbTV cần những gì? Sử dụng ngơn ngữ nào? Quy tắc lập trình ra sao? Nó có khác gì so với ứng dụng web khơng? Trong chương tiếp theo của báo cáo sẽ trình bày rõ các vấn đề này.

60

CHƢƠNG 5: TÌM HIỂU MƠI TRƢỜNG TRIỂN KHAI VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA HBBTV

Tóm tắt: Trong chương 5 của luận văn mục tiêu chính là nghiên cứu các ngôn

ngữ, công cụ hỗ trợ và quy tắc lập trình một ứng dụng trên nền tảng HbbTV. Từ đó xây dựng ứng dụng HbbTV minh họa chủ đề về du lịch, ứng dụng trên môi trường giả lập, nhằm làm rõ hơn về quy tắc hoạt động của ứng dụng trên nền tảng HbbTV.

5.1 Môi trƣờng triển khai ứng dụng HbbTV 5.1.1 Ngơn ngữ lập trình ứng dụng HbbTV

Phát triển ứng dụng web là một lĩnh vực rộng lớn với nhiều ngôn ngữ khác nhau cho cả phía client và server. Cơng cụ hỗ trợ phát triển web cũng phong phú

không kém, từ viết code riêng lẻ đến những bộ cơng cụ tích hợp đầy đủ IDE (Intergrated Development Environment, môi trường phát triển tích hợp). Đặc biệt đối với ứng dụng HbbTV dùng ngôn ngữ kịch bản Javascript, rất nhiều công cụ miễn phí có thể chọn lựa như Notepad++, Eclipse, Netbeans, Aptana, Komodo Edit,

PHP Designer,… Phần lớn công cụ này đều hỗ trợ các ngôn ngữ web phổ biến

HTML, DOM, CSS, Javascipt, PHP. Tất cả các ngôn ngữ này đều được sử dụng khi

viết ứng dụng thử nghiệm. Ngoài ra, việc thiết lập môi trường phát triển web cũng không quá phức tạp nhờ sự hỗ trợ của các bộ cài đặt nguồn mở có sẵn như WAMP, XAMPP, AppServ…

Trình duyệt là một cơng cụ khác cần phải có trong q trình phát triển ứng dụng web. Hiện có rất nhiều trình duyệt phổ biến trong mơi trường máy tính như IE, Firefox, Chrome, Opera, Safari,…Tuy nhiên tại thời điểm này chỉ có Firefox và Opera hỗ trợ HbbTV: FireHbbTV dạng công cụ cài thêm vào trình duyệt Firefox (plugin) ; Opera HbbTV Emulator dạng phần mềm chạy độc lập (cài đặt phức tạp, kích thước lớn). Tương tự như đối với thị trường đầu thu, việc hỗ trợ đầy đủ và hồn thiện các tính năng chuẩn HbbTV trên 2 trình duyệt này vẫn cịn rất hạn chế.

61

5.1.2 Ứng dụng HbbTV so với trang web thông thƣờng

Đối tƣợng oipfApplicationManager, oipfConfiguration

Về hình thức tổ chức dữ liệu, ứng dụng HbbTV bao gồm các trang khơng khác gì so với trang web thông thường. Mỗi trang được cấu thành từ nhiều thành phần khác nhau như tài liệu HTML, tài liệu định dạng trang CSS, mã kịch bản Javascipt, dữ liệu và hình ảnh/video kèm theo. Ngồi ra cũng cho phép truy xuất vào các thành phần trong trang thông qua cấu trúc DOM, kết hợp với XMLHttpRequest cho phép thay đổi từng thành phần riêng theo kỹ thuật AJAX mà khơng phải tải lại tồn bộ trang.

Nếu như trang web thông thường được nạp bởi trình duyệt, thì ứng dụng HbbTV được nạp và thực thi bởi đối tượng đặc biệt oipfApplicationManager. Đối tượng này cung cấp các phương thức truy cập vào lớp Application do nó quản lý để tạo mới, thao tác hay xóa một ứng dụng nào đó (cũng có thể là chính nó).

Các trang web truyền thống đứng độc lập nhau, khơng có khái niệm gom nhóm hay ngữ cảnh để nạp và thực thi các trang trong cùng một nhóm. Ứng dụng HbbTV cung cấp một ngữ cảnh chung gồm các thông tin về trạng thái, phân quyền và độ ưu tiên của ứng dụng. Các thông tin này được chia sẻ giữa tất cả các trang trong ứng dụng và nó có giá trị trong suốt thời gian ứng dụng tồn tại.

OITF có thể hỗ trợ thực thi nhiều ứng dụng đồng thời. Giữa những ứng dụng có thể chia sẻ tài nguyên màn hình chung theo cách thức xác định và được kiểm sốt. Điều này hồn tồn khác đối với một trình duyệt thơng thường khi mở nhiều trang trong nhiều cửa sổ, hay nhiều tab trong một cửa sổ trình duyệt.

Bắt đầu phần <body> mỗi trang, cần phải khai báo 2 đối tượng sau để theo dõi vịng đời và truy cập cấu hình ứng dụng:

<body>

<div style="visibility: hidden; display: none;">

<object type="application/oipfApplicationManager" id="applicationManager" > </object> <object type="application/oipfConfiguration" id="configuration" > </object> </div> </body>

62

Kết hợp nội dung quảng bá

Nhiệm vụ quan trọng nhất của truyền hình là hiển thị hình ảnh của chương trình. Trong một số trường hợp, nhu cầu này cần được đáp ứng khi người dùng truy cập vào nội dung khác trên internet, để họ có thể liên tục theo dõi nội dung đang phát sóng. Đa số ứng dụng HbbTV sẽ dành một phần giao diện để hiển thị video quảng bá. Trang HTML thông thường được kết hợp nội dung quảng bá bằng cách nhúng thêm đối tượng video/broadcast. Thông qua đối tượng này có thể thu nhỏ kích thước gốc của nội dung quảng bá (1280x720). Khoảng thu nhỏ được phép theo chuẩn là từ 1/4 đến 1/8. Nếu đầu thu khơng hỗ trợ trong khoảng này, phần biên của hình ảnh sẽ bị xét bớt. Đối tượng video/broadcast được kết vào kênh đang xem thông qua thủ tục hàm bindToCurrentChannel() trong đối tượng. Mỗi khi người dùng chuyển kênh, đối tượng video/broadcast tự động gọi thủ tục hàm tương ứng để hiển thị đúng kênh người dùng muốn chuyển tới.

Sử dụng remote

Trong phiên bản HbbTV hiện tại, người dùng tương tác với ứng dụng chủ yếu bằng remote, không dùng chuột như trang web thơng thường. Vì thế giao diện cũng phải được thiết kế theo cách riêng, đảm bảo dễ dàng thao tác cho người dùng. Việc này đòi hỏi phải xử lý code nhiều hơn khi xây dựng ứng dụng.

Mã phím trên bàn phím máy tính khơng được sử dụng trong ứng dụng HbbTV. Các mã phím mới được định nghĩa. Mỗi phím trên remote được thiết kế cho từng tính năng xác định. Ứng dụng có thể dùng các phím này cho tính năng xử lý riêng, nhưng phải đăng ký nhận sự kiện phím cho các phím tương ứng trước khi sử dụng. Mỗi khi bấm phím, sự kiện phím được gửi tới hàm xử lý xác định trong ứng dụng để thực thi các đoạn mã thích hợp. Sau khi ứng dụng kết thúc, tài nguyên phím được giải phóng và các sự kiện phím trở về xử lý theo mặc định.

Đăng ký phím theo cú pháp:

<application>.privateData.keyset.setValue(mask)

Trong đó:

63

mask: mặt nạ ứng với các phím đăng ký, là sự kết hợp giữa các giá trong bảng dưới đây:

Một phần của tài liệu (Luận văn thạc sĩ) NGHIÊN CỨU MÔ HÌNH TRUYỂN HÌNH LAI GHÉP HBBTV VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA (Trang 67 - 73)