Commit graph

180 commits

Author SHA1 Message Date
Jesper Larsen
930cde73a7 mpegts: Add functions to packetize section
Sections needs to be packetized for use in i.e. mpegtsmux.
These functions handles the generic common parts of a GstMpegTsSection
2014-02-06 14:00:28 +01:00
Jesper Larsen
b1c5143b79 mpegts: Add init functions for descriptor/section 2014-02-06 12:18:13 +01:00
Jesper Larsen
4630dfda05 mpegts: Add function to encode UTF8 strings
This can be used to create descriptors with appropriate character maps
2014-02-06 12:18:13 +01:00
Jesper Larsen
465dea6f32 mpegts: Use big endian UCS-2 coding
Parsing of control codes requires a big endian character map
2014-02-06 12:18:13 +01:00
Jesper Larsen
73c82e3f1c mpegts: Add support for two-way iconv conversions
To use in conversions from UTF-8 to another character map
2014-02-06 12:18:13 +01:00
Mark Nauwelaerts
1122b56ff6 mpegts: install but nodist for generated header 2014-01-26 14:42:52 +01:00
Tim-Philipp Müller
0d9690ba1e mpegts: make headers usable with c++ compiler
Add G_BEGIN_DECLS G_END_DECLS

https://bugzilla.gnome.org/show_bug.cgi?id=671136
2014-01-06 15:01:22 +00:00
Sebastian Dröge
84bd65b9bd tsdemux: Add HEVC / h265 support 2014-01-06 13:54:40 +01:00
Tim-Philipp Müller
ec3c4cb1c7 mpegts: fix g-i annotations and gtk-doc markup 2013-12-27 10:25:49 +00:00
Mariusz Buras
d5b438a984 mpegts: Install generated headers
https://bugzilla.gnome.org/show_bug.cgi?id=720673
2013-12-18 13:47:01 +01:00
Sebastian Dröge
73888f8e38 mpegts: Add some more element-type annotations for g-i 2013-11-08 20:24:03 +01:00
Edward Hervey
f36e0bca83 mpegts: Add support for parsing DVB Subtitling descriptor (0x59)
Essentially works in the same vein as the iso639 descriptor code
2013-10-11 10:21:25 +02:00
Jesper Larsen
0d57756512 mpegts: Fix assertion fault in ISO 639 parsing
https://bugzilla.gnome.org/show_bug.cgi?id=709180
2013-10-11 10:20:57 +02:00
Jesper Larsen
7cb434e42f mpegts: Add ISO 639 parsing functions
https://bugzilla.gnome.org/show_bug.cgi?id=709180
2013-10-07 10:23:22 +02:00
Steve Maynard
17ed696faa mpegts: Add SCTE/EISS sections and table types
https://bugzilla.gnome.org/show_bug.cgi?id=708688
2013-09-28 13:15:44 +02:00
Tim-Philipp Müller
f7079af630 mpegts: mark as unstable API 2013-08-28 11:13:14 +01:00
Edward Hervey
5d06aed3e2 mpegts: ABI/API break: Use GPtrArray instead of GArray
While it was a great idea, various g-i based bindings don't support
GArray with entries greater than sizeof(gpointer) :(

So let's just make everybody happy by just using GPtrArray.

And since we're breaking the API, also rename the various descriptor fields
to no longer have the descriptor_ prefix.

It does cost a bit more in terms of memory/cpu usage, but makes it usable
from bindings.
2013-08-21 08:59:42 +02:00
Edward Hervey
8b24d5829b .gitignore: Update for new files to ignore 2013-08-14 13:59:27 +02:00
Edward Hervey
ae4d6bb334 mpegts: Unify section checks and add BAT parsing
* Avoid repeating code everywhere, and instead provide all parsing
  information in one go.
* Add BAT support
* Refine BAT/CAT identification (by adding PID checks)
2013-07-09 12:25:11 +02:00
Edward Hervey
f3d53fcd97 mpegts: Avoid false-positives in section type detection
Due to the variety of section types out there, we need to add
some checks when identifying section types.

We check here that the PID is also consistent with the table_id.
2013-07-07 08:35:02 +02:00
Edward Hervey
057d24811d mpegts: Properly handle UTC time in sections
* don't unref inexistant GstDateTime
* Fine-tune hour/min/sec BCD reading code
* Update example code accordingly
2013-07-06 12:39:49 +02:00
Edward Hervey
d95bb48864 mpegts: Fix NIT parsing
The size checks were wrong. The smallest size for a NIT is 16 bytes
(12 for the smallest content + 4 for crc) and the smallest size for
a inner stream loop is 6 bytes (without any descriptors).

Also remove FIXME that has already moved elsewhere
2013-07-06 10:59:55 +02:00
Edward Hervey
f24c0b62e3 mpegts: Improve documentation
* Add a base page for the library
* Add pages for the base MPEG-TS section and descriptors
* Add pages for the known variants
* Add documentation on more fields/sections/types
* Remove some fixmes that were ... fixed
2013-07-04 08:45:33 +02:00
Edward Hervey
34164610b0 mpegtsdescriptor: Fix handling of unknown stream encodings
If we cannot identify the encoding used for a string, return a NULL
string instead of garbage and add a FIXME so we can detect and later
fix it.
2013-07-04 08:45:32 +02:00
Edward Hervey
4fe26740c7 mpegts: Add registered mpeg-ts stream types
These are the values officially registered in the base specification
(H.222.0/13818-1). Later on we can add other enums for other variants

Note that the enum is not used in the structure fields (such as a pmt
stream stream_type field) since it can contain values from other
variants.
2013-07-04 08:45:32 +02:00
Edward Hervey
51d8fa5860 mpegts: split dvb descriptors/enums into a separate file
We will do the same once we have ATSC/ISDB/... descriptor parsing
2013-07-03 18:52:18 +02:00
Edward Hervey
6a611e5d3d mpegts: Fix TOT section parsing
And use it in example
2013-07-03 18:44:54 +02:00
Edward Hervey
982aee25c6 mpegts: Split files and implement free functions
* In order to avoid future clashing between table_id for the various
  mpeg-ts variants, use different enums.
* In order to keep everything clean(ish) and allow for cleaner growth,
  split into different files (will need the same for descriptors later)
* Also ... implement free functions for all table types :)
2013-07-03 17:59:02 +02:00
Edward Hervey
c1366efcd6 libs/mpegts: Rename GstMpegTS => GstMpegTs
Sorry for this :( But this makes it more in sync with expected type
naming in gobject (i.e. CamelCase and not CamelMAYBECase).

Also split descriptor type enums into the different variants:
* ISO H.222.0 / 13818-1 (i.e. standard mpeg-ts)
* DVB
* ATSC
* ISDB
* miscellaneous

This will avoid future clashes when specs use the same descriptor type
2013-07-03 13:59:56 +02:00
Edward Hervey
3665e8543a gst-libs: New Mpeg-TS support library
Exposes various MPEG-TS (ISO/IEC 13818-1) and DVB (EN 300 468) Section
Information as well as descriptors for usage by plugins and applications.

This replaces entirely the old GstStructure-based system for conveying
mpeg-ts information to applications and other plugins.

Parsing and validation is done on a "when-needed" basis. This ensures
the minimal overhead for elements and applications creating and using
sections and descriptors.

Since all information is made available, this also allows applications
to parse custom sections and descriptors.

Right now the library is targeted towards parsing, but the structures
could be used in the future to allow applications to create and inject
sections and descriptors (for usage by various mpeg-ts elements).

https://bugzilla.gnome.org/show_bug.cgi?id=702724
2013-07-03 09:17:25 +02:00