This commit:
1. Reads the WebM and Matroska ContentEncryption subelements.
2. Creates a GST_PROTECTION event for each ContentEncryption, which
will be sent before pushing the first source buffer.
The DRM system id field in this event is set to GST_PROTECTION_UNSPECIFIED_SYSTEM_ID,
because it isn't specified neither by Matroska nor by the WebM spec.
3. Reads the protection information of encrypted Block/SimpleBlock and
extracts the IV and the partitioning format (subsamples).
4. Creates the metadata protection for each encrypted Block/SimpleBlock,
with those informations: KeyID (extracted from ContentEncryption element),
IV and partitioning format.
5. Adds a new caps for WebM encrypted content named "application/x-webm-enc",
with the following new fields:
"encryption-algorithm": The encryption algorithm used.
values: "None", "DES", "3DES", "Twofish", "Blowfish", "AES".
"encoding-scope": The field that describes which Elements have been modified.
Values: "frame", "codec-data", "next-content".
"cipher-mode": The cipher mode used in the encryption.
Values: "None", "CTR".
https://bugzilla.gnome.org/show_bug.cgi?id=765275
TOC support in mastroskamux has been deactivated for a couple of years. This commit updates it to recent GstToc evolutions and introduces toc unit tests for both matroska-mux and matroska-demux.
There are two UIDs for Chapters in Matroska's specifications:
- The ChapterUID is a mandatory unsigned integer which internally refers to a given chapter. Except for title & language which use dedicated fields, this UID can also be used to add tags to the Chapter. The tags come in a separate section of the container.
- The ChapterStringUID is an optional UTF-8 string which also uniquely refers to a chapter but from an external perspective. It can act as a "WebVTT cue identifier" which "can be used to reference a specific cue, for example from script or CSS".
During muxing, the ChapterUID is generated and checked for unicity, while the ChapterStringUID receives the user defined UID. In order to be able to refer to chapters from the tags section, we maintain an internal Toc tree with the generated ChapterUID.
When demuxing, the ChapterStringUIDs (if available) are assigned to the GstTocEntries UIDs and an internal toc mimicking the toc is used to keep track of the ChapterUIDs and match the tags with the appropriate GstTocEntries.
https://bugzilla.gnome.org/show_bug.cgi?id=790686
Global tags are already being read in matroskaparse, but they are not
currently being sent.
This patch makes global tags get sent incrementally whenever new ones
are found.
https://bugzilla.gnome.org/show_bug.cgi?id=746242
Snap to the end of the file when seeking past the end in reverse mode,
and also fix GST_SEEK_TYPE_END and GST_SEEK_TYPE_NONE handling
for the stop position by always seeking on a segment in stream time
Uses information gathered during EBML parsing to
forge a more suitable set of caps instead of blindly
assuming everything is video/x-matroska.
For consistency, stream type reset was added to
matroska-demux too.
https://bugzilla.gnome.org/show_bug.cgi?id=722311
Support for TAG_IMAGE and TAG_ATTACHMENT is commented out; this requires caps
on buffers which is gone from 0.11.
Segment handling in the demuxer is a bit complex; I added some FIXME comments
in places where I'm not yet sure if I ported correctly.
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_parse_attachments
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_parse_attached_file
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_parse_metadata_id_tag
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_parse_metadata_id_simple_tag
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_get_seek_track
- gst_matroska_{demux,parse}_reset_streams
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_index_seek_find
- gst_matroska{demux,parse}_do_index_seek
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following function to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_tracknumber_unique
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_encoding_cmp
- gst_matroska_{demux,parse}_read_track_encodings
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_peek_id_length_pull
- gst_matroska_{demux,parse}_peek_id_length_push
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_{demux,parse}_encoding_order_unique
- gst_matroska_{demux,parse}_read_track_encoding
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Move the following functions to matroska-read-common.[ch] from
matroska-demux.c and matroska-parse.c:
- gst_matroska_decode_content_encodings
- gst_matroska_decompress_data
https://bugzilla.gnome.org/show_bug.cgi?id=650877
Replace the following functions with their gst_matroska_read_common_*
counterparts:
- gst_matroska_{demux,parse}_parse_index
- gst_matroska_{demux,parse}_parse_skip
- gst_matroska_{demux,parse}_stream_from_num
Introduce GstMatroskaReadCommon to contain those members of
GstMatroskaDemux and GstMatroskaParse that were used by the above
functions.
https://bugzilla.gnome.org/show_bug.cgi?id=650877