Matthew Waters
ebd1b2c929
ccconverter: write the cdp timecode data correctly
...
We were mixing up the tens part with the unit parts all over the place.
e.g. 12 seconds would be encoded as 0x21 instead of the correct 0x12
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1400 >
2020-07-03 06:54:46 +00:00
Matthew Waters
327a79e982
ccconverter: output warning log if parsing a cdp packet fails
...
Simplifies figuring out why there may be no output from ccconverter with
a cdp input.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1400 >
2020-07-03 06:54:46 +00:00
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
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
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
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
Sebastian Dröge
f6b4e24f72
ccconverter: Instead of erroring out on too big input drop additional data
2019-11-04 13:43:25 +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
Mathieu Duponchelle
daaa1c3aa8
ccconverter: fix typo in framerate
2019-02-21 23:51:39 +01:00
Sebastian Dröge
8006979109
ccconverter: Don't output empty buffers
2019-02-12 14:38:40 +02:00
Sebastian Dröge
39381643c8
closedcaption: Add ccconverter element that can convert between different types of Closed Caption formats
2018-12-19 00:19:39 +02:00