Path: blob/main/multimedia/dvbsnoop/files/dmx.h
16462 views
/*1* dmx.h2*3* Copyright (C) 2000 Marcus Metzler <[email protected]>4* & Ralph Metzler <[email protected]>5for convergence integrated media GmbH6*7* This program is free software; you can redistribute it and/or8* modify it under the terms of the GNU Lesser General Public License9* as published by the Free Software Foundation; either version 2.110* of the License, or (at your option) any later version.11*12* This program is distributed in the hope that it will be useful,13* but WITHOUT ANY WARRANTY; without even the implied warranty of14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the15* GNU General Public License for more details.16*17* You should have received a copy of the GNU Lesser General Public License18* along with this program; if not, write to the Free Software19* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.20*21*/2223#ifndef _DVBDMX_H_24#define _DVBDMX_H_2526#ifndef LINUX_TYPES_ADDED27#define LINUX_TYPES_ADDED28#include <sys/types.h>29typedef uint64_t __u64;30typedef uint32_t __u32;31typedef uint16_t __u16;32typedef uint8_t __u8;33#endif3435#include <time.h>3637#define DMX_FILTER_SIZE 163839typedef enum40{41DMX_OUT_DECODER, /* Streaming directly to decoder. */42DMX_OUT_TAP, /* Output going to a memory buffer */43/* (to be retrieved via the read command).*/44DMX_OUT_TS_TAP /* Output multiplexed into a new TS */45/* (to be retrieved by reading from the */46/* logical DVR device). */47} dmx_output_t;484950typedef enum51{52DMX_IN_FRONTEND, /* Input from a front-end device. */53DMX_IN_DVR /* Input from the logical DVR device. */54} dmx_input_t;555657typedef enum58{59DMX_PES_AUDIO0,60DMX_PES_VIDEO0,61DMX_PES_TELETEXT0,62DMX_PES_SUBTITLE0,63DMX_PES_PCR0,6465DMX_PES_AUDIO1,66DMX_PES_VIDEO1,67DMX_PES_TELETEXT1,68DMX_PES_SUBTITLE1,69DMX_PES_PCR1,7071DMX_PES_AUDIO2,72DMX_PES_VIDEO2,73DMX_PES_TELETEXT2,74DMX_PES_SUBTITLE2,75DMX_PES_PCR2,7677DMX_PES_AUDIO3,78DMX_PES_VIDEO3,79DMX_PES_TELETEXT3,80DMX_PES_SUBTITLE3,81DMX_PES_PCR3,8283DMX_PES_OTHER84} dmx_pes_type_t;8586#define DMX_PES_AUDIO DMX_PES_AUDIO087#define DMX_PES_VIDEO DMX_PES_VIDEO088#define DMX_PES_TELETEXT DMX_PES_TELETEXT089#define DMX_PES_SUBTITLE DMX_PES_SUBTITLE090#define DMX_PES_PCR DMX_PES_PCR0919293typedef enum94{95DMX_SCRAMBLING_EV,96DMX_FRONTEND_EV97} dmx_event_t;9899100typedef enum101{102DMX_SCRAMBLING_OFF,103DMX_SCRAMBLING_ON104} dmx_scrambling_status_t;105106107typedef struct dmx_filter108{109__u8 filter[DMX_FILTER_SIZE];110__u8 mask[DMX_FILTER_SIZE];111__u8 mode[DMX_FILTER_SIZE];112} dmx_filter_t;113114115struct dmx_sct_filter_params116{117__u16 pid;118dmx_filter_t filter;119__u32 timeout;120__u32 flags;121#define DMX_CHECK_CRC 1122#define DMX_ONESHOT 2123#define DMX_IMMEDIATE_START 4124#define DMX_KERNEL_CLIENT 0x8000125};126127128struct dmx_pes_filter_params129{130__u16 pid;131dmx_input_t input;132dmx_output_t output;133dmx_pes_type_t pes_type;134__u32 flags;135};136137138struct dmx_event139{140dmx_event_t event;141time_t timeStamp;142union143{144dmx_scrambling_status_t scrambling;145} u;146};147148typedef struct dmx_caps {149__u32 caps;150int num_decoders;151} dmx_caps_t;152153typedef enum {154DMX_SOURCE_FRONT0 = 0,155DMX_SOURCE_FRONT1,156DMX_SOURCE_FRONT2,157DMX_SOURCE_FRONT3,158DMX_SOURCE_DVR0 = 16,159DMX_SOURCE_DVR1,160DMX_SOURCE_DVR2,161DMX_SOURCE_DVR3162} dmx_source_t;163164struct dmx_stc {165unsigned int num; /* input : which STC? 0..N */166unsigned int base; /* output: divisor for stc to get 90 kHz clock */167__u64 stc; /* output: stc in 'base'*90 kHz units */168};169170171#define DMX_START _IO('o',41)172#define DMX_STOP _IO('o',42)173#define DMX_SET_FILTER _IOW('o',43,struct dmx_sct_filter_params)174#define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params)175#define DMX_SET_BUFFER_SIZE _IO('o',45)176#define DMX_GET_EVENT _IOR('o',46,struct dmx_event)177#define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5])178#define DMX_GET_CAPS _IOR('o',48,dmx_caps_t)179#define DMX_SET_SOURCE _IOW('o',49,dmx_source_t)180#define DMX_GET_STC _IOWR('o',50,struct dmx_stc)181182#endif /*_DVBDMX_H_*/183184185186