1. 19 Jan, 2023 1 commit
  2. 14 Nov, 2022 1 commit
  3. 27 Oct, 2022 2 commits
  4. 15 Jun, 2022 1 commit
  5. 04 Mar, 2022 1 commit
  6. 01 Mar, 2022 1 commit
    • Jan Schmidt's avatar
      matroskademux: Don't parse Tracks element twice · 7efdc9c7
      Jan Schmidt authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      If the tracks element was parsed from the SeekEntry, don't
      parse it a second time and recreate tracks, as this
      loses any tags that were read using the seek table.
      
      If a genuinely new Tracks element is found, do read that
      as it is needed for MSE support.
      
      Part-of: <!1798>
      7efdc9c7
  7. 21 Feb, 2022 1 commit
  8. 18 Feb, 2022 1 commit
  9. 12 Nov, 2021 2 commits
  10. 24 Sep, 2021 1 commit
  11. 13 Sep, 2021 1 commit
  12. 17 Aug, 2021 2 commits
  13. 02 Jun, 2021 1 commit
    • Tim-Philipp Müller's avatar
      matroskademux: use g_memdup2() as g_memdup() is deprecated · 05854f74
      Tim-Philipp Müller authored
      - ebml-read: add some sanity checks when going from 64-bit
        to 32-bit length
      - matroska-ids: codec_data_size has been checked via
        gst_ebml_read_binary(), is existing allocation.
      - matroska-demux: alloc size is from existing allocations
      
      g_memdup() is deprecated since GLib 2.68 and we want to avoid
      deprecation warnings with recent versions of GLib.
      
      Also use gst_buffer_new_memdup() instead of _wrapped(g_memdup(),..).
      
      Part-of: <gst-plugins-good!993>
      05854f74
  14. 20 May, 2021 1 commit
  15. 11 May, 2021 3 commits
  16. 31 Mar, 2021 1 commit
  17. 29 Mar, 2021 1 commit
  18. 15 Mar, 2021 2 commits
    • Sebastian Dröge's avatar
      matroskademux: Fix extraction of multichannel WavPack · 242f3cae
      Sebastian Dröge authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      The old code had a couple of issues that all lead to potential memory
      safety bugs.
      
        - Use a constant for the Wavpack4Header size instead of using sizeof.
          It's written out into the data and not from the struct and who knows
          what special alignment/padding requirements some C compilers have.
        - gst_buffer_set_size() does not realloc the buffer when setting a
          bigger size than allocated, it only allows growing up to the maximum
          allocated size. Instead use a GstAdapter to collect all the blocks
          and take out everything at once in the end.
        - Check that enough data is actually available in the input and
          otherwise handle it an error in all cases instead of silently
          ignoring it.
      
      Among other things this fixes out of bounds writes because the code
      assumed gst_buffer_set_size() can grow the buffer and simply wrote after
      the end of the buffer.
      
      Thanks to Natalie Silvanovich for reporting.
      
      Fixes gst-plugins-good#859
      
      Part-of: <gst-plugins-good!902>
      242f3cae
    • Sebastian Dröge's avatar
      matroskademux: Initialize track context out parameter to NULL before parsing · 6c461e90
      Sebastian Dröge authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      Various error return paths don't set it to NULL and callers are only
      checking if the pointer is NULL. As it's allocated on the stack this
      usually contains random stack memory, and more often than not the memory
      of a previously parsed track.
      
      This then causes all kinds of memory corruptions further down the line.
      
      Thanks to Natalie Silvanovich for reporting.
      
      Fixes gst-plugins-good#858
      
      Part-of: <gst-plugins-good!902>
      6c461e90
  19. 04 Mar, 2021 1 commit
  20. 07 Sep, 2020 1 commit
  21. 02 Apr, 2020 2 commits
  22. 01 Apr, 2020 1 commit
  23. 05 Oct, 2019 1 commit
  24. 07 Aug, 2019 2 commits
    • Mart Raudsepp's avatar
      matroska: Provide audio lead-in for some lossy formats · 67958ccc
      Mart Raudsepp authored and Olivier Crête's avatar Olivier Crête committed
      Various audio formats require an audio lead-in to decode it properly.
      Most parsers would take care of it, but when a container like matroska is
      involved, the demuxer handles the seeking and without its own lead-in
      handling would never even pass the lead-in data to the parser.
      This commit provides an initial implementation of that for audio/mpeg,
      audio/x-ac3 and audio/x-eac3 by calculating the worst case lead-in time
      needed from known samplerate, potential lead-in frames need and the
      maximum blocksize possible for the format (as we don't parse that out
      exactly in matroskademux) and seeking that much earlier in case of
      accurate seeks. This is especially important for NLE use-cases with GES.
      
      If accurate seeking to a position that happens to have a video keyframe,
      it'll go back to the previous keyframe than needed, but with typical
      video files that's the best we can do anyway without falling back to
      scanning the clusters, as typically only keyframes are indexed in
      Cueing Data.
      If the media doesn't have a CUE, then we bisect for the cluster to seek
      to with the same modified time as well in case of accurate seeking,
      ensuring sufficient lead-in. This code path is typically hit only with
      (suboptimal) audio-only matroska files, e.g. when created with ffmpeg,
      which doesn't add a CUE for audio-only mkv muxing.
      67958ccc
    • Doug Nazar's avatar
      matroska: Handle interlaced field order · b0534c65
      Doug Nazar authored and Sebastian Dröge's avatar Sebastian Dröge committed
      b0534c65
  25. 27 Jul, 2019 1 commit
  26. 15 Jul, 2019 1 commit
  27. 09 Jul, 2019 1 commit
  28. 24 May, 2019 1 commit
  29. 13 May, 2019 1 commit
  30. 01 May, 2019 1 commit
  31. 01 Mar, 2019 1 commit
  32. 26 Dec, 2018 1 commit