splitmux: Implement new elements for splitting files at mux level.
authorJan Schmidt <jan@centricular.com>
Thu, 31 Jul 2014 14:07:53 +0000 (00:07 +1000)
committerJan Schmidt <jan@centricular.com>
Thu, 5 Feb 2015 17:26:59 +0000 (04:26 +1100)
commit5e2214d309ab45ce316243bffadf19d0cd7f7384
treeb2e0deb0169e82c778185ec8ae534ed02dbdf82c
parent59431f663a282457ada06bf1170a4f31251b9b6c
splitmux: Implement new elements for splitting files at mux level.

Implement 2 new elements - splitmuxsink and splitmuxsrc.

splitmuxsink is a bin which wraps a muxer and takes 1 video stream,
plus audio/subtitle streams, and starts a new file
whenever necessary to avoid overrunning a threshold of either bytes
or time. New files are started at a keyframe, and corresponding audio
and subtitle streams are split at packet boundaries to match
video GOP timestamps.

splitmuxsrc is a corresponding source element which handles
the splitmux:// URL and plays back all component files,
reconstructing the original elementary streams as it goes.
23 files changed:
docs/plugins/Makefile.am
docs/plugins/gst-plugins-good-plugins-docs.sgml
docs/plugins/gst-plugins-good-plugins-sections.txt
docs/plugins/gst-plugins-good-plugins.hierarchy
docs/plugins/gst-plugins-good-plugins.interfaces
gst/multifile/Makefile.am
gst/multifile/gstmultifile.c
gst/multifile/gstsplitfilesrc.c
gst/multifile/gstsplitmuxpartreader.c [new file with mode: 0644]
gst/multifile/gstsplitmuxpartreader.h [new file with mode: 0644]
gst/multifile/gstsplitmuxsink.c [new file with mode: 0644]
gst/multifile/gstsplitmuxsink.h [new file with mode: 0644]
gst/multifile/gstsplitmuxsrc.c [new file with mode: 0644]
gst/multifile/gstsplitmuxsrc.h [new file with mode: 0644]
gst/multifile/gstsplitutils.c [new file with mode: 0644]
gst/multifile/gstsplitutils.h [new file with mode: 0644]
gst/multifile/test-splitmuxpartreader.c [new file with mode: 0644]
tests/check/Makefile.am
tests/check/elements/.gitignore
tests/check/elements/splitmux.c [new file with mode: 0644]
tests/files/splitvideo00.ogg [new file with mode: 0644]
tests/files/splitvideo01.ogg [new file with mode: 0644]
tests/files/splitvideo02.ogg [new file with mode: 0644]