two problems with latest matroska mux/demux

grd grd at loganmill.net
Mon Jul 27 18:14:34 PDT 2015


A little more info: seems that when streamable=true, track tags injected
before gst_matroska_mux_start() are successufully written out by the muxer
to the .mkv file, but they are not reported by matroska-demux.  To
illustrate:

$ gst-launch-1.0 -c videotestsrc ! taginject tags=comment=hello !
matroskamux streamable=true ! filesink location=x.mkv
C-c

....The 'comment' tag (suitably renamed 'COMMENTS') is clearly in the .mkv
file:

$  mkvinfo x.mkv
+ EBML head
|+ Doc type: matroska
|+ Doc type version: 2
|+ Doc type read version: 2
+ Segment, size unknown
|+ Tags
| + Tag
|  + Targets
|   + TrackUID: 1380911230444452577
|  + Simple
|   + Name: COMMENTS
|   + String: hello
|+ Segment information
| + Segment UID: 0x5d 0x2e 0xc6 0xc5 0xb6 0x53 0x66 0x35 0x20 0x8f 0xb6 0x30
0x19 0xad 0x0c 0x4b
| + Timecode scale: 1000000
| + Muxing application: GStreamer matroskamux version 1.5.2.1
| + Writing application: GStreamer Matroska muxer
| + Date: Tue Jul 28 00:43:27 2015 UTC
|+ Segment tracks
| + A track
|  + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
|  + Track type: video
|  + Track UID: 1380911230444452577
|  + Default duration: 33.333ms (30.000 frames/fields per second for a video
track)
|  + Name: Video
|  + Video track
|   + Pixel width: 320
|   + Pixel height: 240
|   + Colour space: length 4, data: 0x49 0x34 0x32 0x30
|  + Codec ID: V_UNCOMPRESSED
|+ Cluster


....however, this Tag appears in the .mkv before the track it belongs
to...its like a forward reference.  The matroska-demux reads the tag, but
simply throws it away (after logging a FIXME ), because it does not (yet)
have the corresponding track:

$ export GST_DEBUG=matroska-demux:3

gst-launch-1.0 -t filesrc location=x.mkv ! matroskademux ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.030284747 22173      0x145f0a0 FIXME     matroskareadcommon
matroska-read-common.c:2395:gst_matroska_read_common_parse_metadata_id_tag:<matroskademux0:sink>
Found track-specific tag(s), but track 1380911230444452577 is not known
(yet?)
FOUND TAG      : found by element "fakesink0".
container format: Matroska
FOUND TAG      : found by element "fakesink0".
     video codec: Uncompressed planar YUV 4:4:4
Pipeline is PREROLLED ...
 ...

....and the COMMENTS tag is not reported. Seems that matroska-demux needs
code to cache the track taglist in matroska-read-common, then merge it into
the taglist when the track is later parsed.  Not a bug, just code that's not
implemented (yet).




--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/two-problems-with-latest-matroska-mux-demux-tp4672845p4672875.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list