![Page 1: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/1.jpg)
GStreamer Conference 2016 Berlin
Profiling GStreamer pipelinesKyrylo Polezhaiev <[email protected]>
github.com/kirushyk
![Page 2: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/2.jpg)
• I tried to make this speech more fun than previous one
![Page 3: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/3.jpg)
GStreamer Instruments
github.com/kirushyk/gst-instruments
![Page 4: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/4.jpg)
What do we want to inspect?• Elements work• Data pulling and pushing between elements
![Page 5: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/5.jpg)
Abstraction in optimizations• Let’s say we want calculate arithmetical mean for set of values:
![Page 6: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/6.jpg)
Abstraction in optimizations• Let’s say we want calculate arithmetical mean for set of values:
x[n]
x[2]
x[1]
...
/n
/n
/n
Σ y
![Page 7: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/7.jpg)
Abstraction in optimizations• Let’s say we want to convert 4K RGB video stream at 120 FPS
to 30 FPS Full HD YUV.
4KRGB120FPS
FullHDYUV30FPS?
![Page 8: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/8.jpg)
Abstraction in optimizations• Let’s say we want to convert 4K RGB video stream at 120 FPS
to 30 FPS Full HD YUV.
RGBtoYUV FrameSkipper
PictureScaler
4KRGB120FPS
4KYUV120FPS
FullHDYUV120FPS
FullHDYUV30FPS
![Page 9: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/9.jpg)
Abstraction in optimizations• Let’s say we want to convert 4K RGB video stream at 120 FPS
to 30 FPS Full HD YUV.
FrameSkipper RGBtoYUVPicture
Scaler
4KRGB120FPS
4KRGB30FPS
FullHDRGB30FPS
FullHDYUV30FPS
![Page 10: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/10.jpg)
Pipeline is Abstraction
zozodec tee
queue
queue
lalaenc
lalaenc
![Page 11: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/11.jpg)
Chip or Tag:Abstractions for Instruction Pointer• There is a thing named Program Counter• Processors have Instruction Pointer Register
![Page 12: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/12.jpg)
Abstractions for Instruction Pointer
![Page 13: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/13.jpg)
Instruction Pointer Abstraction• We can travel via gotos or ifs• We can call procedures
function
cos()
sin()
mem
ory
![Page 14: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/14.jpg)
Instruction Pointer Abstraction• OS can switch processes• But we shouldn’t care about
this, no goto help needed• We may have multiple
threads on single core
function
cos()
sin()
mem
ory
anotherprogram
samemem
orysomew
hereelse
![Page 15: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/15.jpg)
Pipeline is Abstraction
zozodec tee
queue
queue
lalaenc
lalaenc
lalaenc
zozodec
tee
queue
sin()
mem
ory
pipeline instructions
![Page 16: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/16.jpg)
Upstream / Downstream
filesrc oggdemux vorbisdec audioconvert osxaudiosink
![Page 17: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/17.jpg)
• Is there goto somewhere?• No, function calls!
![Page 18: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/18.jpg)
Upstream / Downstreamfilesrc oggdemux vorbisdec audioconvert osxaudiosink
![Page 19: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/19.jpg)
filesrc
oggdemux
vorbisdec
audioconvert
osxaudiosink
Downstream
filesrc oggdemux vorbisdec audioconvert osxaudiosink
Upstack
Downstack
![Page 20: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/20.jpg)
filesrc oggdemux vorbisdec audioconvert audiosink
![Page 21: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/21.jpg)
![Page 22: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/22.jpg)
Threads’ realms
zozodec tee
queue
queue
lalaenc
lalaenc
Inter-threadbordersJ
thread#1thread#2
thread#3
![Page 23: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/23.jpg)
Threads’ realms
source demuxer decoder
thread#1 thread#2
![Page 24: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/24.jpg)
Threads’ realms
zozodec tee
queue
queue
lalaenc
lalaenc
thread#1thread#2
thread#3
thread#4
#5 #6
![Page 25: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/25.jpg)
Threads’ realms
zozodec tee
queue
queue
lalaenc
lalaenc
thread#1thread#2
thread#3
thread#4
![Page 26: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/26.jpg)
Threads’ realms
zozodec tee
queue
queue
lalaenc
lalaenc
thread#1thread#2
thread#3
![Page 27: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/27.jpg)
General Idea
Runningprogram
PerformanceReportTraceFile
TracingAnalyzingTrace
![Page 28: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/28.jpg)
Way to trace events in running app• LD_PRELOAD• DYLD_INSERT_LIBRARIES + symbol interpose• GStreamer Tracing Subsystem
![Page 29: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/29.jpg)
Components of GStreamer Instruments
DataModelLibrary ReportTool
CallInterceptionLibrary
TracerPlugin
gst-top
![Page 30: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/30.jpg)
Trick with Linux dynamic linker• Create .so library containing functions with same names
(gst_pad_push, gst_pad_pull_range, etc.)• That functions can call original ones loaded via dlsym• Run binary setting LD_PRELOAD environment variable
![Page 31: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/31.jpg)
Trick with Linux dynamic linkerwrapper_function(){
start = ⏱log_event (ENTERINTOELEMENT, start)original_function()end = ⏱duration = end - startlog_event (EXITFROMELEMENT, duration)
}
![Page 32: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/32.jpg)
Trick with Linux dynamic linkerProblems:• No statically-linked functions calls intercepted• No way to subtract GTask-related work from upstack time• No way to measure how many time pulling/pushing takes
![Page 33: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/33.jpg)
Trick with macOS Dynamic LinkerTwo kinds of DLLs on Mac:• Bundle (.bundle or .so)• Dynamic Library (.dylib)
![Page 34: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/34.jpg)
Trick with macOS Dynamic Linker• DYLD_INSERT_LIBRARIES instead of LD_PRELOAD• Set DYLD_FORCE_FLAT_NAMESPACE
![Page 35: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/35.jpg)
Trick with macOS Dynamic Linker
Statically link to library with functions we want to wrap +
# define INTERPOSE(_replacment, _replacee) \
__attribute__ ((used)) static struct { const void* replacment; const void* replacee; } _interpose_##_replacee \
__attribute__ ((section ("__DATA,__interpose"))) = { (const void*)(unsigned long)&_replacment, (constvoid*)(unsigned long)&_replacee };
INTERPOSE (lgi_pad_push, gst_pad_push);
INTERPOSE (lgi_pad_push_list, gst_pad_push_list);
INTERPOSE (lgi_pad_push_event, gst_pad_push_event);
INTERPOSE (lgi_pad_pull_range, gst_pad_pull_range);
INTERPOSE (lgi_element_set_state, gst_element_set_state);
INTERPOSE (lgi_element_change_state, gst_element_change_state);
![Page 36: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/36.jpg)
Trick with macOS Dynamic Linker
Problems:•We have no enter time in stack•We have no some hooks we want J
![Page 37: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/37.jpg)
Using Tracing Subsystem• Create library which listens for hooks to be hit
gst_tracing_register_hook (tracer, "pad-push-pre",
G_CALLBACK (do_push_buffer_pre));
gst_tracing_register_hook (tracer, "pad-pull-range-pre",
G_CALLBACK (do_pull_range_pre));
• Run program setting GST_TRACERS environment variable
![Page 38: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/38.jpg)
Interesting events to logMost interesting:• Thread entered element• Thread exited elementAlso (less interesting):• Hierarchy discovered (auxiliary event)• Data sent (to measure data flows)
![Page 39: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/39.jpg)
What can we measure?• Thread execution time• CPU cycles• Real time spent
![Page 40: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/40.jpg)
Thread ExecutionTime
• thread_info (…, THREAD_EXTENDED_INFO, …, …)• clock_gettime (CLOCK_THREAD_CPUTIME_ID, …)• GetThreadTimes (…, …, …, …, …)
![Page 41: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/41.jpg)
Components of GStreamer Instruments
DataModelLibrary ReportTool
CallInterceptionLibrary
TracerPlugin
gst-top
![Page 42: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/42.jpg)
General Idea
Runningprogram
PerformanceReportTraceFile
TracingAnalyzingTrace
![Page 43: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/43.jpg)
Data Model• Usually, no elements still alive when we do analysis• Elements have no date of birth and death• Element’s address can be used as identifier...• But theoretically new element can be created at same address• I didn’t think about names a lot
![Page 44: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/44.jpg)
Data Model
Element’sHeadstone Pad’sHeadstoneidentifierMemorial
GstTask’sThread’sHeadstone
hierarchy padlinks
1 1...*
1 10...*1
padlinks
0...1 1
ghostpads
1...*
1...*
OtherThread’sHeadstones
1...*
1...*
1
1
0...*
0...*
![Page 45: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/45.jpg)
1 32push push
![Page 46: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/46.jpg)
• Element #1 ENTER• Element #2 ENTER• Element #3 ENTER• Element #3 EXIT• Element #2 EXIT• Element #1 EXIT• Element #1 ENTER• ...
![Page 47: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/47.jpg)
Algorithm• Read ENTER / EXIT events one by one• Detect & add new Elements and Threads to DMFor ENTER events:• Log thread time we were upstack• Log element entersFor EXIT events• Find corresponding ENTER• Log time we were in element and subtract downstack time
![Page 48: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/48.jpg)
Threads outside GThreadPool & GstTask• Wrap thread creation• Assign created threads to corresponding elements• When pushing / pulling, take a look on execution time of each
thread assigned to element
![Page 49: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/49.jpg)
Third-party thread pools
![Page 50: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/50.jpg)
Threads’ realms
zozodec tee
queue
queue
lalaenc
lalaenc
thread#1thread#2
thread#3
![Page 51: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/51.jpg)
What new since 1.6?• Tracing subsystem integrated• .DYLD interpose implemented• Trace format switched to binary
![Page 52: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/52.jpg)
Todos:• Measuring CPU time taken by non-GTasked threads
![Page 53: Profiling GStreamer pipelines€¦ · GStreamer Conference 2016 Berlin Profiling GStreamer pipelines Kyrylo Polezhaiev ... this, no goto help needed •](https://reader035.vdocuments.mx/reader035/viewer/2022081502/5edfc27ead6a402d666b12c4/html5/thumbnails/53.jpg)
Thank you!Any questions?