Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-bad gst-plugins-bad
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 973
    • Issues 973
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 105
    • Merge requests 105
  • 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-badgst-plugins-bad
  • Issues
  • #424
Closed
Open
Issue created Sep 09, 2016 by Bugzilla Migration User@bugzilla-migration

mxf: buffer pts aren't used

Submitted by cJ-..@..oub.eu

Link to original bug (#771138)

Description

Noticed when generating images with imperfect PTS, that when they get into the mxf stream with perfect PTS derived from the frame rate.
Expected result: original PTS are stored in the MXF stream.

Illustration: following generates a stream of ~ 3 fps declared as 30 fps, in mp4 and mxf.
The mysrc element is a quick & dirty element that takes stuff from stdin and sends it with arbitrary caps (based off videotestsrc).

while true; do dd if=/dev/zero bs=3145728 count=1; sleep 0.3; done | gst-launch-1.0 --verbose --no-fault mysrc ! video/x-raw,format=I420,width=2048,height=1024,framerate=30/1 ! identity silent=0 ! vaapih264enc ! h264parse ! mp4mux fragment-duration=1000 trak-timescale=100000 ! filesink location=pouet.mp4

while true; do dd if=/dev/zero bs=3145728 count=1; sleep 0.3; done | gst-launch-1.0 --verbose --no-fault mysrc ! video/x-raw,format=I420,width=2048,height=1024,framerate=30/1 ! identity silent=0 ! vaapih264enc ! h264parse ! mxfmux ! filesink location=pouet.mxf

The stream is then checked:

gst-launch-1.0 --verbose --no-fault filesrc location=pouet.mp4 ! qtdemux ! identity silent=0 ! fakesink

gst-launch-1.0 --verbose --no-fault filesrc location=pouet.mxf ! mxfdemux ! identity silent=0 ! fakesink

mp4 says:

/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (240 bytes, dts: 0:00:00.018040000, pts: 0:00:00.018040000, duration: 0:00:00.309880000, offset: -1, offset_end: -1, flags: 00002000 delta-unit ) 0x7fb5880033a0
/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (239 bytes, dts: 0:00:00.327920000, pts: 0:00:00.327920000, duration: 0:00:00.309060000, offset: -1, offset_end: -1, flags: 00002000 delta-unit ) 0x7fb588003180

mxf says:

/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (240 bytes, dts: 0:00:00.033333333, pts: 0:00:00.033333333, duration: 0:00:00.033333333, offset: -1, offset_end: -1, flags: 00004000 tag-memory ) 0x7f379c003340
/GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (239 bytes, dts: 0:00:00.066666666, pts: 0:00:00.066666666, duration: 0:00:00.033333334, offset: -1, offset_end: -1, flags: 00004000 tag-memory ) 0x7f379c003560

I didn't check the file to see if the mux or demux is the issue.

Version: 1.8.3

Assignee
Assign to
Time tracking