Monday, September 21, 2015

PAT --> PMT --> PID

Struktur MPEG TS (Transport Stream) dapat di gambarkan sebagai berikut.



Misalkan Program BBC Live sedang menyiarkan Film "Benyamin Tarzan Kota".

Sehingga ada 1 video: Benyamin Tarzan Kota, dan 2 audio1: ID, audio2: EN

Awalnya tidak terkompres. Kemudian video dan audio di compress pakai ffmpeg. Maka video akan menjadi ES (Elementary Stream) Video, dan Audio akan menjadi ES Audio.

Sehingga akan ada 3 ES:
1. ES video
2. ES audio1
3. ES audio2

ES adalah continuous bit stream, tidak cocok untuk di kirim jarak jauh. Sehingga harus di potong-potong menjadi Paket. Tiap potongan di kasih Header. Proses ini menjadikan akan ada 3 PES (Packetized Elementray Stream):

1. PES video
2. PES audio1
3. PES audio2

PES ini besarnya variable (bisa 64K, atau kurang). Satu PES ini akan di cacah kecil-kecil agar muat dalam TS yang hanya 188 byte. Baca disini. Setiap awal cacahan PES, maka akan mengangkut PES Header, sisanya Payload yang diangkut dalam TS (188 byte). Pada akhir Payload untuk menggenapi 188 byte, TS diisikan stuffing bit.

Selanjutnya Mux akan mengumpulkan 3 Stream itu kedalam 1 Transport Stream. Dimasukkan ke dalam PAT (Program Association Table). Misalkan PAT nomer 67. Isi dari PAT 67 ini adalah pointer ke PMT (Program Map Table) yaitu PMT 122.

Selanjutnya, Mux akan memberikan PID (Program ID) ke masing-masing PES:
1. PES video        PID 29
2. PES audio1      PID 2043
3. PES audio2      PID 2044

Mux akan mengenerate MPTS (Multi Program Transport Stream), sebagai output yang nanti akan dikirim ke Modem Satelit (DVB-S). Lebih lanjut tentang contoh MPTS in-action bisa membaca artiketl tentang Transmod berikut.

Channel lain, akan di bungkus dalam PAT lain. Misal CNN PAT no 95, dan seterusnya.

Diagram dari proses diatas sbb:


Gambar diatas bisa dianalogikan dengan buku daftar menu makanan (PAT). Dimana biasanya halaman pertama adalah Daftar Menu, dan halaman berikutnya adalah penjelasan detail menunya.
Dalam konteks MPEG TS, maka PID itu adalah nomer halamannya, dimana halaman dimulai dari halaman 0 (PID 0).


Daftar menunya adalah siaran-siaran spt ABC, CNN, BBC, dan ada halaman yang menunjukkan detil isi menu (PMT) nya (contoh diatas BBC lihat di halaman 122 maksudnya di PID 122).


Dalam halaman 122 (PMT) didapatkan isi dari menu siaran tsb yaitu terdiri dari 1 stream video (di halaman 29) dan dua stream audio di halaman 2043, dan 2044.


Jadi semuanya dapat dilihat dari PID nya. Dimana PID 0 berarti Daftar Menu Makanan (PAT), lalu isi dari Menu tsb dapat dilihat di PMT. Sedangkan BitStream dari isi tersebut dapat dapat di konsumsi dengan menunggu stream dimana kode halaman nya sesuai dengan yang diinginkan. Misal ingin mengkonsumsi audio ID, maka tunggu stream datang lalu liat kode halaman stream yang datang tsb. Jika kode halamannya 2043, maka konsumsi BitStream tsb.

Yang perlu diingat bahwa PAT dan PMT masing-masing memiliki PID juga. PAT memiliki PID 0. Sedangkan PIT untuk PMT ditentukan oleh PAT.

PAT dan PMT sangat penting bagi decoder. Apabila PAT tidak ditemukan maka decoder TIDAK BISA mendecode paket. Oleh karena itu kecepatan pengiriman PAT dan PMT menjadi penting. Karena kalau terlalu lama, maka lock decoder juga akan lama. Biasanya di set 0.5 detik jarak antar PAT dikirimkan (termasuk jarak antara PMT).

PAT mendeskripsikan semua channel yang di angkut dalam MPTS tsb. Jadi seandainya ada 2 transponder maka, masing-masing transponder mengangkut 1 carrier, maka akan ada 1 MPTS di transponder pertama dan 1 MPTS di transponder ke dua. Dengan demikian field Program Number di PAT bukan berarti program number di EPG (dalam case diatas Program Number 67 di MPTS adalah BBC, tidak berarti di STB channel 67 juga BBC).

Demikian penjelasan tentang PAT dan PMT.

Apa fungsi lain dan manfaat PMT ?

Salah satu alasan adanya PMT karena efisiensi resource. Maksudnya?

Misalkan ada Program Channel lain no 68 TVRI, pada detik yg sama juga menyiarkan acara yang sama yaitu "Benyamin Tarzan Kota", maka PID Video 29, PID 22043, dan PID 2044 bisa di reuse. Artinya dalam stream MPTS tsb tidak perlu ada redundant media stream. Cukup dibuat satu Program Number baru yaitu  68 di PAT, isinya merefer ke PMT 123, dan isinya:

1. PES video        PID 29
2. PES audio1      PID 2043
3. PES audio2      PID 2044

Dengan cara bandwidth di transmisi akan lebih efisien (irit).

MPTS dan SPTS

Sebuah decoder IP (input DVB output IP) umumnya akan mengeluarkan 1 multicast untuk 1 channel. Ini disebut SPTS over IP. 

Jadi misalkan 1 DVB ASI input di decoder menerima 10 channel dalam 1 MPTS, maka akan di convert menjadi 10 udp multicast address yang berbeda (10 SPTS yang beda).

Tujuannya apa? Agar server yang nanti menerima multicast stream hanya perlu tune in di beberapa multicast address saja.

Jika menggunakan MPTS over 1 multicast address, maka server CPU akan tinggi load nya untuk mendecode 1 channel misalkan.

No comments: