Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-good gst-plugins-good
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 648
    • Issues 648
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 82
    • Merge requests 82
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamer
  • gst-plugins-goodgst-plugins-good
  • Issues
  • #509

Closed
Open
Created Oct 09, 2018 by Bugzilla Migration User@bugzilla-migration

splitmuxsink: last splitmuxsink-fragment-closed message is sent before file close() is called

Submitted by Peter Seiderer @psreport

Link to original bug (#797265)

Description

Strace of a video encoding pipeline using splitmuxsink shows the following sequence for each fragment file besides the last one:

openat() --> splitmuxsink-fragment-opened --> close() --> splitmuxsink-fragment-closed

For the last fragment the sequence is as follows:

openat() --> splitmuxsink-fragment-opened --> splitmuxsink-fragment-closed --> close()

This leads to problems in case one registers on the splitmuxsink-fragment messages for file post-processing...

Strace output:

$ strace -tt -e openat,write,close -fo out_strace.log gst-launch-1.0 -m -v -e v4l2src device=/dev/v4l/by-path/platform-capture-subsystem-video-index4 io-mode=dmabuf ! \  
    video/x-raw,format=NV12,width=1920,height=1080,framerate=60000/1001 ! \  
    videorate drop-only=true ! \  
    video/x-raw,format=NV12,width=1920,height=1080,framerate=30000/1001 ! \  
    v4l2h264enc ! \  
    h264parse ! \  
    splitmuxsink location='Video_%d.mp4' max-size-time=5000000000  

Video_0.mp4: 11264 16:00:07.905127 openat(AT_FDCWD, "Video_0.mp4", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 43
Video_0.mp4: 11263 16:00:08.945458 write(1, "splitmuxsink-fragment-opened, lo"..., 97) = 97
Video_0.mp4: 11264 16:00:13.108542 close(43) = 0
Video_1.mp4: 11264 16:00:13.111136 openat(AT_FDCWD, "Video_1.mp4", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 43
Video_0.mp4: 11263 16:00:14.122644 write(1, "splitmuxsink-fragment-closed, lo"..., 106) = 106
Video_1.mp4: 11263 16:00:14.493838 write(1, "splitmuxsink-fragment-opened, lo"..., 106) = 106
Video_1.mp4: 11264 16:00:17.913117 close(43) = 0
Video_2.mp4: 11264 16:00:17.939201 openat(AT_FDCWD, "Video_2.mp4", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 43
Video_1.mp4: 11263 16:00:18.937365 write(1, "splitmuxsink-fragment-closed, lo"..., 106) = 106
Video_2.mp4: 11263 16:00:19.319019 write(1, "splitmuxsink-fragment-opened, lo"..., 106) = 106
Video_2.mp4: 11264 16:00:22.717010 close(43) = 0
Video_3.mp4: 11264 16:00:22.730683 openat(AT_FDCWD, "Video_3.mp4", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 43
Video_2.mp4: 11263 16:00:23.734459 write(1, "splitmuxsink-fragment-closed, lo"..., 107) = 107
Video_3.mp4: 11263 16:00:24.102944 write(1, "splitmuxsink-fragment-opened, lo"..., 107) = 107
Video_3.mp4: 11263 16:00:25.783489 write(1, "splitmuxsink-fragment-closed, lo"..., 107) = 107
11263 16:00:25.855549 write(1, "Setting pipeline to NULL ...\n", 29) = 29
Video_2.mp4: 11263 16:00:25.856492 close(43) = 0
11263 16:00:25.860930 write(1, "Freeing pipeline ...\n", 21) = 21

Version: 1.14.2

Assignee
Assign to
Time tracking