gsteamer tutorial 1

GStreamer 是如此著名的多媒体框架,它的管道和插件模式令人印象深刻,眼界大开,原来管道模式可以玩得这么精妙。 目标 Nothing better to get a first impression about a software library than to print “Hello World” on the screen! 熟悉使用任何一种新的开发软件语言或者软件代码库的方法,最莫过于在屏幕上打印 "Hello world". 而对于多媒体框架来说,播放一段视频比 hello world 更合适于快速上手。 下面代码远多于一个标准的 Hello world, 不过多数是初始化和清理代码,真正起作用的也就四行代码。 废话不多说,还是看代码吧。 程序流程 @startuml start :初始化 gst_init; :构建管道 gst_gst_parse_launch; :开始播放 gst_element_set_state; :等待结束 gst_bus_timed_pop_filtered; :释放资源 gst_object_unref …; stop @enduml 源代码 #include <gst/gst.h> #ifdef __APPLE__ […] →Read more

std::reference_wrapper

std::reference_wrapper C++ Utilities library Function objects std::reference_wrapper Defined in header template< class T > class reference_wrapper; (since C++11) std::reference_wrapper is a class template that wraps a reference in a copyable, assignable object. Specifically, std::reference_wrapper is a CopyConstructible and CopyAssignable wrapper around a reference to object or reference to function of type T. Instances of std::reference_wrapper […] →Read more

libudev

refer to https://www.freedesktop.org/software/systemd/man/latest/libudev.html All functions require a libudev context to operate. This context can be create via udev_new(3). It is used to track library state and link objects together. No global state is used by libudev, everything is always linked to a udev context. Furthermore, multiple different udev contexts can be used in parallel by […] →Read more

Clean code

overview Clean code is obvious for other programmers. And I’m not talking about super sophisticated algorithms. Poor variable naming, bloated classes and methods, magic numbers -you name it- all of that makes code sloppy and difficult to grasp. Clean code doesn’t contain duplication. Each time you have to make a change in a duplicate code, […] →Read more

Clocks and synchronization in GStreamer

Synchronization Overivew A GstClock returns the absolute-time according to that clock with gst_clock_get_time (). The absolute-time (or clock time) of a clock is monotonically increasing. A running-time is the difference between a previous snapshot of the absolute-time called the base-time, and any other absolute-time. running-time = absolute-time – base-time Synchronization is now a matter of […] →Read more

How to measure QoS

Measuring QoS Elements that synchronize buffers on the pipeline clock will usually measure the current QoS. They will also need to keep some statistics in order to generate the QOS event. For each buffer that arrives in the sink, the element needs to calculate how late or how early it was. This is called the […] →Read more

超声视频

超声视频中的图像识别,病灶识别 https://www.bilibili.com/video/BV1Dv4y1J7yo/?spm_id_from=333.337.search-card.all.click →Read more

Pipeline manipulation

问题 这些问题的答案是什么? How to insert data from an application into a pipeline? How to read data from a pipeline? How to manipulate the pipeline’s speed, length and starting point? How to listen to a pipeline’s data processing? 参考资料 https://gstreamer.freedesktop.org/documentation/application-development/advanced/pipeline-manipulation.html?gi-language=c →Read more

可观测性

Overview 日志 Logging 追踪 Tracing 度量 Metrics →Read more

Spring Production-ready Features

Spring Boot includes a number of additional features to help you monitor and manage your application when you push it to production. You can choose to manage and monitor your application by using HTTP endpoints or with JMX. Auditing, health, and metrics gathering can also be automatically applied to your application. Predefined Endpoints of Spring […] →Read more