1-- ASN description of MPEG Packetized Elementary Stream (PES)
2-- Written by Shaun Jackman <sjackman@gmail.com>
3-- Copyright 2007 Shaun Jackman
4--
5-- This program is free software; you can redistribute it and/or
6-- modify it under the terms of the GNU General Public License.
7
8MPEG DEFINITIONS ::= BEGIN
9
10PES ::= SEQUENCE {
11	prefix OCTET STRING (SIZE (3)),
12	stream INTEGER {
13		picture (0),
14		sequence-header (179),
15		sequence-header-extension (181),
16		group-of-pictures (184),
17		program-end (185),
18		pack-header (186),
19		system-header (187),
20		program-stream-map (188),
21		private-stream-1 (189),
22		padding-stream (190),
23		private-stream-2 (191),
24		audio-stream (192),
25		video-stream (224)
26	} (0..255)
27}
28
29Stream ::= SEQUENCE {
30	length INTEGER (0..65535),
31	must-be-one BOOLEAN,
32	must-be-zero BOOLEAN,
33	scrambling-control INTEGER {
34		not-scrambled (0)
35	} (0..3),
36	priority BOOLEAN,
37	data-alignment BOOLEAN,
38	copyright BOOLEAN,
39	original BOOLEAN,
40	pts-flag BOOLEAN,
41	dts-flag BOOLEAN,
42	escr-flag BOOLEAN,
43	es-rate-flag BOOLEAN,
44	dsm-trick-mode-flag BOOLEAN,
45	additional-copy-info-flag BOOLEAN,
46	crc-flag BOOLEAN,
47	extension-flag BOOLEAN,
48	header-data-length INTEGER (0..255)
49}
50
51Sequence-header ::= SEQUENCE {
52	horizontal-size BIT STRING (SIZE (12)),
53	vertical-size BIT STRING (SIZE (12)),
54	aspect-ratio INTEGER {
55		aspect-1to1 (1),
56		aspect-4to3 (2),
57		aspect-16to9 (3),
58		aspect-2-21to1 (4)
59	} (0..15),
60	frame-rate ENUMERATED {
61		reserved (0),
62		fr (23976),
63		fr (24000),
64		fr (25000),
65		fr (29970),
66		fr (30000),
67		fr (50000),
68		fr (59940),
69		fr (60000)
70	},
71	bit-rate BIT STRING (SIZE (18)),
72	must-be-one BOOLEAN,
73	vbv-buffer-size BIT STRING (SIZE (10)),
74	constrained-parameters-flag BOOLEAN,
75	load-intra-quantiser-matrix BOOLEAN,
76	load-non-intra-quantiser-matrix BOOLEAN
77}
78
79Sequence-extension ::= SEQUENCE {
80	must-be-0001 BIT STRING (SIZE (4)),
81	profile-and-level INTEGER (0..255),
82	progressive-sequence BOOLEAN,
83	chroma-format INTEGER (0..3),
84	horizontal-size-extension INTEGER (0..3),
85	vertical-size-extension INTEGER (0..3),
86	bit-rate-extension BIT STRING (SIZE (12)),
87	must-be-one BOOLEAN,
88	vbv-buffer-size-extension INTEGER (0..255),
89	low-delay BOOLEAN,
90	frame-rate-extension-n INTEGER (0..3),
91	frame-rate-extension-d INTEGER (0..3)
92}
93
94Group-of-pictures ::= SEQUENCE {
95	drop-frame-flag BOOLEAN,
96	hour INTEGER (0..32),
97	minute INTEGER (0..64),
98	must-be-one BOOLEAN,
99	second INTEGER (0..64),
100	frame INTEGER (0..64),
101	closed-gop BOOLEAN,
102	broken-gop BOOLEAN,
103	must-be-zero BIT STRING (SIZE (5))
104}
105
106Picture ::= SEQUENCE {
107	temporal-sequence-number BIT STRING (SIZE (10)),
108	frame-type INTEGER {
109		i-frame (1),
110		p-frame (2),
111		b-frame (3),
112		d-frame (4)
113	} (0..7),
114	vbv-delay BIT STRING (SIZE (16))
115}
116
117END
118