summaryrefslogtreecommitdiffstats
path: root/gst/mpeg1sys/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'gst/mpeg1sys/main.h')
-rw-r--r--gst/mpeg1sys/main.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/gst/mpeg1sys/main.h b/gst/mpeg1sys/main.h
new file mode 100644
index 00000000..434f57f5
--- /dev/null
+++ b/gst/mpeg1sys/main.h
@@ -0,0 +1,140 @@
+/*************************************************************************
+* Generating a MPEG/SYSTEMS *
+* MULTIPLEXED VIDEO/AUDIO STREAM *
+* from two MPEG source streams *
+* Christoph Moar *
+* SIEMENS CORPORATE RESEARCH AND DEVELOPMENT ST SN 11 / T SN 6 *
+* (C) 1994 1995 *
+**************************************************************************
+* Restrictions apply. Will not support the whole MPEG/SYSTEM Standard. *
+* Basically, will generate Constrained System Parameter Files. *
+* Mixes only one audio and/or one video stream. Might be expanded. *
+*************************************************************************/
+
+/*************************************************************************
+* mplex - MPEG/SYSTEMS multiplexer *
+* Copyright (C) 1994 1995 Christoph Moar *
+* Siemens ZFE ST SN 11 / T SN 6 *
+* *
+* moar@informatik.tu-muenchen.de *
+* (Christoph Moar) *
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+* This program is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU General Public License for more details. *
+* *
+* You should have received a copy of the GNU General Public License *
+* along with this program; if not, write to the Free Software *
+* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
+*************************************************************************/
+
+
+#ifndef __MAIN_H__
+#define __MAIN_H__
+
+#include <glib.h>
+
+#define PACK_START 0x000001ba
+#define SYS_HEADER_START 0x000001bb
+#define ISO11172_END 0x000001b9
+#define PACKET_START 0x000001
+
+#define CLOCKS 90000.0 /* System Clock Hertz */
+
+#define AFTER_PACKET_LENGTH 15 /* No of non-data-bytes */
+ /* following the packet */
+ /* length field */
+#define LAST_SCR_BYTE_IN_PACK 9 /* No of bytes in pack */
+ /* preceding, and */
+ /* including, the SCR */
+
+/* The following values for sys_header_length & size are only valid for */
+/* System streams consisting of two basic streams. When wrapping around */
+/* the system layer on a single video or a single audio stream, those */
+/* values get decreased by 3. */
+
+#define SYS_HEADER_LENGTH 12 /* length of Sys Header */
+ /* after start code and */
+ /* length field */
+
+#define SYS_HEADER_SIZE 18 /* incl. start code and */
+ /* length field */
+#define PACK_HEADER_SIZE 12
+
+#define PACKET_HEADER_SIZE 6
+
+#define MAX_SECTOR_SIZE 0x20000 /* Max Sektor Groesse */
+
+#define STREAMS_VIDEO 1
+#define STREAMS_AUDIO 2
+#define STREAMS_BOTH 3
+
+#define AUDIO_STREAMS 0xb8 /* Marker Audio Streams */
+#define VIDEO_STREAMS 0xb9 /* Marker Video Streams */
+#define AUDIO_STR_0 0xc0 /* Marker Audio Stream0 */
+#define VIDEO_STR_0 0xe0 /* Marker Video Stream0 */
+#define PADDING_STR 0xbe /* Marker Padding Stream*/
+
+#define ZERO_STUFFING_BYTE 0
+#define STUFFING_BYTE 0xff
+#define RESERVED_BYTE 0xff
+#define TIMESTAMPS_NO 0 /* Flag NO timestamps */
+#define TIMESTAMPS_PTS 1 /* Flag PTS timestamp */
+#define TIMESTAMPS_PTS_DTS 2 /* Flag BOTH timestamps */
+
+#define MARKER_SCR 2 /* Marker SCR */
+#define MARKER_JUST_PTS 2 /* Marker only PTS */
+#define MARKER_PTS 3 /* Marker PTS */
+#define MARKER_DTS 1 /* Marker DTS */
+#define MARKER_NO_TIMESTAMPS 0x0f /* Marker NO timestamps */
+
+#define STATUS_AUDIO_END 0 /* Statusmessage A end */
+#define STATUS_VIDEO_END 1 /* Statusmessage V end */
+#define STATUS_AUDIO_TIME_OUT 2 /* Statusmessage A out */
+#define STATUS_VIDEO_TIME_OUT 3 /* Statusmessage V out */
+
+/*************************************************************************
+ Typ- und Strukturdefinitionen
+*************************************************************************/
+
+typedef struct sector_struc /* A sector, can contain pack, sys header */
+ /* and packet. */
+{ unsigned char buf [MAX_SECTOR_SIZE] ;
+ unsigned int length_of_sector ;
+ unsigned int length_of_packet_data ;
+ guint64 TS ;
+} Sector_struc;
+
+typedef struct pack_struc /* Pack Info */
+{ unsigned char buf [PACK_HEADER_SIZE];
+ guint64 SCR;
+} Pack_struc;
+
+typedef struct sys_header_struc /* System Header Info */
+{ unsigned char buf [SYS_HEADER_SIZE];
+} Sys_header_struc;
+
+/*************************************************************************
+ Funktionsprototypen, keine Argumente, K&R Style
+*************************************************************************/
+
+/* systems.c */
+void create_sector (Sector_struc *sector, Pack_struc *pack, Sys_header_struc *sys_header,
+ unsigned int packet_size, unsigned char *inputbuffer, unsigned char type, unsigned char buffer_scale,
+ unsigned int buffer_size, unsigned char buffers, guint64 PTS, guint64 DTS,
+ unsigned char timestamps, unsigned int which_streams);
+
+void create_pack (Pack_struc *pack, guint64 SCR, unsigned int mux_rate);
+
+void create_sys_header (Sys_header_struc *sys_header, unsigned int rate_bound, unsigned char audio_bound,
+ unsigned char fixed, unsigned char CSPS, unsigned char audio_lock, unsigned char video_lock,
+ unsigned char video_bound, unsigned char stream1, unsigned char buffer1_scale, unsigned int buffer1_size,
+ unsigned char stream2, unsigned char buffer2_scale, unsigned int buffer2_size, unsigned int which_streams);
+
+#endif