Files
ubports_kernel_google_msm/include/linux/tspp.h
Joel Nider adec35c3d6 tspp: add kernel api for video demux component
The demux is an in-kernel software component whose purpose is to take
an incoming TSIF stream and split it into multiple output channels
based on the PID field in each TS packet. Each output channel can be
used for a different purpose, such as audio, video or channel
information. In order to get good performance when moving such large
data streams around, the demux was placed in kernel-space as to
prevent copying memory buffers between kernel-space and user-space, at
least at this early stage in processing the traffic. Originally the
design of the TSPP driver was based on the earlier TSIF driver, so it
contained only a user-space API.

Signed-off-by: Joel Nider <jnider@codeaurora.org>
(cherry picked from commit 435ad8e2157eec5783a435f1e7ec47f67d759882)

Change-Id: I0dadf04ec2694c82fc8378fbed5fbf81fc889337
Signed-off-by: Sudhir Sharma <sudsha@codeaurora.org>
2013-03-07 15:19:31 -08:00

89 lines
1.7 KiB
C

#ifndef _TSPP_H_
#define _TSPP_H_
#include <linux/ioctl.h>
#define TSPP_NUM_SYSTEM_KEYS 8
enum tspp_key_parity {
TSPP_KEY_PARITY_EVEN,
TSPP_KEY_PARITY_ODD
};
enum tspp_source {
TSPP_SOURCE_TSIF0,
TSPP_SOURCE_TSIF1,
TSPP_SOURCE_MEM,
TSPP_SOURCE_NONE = -1
};
enum tspp_mode {
TSPP_MODE_DISABLED,
TSPP_MODE_PES,
TSPP_MODE_RAW,
TSPP_MODE_RAW_NO_SUFFIX
};
enum tspp_tsif_mode {
TSPP_TSIF_MODE_LOOPBACK, /* loopback mode */
TSPP_TSIF_MODE_1, /* without sync */
TSPP_TSIF_MODE_2 /* with sync signal */
};
struct tspp_filter {
int pid;
int mask;
enum tspp_mode mode;
int priority; /* 0 - 15 */
int decrypt;
enum tspp_source source;
};
struct tspp_select_source {
enum tspp_source source;
enum tspp_tsif_mode mode;
};
struct tspp_pid {
int pid;
};
struct tspp_key {
enum tspp_key_parity parity;
int lsb;
int msb;
};
struct tspp_iv {
int data[2];
};
struct tspp_system_keys {
int data[TSPP_NUM_SYSTEM_KEYS];
};
struct tspp_buffer {
int size;
};
/* defines for IOCTL functions */
/* read Documentation/ioctl-number.txt */
/* some random number to avoid coinciding with other ioctl numbers */
#define TSPP_IOCTL_BASE 0xAA
#define TSPP_IOCTL_SELECT_SOURCE \
_IOW(TSPP_IOCTL_BASE, 0, struct tspp_select_source)
#define TSPP_IOCTL_ADD_FILTER \
_IOW(TSPP_IOCTL_BASE, 1, struct tspp_filter)
#define TSPP_IOCTL_REMOVE_FILTER \
_IOW(TSPP_IOCTL_BASE, 2, struct tspp_pid)
#define TSPP_IOCTL_SET_KEY \
_IOW(TSPP_IOCTL_BASE, 3, struct tspp_key)
#define TSPP_IOCTL_SET_IV \
_IOW(TSPP_IOCTL_BASE, 4, struct tspp_iv)
#define TSPP_IOCTL_SET_SYSTEM_KEYS \
_IOW(TSPP_IOCTL_BASE, 5, struct tspp_system_keys)
#define TSPP_IOCTL_BUFFER_SIZE \
_IOW(TSPP_IOCTL_BASE, 6, struct tspp_buffer)
#endif /* _TSPP_H_ */