Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-base gst-plugins-base
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 641
    • Issues 641
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 80
    • Merge requests 80
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamerGStreamer
  • gst-plugins-basegst-plugins-base
  • Issues
  • #598
Closed
Open
Issue created May 03, 2019 by Rok Mandeljc@rokm

gst-discoverer is leaking title tags from subtitle streams into main title

Between versions 1.14 and 1.16, there has been a change either in gst-discoverer itself or in some underlying part of gstreamer, which causes gst-discoverer to now leak title tags from subtitle tracks into "main" title track, which in turn causes problems in applications that rely on gst-discoverer.

Consider a test .mkv file with subtitle tracks that have title tags, whereas the main file/container itself does not have a title.

On Fedora 29 (gstreamer 1.14.4), running gst-discoverer-1.0 against the file will produce: (full --verbose output)

[rok@vm-fedora29 ~]$ gst-discoverer-1.0 test.mkv
Analyzing file:///home/rok/test.mkv
Done discovering file:///home/rok/test.mkv

Topology:
  container: Matroska
    subtitles: Timed Text
    subtitles: Timed Text
    audio: E-AC-3 (ATSC A/52B)
    video: H.264 (High Profile)

Properties:
  Duration: 0:42:15.840000000
  Seekable: yes
  Live: no
  Tags:
      container format: Matroska
      language code: en
      video codec: H264
      audio codec: E-AC-3 audio

On Fedora 30 (gstreamer 1.16.0), the output is: (full --verbose output)

[rok@vm-fedora30 ~]$ gst-discoverer-1.0 ./test.mkv
Analyzing file:///home/rok/./test.mkv
Done discovering file:///home/rok/./test.mkv

Topology:
  container: Matroska
    subtitles: Timed Text
    subtitles: Timed Text
    audio: E-AC-3 (ATSC A/52B)
    video: H.264 (High Profile)

Properties:
  Duration: 0:42:15.840000000
  Seekable: yes
  Live: no
  Tags:
      container format: Matroska
      language code: en
      title: English, English SDH
      audio codec: E-AC-3 audio
      video codec: H264

The old version does not return a title, whereas the new version does, and this title is a combination of subtitle tracks' titles - "English, English SDH" (and on differents runs, the order may change to "English SDH, English", or even contain only one of the titles - presumably because they are obtained asynchronously).

Consequently, programs that rely on gst-discoverer (e.g., totem, or rygel when exporting shared DLNA library) used to list such video files by their filenames, but now list them by this bogus "title". Which means that one may end up with a whole list of "English, English SDH" videos to choose from.

The attached proof-of-concept patch works around this issue by discarding all tags received from subtitle streams in handle_message() so that they are not added to main tags. But they are still (correctly) added to a stream's list of tags, as shown by full --verbose output after applying patch

While it fixes my issue with files listed by Rygel, I am not sure if this is the best place to fix it? Or if the fix should perhaps be even more generic - for example, a video file may also contain (multiple) audio and video tracks with title tags, and those should not be propagated into main title, either.

Assignee
Assign to
Time tracking