歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux DVB api 筆記

Linux DVB api 筆記

日期:2017/2/28 16:22:36   编辑:Linux教程

Linux DVB interface

Demux
用途:硬件解復用
設備路徑: /dev/dvb/adapter0/demux0

數據類型:
dmx_output_t

typedef enum
{
DMX_OUT_DECODER,
DMX_OUT_TAP,
DMX_OUT_TS_TAP
} dmx_output_t;

DMX_OUT_TAP:將流輸出到調用ioctl的demux設備上
DMX_OUT_TS_TAP:將流輸出到邏輯 DVR設備上 /dev/dvb/adapter0/dvr0 。輸出一個ts流到該設備。並且復用所有設置了該標志的流。

函數調用
open: 在 /dev/dvb/adapter0/demux0 上使用,將會分配以後一個新的filter並返回一個handle用來持續的控制該filter。
該函數的每一次返回的文件描述附,是一個單獨filter的引用。

/dev/dvb/adapter0/dvr0 是一個邏輯設備用來檢索傳輸流。從該設備讀取,將得到一個傳輸流,該流包含了所有設置了DMX_OUT_TS_TAP標志的filter的PES包。

read()
讀取filtered中的數據。可能是secion或者PES數據。數據被存儲在驅動內部的循環緩沖區中。

當返回的是secion數據,驅動則總是返回完整的單獨section(即使有足夠的空間放入其他數據)。如果數據超過緩沖區大小則在下次調用時繼續返回。

內部緩沖默認為2*4096bytes(secion的兩倍大小)

為了能夠讀取,必須通過ioctl設置要過濾的secion或者PES。並指定DMX_START 或者ioctl時指定DMX_IMMEDIATE_START 標記。

write()
僅對/dev/dvb/adapter0/dvr0管用,還是在內部於物理demux設備關聯

ioctl()
DMX_START 開始filter
DMX_STOP 對應的停止

DMX_SET_FILTER
設置filter

struct dmx_sct_filter_params
{
uint16_t pid;
dmx_filter_t filter;
uint32_t timeout;
uint32_t flags;
#define DMX_CHECK_CRC 1
#define DMX_ONESHOT 2
#define DMX_IMMEDIATE_START 4
};

timeout:設置讀取secion超時,0為永不超時
flags:指定了是否CRC檢查,僅讀取一次,DMX_SET_FILTER後立即開始filter

DMX_SET_PES_FILTER
用來設置一個PES filter。傳輸流的目標必須設定,一個PES可以直接送入video decoder。如果該filter之前設置過,則會取消當前的filter。並清空緩沖區。

DMX_SET_BUFFER_SIZE
設置緩沖區大小,默認2*4096bytes

DMX_GET_EVENT
返回一個事件,必須在阻塞模式下。

DMX_GET_STC
設置當前系統STC system time counter?

Copyright © Linux教程網 All Rights Reserved