Commit graph

1106 commits

Author SHA1 Message Date
Sebastian Dröge
cd02546089 hlsdemux: Implement handling of byte ranges 2014-03-06 16:36:10 +01:00
Sebastian Dröge
6fb3427729 uridownloader: Fix debug output to describe the new reality 2014-02-27 12:02:19 +01:00
Sebastian Dröge
3fd5b74f73 uridownloader: Warning messages are not fatal
Also they need to be parsed with gst_message_parse_warning(),
gst_message_parse_error() does not work on them.
2014-02-27 11:53:51 +01:00
Stefan Ringel
40e7bfd35d docs: mpegts: add missed docs
Signed-off-by: Stefan Ringel <linuxtv@stefanringel.de>

https://bugzilla.gnome.org/show_bug.cgi?id=725278
2014-02-27 08:48:17 +01:00
Julien Isorce
966fb81db0 eglglessink: move GstEGLImageBufferPool to gstegl lib
https://bugzilla.gnome.org/show_bug.cgi?id=706054
2014-02-25 17:29:18 +00:00
Jesper Larsen
a9b1fdd948 mpegts: Add constructor for dvb service descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=724981
2014-02-25 14:34:29 +01:00
Jesper Larsen
d43e7173d8 mpegts: Add support for creation of SDT
https://bugzilla.gnome.org/show_bug.cgi?id=724981
2014-02-25 14:34:29 +01:00
Jesper Larsen
3fe1608e83 mpegts: Add transport_stream_id to GstMpegTsSDT
The transport_stream_id is contained in the subtable extension.
Introduce a variable for readability.

https://bugzilla.gnome.org/show_bug.cgi?id=724981
2014-02-25 14:34:29 +01:00
Edward Hervey
63145f4576 mpegts: Fix descriptor checks
Only use g_return_val_if_fail on provided direct arguments. The others get
checked all the time.

https://bugzilla.gnome.org/show_bug.cgi?id=724464
2014-02-25 10:19:23 +01:00
Jesper Larsen
e28b6fd523 mpegts: network_name: Check converted length
Check the length of the name argument after it has been converted.

https://bugzilla.gnome.org/show_bug.cgi?id=723953
2014-02-24 16:01:11 +01:00
Brendan Long
cd3c3ebf01 mpegts: Add gst_mpegts_section_get_data, to allow us to get the original binary section data.
https://bugzilla.gnome.org/show_bug.cgi?id=724255
2014-02-20 19:19:03 +01:00
Edward Hervey
142233d917 mpegts: Add size guards for descriptors where neeeded
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724464
2014-02-20 19:08:33 +01:00
Edward Hervey
4190a1717a mpeg-ts: Rename private function
Calling it _desc_checks when it was in fact used for sections was a
tad confusing ...
2014-02-20 18:14:51 +01:00
Stefan Ringel
beb31d127b mpegts: Add support for content descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=724034
2014-02-17 08:55:37 +01:00
Stefan Ringel
792fc1cf01 mpegts: Add support for component descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=724034
2014-02-17 08:55:12 +01:00
Stefan Ringel
347ac5fbd7 mpegts: Add support for extended event desriptor
https://bugzilla.gnome.org/show_bug.cgi?id=724034
2014-02-17 08:54:37 +01:00
Stefan Ringel
e6cb996cea mpegts: Add support for DVB terrestrial delivery system descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=724069
2014-02-16 10:13:53 +01:00
Sebastian Dröge
a1d9f6c796 uridownloader: Keep alive connections if the source supports that 2014-02-13 10:44:58 +01:00
Sebastian Dröge
c76ea2919f uridownloader: Re-use old source element if possible
Allows to implement keep-alive handling in the source element.
2014-02-13 10:06:48 +01:00
Sebastian Dröge
d436844434 uridownloader: Fix potential deadlock
The streaming thread might use our lock, so shutting
down the element while holding that lock calls for problems.
2014-02-12 18:06:43 +01:00
Sebastian Dröge
8cd6208b7d uridownloader: Shutdown the source element before unlinking it
Otherwise we might get warnings about pushing to unlinked pads.

Based on a patch by Andoni Morales.
2014-02-12 18:01:10 +01:00
Sebastian Dröge
2a38c1409b uridownloader: Add support for compressed downloads
Very useful for playlists, less useful for media files.
2014-02-12 13:08:29 +01:00
Sebastian Dröge
3726c00b95 uridownloader: Reset cancelled state after fetching an URI
Otherwise it will never ever be able to fetch anything after an
error until the user resets it manually.
2014-02-11 15:26:01 +01:00
Sebastian Dröge
d445374067 uridownloader: Provide some more details about errors if downloading fails 2014-02-11 14:13:30 +01:00
Jesper Larsen
603714a405 mpegts: pmt: Detect descriptor length correct 2014-02-08 18:41:06 +01:00
Jesper Larsen
f1c8de4bc2 mpegts: Correctly check for PAT,PMT,CAT,TSDT 2014-02-08 18:38:55 +01:00
Jesper Larsen
972f7ea71f mpegts: Fix some packetizing bugs
- Length of NIT stream descriptors was not detected correct
- Reserved bits was not set according to EN 300 468, ISO/IEC 13818-1
- Also set output data size if the section was previously packetized

https://bugzilla.gnome.org/show_bug.cgi?id=723892
2014-02-08 16:59:47 +01:00
Edward Hervey
042c8924b6 dvb-descriptor: Remove unneeded increment 2014-02-07 11:53:38 +01:00
Edward Hervey
63348811d2 dvb-descriptor: Fix comparision
we want to stop if one OR the other is NULL.
2014-02-07 11:53:28 +01:00
Jesper Larsen
dc968163da mpegts: Updated docs with new API 2014-02-06 16:01:35 +01:00
Jesper Larsen
b7d256b4c2 mpegts: Support registration and custom descriptor
Support for registration descriptor (0x05)
Add function to create a descriptor with custom tag and data
2014-02-06 15:55:46 +01:00
Jesper Larsen
05bf952384 mpegts: Add creation of DVB Subtitling descriptor
Descriptor tag is 0x59
2014-02-06 15:55:40 +01:00
Jesper Larsen
cfb4da7215 mpegts: Support parsing of DVB Teletext descriptor
Descriptor tag is 0x56
2014-02-06 15:50:34 +01:00
Jesper Larsen
ffb51c2123 mpegts: Add support for creating PAT/PMT 2014-02-06 15:50:28 +01:00
Jesper Larsen
fccfc76805 mpegts: Add program_number to GstMpegTsPMT 2014-02-06 15:30:48 +01:00
Jesper Larsen
dd449c38e6 mpegts: Add network name descriptor construction
Add function to create a Network Name DVB descriptor.
2014-02-06 15:30:48 +01:00
Jesper Larsen
8c26d69e2f mpegts: Add support for creating a NIT section
Functions that will enable user to create Network Information Tables.
2014-02-06 15:30:42 +01:00
Jesper Larsen
4632ccd5be mpegts: Add network_id to GstMpegTsNIT
The network_id is stored in the subtable extension. Make a field
in the GstMpegTsNIT for better code readability
2014-02-06 14:11:53 +01:00
Jesper Larsen
8f429c6c6e mpegts: Add functions to send sections as events
Added function that enables the user to send a GstMpegTsSection as
an event to a GstElement. (i.e. mpegtsmux)
2014-02-06 14:00:33 +01:00
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
Duncan Palmer
06dd8839f4 uridownloader: Fix race condition between EOS handling and downloading a range
https://bugzilla.gnome.org/show_bug.cgi?id=723134
2014-02-04 12:53:00 +01:00
Duncan Palmer
06fec6709d uridownloader: Always release the object lock in gst_uri_downloader_fetch_uri_with_range()
even if downloader->priv->urisrc is not set. This avoids deadlock under some
some conditions on cancel.

https://bugzilla.gnome.org/show_bug.cgi?id=723127
2014-01-29 20:38:57 +01:00
Edward Hervey
274387e8e9 codecparsers: Don't use gst_ as prefix for private symbols
Otherwise they get exposed/accessible in the resulting .so

And make check-exports will complain
2014-01-29 10:50:40 +01:00
Mark Nauwelaerts
1122b56ff6 mpegts: install but nodist for generated header 2014-01-26 14:42:52 +01:00
Thiago Santos
61192a1619 codecparsers: refactor common nal parsing to nalutils
Moves common code from h264 and h265 to a separate file
2014-01-24 09:30:35 -03:00
Aurélien Zanelli
af78b45979 h264parse: Fix multiple SEI messages in one SEI RBSP parsing.
An SEI RBSP could contains more than one SEI message as specified in
7.4.2.3.1.

This commit change the parser API: the gst_h264_parser_parse_sei()
function now create and fill a GArray containing GstH264SEIMessage.

https://bugzilla.gnome.org/show_bug.cgi?id=721715
2014-01-23 20:18:53 +01:00
Thiago Santos
24c87b18c2 h265parser: remove trailling 0x00 bytes as the spec doesn't allow them
Just like h264, the spec doesn't allow the last bytes of a NAL to be 0x00.
So remove it as it is probably just padding.

This is related to https://bugzilla.gnome.org/show_bug.cgi?id=721384
2014-01-22 10:27:01 -03:00
Thiago Santos
4f0fc9a16f h264parser: remove trailling 0x00 bytes as the spec doesn't allow them
The spec states that the last byte of a NAL 'shall not' be 0x00
and it is allowed for byte-stream format to add padding 0x00 for
alignment.

So our parser should strip any trailling 0x00.

https://bugzilla.gnome.org/show_bug.cgi?id=721384
2014-01-22 08:36:30 -03:00
duhui.lee
686c2f8e79 h265parser: Initialize pointer correctly that is never assigned but freed in error cases
Fixes crash on broken streams.

https://bugzilla.gnome.org/show_bug.cgi?id=722669
2014-01-21 09:58:18 +01:00
duhui.lee
13a397a0b9 h265parser: Fix segfault when parsing HRD parameter
https://bugzilla.gnome.org/show_bug.cgi?id=722240
2014-01-20 10:04:23 +01:00
duhui.lee
a8151d78fc h265parser: Fix segfault when parsing VPS
https://bugzilla.gnome.org/show_bug.cgi?id=722081
2014-01-14 16:26:51 +01:00
Justin Joy
6587e924f1 h265parser: prevent to overrun chroma_weight_l0_flag
The index of elements cannot exceed or equal to the size of elements.

https://bugzilla.gnome.org/show_bug.cgi?id=722101
2014-01-13 15:04: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
bacef9cbc4 h265parser: Fix debug output 2014-01-06 14:47:43 +01: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
Thiago Santos
5a5f6d1b7a uridownloader: fix deadlock near EOS
A deadlock can happen when the source sends EOS when
being put to NULL as the object lock is being held by the
thread that sets the element to NULL and is needed by
the event handler.
2013-12-24 17:07:52 -03:00
Luis de Bethencourt
692a053ef8 mpegvideoparse: Fix documentation of GstMpegVideoSequenceScalableMode 2013-12-18 16:26:17 -05: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
Matej Knopp
6af387cd5a h264parser: not all startcodes should have 3-byte 0 prefix
The parser assumes that every time there is a 0 before the startcode,
it is part of the startcode. But that's not true.

From the specification

Byte stream NAL unit syntax
zero_byte is a single byte equal to 0x00.
  When any of the following conditions are fulfilled, the zero_byte syntax
  element shall be present.
  – the nal_unit_type within the nal_unit( ) is equal to 7 (sequence parameter
    set) or 8 (picture parameter set)
  – the byte stream NAL unit syntax structure contains the first NAL unit of an
    access unit in decoding order, as specified by subclause 7.4.1.2.3.

The problem with doing this for all startcodes is that a trailing zero can mess
up timestamps. The trailing zero gets prepended to the startcode, which will
carry the PTS and DTS of previous buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=664443
2013-12-14 12:17:40 +01:00
Cong Zhong
631d5d94ed codecparsers: h264: fix picture level scaling lists derivation (rule B).
Fix picture level scaling lists derivation from fall-back rule set B,
as specified in 7.4.2.2. More precisely, the sequence level scaling
lists need to be used but intra and inter lists arguments were swapped.

This fixes FRExt/freh5.264 from conformance testing.

https://bugzilla.gnome.org/show_bug.cgi?id=720099

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2013-12-10 10:32:43 +01:00
Olivier Crête
a167173063 mpegvideoparser: Also initialize debug category in parse_sequence_header
Also remove the useless initialized flag, this is already done by the macro

https://bugzilla.gnome.org/show_bug.cgi?id=719657
2013-12-04 17:55:05 -05:00
Reynaldo H. Verdejo Pinochet
b4f29e6945 codecparsers: Add -lm needed by H.265 parser 2013-11-13 19:51:12 -03:00
Sebastian Dröge
73888f8e38 mpegts: Add some more element-type annotations for g-i 2013-11-08 20:24:03 +01:00
Aurélien Zanelli
660979bbf2 codecparsers: Fix bad condition in h264 parser
https://bugzilla.gnome.org/show_bug.cgi?id=711615
2013-11-07 18:48:22 +01:00
Sebastian Dröge
2b348161ed codecparsers: Remove some unused functions 2013-11-07 09:54:40 +01:00
Sreerenj Balachandran
33451e0791 codecparsers: add H.265 HEVC bitstream parser
https://bugzilla.gnome.org/show_bug.cgi?id=708438
2013-11-06 23:14:22 +00: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
Sreerenj Balachandran
e943f56bf8 codecparsers: h264: store quantization matrices in zig-zag order
Quantizer matrices are encoded in zigzag scan order in the bitstream,
so always parse it as it is.

https://bugzilla.gnome.org/show_bug.cgi?id=708629
2013-10-02 10:59:10 +02:00
Sreerenj Balachandran
8c9eaf0dc9 codecparsers: h264: add helpers to convert quantization matrices
Add utility functions to convert quantization matrices from zig-zag scan
order into raster scan order and vice-versa

https://bugzilla.gnome.org/show_bug.cgi?id=708629
2013-10-02 10:57:54 +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
Sebastian Dröge
14f2c30686 egl: Update for new GstContext API 2013-09-18 23:09:05 +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
Tim-Philipp Müller
0bd6f374c8 codecparsers: mpegvideoparse: turn internal consistency check into a g_assert()
We only check input from the API user with g_return_*_if_fail().
Internal sanity checks should use g_assert() instead, which is
disabled by default for releases.
2013-08-13 17:53:33 +01:00
Tim-Philipp Müller
4200946cf1 codecparsers: mpegvideoparser: minor doc fixes 2013-08-13 17:53:29 +01:00
Edward Hervey
97426a1caa all: Fix for GST_DISABLE_GST_DEBUG
Where applicable, remove methods that don't do anything different than
the default implementation.
2013-07-29 09:42:12 +02:00
Edward Hervey
3b6825a546 codecparser: Make warnings more meaningful
By stating whether we don't have enough data or it's a corrupted
packet
2013-07-26 06:46:41 +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
Gwenole Beauchesne
ac9c1ae5a8 codecparsers: h264: fix calculation of the frame cropping rectangle.
Fix calculation of the frame cropping rectangle, and more precisely
the actual cropped height. The frame_crop_top_offset subtraction
was not scaled up with SubHeightC.

Also clean-up variables to align more with (7-18) to (7-21).

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2013-07-09 12:15:07 +02:00
Sreerenj Balachandran
529ece338f h264parser: Parse the cropping-rectangle separately.
Assign the un-cropped width/height to sps->width/sps->height
during sps header parsing. Added new fields to SPS header structure
to provide the crop-rectangle dimensions.

https://bugzilla.gnome.org/show_bug.cgi?id=694068
2013-07-09 12:15:07 +02:00
Thiago Santos
c62137b832 uridownloader: fix crash when download is null
Do no try to unref a NULL download attribute
2013-07-08 23:39:49 -03:00
Thiago Santos
9e313eb0a7 uridownloader: do not set cancelled unless explicitly called by user
Cancelled is a 'permanent' state of the uridownloader and is only
removed by a call to _reset. When a download fails we just want to
return NULL on the fetch function and leave the downloader ready
for another fetch, otherwise the user has to call _reset after
failed downloader, even when it didn't call _cancel.
2013-07-08 23:39:49 -03: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
Gwenole Beauchesne
5ad6f2d4a0 codecparsers: mpeg2: fix video packet header size checks.
Fix video packet header size checks for:
- Sequence Header: 64 bits ;
- Sequence Scalable Extension: 10 bits ;
- Slice Header: 6 bits.

https://bugzilla.gnome.org/show_bug.cgi?id=703668

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2013-07-05 18:58:20 +02:00
Sreerenj Balachandran
9a2ed78532 codecparsers: mpeg2: add slice header parsing API.
Add API to parse the Slice header. This also calculates the macroblock
position as specified in 6.3.16.

https://bugzilla.gnome.org/show_bug.cgi?id=664274

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2013-07-05 17:39:28 +02:00
Sreerenj Balachandran
2adfbe36f1 codecparsers: mpeg2: add sequence scalable extension parsing API.
Add API to parse the Sequence Scalable Extension header.

https://bugzilla.gnome.org/show_bug.cgi?id=664274

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2013-07-05 17:39:28 +02:00
Gwenole Beauchesne
1a5265ef72 codecparsers: mpeg2: add new API that takes GstMpegVideoPacket arguments.
Add new interface to MPEG-2 video parser that takes GstMpegVideoPacket
arguments instead of data, size, and offset. New functions are called
after gst_mpeg_video_packet_*() and provide the default implementation.

Older API is moved to the deprecated namespace and uses the new functions.

https://bugzilla.gnome.org/show_bug.cgi?id=692933

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2013-07-05 17:37:34 +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