Matthew Waters
6fa4a8c3c3
ccconverter: fix cdp timecode parsing
...
The first reserved bits are in the most significant bit.
i.e. 0xc0 vs 0x0c
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1400 >
2020-07-03 06:54:46 +00:00
Matthew Waters
c6c4d42c4a
ccconverter: fail negotiation when framerate conversion is not possible
...
Converting between anything but cdp will fail at converting
framerates and negotiation should reflect that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1393 >
2020-07-01 19:33:56 +00:00
Matthew Waters
4f334234c8
ccconverter: fix missing output framerate on the caps
...
A pipeline like this:
closedcaption/x-cea-708,format=cdp,framerate=30000/1001 ! ccconverter ! closedcaption/x-cea-708,format=cc_data
would produce a critical/assert:
GStreamer-CRITICAL **: 14:21:11.509: gst_util_fraction_multiply: assertion 'a_d != 0' failed
because there would be no framerate field on ccconverter's output.
Fixed by always fixating a framerate if the input has a framerate.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1393 >
2020-07-01 19:33:56 +00:00
Sebastian Dröge
ed3417219a
ccextractor: Push a GAP event if we have a caption pad but a video buffer did not contain any captions
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1371 >
2020-06-25 08:18:37 +00:00
Sebastian Dröge
f694956511
ccextractor: Add property to remove caption meta from the outgoing video buffers
...
This is disabled by default to keep backwards compatibility.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1371 >
2020-06-25 08:18:37 +00:00
Mathieu Duponchelle
a048ce81d4
plugins: uddate gst_type_mark_as_plugin_api() calls
2020-06-06 00:40:42 +02:00
Matthew Waters
8396e16f85
ccconverter: signal cea608 padding as invalid
...
Outputting a valid but null cea608 byte pair may cause some issues with
some checksum packets.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1318 >
2020-06-05 07:36:22 +00:00
Matthew Waters
bfd03537f0
ccconverter: also copy buffer metadata when draining
...
Fixes buffers without PTS/DTS/meta/etc when receiving an EOS with data
still stored in the internal scratch buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1318 >
2020-06-05 07:36:22 +00:00
Matthew Waters
00bbaff371
ccconverter: Output the limit hit in debug lines
...
Fix two case of the input triplet limit not applying in cea608 -> cdp
conversion.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1318 >
2020-06-05 07:36:22 +00:00
Sebastian Dröge
74f2f733be
plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types
2020-06-04 13:33:16 -04:00
Matthew Waters
6dae95d60f
ccconverter: check fraction multiply for overflow
...
It should not happen and if it does, something went very wrong earlier
CID 1463350
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262 >
2020-05-12 16:06:32 +10:00
Matthew Waters
09cbe4cd03
ccconverter: tighten up a couple of NULL checks
...
CID 1463347
CID 1463346
CID 1463345
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262 >
2020-05-12 16:06:32 +10:00
Matthew Waters
ebc19d19bb
ccconverter: fix unintialized read of mapped output info in error case
...
We only need to gst_buffer_unmap() if we have gst_buffer_map()ed. In
most cases we can shorten the lenght of time we need to map the output
buffer. Fix similar occurences elsewhere.
CID 1463349
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262 >
2020-05-12 16:06:32 +10:00
Matthew Waters
f077189809
ccconverter: fix uninitialized read in error case
...
CID 1463351
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262 >
2020-05-12 16:06:32 +10:00
Matthew Waters
12edc0d9b8
ccconverter: implement discont handling
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
ba1558a7ab
ccconverter: use a better padding byte sequence for writing cdp
...
0xf8 can be interpreted as cea608 data at the beginning of a cdp packet
as the cc_valid bit is not checked when cc_valid in (0b00 or 0b01).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
7ed0bc539f
ccconverter: split temporary storage into 3
...
Instead of storing the raw cc_data, store the 2 cea608 fields individually
as well as the ccp data.
Simply copying the input cc_data to the output cc_data violates a number of
requirements in the cea708 specification. The most prominent being, that
cea608 triples must be placed at the beginning of each cdp.
We also need to comply with the framerate-dpendent limits for both the
cea608 and the ccp data which may involve splitting or merging some
cea608 data but not ccp data or vice versa.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
3417a1709c
ccconvert: compact input cc_data where possible
...
Skip over padding cc_data triples.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
7d028af675
ccconverter: implement support for CDP framerate conversions
...
- Any format involving CDP is supported.
- Time codes (if present) are scaled as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
75503017c2
ccconverter: introduce define for max cdp packet length
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
44c874fd9e
ccconverter: don't rely on external state in *_internal()
...
This allows using the _internal() variants for simply converting some
caption data without relying on any external state.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
31a0bf367d
ccconverter: cc_count limits are per framerate
...
Enforce this and add a test for cdp input being too large.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
b25d75f201
ccconverter: refactor cdp id, fps, max_cc_count into a table
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Matthew Waters
afc120fa74
ccconverter: pivot to implementing generate_output
...
Will make a n-n buffer element much easier to implement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116 >
2020-05-11 12:30:31 +00:00
Mathieu Duponchelle
62d1a3a143
cccombiner: don't drop buffers on video timestamp discontinuities
...
If we receive video buffers with non-perfect timestamps, the
caption buffers' timestamps might fall in the interval between
the end of one video buffer and the start of the next one.
Make our criteria for dropping that the caption buffer has
a timestamp older than the end of the previous video buffer,
not older than the start of the new one, unless of course
this is the first video buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1207 >
2020-04-24 08:47:50 +00:00
Mathieu Duponchelle
f02300eef5
cccombiner: handle gap buffers adequately
...
- Don't try to map them as actual CC data, that was raising
a critical
- Consume video buffers up to the end of the gap
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1207 >
2020-04-24 08:47:50 +00:00
Sebastian Dröge
0478e2dc1a
ccconverter: Fill remainder of the cc_data in CDP packets with empty packets
...
Instead of filling it completely with zeroes. Filling with zeroes is
considered invalid by various CC implementations.
2020-01-24 09:26:28 +00:00
Olivier Crête
fad9096647
Revert "ccextractor: support new CEA 608 formats"
...
This reverts commit 80dd7b2d3d
.
2019-12-17 16:43:54 -05:00
Aaron Boxer
80dd7b2d3d
ccextractor: support new CEA 608 formats
2019-12-17 18:26:35 +00:00
Aaron Boxer
6d3429af34
documentation: fixed a heap o' typos
2019-11-05 09:11:25 -05:00
Sebastian Dröge
f6b4e24f72
ccconverter: Instead of erroring out on too big input drop additional data
2019-11-04 13:43:25 +00:00
Sebastian Dröge
d8372736c6
ccextractor: Remove unused set/get_property() functions
2019-10-28 13:40:16 +02:00
Sebastian Dröge
8aca7f2056
ccextractor: Always forward all sticky events to the caption pad
...
And only update the caps and stream-start event accordingly. This
ensures that we'll always forward sticky events that arrive after the
caption pad was created, and especially updates to existing sticky
events like the segment event.
Also create a proper stream id based on the upstream stream id for the
stream-start event, and make sure that all the sticky events we know are
already on the caption pad at the time it is added to the element.
2019-10-28 13:40:16 +02:00
Tim-Philipp Müller
f218ec2794
Remove autotools build system
2019-10-14 13:54:27 +01:00
Sebastian Dröge
92dd72b7ee
cccombiner: Make use of new GstAggregator::negotiate()
...
Simplifies the caps handling code considerably here and removes some
spurious negotiation.
2019-08-14 17:37:59 +00:00
Sebastian Dröge
dad6e51165
cccombiner: Proxy POSITION/DURATION/URI/CAPS/ALLOCATION queries between video sinkpad and source pad
...
We pass-through the video as is, only putting a GstMeta on it from the
caption sinkpad.
This fixes negotation problems caused by not passing through caps
queries in both directions.
Also handle CAPS/ACCEPT_CAPS queries directly for the caption pad
instead of proxying.
2019-07-09 14:11:34 +00:00
Tim-Philipp Müller
7853700b50
meson: add more plugins to plugins list
...
Makes sure their path gets added to the uninstalled environment
and makes sure they get included in the docs.
2019-05-30 20:41:57 +02:00
Mathieu Duponchelle
da6afdec9c
doc: remove xml from comments
2019-05-29 22:58:08 +02:00
Thibault Saunier
7fe3f36ac8
Minor documentation fixes
2019-05-13 11:36:27 -04:00
Aaron Boxer
8d4ce1e853
ccextractor: copy input buffer flags to output buffer
...
GST_VIDEO_BUFFER_FLAG_INTERLACED and GST_VIDEO_BUFFER_FLAG_TFF
flags are needed when processing SCTE 20 closed captions for an interlaced
stream, when we need to convert back to analog, in which case we need to match
the caption to the top or bottom field
2019-05-02 15:46:15 +00:00
Aaron Boxer
f3e7469094
ccextractor: document importance of pipeline order for this element
2019-04-09 11:28:33 -04:00
Aaron Boxer
c41617b9a2
cea708decoder: use correct mask for font style
...
First three bits are used for font style, so mask
should be 0111 rather than 011 (in binary)
2019-04-09 07:52:56 +00:00
Josep Torra
dbef8c43e8
closedcaption: fix build error in OSX
...
Fixes the following error.
gstccconverter.c:677:7: error: variable 'len' is used uninitialized whenever 'if' condition is false
[-Werror,-Wsometimes-uninitialized]
if (flags & 0x40) {
^~~~~~~~~~~~
gstccconverter.c:698:10: note: uninitialized use occurs here
return len;
^~~
gstccconverter.c:677:3: note: remove the 'if' if its condition is always true
if (flags & 0x40) {
^~~~~~~~~~~~~~~~~~
gstccconverter.c:572:12: note: initialize the variable 'len' to silence this warning
guint len;
^
= 0
2019-03-25 18:28:55 +01:00
Josep Torra
e73280782c
closedcaption: fix build error in OSX
...
Fixes the following error by commenting an unused block.
./misc.h:503:11: error: 'strlcpy' macro redefined [-Werror,-Wmacro-redefined]
2019-03-25 18:28:55 +01:00
Mathieu Duponchelle
17343aa3be
cccombiner: improve behaviour on timeout
...
Prior to this, cccombiner stopped consuming video buffers when
data wasn't arriving on its caption pad. In a live situation,
when aggregator is timing out we should still output whatever
video buffers are present, even if no caption buffers can be
aggregated with them.
2019-03-13 13:50:29 +01:00
Nirbheek Chauhan
4430fa0e3e
closedcaption: Fix build with Visual Studio
...
../ext/closedcaption/io-sim.c(440): error C2065: 'M_PI': undeclared identifier
../ext/closedcaption/io-sim.c(442): error C2065: 'M_LN2': undeclared identifier
2019-03-11 15:02:53 +05:30
Tim-Philipp Müller
92e5c5a85a
closedcaption: cea708decoder: fix some memory leaks
2019-03-08 01:18:39 +00:00
Tim-Philipp Müller
6dad8b7c78
closedcaption: fix leak in line21 decoder
...
Destroy old decoder instance when shutting down the
element, and also in case the input format changes.
Fix harness/pipeline leak in unit test.
2019-03-08 01:18:39 +00:00
Mathieu Duponchelle
919cd44f47
line21dec: general cleanup
...
This ports over the review comments made on line21enc in !217
2019-03-06 11:29:20 +01:00
Mathieu Duponchelle
156865541f
closedcaption: add line21 encoder
...
This element acts as a counterpart of line21encoder.
Also adds a simple test validating each element using the
other.
2019-03-06 11:29:20 +01:00